From ac15116ac19ce6fc8bff6b9e436df925be710dc5 Mon Sep 17 00:00:00 2001 From: mattdurham Date: Thu, 13 Jan 2022 16:42:55 -0500 Subject: [PATCH 01/19] Merge main -> dev.dynamic_configuration (#1270) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update node_exporter dependency to v1.3.1 (#1228) * Add node_exporter to depcheck * update weaveworks/common dependency * map current release flags and changed defaults * documentation * revert accidental checkin * print out flags when node_exporter test fails to assist debugging * oops, i introduced some flags from master by mistake * Introduce experimental integrations revamp (#1198) * [dev.multiple-integrations] Enable present integrations by default, deprecate enabled field (#1062) * integrations: default to enabled by default * document deprecation of enabled * pkg/integrations: support *_configs field for integrations (#1130) Creates the basic code to unmarshal integrations from a YAML field called _configs, which is a slice of that integration. Note that this is NOT wired up to the integrations manager yet, and trying to run the agent with more than one integration of the same type will likely cause problems. * [dev.multiple-integrations] Prototype new integrations subsystem (#1142) * wip: prototype new integrations subsystem * implement Controller with basic logic for Integration and UpdateIntegration * Implement HTTPIntegration for Controller * decouple controller and subsystem * don't have controller implement integration slightly less smelly now * multiplexer integration * rely on boilerplate for multiplexing for now generics would be nice here * remove multiplex_integration.go Also a little code smelly. Instead of having integrations that run other integrations, I'm going to fall back to having only one controller. * introduce Subsystem, unexport Controller start wiring up things to Subsystem * introduce v2 agent integration to use for testing * start wiring metrics integrations * rename Options to Globals call a spade a spade * add subsystem options to globals * remove dead code * metricsutils: calculate self-scraping based on globals * complete HTTP target API * working example with agent integration * appease the linter * don't return an error when context to cancel an integration is closed * once again i am asking the linter to forgive my typos * fix bug where labels from individual targets were getting dropped at the API endpoint * pkg/config: fix broken test * finish unit tests for integrations v2 controller * metricsutil/metricshandler_integration: make job name unique Before this change, the job name would have collided when using multiple instances of the same integration. * ensure that global subsystem labels are injected into targets * integrations/v2: Infer target hostname from SD API host (#1175) * [dev.multiple-integrations] integrations/v2: allow shimming between v1 and v2 integrations. (#1179) * integrations/v2: allow shimming between v1 and v2 integrations. Shimming is done by changing how the integration registration works; a new RegisterDynamic was added that allows for creating Configs at runtime. Here be dragons; this should be removed whenever we no longer have a need for it. * fix lint * pkg/integrations/v2: use "RegisterLegacy" instead of a generic mechanism * fine, I won't add the deprecation notice if it will make the linter sad * pkg/integrations: re-align (#1181) This commit reverts 69ba2ddfa9483cc8ac6e010dd7abccd319580c80 in favor of allowing the new subsystem to handle multiple instances of integrations. This commit also removes the wal_truncate_frequency field from integrations as it is the only field from old integrations that does not have a current counterpart. * [dev.multiple-integrations] Hide integrations/v2 behind a feature flag (#1185) * feature flag wip * dynamically switch between integrations v1 and v2 default to v1. * pkg/integrations/versionselector to file in pkg/config * pkg/config: fix defaults for Integrations * pkg/config: use more generic way to unmarshal differently based on flag * add missing godoc comment * more comments * switch to deferred unmarshaling * remove unused Config field * simplify completeUnmarshal * do not perform lazy deferred unmarshaling * enable cadvisor by default * switch to using real feature flag * fix postgres_exporter * Merge main into dev.multiple-integrations (#1184) * Fix typo (#1141) * Traces: Improved pod association in PromSD processor (#1137) * Improve k8s pod association * Add tests * Changelog * typo * Add prom_sd_pod_association * Extend tests for pod associations * Docs for pod association config * Lint fixes * Move to unreleased * Add instrumentation recommendations * Remove uncessary constants * Improve tests * remote config with http(s) provider (#1143) * sample remote config code with http provider * use t.TempDir() in unit test * no need to clean up after T.TempDir() * use NewClientFromConfig and make caller responsible for calling SetDirectory * handle nil HTTPClientConfig * remove blank identifier assignment * pass basic auth command line flags for remote config * address pr nits * add expiremental flag * set loader inline * update changelog * add remote config section in docs * pr comment updates * announce patch releases for cve-2021-41090 (#1152) * Merge patch release to main (#1153) * Add secret type to sensitive values * Break out config tests to their own implementation. Also remove username has a sensitive value. * Update changelog * Fix failing test * Scrub secrets when marshaling instance configs * update for v0.21 * Updated changes from the merge. * Remove changelog * Scrub out receivers has ***receivers_scrubber***:null * obscure etcd/consul credentials * Update pkg/traces/config_test.go Co-authored-by: Robert Fratto * Update pkg/config/config.go * go fmt * Change to using custom object and return * Fix bad merge * [v0.21.2] toggle config endpoint (#19) * disable /-/config endpoint by default * disable scraping api get endpoint as well * fix new test * add test and rename flag Co-authored-by: Robert Fratto * Update version to v0.21.2 * Update defaults.go * fix /-/config endpoint * also fix non-pointer config bug * temporarily disable linting for release * fix lint errors Co-authored-by: Matt Durham Co-authored-by: Robert Lankford * Fix POSTGRES_EXPORTER_DATA_SOURCE_NAME usage for postgres_exporter (#1162) * Fix POSTGRES_EXPORTER_DATA_SOURCE_NAME usage for postgres_exporter A recent change broke the usage of POSTGRES_EXPORTER_DATA_SOURCE_NAME for the postgres_exporter. As the incorrect variable was checked in the if clause, it always raises an error. * changelog: keep feature -> enhancement -> bugfix order * postgres_exporter: add regression test Co-authored-by: f11r Co-authored-by: Robert Fratto * Fix syntax error in Jsonnet logs helper method (#1174) Signed-off-by: Nick Pillitteri * cAdvisor Integration (#1081) * Add cadvisor module * Begin creating common config for cadvisor * Don't export internal state * Finish config options for cadvisor * Set config options, and implement cAdvisor collectors * Linting * Buildflags for cadvisor only in linux * I R LEArN Build Tags * Don't zero value the zero value * Offload sketchy global var manipulation to the integrations Run func * Remove unused collectors * Lint * Create generic stub integration and use it for cadvisor * Lint * Final refactor of cAdvisor config for unsupported platforms. Pared down stub integrations. * Lint * Docs for cadvisor config * Update changelog * Update pkg/integrations/stub_integration.go Co-authored-by: Robert Fratto * Reorder changelog * Instance key clarity * Inclusive naming * Finish name changes Keep default disable metric list in sync with upstream Idiomatic golang * Hardcode disabled metrics for cadvisor Co-authored-by: Robert Fratto * Remove log-level flag from systemd unit file (#1177) * Upgrade to OTel v0.40.0 (#1176) * Upgrade to OTel v0.40.0 * Changelog * Add factories check * go mod tidy * config/features: create package to standardize experimental features (#1170) * config/features: create package to standardize experiemental features This commit introduces a new package, pkg/config/features, which allows defining a set of features and validating whether flags associated with those features are allowed to be set. Closes #1163 * update documentation (also s/enabled-features/enable-features) * Fix typo * Update pkg/config/features/features.go Co-authored-by: Robert Lankford Co-authored-by: Robert Lankford * enable cadvisor by default * switch to using real feature flag * fix postgres_exporter Co-authored-by: Ursula Kallio <73951760+osg-grafana@users.noreply.github.com> Co-authored-by: Mario Co-authored-by: Robert Lankford Co-authored-by: Matt Durham Co-authored-by: f11r Co-authored-by: f11r Co-authored-by: Nick Pillitteri <56quarters@users.noreply.github.com> Co-authored-by: Ryan Geyer Co-authored-by: Juraci Paixão Kröhling Co-authored-by: Robert Lankford * Revert "Merge main into dev.multiple-integrations (#1184)" (#1189) This reverts commit ad76ec54f9a781fc83d3e7001808c887f37833ff. * [dev.multiple-integrations] Revert breaking changes to existing integrations (#1191) * revert breaking changes to integrations v1 This commit reverts #1062 in favor of making breaking changes directly in integrations-next instead. The part of #1181 to remove `wal_truncate_frequency` has also been reverted. As part of this change, the enabled field is removed from the v2 common metrics configs, and v2 integrations can no longer be disabled. v2 integrations can only be disabled by removing them from the YAML. * integrations/v2: remove stale reference to ErrDisabled (fix typo too) * integrations/v2: bring in common config decoupling * [dev.multiple-integrations] Introduce autoscraper (#1195) * pkg/integrations/v2: introduce self-scraping * linting * [dev.multiple-integrations] Multiple instances of integrations (#1196) * multiple instances of integrations opt in relevant v1 integrations into supporting multiple instances * shims should check for instance key override * Document integrations-next (#1197) * document integrations-next * remove json tags since they make markdown unhappy * changelog * s/Run/RunIntegration * remove stale comment about integrations.controller purpose * create dedicated run method for instanceScraper * s/expoter/exporter/g * Document why an autoscrape.Scraper manages a set of per-instance scrapers * spell out prerequisite instead of pre-req * use go.uber.org/atomic to make the code a little easier to follow * remove started callback for running integration * use smaller interface for autoscrape Co-authored-by: Ursula Kallio <73951760+osg-grafana@users.noreply.github.com> Co-authored-by: Mario Co-authored-by: Robert Lankford Co-authored-by: Matt Durham Co-authored-by: f11r Co-authored-by: f11r Co-authored-by: Nick Pillitteri <56quarters@users.noreply.github.com> Co-authored-by: Ryan Geyer Co-authored-by: Juraci Paixão Kröhling Co-authored-by: Robert Lankford * Fix panic when using 'stdout' in automatic logging (#1233) * integrations-next: fix bug where v2 integrations were not being strictly unmarshaled (#1235) * Remove jsonnet vendor folders (#1222) * remove jsonnet vendor This adds all vendor folders into .gitignore and removes cached vendor files from the repository. Closes #1221 * Update scripts and instructions for jsonnet vendor removal * `make example-dashboards` will now also run `jb install` * k3d environment instructions now include `jb install` * smoke-test.bash will now run `jb install` prior to `tk apply` * Fix link to k3d example in DEVELOPERS.md (#1242) Signed-off-by: Paschalis Tsilias * Fix node_exporter upgrade docs (#1239) * Fix panic in automatic logging with stdout backend (#1243) * pkg/util: support custom yaml.Unmarshaler implementations for util.UnmarshalYAMLMerged (#1244) It's common for config types to have implement yaml.Unmarshaler for: * Applying defaults * Applying extra logic post-unmarshal If these config types were unmarshaled through util.UnmarshalYAMLMerged, the yaml.Unmarshaler implementation would never complete successfully, preventing the post-unmarshal logic from running. This issue was introduced in #1192, but went unnoticed until #1228 implemented yaml.Unmarshaler to perform field migrations. #1240 reported the issue. This commit fixes the bug by performing a second non-strict unmarshal to ensure that all input values unmarshal successfully, with the exception of unmarshal errors unrelated to unrecognized field names. This is hacky, but it's worthwhile noting that util.UnmarshalYAMLMerged is a temporary workaround needed for the integrations-next migration, and will eventually be removed. * Update k3d example grafana/grafonnet-lib version (#1246) Signed-off-by: Paschalis Tsilias * Create an e2e framework with support for running tests against k8s (#1234) * e2e: create an e2e framework with support for running tests against a k3d cluster * add new E2E drone job * E2E tests should pass when doing a release * sign drone.yml again * move e2e lint to different step that has golangci-lint installed * upgrade golangci-lint and go for e2e test * e2e: add gcc * E2E: install build-essential to get a working full gcc env * :( * e2e: support running from inside of docker * fix lint error * address review feedback * Operator: fix bug where /-/ready and /-/healthy always returned 404 (#1252) * operator: fix bug where /-/ready and /-/healthy always returned 404 controller-runtime must have at least one ready/healthy check for the endpoints to exist * fix lint error, use healthz.Ping * Make scraping-svc use the new `metrics:` key (#1259) Signed-off-by: Paschalis Tsilias * update prometheus dependency (#1260) * corrected typo (#1265) * Use RELEASE_TAG to choose between `:main` and `:latest` docker tags (#1264) * Use RELEASE_TAG to choose between `:main` and `:latest` docker tags Signed-off-by: Paschalis Tsilias * Use :main tag for images in smoke test Signed-off-by: Paschalis Tsilias * Set IMAGE_BRANCH_TAG env var in drone and actions pipelines Signed-off-by: Paschalis Tsilias * Remove quotes from Makefile variable Signed-off-by: Paschalis Tsilias * Remove force_release action Signed-off-by: Paschalis Tsilias * prepare for v0.22.0 release (#1266) * prepare for v0.22.0 release * remove E2E pipeline Co-authored-by: Robert Fratto Co-authored-by: Ursula Kallio <73951760+osg-grafana@users.noreply.github.com> Co-authored-by: Mario Co-authored-by: Robert Lankford Co-authored-by: f11r Co-authored-by: f11r Co-authored-by: Nick Pillitteri <56quarters@users.noreply.github.com> Co-authored-by: Ryan Geyer Co-authored-by: Juraci Paixão Kröhling Co-authored-by: Robert Lankford Co-authored-by: Paschalis Tsilias Co-authored-by: Patrick Koenig Co-authored-by: DataPoints --- .drone/drone.yml | 4 +- .github/depcheck.yml | 5 +- .github/workflows/force_release.yml | 143 -- .gitignore | 2 +- CHANGELOG.md | 51 +- Makefile | 20 +- cmd/agent-operator/main.go | 8 + cmd/agent/DEVELOPERS.md | 2 +- cmd/agent/entrypoint.go | 55 +- docs/api/_index.md | 98 +- .../integrations/integrations-next/_index.md | 165 ++ .../integrations/node-exporter-config.md | 95 +- .../integrations/process-exporter-config.md | 4 +- docs/getting-started/_index.md | 2 +- docs/operator/custom-resource-quickstart.md | 2 +- docs/operator/getting-started.md | 2 +- docs/upgrade-guide/_index.md | 21 + e2e/Makefile | 6 + e2e/go.mod | 109 ++ e2e/go.sum | 1619 +++++++++++++++++ e2e/k8s/k8s.go | 324 ++++ e2e/k8s/k8s_test.go | 30 + .../agent/config/agent-integrations-next.yaml | 23 + .../docker-compose.integrations-next.yaml | 90 + .../grafonnet/alert_condition.libsonnet | 47 - .../grafonnet/alertlist.libsonnet | 43 - .../grafonnet/annotation.libsonnet | 40 - .../grafonnet/bar_gauge_panel.libsonnet | 47 - .../grafonnet/cloudmonitoring.libsonnet | 57 - .../grafonnet/cloudwatch.libsonnet | 51 - .../grafonnet/dashboard.libsonnet | 181 -- .../grafonnet/dashlist.libsonnet | 41 - .../grafonnet/elasticsearch.libsonnet | 51 - .../grafonnet/gauge_panel.libsonnet | 211 --- .../grafonnet-lib/grafonnet/grafana.libsonnet | 32 - .../grafonnet/graph_panel.libsonnet | 313 ---- .../grafonnet/graphite.libsonnet | 29 - .../grafonnet/heatmap_panel.libsonnet | 150 -- .../grafonnet/influxdb.libsonnet | 104 -- .../grafonnet-lib/grafonnet/link.libsonnet | 39 - .../grafonnet/log_panel.libsonnet | 56 - .../grafonnet-lib/grafonnet/loki.libsonnet | 20 - .../grafonnet/pie_chart_panel.libsonnet | 72 - .../grafonnet/pluginlist.libsonnet | 23 - .../grafonnet/prometheus.libsonnet | 38 - .../grafonnet-lib/grafonnet/row.libsonnet | 47 - .../grafonnet/singlestat.libsonnet | 181 -- .../grafonnet-lib/grafonnet/sql.libsonnet | 23 - .../grafonnet/stat_panel.libsonnet | 222 --- .../grafonnet/table_panel.libsonnet | 91 - .../grafonnet/template.libsonnet | 289 --- .../grafonnet-lib/grafonnet/text.libsonnet | 43 - .../grafonnet/timepicker.libsonnet | 40 - .../grafonnet/transformation.libsonnet | 12 - .../grafana-builder/grafana.libsonnet | 459 ----- .../docker-compose/vendor/grafana-agent-mixin | 1 - example/docker-compose/vendor/grafana-builder | 1 - example/docker-compose/vendor/grafonnet | 1 - example/k3d/README.md | 11 +- example/k3d/jsonnetfile.lock.json | 4 +- example/k3d/scripts/smoke-test.bash | 7 +- example/k3d/smoke/main.jsonnet | 4 +- example/k3d/vendor/1.14 | 1 - example/k3d/vendor/cortex-mixin | 1 - .../cortex-mixin/alerts.jsonnet | 1 - .../cortex-mixin/alerts.libsonnet | 12 - .../cortex-mixin/alerts/alert-utils.libsonnet | 8 - .../cortex-mixin/alerts/alerts.libsonnet | 465 ----- .../cortex-mixin/alerts/blocks.libsonnet | 71 - .../cortex-mixin/alerts/compactor.libsonnet | 69 - .../cortex-mixin/config.libsonnet | 42 - .../cortex-mixin/dashboards.jsonnet | 6 - .../cortex-mixin/dashboards.libsonnet | 30 - .../cortex-mixin/dashboards/chunks.libsonnet | 100 - .../dashboards/compactor-resources.libsonnet | 70 - .../dashboards/compactor.libsonnet | 89 - .../dashboards/comparison.libsonnet | 105 -- .../dashboards/dashboard-utils.libsonnet | 205 --- .../dashboards/object-store.libsonnet | 65 - .../cortex-mixin/dashboards/queries.libsonnet | 186 -- .../dashboards/reads-resources.libsonnet | 65 - .../cortex-mixin/dashboards/reads.libsonnet | 206 --- .../cortex-mixin/dashboards/ruler.libsonnet | 44 - .../cortex-mixin/dashboards/scaling.libsonnet | 111 -- .../dashboards/writes-resources.libsonnet | 59 - .../cortex-mixin/dashboards/writes.libsonnet | 167 -- .../cortex-mixin/docs/playbooks.md | 127 -- .../cortex-mixin/jsonnetfile.json | 24 - .../cortex-mixin/jsonnetfile.lock.json | 26 - .../cortex-mixin/mixin.libsonnet | 4 - .../cortex-mixin/recording_rules.jsonnet | 1 - .../cortex-mixin/recording_rules.libsonnet | 56 - .../grafonnet/alert_condition.libsonnet | 47 - .../grafonnet/alertlist.libsonnet | 30 - .../grafonnet/annotation.libsonnet | 40 - .../grafonnet/cloudwatch.libsonnet | 41 - .../grafonnet/dashboard.libsonnet | 150 -- .../grafonnet/dashlist.libsonnet | 41 - .../grafonnet/elasticsearch.libsonnet | 41 - .../grafonnet-lib/grafonnet/gauge.libsonnet | 39 - .../grafonnet-lib/grafonnet/grafana.libsonnet | 27 - .../grafonnet/graph_panel.libsonnet | 279 --- .../grafonnet/graphite.libsonnet | 29 - .../grafonnet/heatmap_panel.libsonnet | 144 -- .../grafonnet/influxdb.libsonnet | 101 - .../grafonnet-lib/grafonnet/link.libsonnet | 27 - .../grafonnet/log_panel.libsonnet | 54 - .../grafonnet-lib/grafonnet/loki.libsonnet | 12 - .../grafonnet/pie_chart_panel.libsonnet | 56 - .../grafonnet/pluginlist.libsonnet | 23 - .../grafonnet/prometheus.libsonnet | 24 - .../grafonnet-lib/grafonnet/row.libsonnet | 35 - .../grafonnet/singlestat.libsonnet | 136 -- .../grafonnet-lib/grafonnet/sql.libsonnet | 14 - .../grafonnet/table_panel.libsonnet | 73 - .../grafonnet/template.libsonnet | 164 -- .../grafonnet-lib/grafonnet/text.libsonnet | 24 - .../grafonnet/timepicker.libsonnet | 33 - .../grafana-builder/grafana.libsonnet | 418 ----- .../ksonnet-util/kausal.libsonnet | 459 ----- .../jsonnet-libs/mixin-utils/utils.libsonnet | 121 -- .../k8s-alpha/1.14/_custom/apps.libsonnet | 53 - .../k8s-alpha/1.14/_custom/core.libsonnet | 151 -- .../1.14/_custom/mapContainers.libsonnet | 56 - .../k8s-alpha/1.14/_custom/types.libsonnet | 34 - .../_gen/admissionregistration/main.libsonnet | 5 - .../v1beta1/main.libsonnet | 10 - .../mutatingWebhookConfiguration.libsonnet | 97 - .../v1beta1/ruleWithOperations.libsonnet | 24 - .../v1beta1/serviceReference.libsonnet | 12 - .../validatingWebhookConfiguration.libsonnet | 97 - .../v1beta1/webhook.libsonnet | 49 - .../v1beta1/webhookClientConfig.libsonnet | 19 - .../k8s-alpha/1.14/_gen/apps/main.libsonnet | 7 - .../_gen/apps/v1/controllerRevision.libsonnet | 100 - .../1.14/_gen/apps/v1/daemonSet.libsonnet | 363 ---- .../_gen/apps/v1/daemonSetCondition.libsonnet | 14 - .../1.14/_gen/apps/v1/daemonSetSpec.libsonnet | 273 --- .../_gen/apps/v1/daemonSetStatus.libsonnet | 28 - .../apps/v1/daemonSetUpdateStrategy.libsonnet | 13 - .../1.14/_gen/apps/v1/deployment.libsonnet | 371 ---- .../apps/v1/deploymentCondition.libsonnet | 16 - .../_gen/apps/v1/deploymentSpec.libsonnet | 281 --- .../_gen/apps/v1/deploymentStatus.libsonnet | 24 - .../_gen/apps/v1/deploymentStrategy.libsonnet | 15 - .../1.14/_gen/apps/v1/main.libsonnet | 27 - .../1.14/_gen/apps/v1/replicaSet.libsonnet | 353 ---- .../apps/v1/replicaSetCondition.libsonnet | 14 - .../_gen/apps/v1/replicaSetSpec.libsonnet | 263 --- .../_gen/apps/v1/replicaSetStatus.libsonnet | 20 - .../apps/v1/rollingUpdateDaemonSet.libsonnet | 8 - .../apps/v1/rollingUpdateDeployment.libsonnet | 10 - ...rollingUpdateStatefulSetStrategy.libsonnet | 8 - .../1.14/_gen/apps/v1/statefulSet.libsonnet | 371 ---- .../apps/v1/statefulSetCondition.libsonnet | 14 - .../_gen/apps/v1/statefulSetSpec.libsonnet | 281 --- .../_gen/apps/v1/statefulSetStatus.libsonnet | 26 - .../v1/statefulSetUpdateStrategy.libsonnet | 13 - .../apps/v1beta1/controllerRevision.libsonnet | 100 - .../_gen/apps/v1beta1/deployment.libsonnet | 376 ---- .../v1beta1/deploymentCondition.libsonnet | 16 - .../apps/v1beta1/deploymentRollback.libsonnet | 22 - .../apps/v1beta1/deploymentSpec.libsonnet | 286 --- .../apps/v1beta1/deploymentStatus.libsonnet | 24 - .../apps/v1beta1/deploymentStrategy.libsonnet | 15 - .../1.14/_gen/apps/v1beta1/main.libsonnet | 22 - .../apps/v1beta1/rollbackConfig.libsonnet | 8 - .../v1beta1/rollingUpdateDeployment.libsonnet | 10 - ...rollingUpdateStatefulSetStrategy.libsonnet | 8 - .../1.14/_gen/apps/v1beta1/scale.libsonnet | 98 - .../_gen/apps/v1beta1/scaleSpec.libsonnet | 8 - .../_gen/apps/v1beta1/scaleStatus.libsonnet | 14 - .../_gen/apps/v1beta1/statefulSet.libsonnet | 371 ---- .../v1beta1/statefulSetCondition.libsonnet | 14 - .../apps/v1beta1/statefulSetSpec.libsonnet | 281 --- .../apps/v1beta1/statefulSetStatus.libsonnet | 26 - .../statefulSetUpdateStrategy.libsonnet | 13 - .../apps/v1beta2/controllerRevision.libsonnet | 100 - .../_gen/apps/v1beta2/daemonSet.libsonnet | 363 ---- .../apps/v1beta2/daemonSetCondition.libsonnet | 14 - .../_gen/apps/v1beta2/daemonSetSpec.libsonnet | 273 --- .../apps/v1beta2/daemonSetStatus.libsonnet | 28 - .../v1beta2/daemonSetUpdateStrategy.libsonnet | 13 - .../_gen/apps/v1beta2/deployment.libsonnet | 371 ---- .../v1beta2/deploymentCondition.libsonnet | 16 - .../apps/v1beta2/deploymentSpec.libsonnet | 281 --- .../apps/v1beta2/deploymentStatus.libsonnet | 24 - .../apps/v1beta2/deploymentStrategy.libsonnet | 15 - .../1.14/_gen/apps/v1beta2/main.libsonnet | 30 - .../_gen/apps/v1beta2/replicaSet.libsonnet | 353 ---- .../v1beta2/replicaSetCondition.libsonnet | 14 - .../apps/v1beta2/replicaSetSpec.libsonnet | 263 --- .../apps/v1beta2/replicaSetStatus.libsonnet | 20 - .../v1beta2/rollingUpdateDaemonSet.libsonnet | 8 - .../v1beta2/rollingUpdateDeployment.libsonnet | 10 - ...rollingUpdateStatefulSetStrategy.libsonnet | 8 - .../1.14/_gen/apps/v1beta2/scale.libsonnet | 98 - .../_gen/apps/v1beta2/scaleSpec.libsonnet | 8 - .../_gen/apps/v1beta2/scaleStatus.libsonnet | 14 - .../_gen/apps/v1beta2/statefulSet.libsonnet | 371 ---- .../v1beta2/statefulSetCondition.libsonnet | 14 - .../apps/v1beta2/statefulSetSpec.libsonnet | 281 --- .../apps/v1beta2/statefulSetStatus.libsonnet | 26 - .../statefulSetUpdateStrategy.libsonnet | 13 - .../_gen/auditregistration/main.libsonnet | 5 - .../v1alpha1/auditSink.libsonnet | 131 -- .../v1alpha1/auditSinkSpec.libsonnet | 41 - .../auditregistration/v1alpha1/main.libsonnet | 11 - .../v1alpha1/policy.libsonnet | 12 - .../v1alpha1/serviceReference.libsonnet | 12 - .../v1alpha1/webhook.libsonnet | 29 - .../v1alpha1/webhookClientConfig.libsonnet | 19 - .../v1alpha1/webhookThrottleConfig.libsonnet | 10 - .../1.14/_gen/authentication/main.libsonnet | 6 - .../_gen/authentication/v1/main.libsonnet | 8 - .../authentication/v1/tokenReview.libsonnet | 102 -- .../v1/tokenReviewSpec.libsonnet | 12 - .../v1/tokenReviewStatus.libsonnet | 29 - .../_gen/authentication/v1/userInfo.libsonnet | 18 - .../authentication/v1beta1/main.libsonnet | 8 - .../v1beta1/tokenReview.libsonnet | 102 -- .../v1beta1/tokenReviewSpec.libsonnet | 12 - .../v1beta1/tokenReviewStatus.libsonnet | 29 - .../authentication/v1beta1/userInfo.libsonnet | 18 - .../1.14/_gen/authorization/main.libsonnet | 6 - .../v1/localSubjectAccessReview.libsonnet | 132 -- .../1.14/_gen/authorization/v1/main.libsonnet | 17 - .../v1/nonResourceAttributes.libsonnet | 10 - .../v1/nonResourceRule.libsonnet | 14 - .../v1/resourceAttributes.libsonnet | 20 - .../authorization/v1/resourceRule.libsonnet | 22 - .../v1/selfSubjectAccessReview.libsonnet | 120 -- .../v1/selfSubjectAccessReviewSpec.libsonnet | 30 - .../v1/selfSubjectRulesReview.libsonnet | 98 - .../v1/selfSubjectRulesReviewSpec.libsonnet | 8 - .../v1/subjectAccessReview.libsonnet | 132 -- .../v1/subjectAccessReviewSpec.libsonnet | 42 - .../v1/subjectAccessReviewStatus.libsonnet | 14 - .../v1/subjectRulesReviewStatus.libsonnet | 18 - .../localSubjectAccessReview.libsonnet | 132 -- .../_gen/authorization/v1beta1/main.libsonnet | 17 - .../v1beta1/nonResourceAttributes.libsonnet | 10 - .../v1beta1/nonResourceRule.libsonnet | 14 - .../v1beta1/resourceAttributes.libsonnet | 20 - .../v1beta1/resourceRule.libsonnet | 22 - .../v1beta1/selfSubjectAccessReview.libsonnet | 120 -- .../selfSubjectAccessReviewSpec.libsonnet | 30 - .../v1beta1/selfSubjectRulesReview.libsonnet | 98 - .../selfSubjectRulesReviewSpec.libsonnet | 8 - .../v1beta1/subjectAccessReview.libsonnet | 132 -- .../v1beta1/subjectAccessReviewSpec.libsonnet | 42 - .../subjectAccessReviewStatus.libsonnet | 14 - .../subjectRulesReviewStatus.libsonnet | 18 - .../1.14/_gen/autoscaling/main.libsonnet | 7 - .../v1/crossVersionObjectReference.libsonnet | 10 - .../v1/horizontalPodAutoscaler.libsonnet | 109 -- .../v1/horizontalPodAutoscalerSpec.libsonnet | 19 - .../horizontalPodAutoscalerStatus.libsonnet | 16 - .../1.14/_gen/autoscaling/v1/main.libsonnet | 11 - .../1.14/_gen/autoscaling/v1/scale.libsonnet | 98 - .../_gen/autoscaling/v1/scaleSpec.libsonnet | 8 - .../_gen/autoscaling/v1/scaleStatus.libsonnet | 10 - .../crossVersionObjectReference.libsonnet | 10 - .../v2beta1/externalMetricSource.libsonnet | 23 - .../v2beta1/externalMetricStatus.libsonnet | 23 - .../v2beta1/horizontalPodAutoscaler.libsonnet | 111 -- ...horizontalPodAutoscalerCondition.libsonnet | 14 - .../horizontalPodAutoscalerSpec.libsonnet | 21 - .../horizontalPodAutoscalerStatus.libsonnet | 22 - .../_gen/autoscaling/v2beta1/main.libsonnet | 19 - .../autoscaling/v2beta1/metricSpec.libsonnet | 82 - .../v2beta1/metricStatus.libsonnet | 82 - .../v2beta1/objectMetricSource.libsonnet | 30 - .../v2beta1/objectMetricStatus.libsonnet | 30 - .../v2beta1/podsMetricSource.libsonnet | 21 - .../v2beta1/podsMetricStatus.libsonnet | 21 - .../v2beta1/resourceMetricSource.libsonnet | 12 - .../v2beta1/resourceMetricStatus.libsonnet | 12 - .../crossVersionObjectReference.libsonnet | 10 - .../v2beta2/externalMetricSource.libsonnet | 33 - .../v2beta2/externalMetricStatus.libsonnet | 31 - .../v2beta2/horizontalPodAutoscaler.libsonnet | 111 -- ...horizontalPodAutoscalerCondition.libsonnet | 14 - .../horizontalPodAutoscalerSpec.libsonnet | 21 - .../horizontalPodAutoscalerStatus.libsonnet | 22 - .../_gen/autoscaling/v2beta2/main.libsonnet | 22 - .../v2beta2/metricIdentifier.libsonnet | 19 - .../autoscaling/v2beta2/metricSpec.libsonnet | 121 -- .../v2beta2/metricStatus.libsonnet | 113 -- .../v2beta2/metricTarget.libsonnet | 14 - .../v2beta2/metricValueStatus.libsonnet | 12 - .../v2beta2/objectMetricSource.libsonnet | 40 - .../v2beta2/objectMetricStatus.libsonnet | 38 - .../v2beta2/podsMetricSource.libsonnet | 33 - .../v2beta2/podsMetricStatus.libsonnet | 31 - .../v2beta2/resourceMetricSource.libsonnet | 19 - .../v2beta2/resourceMetricStatus.libsonnet | 17 - .../k8s-alpha/1.14/_gen/batch/main.libsonnet | 7 - .../1.14/_gen/batch/v1/job.libsonnet | 361 ---- .../1.14/_gen/batch/v1/jobCondition.libsonnet | 16 - .../1.14/_gen/batch/v1/jobSpec.libsonnet | 271 --- .../1.14/_gen/batch/v1/jobStatus.libsonnet | 20 - .../1.14/_gen/batch/v1/main.libsonnet | 8 - .../1.14/_gen/batch/v1beta1/cronJob.libsonnet | 461 ----- .../_gen/batch/v1beta1/cronJobSpec.libsonnet | 371 ---- .../batch/v1beta1/cronJobStatus.libsonnet | 12 - .../batch/v1beta1/jobTemplateSpec.libsonnet | 356 ---- .../1.14/_gen/batch/v1beta1/main.libsonnet | 8 - .../_gen/batch/v2alpha1/cronJob.libsonnet | 461 ----- .../_gen/batch/v2alpha1/cronJobSpec.libsonnet | 371 ---- .../batch/v2alpha1/cronJobStatus.libsonnet | 12 - .../batch/v2alpha1/jobTemplateSpec.libsonnet | 356 ---- .../1.14/_gen/batch/v2alpha1/main.libsonnet | 8 - .../1.14/_gen/certificates/main.libsonnet | 5 - .../certificateSigningRequest.libsonnet | 114 -- ...rtificateSigningRequestCondition.libsonnet | 14 - .../certificateSigningRequestSpec.libsonnet | 24 - .../certificateSigningRequestStatus.libsonnet | 12 - .../_gen/certificates/v1beta1/main.libsonnet | 8 - .../1.14/_gen/coordination/main.libsonnet | 6 - .../1.14/_gen/coordination/v1/lease.libsonnet | 106 -- .../_gen/coordination/v1/leaseSpec.libsonnet | 16 - .../1.14/_gen/coordination/v1/main.libsonnet | 6 - .../_gen/coordination/v1beta1/lease.libsonnet | 106 -- .../coordination/v1beta1/leaseSpec.libsonnet | 16 - .../_gen/coordination/v1beta1/main.libsonnet | 6 - .../k8s-alpha/1.14/_gen/core/main.libsonnet | 5 - .../1.14/_gen/core/v1/affinity.libsonnet | 42 - .../_gen/core/v1/attachedVolume.libsonnet | 10 - ...awsElasticBlockStoreVolumeSource.libsonnet | 14 - .../core/v1/azureDiskVolumeSource.libsonnet | 18 - .../azureFilePersistentVolumeSource.libsonnet | 14 - .../core/v1/azureFileVolumeSource.libsonnet | 12 - .../1.14/_gen/core/v1/binding.libsonnet | 108 -- .../1.14/_gen/core/v1/capabilities.libsonnet | 14 - .../v1/cephFSPersistentVolumeSource.libsonnet | 25 - .../_gen/core/v1/cephFSVolumeSource.libsonnet | 23 - .../v1/cinderPersistentVolumeSource.libsonnet | 19 - .../_gen/core/v1/cinderVolumeSource.libsonnet | 17 - .../_gen/core/v1/clientIPConfig.libsonnet | 8 - .../_gen/core/v1/componentCondition.libsonnet | 12 - .../_gen/core/v1/componentStatus.libsonnet | 97 - .../1.14/_gen/core/v1/configMap.libsonnet | 101 - .../_gen/core/v1/configMapEnvSource.libsonnet | 10 - .../core/v1/configMapKeySelector.libsonnet | 12 - .../v1/configMapNodeConfigSource.libsonnet | 16 - .../core/v1/configMapProjection.libsonnet | 14 - .../core/v1/configMapVolumeSource.libsonnet | 16 - .../1.14/_gen/core/v1/container.libsonnet | 253 --- .../_gen/core/v1/containerImage.libsonnet | 12 - .../1.14/_gen/core/v1/containerPort.libsonnet | 16 - .../_gen/core/v1/containerState.libsonnet | 35 - .../core/v1/containerStateRunning.libsonnet | 8 - .../v1/containerStateTerminated.libsonnet | 20 - .../core/v1/containerStateWaiting.libsonnet | 10 - .../_gen/core/v1/containerStatus.libsonnet | 82 - .../v1/csiPersistentVolumeSource.libsonnet | 39 - .../_gen/core/v1/csiVolumeSource.libsonnet | 21 - .../_gen/core/v1/daemonEndpoint.libsonnet | 8 - .../core/v1/downwardAPIProjection.libsonnet | 10 - .../core/v1/downwardAPIVolumeFile.libsonnet | 24 - .../core/v1/downwardAPIVolumeSource.libsonnet | 12 - .../core/v1/emptyDirVolumeSource.libsonnet | 10 - .../_gen/core/v1/endpointAddress.libsonnet | 27 - .../1.14/_gen/core/v1/endpointPort.libsonnet | 12 - .../_gen/core/v1/endpointSubset.libsonnet | 18 - .../1.14/_gen/core/v1/endpoints.libsonnet | 97 - .../1.14/_gen/core/v1/envFromSource.libsonnet | 22 - .../1.14/_gen/core/v1/envVar.libsonnet | 45 - .../1.14/_gen/core/v1/envVarSource.libsonnet | 38 - .../1.14/_gen/core/v1/event.libsonnet | 159 -- .../1.14/_gen/core/v1/eventSeries.libsonnet | 12 - .../1.14/_gen/core/v1/eventSource.libsonnet | 10 - .../1.14/_gen/core/v1/execAction.libsonnet | 10 - .../_gen/core/v1/fcVolumeSource.libsonnet | 20 - .../v1/flexPersistentVolumeSource.libsonnet | 23 - .../_gen/core/v1/flexVolumeSource.libsonnet | 21 - .../core/v1/flockerVolumeSource.libsonnet | 10 - .../gcePersistentDiskVolumeSource.libsonnet | 14 - .../core/v1/gitRepoVolumeSource.libsonnet | 12 - .../glusterfsPersistentVolumeSource.libsonnet | 14 - .../core/v1/glusterfsVolumeSource.libsonnet | 12 - .../1.14/_gen/core/v1/handler.libsonnet | 35 - .../1.14/_gen/core/v1/hostAlias.libsonnet | 12 - .../core/v1/hostPathVolumeSource.libsonnet | 10 - .../1.14/_gen/core/v1/httpGetAction.libsonnet | 18 - .../1.14/_gen/core/v1/httpHeader.libsonnet | 10 - .../v1/iscsiPersistentVolumeSource.libsonnet | 35 - .../_gen/core/v1/iscsiVolumeSource.libsonnet | 33 - .../1.14/_gen/core/v1/keyToPath.libsonnet | 12 - .../1.14/_gen/core/v1/lifecycle.libsonnet | 70 - .../1.14/_gen/core/v1/limitRange.libsonnet | 100 - .../_gen/core/v1/limitRangeItem.libsonnet | 28 - .../_gen/core/v1/limitRangeSpec.libsonnet | 10 - .../core/v1/loadBalancerIngress.libsonnet | 10 - .../_gen/core/v1/loadBalancerStatus.libsonnet | 10 - .../core/v1/localObjectReference.libsonnet | 8 - .../_gen/core/v1/localVolumeSource.libsonnet | 10 - .../1.14/_gen/core/v1/main.libsonnet | 167 -- .../1.14/_gen/core/v1/namespace.libsonnet | 100 - .../1.14/_gen/core/v1/namespaceSpec.libsonnet | 10 - .../_gen/core/v1/namespaceStatus.libsonnet | 8 - .../_gen/core/v1/nfsVolumeSource.libsonnet | 12 - .../1.14/_gen/core/v1/node.libsonnet | 124 -- .../1.14/_gen/core/v1/nodeAddress.libsonnet | 10 - .../1.14/_gen/core/v1/nodeAffinity.libsonnet | 17 - .../1.14/_gen/core/v1/nodeCondition.libsonnet | 16 - .../_gen/core/v1/nodeConfigSource.libsonnet | 19 - .../_gen/core/v1/nodeConfigStatus.libsonnet | 56 - .../core/v1/nodeDaemonEndpoints.libsonnet | 11 - .../1.14/_gen/core/v1/nodeSelector.libsonnet | 10 - .../core/v1/nodeSelectorRequirement.libsonnet | 14 - .../_gen/core/v1/nodeSelectorTerm.libsonnet | 14 - .../1.14/_gen/core/v1/nodeSpec.libsonnet | 34 - .../1.14/_gen/core/v1/nodeStatus.libsonnet | 120 -- .../_gen/core/v1/nodeSystemInfo.libsonnet | 26 - .../core/v1/objectFieldSelector.libsonnet | 8 - .../_gen/core/v1/objectReference.libsonnet | 18 - .../_gen/core/v1/persistentVolume.libsonnet | 493 ----- .../core/v1/persistentVolumeClaim.libsonnet | 137 -- .../persistentVolumeClaimCondition.libsonnet | 16 - .../v1/persistentVolumeClaimSpec.libsonnet | 47 - .../v1/persistentVolumeClaimStatus.libsonnet | 20 - ...ersistentVolumeClaimVolumeSource.libsonnet | 10 - .../core/v1/persistentVolumeSpec.libsonnet | 403 ---- .../core/v1/persistentVolumeStatus.libsonnet | 12 - ...photonPersistentDiskVolumeSource.libsonnet | 10 - .../k8s-alpha/1.14/_gen/core/v1/pod.libsonnet | 250 --- .../1.14/_gen/core/v1/podAffinity.libsonnet | 14 - .../_gen/core/v1/podAffinityTerm.libsonnet | 23 - .../_gen/core/v1/podAntiAffinity.libsonnet | 14 - .../1.14/_gen/core/v1/podCondition.libsonnet | 16 - .../1.14/_gen/core/v1/podDNSConfig.libsonnet | 18 - .../_gen/core/v1/podDNSConfigOption.libsonnet | 10 - .../_gen/core/v1/podReadinessGate.libsonnet | 8 - .../_gen/core/v1/podSecurityContext.libsonnet | 33 - .../1.14/_gen/core/v1/podSpec.libsonnet | 160 -- .../1.14/_gen/core/v1/podStatus.libsonnet | 34 - .../1.14/_gen/core/v1/podTemplate.libsonnet | 335 ---- .../_gen/core/v1/podTemplateSpec.libsonnet | 245 --- .../core/v1/portworxVolumeSource.libsonnet | 12 - .../core/v1/preferredSchedulingTerm.libsonnet | 19 - .../1.14/_gen/core/v1/probe.libsonnet | 45 - .../core/v1/projectedVolumeSource.libsonnet | 12 - .../core/v1/quobyteVolumeSource.libsonnet | 18 - .../v1/rbdPersistentVolumeSource.libsonnet | 29 - .../_gen/core/v1/rbdVolumeSource.libsonnet | 27 - .../core/v1/replicationController.libsonnet | 346 ---- .../replicationControllerCondition.libsonnet | 14 - .../v1/replicationControllerSpec.libsonnet | 256 --- .../v1/replicationControllerStatus.libsonnet | 20 - .../core/v1/resourceFieldSelector.libsonnet | 12 - .../1.14/_gen/core/v1/resourceQuota.libsonnet | 111 -- .../_gen/core/v1/resourceQuotaSpec.libsonnet | 21 - .../core/v1/resourceQuotaStatus.libsonnet | 14 - .../core/v1/resourceRequirements.libsonnet | 14 - .../scaleIOPersistentVolumeSource.libsonnet | 31 - .../core/v1/scaleIOVolumeSource.libsonnet | 29 - .../1.14/_gen/core/v1/scopeSelector.libsonnet | 10 - ...copedResourceSelectorRequirement.libsonnet | 14 - .../_gen/core/v1/seLinuxOptions.libsonnet | 14 - .../1.14/_gen/core/v1/secret.libsonnet | 103 -- .../_gen/core/v1/secretEnvSource.libsonnet | 10 - .../_gen/core/v1/secretKeySelector.libsonnet | 12 - .../_gen/core/v1/secretProjection.libsonnet | 14 - .../_gen/core/v1/secretReference.libsonnet | 10 - .../_gen/core/v1/secretVolumeSource.libsonnet | 16 - .../_gen/core/v1/securityContext.libsonnet | 42 - .../1.14/_gen/core/v1/service.libsonnet | 136 -- .../_gen/core/v1/serviceAccount.libsonnet | 103 -- .../serviceAccountTokenProjection.libsonnet | 12 - .../1.14/_gen/core/v1/servicePort.libsonnet | 16 - .../1.14/_gen/core/v1/serviceSpec.libsonnet | 46 - .../1.14/_gen/core/v1/serviceStatus.libsonnet | 13 - .../core/v1/sessionAffinityConfig.libsonnet | 11 - .../storageOSPersistentVolumeSource.libsonnet | 29 - .../core/v1/storageOSVolumeSource.libsonnet | 19 - .../1.14/_gen/core/v1/sysctl.libsonnet | 10 - .../1.14/_gen/core/v1/taint.libsonnet | 14 - .../_gen/core/v1/tcpSocketAction.libsonnet | 10 - .../1.14/_gen/core/v1/toleration.libsonnet | 16 - ...topologySelectorLabelRequirement.libsonnet | 12 - .../core/v1/topologySelectorTerm.libsonnet | 10 - .../v1/typedLocalObjectReference.libsonnet | 12 - .../1.14/_gen/core/v1/volume.libsonnet | 378 ---- .../1.14/_gen/core/v1/volumeDevice.libsonnet | 10 - .../1.14/_gen/core/v1/volumeMount.libsonnet | 18 - .../_gen/core/v1/volumeNodeAffinity.libsonnet | 13 - .../_gen/core/v1/volumeProjection.libsonnet | 44 - .../vsphereVirtualDiskVolumeSource.libsonnet | 14 - .../core/v1/weightedPodAffinityTerm.libsonnet | 28 - .../k8s-alpha/1.14/_gen/events/main.libsonnet | 5 - .../1.14/_gen/events/v1beta1/event.libsonnet | 159 -- .../_gen/events/v1beta1/eventSeries.libsonnet | 12 - .../1.14/_gen/events/v1beta1/main.libsonnet | 6 - .../1.14/_gen/extensions/main.libsonnet | 5 - .../v1beta1/allowedCSIDriver.libsonnet | 8 - .../v1beta1/allowedFlexVolume.libsonnet | 8 - .../v1beta1/allowedHostPath.libsonnet | 10 - .../extensions/v1beta1/daemonSet.libsonnet | 365 ---- .../v1beta1/daemonSetCondition.libsonnet | 14 - .../v1beta1/daemonSetSpec.libsonnet | 275 --- .../v1beta1/daemonSetStatus.libsonnet | 28 - .../v1beta1/daemonSetUpdateStrategy.libsonnet | 13 - .../extensions/v1beta1/deployment.libsonnet | 376 ---- .../v1beta1/deploymentCondition.libsonnet | 16 - .../v1beta1/deploymentRollback.libsonnet | 22 - .../v1beta1/deploymentSpec.libsonnet | 286 --- .../v1beta1/deploymentStatus.libsonnet | 24 - .../v1beta1/deploymentStrategy.libsonnet | 15 - .../v1beta1/fsGroupStrategyOptions.libsonnet | 12 - .../v1beta1/hostPortRange.libsonnet | 10 - .../v1beta1/httpIngressPath.libsonnet | 15 - .../v1beta1/httpIngressRuleValue.libsonnet | 10 - .../_gen/extensions/v1beta1/idRange.libsonnet | 10 - .../_gen/extensions/v1beta1/ingress.libsonnet | 111 -- .../v1beta1/ingressBackend.libsonnet | 10 - .../extensions/v1beta1/ingressRule.libsonnet | 15 - .../extensions/v1beta1/ingressSpec.libsonnet | 21 - .../v1beta1/ingressStatus.libsonnet | 13 - .../extensions/v1beta1/ingressTLS.libsonnet | 12 - .../_gen/extensions/v1beta1/ipBlock.libsonnet | 12 - .../_gen/extensions/v1beta1/main.libsonnet | 52 - .../v1beta1/networkPolicy.libsonnet | 119 -- .../v1beta1/networkPolicyEgressRule.libsonnet | 14 - .../networkPolicyIngressRule.libsonnet | 14 - .../v1beta1/networkPolicyPeer.libsonnet | 37 - .../v1beta1/networkPolicyPort.libsonnet | 10 - .../v1beta1/networkPolicySpec.libsonnet | 29 - .../v1beta1/podSecurityPolicy.libsonnet | 206 --- .../v1beta1/podSecurityPolicySpec.libsonnet | 116 -- .../extensions/v1beta1/replicaSet.libsonnet | 353 ---- .../v1beta1/replicaSetCondition.libsonnet | 14 - .../v1beta1/replicaSetSpec.libsonnet | 263 --- .../v1beta1/replicaSetStatus.libsonnet | 20 - .../v1beta1/rollbackConfig.libsonnet | 8 - .../v1beta1/rollingUpdateDaemonSet.libsonnet | 8 - .../v1beta1/rollingUpdateDeployment.libsonnet | 10 - .../runAsGroupStrategyOptions.libsonnet | 12 - .../runAsUserStrategyOptions.libsonnet | 12 - .../_gen/extensions/v1beta1/scale.libsonnet | 98 - .../extensions/v1beta1/scaleSpec.libsonnet | 8 - .../extensions/v1beta1/scaleStatus.libsonnet | 14 - .../v1beta1/seLinuxStrategyOptions.libsonnet | 19 - ...upplementalGroupsStrategyOptions.libsonnet | 12 - .../1.14/_gen/networking/main.libsonnet | 6 - .../1.14/_gen/networking/v1/ipBlock.libsonnet | 12 - .../1.14/_gen/networking/v1/main.libsonnet | 11 - .../networking/v1/networkPolicy.libsonnet | 119 -- .../v1/networkPolicyEgressRule.libsonnet | 14 - .../v1/networkPolicyIngressRule.libsonnet | 14 - .../networking/v1/networkPolicyPeer.libsonnet | 37 - .../networking/v1/networkPolicyPort.libsonnet | 10 - .../networking/v1/networkPolicySpec.libsonnet | 29 - .../v1beta1/httpIngressPath.libsonnet | 15 - .../v1beta1/httpIngressRuleValue.libsonnet | 10 - .../_gen/networking/v1beta1/ingress.libsonnet | 111 -- .../v1beta1/ingressBackend.libsonnet | 10 - .../networking/v1beta1/ingressRule.libsonnet | 15 - .../networking/v1beta1/ingressSpec.libsonnet | 21 - .../v1beta1/ingressStatus.libsonnet | 13 - .../networking/v1beta1/ingressTLS.libsonnet | 12 - .../_gen/networking/v1beta1/main.libsonnet | 12 - .../k8s-alpha/1.14/_gen/node/main.libsonnet | 6 - .../1.14/_gen/node/v1alpha1/main.libsonnet | 6 - .../_gen/node/v1alpha1/runtimeClass.libsonnet | 98 - .../node/v1alpha1/runtimeClassSpec.libsonnet | 8 - .../1.14/_gen/node/v1beta1/main.libsonnet | 5 - .../_gen/node/v1beta1/runtimeClass.libsonnet | 95 - .../k8s-alpha/1.14/_gen/policy/main.libsonnet | 5 - .../policy/v1beta1/allowedCSIDriver.libsonnet | 8 - .../v1beta1/allowedFlexVolume.libsonnet | 8 - .../policy/v1beta1/allowedHostPath.libsonnet | 10 - .../_gen/policy/v1beta1/eviction.libsonnet | 115 -- .../v1beta1/fsGroupStrategyOptions.libsonnet | 12 - .../policy/v1beta1/hostPortRange.libsonnet | 10 - .../_gen/policy/v1beta1/idRange.libsonnet | 10 - .../1.14/_gen/policy/v1beta1/main.libsonnet | 20 - .../v1beta1/podDisruptionBudget.libsonnet | 111 -- .../v1beta1/podDisruptionBudgetSpec.libsonnet | 21 - .../podDisruptionBudgetStatus.libsonnet | 20 - .../v1beta1/podSecurityPolicy.libsonnet | 206 --- .../v1beta1/podSecurityPolicySpec.libsonnet | 116 -- .../runAsGroupStrategyOptions.libsonnet | 12 - .../runAsUserStrategyOptions.libsonnet | 12 - .../v1beta1/seLinuxStrategyOptions.libsonnet | 19 - ...upplementalGroupsStrategyOptions.libsonnet | 12 - .../k8s-alpha/1.14/_gen/rbac/main.libsonnet | 7 - .../_gen/rbac/v1/aggregationRule.libsonnet | 10 - .../1.14/_gen/rbac/v1/clusterRole.libsonnet | 104 -- .../_gen/rbac/v1/clusterRoleBinding.libsonnet | 106 -- .../1.14/_gen/rbac/v1/main.libsonnet | 12 - .../1.14/_gen/rbac/v1/policyRule.libsonnet | 26 - .../1.14/_gen/rbac/v1/role.libsonnet | 97 - .../1.14/_gen/rbac/v1/roleBinding.libsonnet | 106 -- .../1.14/_gen/rbac/v1/roleRef.libsonnet | 12 - .../1.14/_gen/rbac/v1/subject.libsonnet | 14 - .../rbac/v1alpha1/aggregationRule.libsonnet | 10 - .../_gen/rbac/v1alpha1/clusterRole.libsonnet | 104 -- .../v1alpha1/clusterRoleBinding.libsonnet | 106 -- .../1.14/_gen/rbac/v1alpha1/main.libsonnet | 12 - .../_gen/rbac/v1alpha1/policyRule.libsonnet | 26 - .../1.14/_gen/rbac/v1alpha1/role.libsonnet | 97 - .../_gen/rbac/v1alpha1/roleBinding.libsonnet | 106 -- .../1.14/_gen/rbac/v1alpha1/roleRef.libsonnet | 12 - .../1.14/_gen/rbac/v1alpha1/subject.libsonnet | 12 - .../rbac/v1beta1/aggregationRule.libsonnet | 10 - .../_gen/rbac/v1beta1/clusterRole.libsonnet | 104 -- .../rbac/v1beta1/clusterRoleBinding.libsonnet | 106 -- .../1.14/_gen/rbac/v1beta1/main.libsonnet | 12 - .../_gen/rbac/v1beta1/policyRule.libsonnet | 26 - .../1.14/_gen/rbac/v1beta1/role.libsonnet | 97 - .../_gen/rbac/v1beta1/roleBinding.libsonnet | 106 -- .../1.14/_gen/rbac/v1beta1/roleRef.libsonnet | 12 - .../1.14/_gen/rbac/v1beta1/subject.libsonnet | 14 - .../1.14/_gen/scheduling/main.libsonnet | 7 - .../1.14/_gen/scheduling/v1/main.libsonnet | 5 - .../scheduling/v1/priorityClass.libsonnet | 99 - .../_gen/scheduling/v1alpha1/main.libsonnet | 5 - .../v1alpha1/priorityClass.libsonnet | 99 - .../_gen/scheduling/v1beta1/main.libsonnet | 5 - .../v1beta1/priorityClass.libsonnet | 99 - .../1.14/_gen/settings/main.libsonnet | 5 - .../_gen/settings/v1alpha1/main.libsonnet | 6 - .../settings/v1alpha1/podPreset.libsonnet | 123 -- .../settings/v1alpha1/podPresetSpec.libsonnet | 33 - .../1.14/_gen/storage/main.libsonnet | 7 - .../1.14/_gen/storage/v1/main.libsonnet | 10 - .../_gen/storage/v1/storageClass.libsonnet | 113 -- .../storage/v1/volumeAttachment.libsonnet | 105 -- .../v1/volumeAttachmentSource.libsonnet | 8 - .../storage/v1/volumeAttachmentSpec.libsonnet | 15 - .../v1/volumeAttachmentStatus.libsonnet | 26 - .../_gen/storage/v1/volumeError.libsonnet | 10 - .../1.14/_gen/storage/v1alpha1/main.libsonnet | 9 - .../v1alpha1/volumeAttachment.libsonnet | 105 -- .../v1alpha1/volumeAttachmentSource.libsonnet | 8 - .../v1alpha1/volumeAttachmentSpec.libsonnet | 15 - .../v1alpha1/volumeAttachmentStatus.libsonnet | 26 - .../storage/v1alpha1/volumeError.libsonnet | 10 - .../_gen/storage/v1beta1/csiDriver.libsonnet | 100 - .../storage/v1beta1/csiDriverSpec.libsonnet | 10 - .../_gen/storage/v1beta1/csiNode.libsonnet | 100 - .../storage/v1beta1/csiNodeDriver.libsonnet | 14 - .../storage/v1beta1/csiNodeSpec.libsonnet | 10 - .../1.14/_gen/storage/v1beta1/main.libsonnet | 15 - .../storage/v1beta1/storageClass.libsonnet | 113 -- .../v1beta1/volumeAttachment.libsonnet | 105 -- .../v1beta1/volumeAttachmentSource.libsonnet | 8 - .../v1beta1/volumeAttachmentSpec.libsonnet | 15 - .../v1beta1/volumeAttachmentStatus.libsonnet | 26 - .../storage/v1beta1/volumeError.libsonnet | 10 - .../1.14/extensions/kausal-shim.libsonnet | 205 --- .../jsonnet-libs/k8s-alpha/1.14/gen.libsonnet | 23 - .../k8s-alpha/1.14/main.libsonnet | 1 - example/k3d/vendor/grafana-agent | 1 - example/k3d/vendor/grafana-agent-mixin | 1 - example/k3d/vendor/grafana-builder | 1 - example/k3d/vendor/grafonnet | 1 - example/k3d/vendor/ksonnet-util | 1 - example/k3d/vendor/mixin-utils | 1 - go.mod | 11 +- go.sum | 81 +- pkg/config/config.go | 42 +- pkg/config/config_test.go | 3 +- pkg/config/integrations.go | 148 ++ pkg/config/integrations_test.go | 45 + pkg/integrations/cadvisor/cadvisor_stub.go | 4 +- .../consul_exporter/consul_exporter.go | 3 + .../dnsmasq_exporter/dnsmasq_exporter.go | 3 + .../elasticsearch_exporter.go | 3 + .../github_exporter/github_exporter.go | 3 + pkg/integrations/install/install.go | 10 + pkg/integrations/install/shims.go | 30 + .../kafka_exporter/kafka_exporter.go | 3 + pkg/integrations/manager.go | 15 +- .../memcached_exporter/memcached_exporter.go | 3 + .../mongodb_exporter/mongodb_exporter.go | 3 + .../mysqld_exporter/mysqld-exporter.go | 3 + pkg/integrations/node_exporter/collectors.go | 54 +- pkg/integrations/node_exporter/config.go | 238 ++- pkg/integrations/node_exporter/config_test.go | 133 ++ .../node_exporter/node_exporter.go | 4 + .../node_exporter/node_exporter_test.go | 21 +- .../postgres_exporter/postgres_exporter.go | 3 + .../redis_exporter/redis_exporter.go | 3 + pkg/integrations/register.go | 10 + .../statsd_exporter/statsd_exporter.go | 6 +- pkg/integrations/v2/agent/agent.go | 46 + pkg/integrations/v2/autoscrape/appender.go | 32 + pkg/integrations/v2/autoscrape/autoscrape.go | 296 +++ .../v2/autoscrape/autoscrape_test.go | 108 ++ pkg/integrations/v2/common/metrics.go | 34 + pkg/integrations/v2/controller.go | 521 ++++++ .../v2/controller_httpintegration_test.go | 224 +++ .../v2/controller_metricsintegration_test.go | 154 ++ pkg/integrations/v2/controller_test.go | 260 +++ .../v2/controller_updateintegration_test.go | 79 + pkg/integrations/v2/integrations.go | 189 ++ .../metricshandler_integration.go | 147 ++ .../v2/metricsutils/versionshim.go | 129 ++ pkg/integrations/v2/register.go | 421 +++++ pkg/integrations/v2/register_test.go | 203 +++ pkg/integrations/v2/subsystem.go | 252 +++ pkg/integrations/v2/subsystem_test.go | 65 + pkg/integrations/v2/targetgroup.go | 28 + pkg/integrations/v2/utils.go | 32 + pkg/metrics/agent.go | 4 + pkg/metrics/http.go | 114 +- pkg/operator/defaults.go | 1 + .../automaticloggingprocessor.go | 9 +- .../automaticloggingprocessor_test.go | 5 + pkg/util/trigger.go | 55 + pkg/util/trigger_test.go | 30 + pkg/util/yaml.go | 21 +- pkg/util/yaml_test.go | 47 + production/README.md | 2 +- production/grafanacloud-install.sh | 2 +- production/kubernetes/agent-bare.yaml | 2 +- production/kubernetes/agent-loki.yaml | 2 +- production/kubernetes/agent-traces.yaml | 2 +- .../kubernetes/build/lib/version.libsonnet | 2 +- production/kubernetes/build/vendor/1.21 | 1 - .../ksonnet-util/grafana.libsonnet | 71 - .../ksonnet-util/k-compat.libsonnet | 22 - .../ksonnet-util/kausal.libsonnet | 29 - .../ksonnet-util/legacy-custom.libsonnet | 156 -- .../ksonnet-util/legacy-noname.libsonnet | 51 - .../ksonnet-util/legacy-subtypes.libsonnet | 168 -- .../ksonnet-util/legacy-types.libsonnet | 26 - .../jsonnet-libs/ksonnet-util/util.libsonnet | 264 --- .../k8s-libsonnet/1.21/_custom/apps.libsonnet | 83 - .../1.21/_custom/batch.libsonnet | 27 - .../k8s-libsonnet/1.21/_custom/core.libsonnet | 214 --- .../k8s-libsonnet/1.21/_custom/list.libsonnet | 27 - .../1.21/_custom/mapContainers.libsonnet | 74 - .../k8s-libsonnet/1.21/_custom/rbac.libsonnet | 43 - .../1.21/_custom/volumeMounts.libsonnet | 169 -- .../_gen/admissionregistration/main.libsonnet | 6 - .../admissionregistration/v1/main.libsonnet | 11 - .../v1/mutatingWebhook.libsonnet | 66 - .../v1/mutatingWebhookConfiguration.libsonnet | 60 - .../v1/ruleWithOperations.libsonnet | 24 - .../v1/serviceReference.libsonnet | 14 - .../v1/validatingWebhook.libsonnet | 64 - .../validatingWebhookConfiguration.libsonnet | 60 - .../v1/webhookClientConfig.libsonnet | 21 - .../v1beta1/main.libsonnet | 11 - .../v1beta1/mutatingWebhook.libsonnet | 66 - .../mutatingWebhookConfiguration.libsonnet | 60 - .../v1beta1/ruleWithOperations.libsonnet | 24 - .../v1beta1/serviceReference.libsonnet | 14 - .../v1beta1/validatingWebhook.libsonnet | 64 - .../validatingWebhookConfiguration.libsonnet | 60 - .../v1beta1/webhookClientConfig.libsonnet | 21 - .../1.21/_gen/apiregistration/main.libsonnet | 6 - .../apiregistration/v1/apiService.libsonnet | 80 - .../v1/apiServiceCondition.libsonnet | 14 - .../v1/apiServiceSpec.libsonnet | 27 - .../v1/apiServiceStatus.libsonnet | 10 - .../_gen/apiregistration/v1/main.libsonnet | 9 - .../v1/serviceReference.libsonnet | 12 - .../v1beta1/apiService.libsonnet | 80 - .../v1beta1/apiServiceCondition.libsonnet | 14 - .../v1beta1/apiServiceSpec.libsonnet | 27 - .../v1beta1/apiServiceStatus.libsonnet | 10 - .../apiregistration/v1beta1/main.libsonnet | 9 - .../v1beta1/serviceReference.libsonnet | 12 - .../_gen/apiserverinternal/main.libsonnet | 5 - .../apiserverinternal/v1alpha1/main.libsonnet | 9 - .../v1alpha1/serverStorageVersion.libsonnet | 14 - .../v1alpha1/storageVersion.libsonnet | 60 - .../storageVersionCondition.libsonnet | 16 - .../v1alpha1/storageVersionSpec.libsonnet | 6 - .../v1alpha1/storageVersionStatus.libsonnet | 16 - .../1.21/_gen/apps/main.libsonnet | 5 - .../_gen/apps/v1/controllerRevision.libsonnet | 62 - .../1.21/_gen/apps/v1/daemonSet.libsonnet | 325 ---- .../_gen/apps/v1/daemonSetCondition.libsonnet | 14 - .../1.21/_gen/apps/v1/daemonSetSpec.libsonnet | 272 --- .../_gen/apps/v1/daemonSetStatus.libsonnet | 28 - .../apps/v1/daemonSetUpdateStrategy.libsonnet | 15 - .../1.21/_gen/apps/v1/deployment.libsonnet | 331 ---- .../apps/v1/deploymentCondition.libsonnet | 16 - .../_gen/apps/v1/deploymentSpec.libsonnet | 278 --- .../_gen/apps/v1/deploymentStatus.libsonnet | 24 - .../_gen/apps/v1/deploymentStrategy.libsonnet | 15 - .../1.21/_gen/apps/v1/main.libsonnet | 27 - .../1.21/_gen/apps/v1/replicaSet.libsonnet | 313 ---- .../apps/v1/replicaSetCondition.libsonnet | 14 - .../_gen/apps/v1/replicaSetSpec.libsonnet | 260 --- .../_gen/apps/v1/replicaSetStatus.libsonnet | 20 - .../apps/v1/rollingUpdateDaemonSet.libsonnet | 10 - .../apps/v1/rollingUpdateDeployment.libsonnet | 10 - ...rollingUpdateStatefulSetStrategy.libsonnet | 8 - .../1.21/_gen/apps/v1/statefulSet.libsonnet | 331 ---- .../apps/v1/statefulSetCondition.libsonnet | 14 - .../_gen/apps/v1/statefulSetSpec.libsonnet | 278 --- .../_gen/apps/v1/statefulSetStatus.libsonnet | 26 - .../v1/statefulSetUpdateStrategy.libsonnet | 13 - .../1.21/_gen/authentication/main.libsonnet | 6 - .../v1/boundObjectReference.libsonnet | 12 - .../_gen/authentication/v1/main.libsonnet | 12 - .../authentication/v1/tokenRequest.libsonnet | 76 - .../v1/tokenRequestSpec.libsonnet | 23 - .../v1/tokenRequestStatus.libsonnet | 10 - .../authentication/v1/tokenReview.libsonnet | 65 - .../v1/tokenReviewSpec.libsonnet | 12 - .../v1/tokenReviewStatus.libsonnet | 29 - .../_gen/authentication/v1/userInfo.libsonnet | 18 - .../authentication/v1beta1/main.libsonnet | 8 - .../v1beta1/tokenReview.libsonnet | 65 - .../v1beta1/tokenReviewSpec.libsonnet | 12 - .../v1beta1/tokenReviewStatus.libsonnet | 29 - .../authentication/v1beta1/userInfo.libsonnet | 18 - .../1.21/_gen/authorization/main.libsonnet | 6 - .../v1/localSubjectAccessReview.libsonnet | 95 - .../1.21/_gen/authorization/v1/main.libsonnet | 17 - .../v1/nonResourceAttributes.libsonnet | 10 - .../v1/nonResourceRule.libsonnet | 14 - .../v1/resourceAttributes.libsonnet | 20 - .../authorization/v1/resourceRule.libsonnet | 22 - .../v1/selfSubjectAccessReview.libsonnet | 83 - .../v1/selfSubjectAccessReviewSpec.libsonnet | 30 - .../v1/selfSubjectRulesReview.libsonnet | 61 - .../v1/selfSubjectRulesReviewSpec.libsonnet | 8 - .../v1/subjectAccessReview.libsonnet | 95 - .../v1/subjectAccessReviewSpec.libsonnet | 42 - .../v1/subjectAccessReviewStatus.libsonnet | 14 - .../v1/subjectRulesReviewStatus.libsonnet | 18 - .../localSubjectAccessReview.libsonnet | 95 - .../_gen/authorization/v1beta1/main.libsonnet | 17 - .../v1beta1/nonResourceAttributes.libsonnet | 10 - .../v1beta1/nonResourceRule.libsonnet | 14 - .../v1beta1/resourceAttributes.libsonnet | 20 - .../v1beta1/resourceRule.libsonnet | 22 - .../v1beta1/selfSubjectAccessReview.libsonnet | 83 - .../selfSubjectAccessReviewSpec.libsonnet | 30 - .../v1beta1/selfSubjectRulesReview.libsonnet | 61 - .../selfSubjectRulesReviewSpec.libsonnet | 8 - .../v1beta1/subjectAccessReview.libsonnet | 95 - .../v1beta1/subjectAccessReviewSpec.libsonnet | 42 - .../subjectAccessReviewStatus.libsonnet | 14 - .../subjectRulesReviewStatus.libsonnet | 18 - .../1.21/_gen/autoscaling/main.libsonnet | 7 - .../v1/crossVersionObjectReference.libsonnet | 10 - .../v1/horizontalPodAutoscaler.libsonnet | 74 - .../v1/horizontalPodAutoscalerSpec.libsonnet | 21 - .../horizontalPodAutoscalerStatus.libsonnet | 16 - .../1.21/_gen/autoscaling/v1/main.libsonnet | 11 - .../1.21/_gen/autoscaling/v1/scale.libsonnet | 61 - .../_gen/autoscaling/v1/scaleSpec.libsonnet | 8 - .../_gen/autoscaling/v1/scaleStatus.libsonnet | 10 - .../containerResourceMetricSource.libsonnet | 14 - .../containerResourceMetricStatus.libsonnet | 14 - .../crossVersionObjectReference.libsonnet | 10 - .../v2beta1/externalMetricSource.libsonnet | 23 - .../v2beta1/externalMetricStatus.libsonnet | 23 - .../v2beta1/horizontalPodAutoscaler.libsonnet | 76 - ...horizontalPodAutoscalerCondition.libsonnet | 14 - .../horizontalPodAutoscalerSpec.libsonnet | 23 - .../horizontalPodAutoscalerStatus.libsonnet | 22 - .../_gen/autoscaling/v2beta1/main.libsonnet | 21 - .../autoscaling/v2beta1/metricSpec.libsonnet | 95 - .../v2beta1/metricStatus.libsonnet | 95 - .../v2beta1/objectMetricSource.libsonnet | 32 - .../v2beta1/objectMetricStatus.libsonnet | 32 - .../v2beta1/podsMetricSource.libsonnet | 21 - .../v2beta1/podsMetricStatus.libsonnet | 21 - .../v2beta1/resourceMetricSource.libsonnet | 12 - .../v2beta1/resourceMetricStatus.libsonnet | 12 - .../containerResourceMetricSource.libsonnet | 21 - .../containerResourceMetricStatus.libsonnet | 19 - .../crossVersionObjectReference.libsonnet | 10 - .../v2beta2/externalMetricSource.libsonnet | 33 - .../v2beta2/externalMetricStatus.libsonnet | 31 - .../v2beta2/horizontalPodAutoscaler.libsonnet | 101 - .../horizontalPodAutoscalerBehavior.libsonnet | 28 - ...horizontalPodAutoscalerCondition.libsonnet | 14 - .../horizontalPodAutoscalerSpec.libsonnet | 48 - .../horizontalPodAutoscalerStatus.libsonnet | 22 - .../v2beta2/hpaScalingPolicy.libsonnet | 12 - .../v2beta2/hpaScalingRules.libsonnet | 14 - .../_gen/autoscaling/v2beta2/main.libsonnet | 27 - .../v2beta2/metricIdentifier.libsonnet | 19 - .../autoscaling/v2beta2/metricSpec.libsonnet | 141 -- .../v2beta2/metricStatus.libsonnet | 131 -- .../v2beta2/metricTarget.libsonnet | 14 - .../v2beta2/metricValueStatus.libsonnet | 12 - .../v2beta2/objectMetricSource.libsonnet | 42 - .../v2beta2/objectMetricStatus.libsonnet | 40 - .../v2beta2/podsMetricSource.libsonnet | 33 - .../v2beta2/podsMetricStatus.libsonnet | 31 - .../v2beta2/resourceMetricSource.libsonnet | 19 - .../v2beta2/resourceMetricStatus.libsonnet | 17 - .../1.21/_gen/batch/main.libsonnet | 6 - .../1.21/_gen/batch/v1/cronJob.libsonnet | 388 ---- .../1.21/_gen/batch/v1/cronJobSpec.libsonnet | 335 ---- .../_gen/batch/v1/cronJobStatus.libsonnet | 14 - .../1.21/_gen/batch/v1/job.libsonnet | 325 ---- .../1.21/_gen/batch/v1/jobCondition.libsonnet | 16 - .../1.21/_gen/batch/v1/jobSpec.libsonnet | 272 --- .../1.21/_gen/batch/v1/jobStatus.libsonnet | 22 - .../_gen/batch/v1/jobTemplateSpec.libsonnet | 320 ---- .../1.21/_gen/batch/v1/main.libsonnet | 12 - .../1.21/_gen/batch/v1beta1/cronJob.libsonnet | 388 ---- .../_gen/batch/v1beta1/cronJobSpec.libsonnet | 335 ---- .../batch/v1beta1/cronJobStatus.libsonnet | 14 - .../batch/v1beta1/jobTemplateSpec.libsonnet | 320 ---- .../1.21/_gen/batch/v1beta1/main.libsonnet | 8 - .../1.21/_gen/certificates/main.libsonnet | 6 - .../v1/certificateSigningRequest.libsonnet | 79 - ...rtificateSigningRequestCondition.libsonnet | 16 - .../certificateSigningRequestSpec.libsonnet | 26 - .../certificateSigningRequestStatus.libsonnet | 12 - .../1.21/_gen/certificates/v1/main.libsonnet | 8 - .../certificateSigningRequest.libsonnet | 79 - ...rtificateSigningRequestCondition.libsonnet | 16 - .../certificateSigningRequestSpec.libsonnet | 26 - .../certificateSigningRequestStatus.libsonnet | 12 - .../_gen/certificates/v1beta1/main.libsonnet | 8 - .../1.21/_gen/coordination/main.libsonnet | 6 - .../1.21/_gen/coordination/v1/lease.libsonnet | 69 - .../_gen/coordination/v1/leaseSpec.libsonnet | 16 - .../1.21/_gen/coordination/v1/main.libsonnet | 6 - .../_gen/coordination/v1beta1/lease.libsonnet | 69 - .../coordination/v1beta1/leaseSpec.libsonnet | 16 - .../_gen/coordination/v1beta1/main.libsonnet | 6 - .../1.21/_gen/core/main.libsonnet | 5 - .../1.21/_gen/core/v1/affinity.libsonnet | 42 - .../_gen/core/v1/attachedVolume.libsonnet | 10 - ...awsElasticBlockStoreVolumeSource.libsonnet | 14 - .../core/v1/azureDiskVolumeSource.libsonnet | 18 - .../azureFilePersistentVolumeSource.libsonnet | 14 - .../core/v1/azureFileVolumeSource.libsonnet | 12 - .../1.21/_gen/core/v1/binding.libsonnet | 73 - .../1.21/_gen/core/v1/capabilities.libsonnet | 14 - .../v1/cephFSPersistentVolumeSource.libsonnet | 25 - .../_gen/core/v1/cephFSVolumeSource.libsonnet | 23 - .../v1/cinderPersistentVolumeSource.libsonnet | 19 - .../_gen/core/v1/cinderVolumeSource.libsonnet | 17 - .../_gen/core/v1/clientIPConfig.libsonnet | 8 - .../_gen/core/v1/componentCondition.libsonnet | 12 - .../_gen/core/v1/componentStatus.libsonnet | 60 - .../1.21/_gen/core/v1/configMap.libsonnet | 66 - .../_gen/core/v1/configMapEnvSource.libsonnet | 10 - .../core/v1/configMapKeySelector.libsonnet | 12 - .../v1/configMapNodeConfigSource.libsonnet | 16 - .../core/v1/configMapProjection.libsonnet | 14 - .../core/v1/configMapVolumeSource.libsonnet | 16 - .../1.21/_gen/core/v1/container.libsonnet | 317 ---- .../_gen/core/v1/containerImage.libsonnet | 12 - .../1.21/_gen/core/v1/containerPort.libsonnet | 16 - .../_gen/core/v1/containerState.libsonnet | 35 - .../core/v1/containerStateRunning.libsonnet | 8 - .../v1/containerStateTerminated.libsonnet | 20 - .../core/v1/containerStateWaiting.libsonnet | 10 - .../_gen/core/v1/containerStatus.libsonnet | 84 - .../v1/csiPersistentVolumeSource.libsonnet | 46 - .../_gen/core/v1/csiVolumeSource.libsonnet | 21 - .../_gen/core/v1/daemonEndpoint.libsonnet | 8 - .../core/v1/downwardAPIProjection.libsonnet | 10 - .../core/v1/downwardAPIVolumeFile.libsonnet | 26 - .../core/v1/downwardAPIVolumeSource.libsonnet | 12 - .../core/v1/emptyDirVolumeSource.libsonnet | 10 - .../_gen/core/v1/endpointAddress.libsonnet | 29 - .../1.21/_gen/core/v1/endpointPort.libsonnet | 14 - .../_gen/core/v1/endpointSubset.libsonnet | 18 - .../1.21/_gen/core/v1/endpoints.libsonnet | 60 - .../1.21/_gen/core/v1/envFromSource.libsonnet | 22 - .../1.21/_gen/core/v1/envVar.libsonnet | 47 - .../1.21/_gen/core/v1/envVarSource.libsonnet | 40 - .../_gen/core/v1/ephemeralContainer.libsonnet | 319 ---- .../core/v1/ephemeralContainers.libsonnet | 60 - .../core/v1/ephemeralVolumeSource.libsonnet | 98 - .../1.21/_gen/core/v1/event.libsonnet | 124 -- .../1.21/_gen/core/v1/eventSeries.libsonnet | 10 - .../1.21/_gen/core/v1/eventSource.libsonnet | 10 - .../1.21/_gen/core/v1/execAction.libsonnet | 10 - .../_gen/core/v1/fcVolumeSource.libsonnet | 20 - .../v1/flexPersistentVolumeSource.libsonnet | 23 - .../_gen/core/v1/flexVolumeSource.libsonnet | 21 - .../core/v1/flockerVolumeSource.libsonnet | 10 - .../gcePersistentDiskVolumeSource.libsonnet | 14 - .../core/v1/gitRepoVolumeSource.libsonnet | 12 - .../glusterfsPersistentVolumeSource.libsonnet | 14 - .../core/v1/glusterfsVolumeSource.libsonnet | 12 - .../1.21/_gen/core/v1/handler.libsonnet | 35 - .../1.21/_gen/core/v1/hostAlias.libsonnet | 12 - .../core/v1/hostPathVolumeSource.libsonnet | 10 - .../1.21/_gen/core/v1/httpGetAction.libsonnet | 18 - .../1.21/_gen/core/v1/httpHeader.libsonnet | 10 - .../v1/iscsiPersistentVolumeSource.libsonnet | 35 - .../_gen/core/v1/iscsiVolumeSource.libsonnet | 33 - .../1.21/_gen/core/v1/keyToPath.libsonnet | 12 - .../1.21/_gen/core/v1/lifecycle.libsonnet | 70 - .../1.21/_gen/core/v1/limitRange.libsonnet | 63 - .../_gen/core/v1/limitRangeItem.libsonnet | 28 - .../_gen/core/v1/limitRangeSpec.libsonnet | 10 - .../core/v1/loadBalancerIngress.libsonnet | 14 - .../_gen/core/v1/loadBalancerStatus.libsonnet | 10 - .../core/v1/localObjectReference.libsonnet | 8 - .../_gen/core/v1/localVolumeSource.libsonnet | 10 - .../1.21/_gen/core/v1/main.libsonnet | 177 -- .../1.21/_gen/core/v1/namespace.libsonnet | 63 - .../_gen/core/v1/namespaceCondition.libsonnet | 14 - .../1.21/_gen/core/v1/namespaceSpec.libsonnet | 10 - .../_gen/core/v1/namespaceStatus.libsonnet | 12 - .../_gen/core/v1/nfsVolumeSource.libsonnet | 12 - .../1.21/_gen/core/v1/node.libsonnet | 91 - .../1.21/_gen/core/v1/nodeAddress.libsonnet | 10 - .../1.21/_gen/core/v1/nodeAffinity.libsonnet | 17 - .../1.21/_gen/core/v1/nodeCondition.libsonnet | 16 - .../_gen/core/v1/nodeConfigSource.libsonnet | 19 - .../_gen/core/v1/nodeConfigStatus.libsonnet | 56 - .../core/v1/nodeDaemonEndpoints.libsonnet | 11 - .../1.21/_gen/core/v1/nodeSelector.libsonnet | 10 - .../core/v1/nodeSelectorRequirement.libsonnet | 14 - .../_gen/core/v1/nodeSelectorTerm.libsonnet | 14 - .../1.21/_gen/core/v1/nodeSpec.libsonnet | 38 - .../1.21/_gen/core/v1/nodeStatus.libsonnet | 120 -- .../_gen/core/v1/nodeSystemInfo.libsonnet | 26 - .../core/v1/objectFieldSelector.libsonnet | 8 - .../_gen/core/v1/objectReference.libsonnet | 18 - .../_gen/core/v1/persistentVolume.libsonnet | 467 ----- .../core/v1/persistentVolumeClaim.libsonnet | 100 - .../persistentVolumeClaimCondition.libsonnet | 16 - .../v1/persistentVolumeClaimSpec.libsonnet | 47 - .../v1/persistentVolumeClaimStatus.libsonnet | 20 - .../persistentVolumeClaimTemplate.libsonnet | 95 - ...ersistentVolumeClaimVolumeSource.libsonnet | 10 - .../core/v1/persistentVolumeSpec.libsonnet | 414 ----- .../core/v1/persistentVolumeStatus.libsonnet | 12 - ...photonPersistentDiskVolumeSource.libsonnet | 10 - .../1.21/_gen/core/v1/pod.libsonnet | 247 --- .../1.21/_gen/core/v1/podAffinity.libsonnet | 14 - .../_gen/core/v1/podAffinityTerm.libsonnet | 34 - .../_gen/core/v1/podAntiAffinity.libsonnet | 14 - .../1.21/_gen/core/v1/podCondition.libsonnet | 16 - .../1.21/_gen/core/v1/podDNSConfig.libsonnet | 18 - .../_gen/core/v1/podDNSConfigOption.libsonnet | 10 - .../1.21/_gen/core/v1/podIP.libsonnet | 8 - .../_gen/core/v1/podReadinessGate.libsonnet | 8 - .../_gen/core/v1/podSecurityContext.libsonnet | 51 - .../1.21/_gen/core/v1/podSpec.libsonnet | 194 -- .../1.21/_gen/core/v1/podStatus.libsonnet | 42 - .../1.21/_gen/core/v1/podTemplate.libsonnet | 295 --- .../_gen/core/v1/podTemplateSpec.libsonnet | 242 --- .../1.21/_gen/core/v1/portStatus.libsonnet | 12 - .../core/v1/portworxVolumeSource.libsonnet | 12 - .../core/v1/preferredSchedulingTerm.libsonnet | 19 - .../1.21/_gen/core/v1/probe.libsonnet | 47 - .../core/v1/projectedVolumeSource.libsonnet | 12 - .../core/v1/quobyteVolumeSource.libsonnet | 18 - .../v1/rbdPersistentVolumeSource.libsonnet | 29 - .../_gen/core/v1/rbdVolumeSource.libsonnet | 27 - .../core/v1/replicationController.libsonnet | 306 ---- .../replicationControllerCondition.libsonnet | 14 - .../v1/replicationControllerSpec.libsonnet | 253 --- .../v1/replicationControllerStatus.libsonnet | 20 - .../core/v1/resourceFieldSelector.libsonnet | 12 - .../1.21/_gen/core/v1/resourceQuota.libsonnet | 74 - .../_gen/core/v1/resourceQuotaSpec.libsonnet | 21 - .../core/v1/resourceQuotaStatus.libsonnet | 14 - .../core/v1/resourceRequirements.libsonnet | 14 - .../scaleIOPersistentVolumeSource.libsonnet | 31 - .../core/v1/scaleIOVolumeSource.libsonnet | 29 - .../1.21/_gen/core/v1/scopeSelector.libsonnet | 10 - ...copedResourceSelectorRequirement.libsonnet | 14 - .../_gen/core/v1/seLinuxOptions.libsonnet | 14 - .../_gen/core/v1/seccompProfile.libsonnet | 10 - .../1.21/_gen/core/v1/secret.libsonnet | 68 - .../_gen/core/v1/secretEnvSource.libsonnet | 10 - .../_gen/core/v1/secretKeySelector.libsonnet | 12 - .../_gen/core/v1/secretProjection.libsonnet | 14 - .../_gen/core/v1/secretReference.libsonnet | 10 - .../_gen/core/v1/secretVolumeSource.libsonnet | 16 - .../_gen/core/v1/securityContext.libsonnet | 58 - .../1.21/_gen/core/v1/service.libsonnet | 119 -- .../_gen/core/v1/serviceAccount.libsonnet | 66 - .../serviceAccountTokenProjection.libsonnet | 12 - .../1.21/_gen/core/v1/servicePort.libsonnet | 18 - .../1.21/_gen/core/v1/serviceSpec.libsonnet | 66 - .../1.21/_gen/core/v1/serviceStatus.libsonnet | 17 - .../core/v1/sessionAffinityConfig.libsonnet | 11 - .../storageOSPersistentVolumeSource.libsonnet | 31 - .../core/v1/storageOSVolumeSource.libsonnet | 19 - .../1.21/_gen/core/v1/sysctl.libsonnet | 10 - .../1.21/_gen/core/v1/taint.libsonnet | 14 - .../_gen/core/v1/tcpSocketAction.libsonnet | 10 - .../1.21/_gen/core/v1/toleration.libsonnet | 16 - ...topologySelectorLabelRequirement.libsonnet | 12 - .../core/v1/topologySelectorTerm.libsonnet | 10 - .../v1/topologySpreadConstraint.libsonnet | 23 - .../v1/typedLocalObjectReference.libsonnet | 12 - .../1.21/_gen/core/v1/volume.libsonnet | 473 ----- .../1.21/_gen/core/v1/volumeDevice.libsonnet | 10 - .../1.21/_gen/core/v1/volumeMount.libsonnet | 18 - .../_gen/core/v1/volumeNodeAffinity.libsonnet | 13 - .../_gen/core/v1/volumeProjection.libsonnet | 44 - .../vsphereVirtualDiskVolumeSource.libsonnet | 14 - .../core/v1/weightedPodAffinityTerm.libsonnet | 39 - .../windowsSecurityContextOptions.libsonnet | 12 - .../1.21/_gen/discovery/main.libsonnet | 6 - .../1.21/_gen/discovery/v1/endpoint.libsonnet | 53 - .../discovery/v1/endpointConditions.libsonnet | 12 - .../_gen/discovery/v1/endpointHints.libsonnet | 10 - .../_gen/discovery/v1/endpointPort.libsonnet | 14 - .../_gen/discovery/v1/endpointSlice.libsonnet | 66 - .../1.21/_gen/discovery/v1/forZone.libsonnet | 8 - .../1.21/_gen/discovery/v1/main.libsonnet | 10 - .../_gen/discovery/v1beta1/endpoint.libsonnet | 51 - .../v1beta1/endpointConditions.libsonnet | 12 - .../discovery/v1beta1/endpointHints.libsonnet | 10 - .../discovery/v1beta1/endpointPort.libsonnet | 14 - .../discovery/v1beta1/endpointSlice.libsonnet | 66 - .../_gen/discovery/v1beta1/forZone.libsonnet | 8 - .../_gen/discovery/v1beta1/main.libsonnet | 10 - .../1.21/_gen/events/main.libsonnet | 6 - .../1.21/_gen/events/v1/event.libsonnet | 124 -- .../1.21/_gen/events/v1/eventSeries.libsonnet | 10 - .../1.21/_gen/events/v1/main.libsonnet | 6 - .../1.21/_gen/events/v1beta1/event.libsonnet | 124 -- .../_gen/events/v1beta1/eventSeries.libsonnet | 10 - .../1.21/_gen/events/v1beta1/main.libsonnet | 6 - .../1.21/_gen/extensions/main.libsonnet | 5 - .../v1beta1/httpIngressPath.libsonnet | 26 - .../v1beta1/httpIngressRuleValue.libsonnet | 10 - .../_gen/extensions/v1beta1/ingress.libsonnet | 85 - .../v1beta1/ingressBackend.libsonnet | 19 - .../extensions/v1beta1/ingressRule.libsonnet | 15 - .../extensions/v1beta1/ingressSpec.libsonnet | 32 - .../v1beta1/ingressStatus.libsonnet | 13 - .../extensions/v1beta1/ingressTLS.libsonnet | 12 - .../_gen/extensions/v1beta1/main.libsonnet | 12 - .../1.21/_gen/flowcontrol/main.libsonnet | 5 - .../v1beta1/flowDistinguisherMethod.libsonnet | 8 - .../flowcontrol/v1beta1/flowSchema.libsonnet | 75 - .../v1beta1/flowSchemaCondition.libsonnet | 14 - .../v1beta1/flowSchemaSpec.libsonnet | 22 - .../v1beta1/flowSchemaStatus.libsonnet | 10 - .../v1beta1/groupSubject.libsonnet | 8 - .../v1beta1/limitResponse.libsonnet | 17 - ...imitedPriorityLevelConfiguration.libsonnet | 22 - .../_gen/flowcontrol/v1beta1/main.libsonnet | 24 - .../v1beta1/nonResourcePolicyRule.libsonnet | 14 - .../v1beta1/policyRulesWithSubjects.libsonnet | 18 - .../priorityLevelConfiguration.libsonnet | 80 - ...orityLevelConfigurationCondition.libsonnet | 14 - ...orityLevelConfigurationReference.libsonnet | 8 - .../priorityLevelConfigurationSpec.libsonnet | 27 - ...priorityLevelConfigurationStatus.libsonnet | 10 - .../v1beta1/queuingConfiguration.libsonnet | 12 - .../v1beta1/resourcePolicyRule.libsonnet | 24 - .../v1beta1/serviceAccountSubject.libsonnet | 10 - .../flowcontrol/v1beta1/subject.libsonnet | 25 - .../flowcontrol/v1beta1/userSubject.libsonnet | 8 - .../1.21/_gen/networking/main.libsonnet | 6 - .../networking/v1/httpIngressPath.libsonnet | 34 - .../v1/httpIngressRuleValue.libsonnet | 10 - .../1.21/_gen/networking/v1/ingress.libsonnet | 93 - .../networking/v1/ingressBackend.libsonnet | 27 - .../_gen/networking/v1/ingressClass.libsonnet | 74 - .../ingressClassParametersReference.libsonnet | 16 - .../networking/v1/ingressClassSpec.libsonnet | 21 - .../_gen/networking/v1/ingressRule.libsonnet | 15 - .../v1/ingressServiceBackend.libsonnet | 15 - .../_gen/networking/v1/ingressSpec.libsonnet | 40 - .../networking/v1/ingressStatus.libsonnet | 13 - .../_gen/networking/v1/ingressTLS.libsonnet | 12 - .../1.21/_gen/networking/v1/ipBlock.libsonnet | 12 - .../1.21/_gen/networking/v1/main.libsonnet | 24 - .../networking/v1/networkPolicy.libsonnet | 82 - .../v1/networkPolicyEgressRule.libsonnet | 14 - .../v1/networkPolicyIngressRule.libsonnet | 14 - .../networking/v1/networkPolicyPeer.libsonnet | 37 - .../networking/v1/networkPolicyPort.libsonnet | 12 - .../networking/v1/networkPolicySpec.libsonnet | 29 - .../v1/serviceBackendPort.libsonnet | 10 - .../v1beta1/httpIngressPath.libsonnet | 26 - .../v1beta1/httpIngressRuleValue.libsonnet | 10 - .../_gen/networking/v1beta1/ingress.libsonnet | 85 - .../v1beta1/ingressBackend.libsonnet | 19 - .../networking/v1beta1/ingressClass.libsonnet | 74 - .../ingressClassParametersReference.libsonnet | 16 - .../v1beta1/ingressClassSpec.libsonnet | 21 - .../networking/v1beta1/ingressRule.libsonnet | 15 - .../networking/v1beta1/ingressSpec.libsonnet | 32 - .../v1beta1/ingressStatus.libsonnet | 13 - .../networking/v1beta1/ingressTLS.libsonnet | 12 - .../_gen/networking/v1beta1/main.libsonnet | 15 - .../1.21/_gen/node/main.libsonnet | 7 - .../1.21/_gen/node/v1/main.libsonnet | 7 - .../1.21/_gen/node/v1/overhead.libsonnet | 10 - .../1.21/_gen/node/v1/runtimeClass.libsonnet | 76 - .../1.21/_gen/node/v1/scheduling.libsonnet | 14 - .../1.21/_gen/node/v1alpha1/main.libsonnet | 8 - .../_gen/node/v1alpha1/overhead.libsonnet | 10 - .../_gen/node/v1alpha1/runtimeClass.libsonnet | 79 - .../node/v1alpha1/runtimeClassSpec.libsonnet | 26 - .../_gen/node/v1alpha1/scheduling.libsonnet | 14 - .../1.21/_gen/node/v1beta1/main.libsonnet | 7 - .../1.21/_gen/node/v1beta1/overhead.libsonnet | 10 - .../_gen/node/v1beta1/runtimeClass.libsonnet | 76 - .../_gen/node/v1beta1/scheduling.libsonnet | 14 - .../1.21/_gen/policy/main.libsonnet | 6 - .../1.21/_gen/policy/v1/main.libsonnet | 7 - .../policy/v1/podDisruptionBudget.libsonnet | 74 - .../v1/podDisruptionBudgetSpec.libsonnet | 21 - .../v1/podDisruptionBudgetStatus.libsonnet | 24 - .../policy/v1beta1/allowedCSIDriver.libsonnet | 8 - .../v1beta1/allowedFlexVolume.libsonnet | 8 - .../policy/v1beta1/allowedHostPath.libsonnet | 10 - .../_gen/policy/v1beta1/eviction.libsonnet | 80 - .../v1beta1/fsGroupStrategyOptions.libsonnet | 12 - .../policy/v1beta1/hostPortRange.libsonnet | 10 - .../_gen/policy/v1beta1/idRange.libsonnet | 10 - .../1.21/_gen/policy/v1beta1/main.libsonnet | 21 - .../v1beta1/podDisruptionBudget.libsonnet | 74 - .../v1beta1/podDisruptionBudgetSpec.libsonnet | 21 - .../podDisruptionBudgetStatus.libsonnet | 24 - .../v1beta1/podSecurityPolicy.libsonnet | 178 -- .../v1beta1/podSecurityPolicySpec.libsonnet | 125 -- .../runAsGroupStrategyOptions.libsonnet | 12 - .../runAsUserStrategyOptions.libsonnet | 12 - .../runtimeClassStrategyOptions.libsonnet | 12 - .../v1beta1/seLinuxStrategyOptions.libsonnet | 19 - ...upplementalGroupsStrategyOptions.libsonnet | 12 - .../1.21/_gen/rbac/main.libsonnet | 7 - .../_gen/rbac/v1/aggregationRule.libsonnet | 10 - .../1.21/_gen/rbac/v1/clusterRole.libsonnet | 67 - .../_gen/rbac/v1/clusterRoleBinding.libsonnet | 69 - .../1.21/_gen/rbac/v1/main.libsonnet | 12 - .../1.21/_gen/rbac/v1/policyRule.libsonnet | 26 - .../1.21/_gen/rbac/v1/role.libsonnet | 60 - .../1.21/_gen/rbac/v1/roleBinding.libsonnet | 69 - .../1.21/_gen/rbac/v1/roleRef.libsonnet | 12 - .../1.21/_gen/rbac/v1/subject.libsonnet | 14 - .../rbac/v1alpha1/aggregationRule.libsonnet | 10 - .../_gen/rbac/v1alpha1/clusterRole.libsonnet | 67 - .../v1alpha1/clusterRoleBinding.libsonnet | 69 - .../1.21/_gen/rbac/v1alpha1/main.libsonnet | 12 - .../_gen/rbac/v1alpha1/policyRule.libsonnet | 26 - .../1.21/_gen/rbac/v1alpha1/role.libsonnet | 60 - .../_gen/rbac/v1alpha1/roleBinding.libsonnet | 69 - .../1.21/_gen/rbac/v1alpha1/roleRef.libsonnet | 12 - .../1.21/_gen/rbac/v1alpha1/subject.libsonnet | 12 - .../rbac/v1beta1/aggregationRule.libsonnet | 10 - .../_gen/rbac/v1beta1/clusterRole.libsonnet | 67 - .../rbac/v1beta1/clusterRoleBinding.libsonnet | 69 - .../1.21/_gen/rbac/v1beta1/main.libsonnet | 12 - .../_gen/rbac/v1beta1/policyRule.libsonnet | 26 - .../1.21/_gen/rbac/v1beta1/role.libsonnet | 60 - .../_gen/rbac/v1beta1/roleBinding.libsonnet | 69 - .../1.21/_gen/rbac/v1beta1/roleRef.libsonnet | 12 - .../1.21/_gen/rbac/v1beta1/subject.libsonnet | 14 - .../1.21/_gen/scheduling/main.libsonnet | 7 - .../1.21/_gen/scheduling/v1/main.libsonnet | 5 - .../scheduling/v1/priorityClass.libsonnet | 64 - .../_gen/scheduling/v1alpha1/main.libsonnet | 5 - .../v1alpha1/priorityClass.libsonnet | 64 - .../_gen/scheduling/v1beta1/main.libsonnet | 5 - .../v1beta1/priorityClass.libsonnet | 64 - .../1.21/_gen/storage/main.libsonnet | 7 - .../1.21/_gen/storage/v1/csiDriver.libsonnet | 77 - .../_gen/storage/v1/csiDriverSpec.libsonnet | 24 - .../1.21/_gen/storage/v1/csiNode.libsonnet | 63 - .../_gen/storage/v1/csiNodeDriver.libsonnet | 19 - .../_gen/storage/v1/csiNodeSpec.libsonnet | 10 - .../1.21/_gen/storage/v1/main.libsonnet | 17 - .../_gen/storage/v1/storageClass.libsonnet | 76 - .../_gen/storage/v1/tokenRequest.libsonnet | 10 - .../storage/v1/volumeAttachment.libsonnet | 479 ----- .../v1/volumeAttachmentSource.libsonnet | 419 ----- .../storage/v1/volumeAttachmentSpec.libsonnet | 426 ----- .../v1/volumeAttachmentStatus.libsonnet | 26 - .../_gen/storage/v1/volumeError.libsonnet | 10 - .../storage/v1/volumeNodeResources.libsonnet | 8 - .../v1alpha1/csiStorageCapacity.libsonnet | 73 - .../1.21/_gen/storage/v1alpha1/main.libsonnet | 10 - .../v1alpha1/volumeAttachment.libsonnet | 479 ----- .../v1alpha1/volumeAttachmentSource.libsonnet | 419 ----- .../v1alpha1/volumeAttachmentSpec.libsonnet | 426 ----- .../v1alpha1/volumeAttachmentStatus.libsonnet | 26 - .../storage/v1alpha1/volumeError.libsonnet | 10 - .../_gen/storage/v1beta1/csiDriver.libsonnet | 77 - .../storage/v1beta1/csiDriverSpec.libsonnet | 24 - .../_gen/storage/v1beta1/csiNode.libsonnet | 63 - .../storage/v1beta1/csiNodeDriver.libsonnet | 19 - .../storage/v1beta1/csiNodeSpec.libsonnet | 10 - .../v1beta1/csiStorageCapacity.libsonnet | 73 - .../1.21/_gen/storage/v1beta1/main.libsonnet | 18 - .../storage/v1beta1/storageClass.libsonnet | 76 - .../storage/v1beta1/tokenRequest.libsonnet | 10 - .../v1beta1/volumeAttachment.libsonnet | 479 ----- .../v1beta1/volumeAttachmentSource.libsonnet | 419 ----- .../v1beta1/volumeAttachmentSpec.libsonnet | 426 ----- .../v1beta1/volumeAttachmentStatus.libsonnet | 26 - .../storage/v1beta1/volumeError.libsonnet | 10 - .../v1beta1/volumeNodeResources.libsonnet | 8 - .../k8s-libsonnet/1.21/gen.libsonnet | 25 - .../k8s-libsonnet/1.21/main.libsonnet | 1 - .../kubernetes/build/vendor/grafana-agent | 1 - .../kubernetes/build/vendor/ksonnet-util | 1 - production/kubernetes/install-bare.sh | 2 +- .../tanka/grafana-agent/config.libsonnet | 2 +- .../grafana-agent/scraping-svc/main.libsonnet | 2 +- .../tanka/grafana-agent/v1/main.libsonnet | 4 +- .../grafana-agent/v2/internal/base.libsonnet | 4 +- .../v2/internal/syncer.libsonnet | 2 +- 1310 files changed, 6918 insertions(+), 68356 deletions(-) delete mode 100644 .github/workflows/force_release.yml create mode 100644 docs/configuration/integrations/integrations-next/_index.md create mode 100644 e2e/Makefile create mode 100644 e2e/go.mod create mode 100644 e2e/go.sum create mode 100644 e2e/k8s/k8s.go create mode 100644 e2e/k8s/k8s_test.go create mode 100644 example/docker-compose/agent/config/agent-integrations-next.yaml create mode 100644 example/docker-compose/docker-compose.integrations-next.yaml delete mode 100644 example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/alert_condition.libsonnet delete mode 100644 example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/alertlist.libsonnet delete mode 100644 example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/annotation.libsonnet delete mode 100644 example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/bar_gauge_panel.libsonnet delete mode 100644 example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/cloudmonitoring.libsonnet delete mode 100644 example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/cloudwatch.libsonnet delete mode 100644 example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/dashboard.libsonnet delete mode 100644 example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/dashlist.libsonnet delete mode 100644 example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/elasticsearch.libsonnet delete mode 100644 example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/gauge_panel.libsonnet delete mode 100644 example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/grafana.libsonnet delete mode 100644 example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/graph_panel.libsonnet delete mode 100644 example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/graphite.libsonnet delete mode 100644 example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/heatmap_panel.libsonnet delete mode 100644 example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/influxdb.libsonnet delete mode 100644 example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/link.libsonnet delete mode 100644 example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/log_panel.libsonnet delete mode 100644 example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/loki.libsonnet delete mode 100644 example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/pie_chart_panel.libsonnet delete mode 100644 example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/pluginlist.libsonnet delete mode 100644 example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/prometheus.libsonnet delete mode 100644 example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/row.libsonnet delete mode 100644 example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/singlestat.libsonnet delete mode 100644 example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/sql.libsonnet delete mode 100644 example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/stat_panel.libsonnet delete mode 100644 example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/table_panel.libsonnet delete mode 100644 example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/template.libsonnet delete mode 100644 example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/text.libsonnet delete mode 100644 example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/timepicker.libsonnet delete mode 100644 example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/transformation.libsonnet delete mode 100644 example/docker-compose/vendor/github.com/grafana/jsonnet-libs/grafana-builder/grafana.libsonnet delete mode 120000 example/docker-compose/vendor/grafana-agent-mixin delete mode 120000 example/docker-compose/vendor/grafana-builder delete mode 120000 example/docker-compose/vendor/grafonnet delete mode 120000 example/k3d/vendor/1.14 delete mode 120000 example/k3d/vendor/cortex-mixin delete mode 100644 example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/alerts.jsonnet delete mode 100644 example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/alerts.libsonnet delete mode 100644 example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/alerts/alert-utils.libsonnet delete mode 100644 example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/alerts/alerts.libsonnet delete mode 100644 example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/alerts/blocks.libsonnet delete mode 100644 example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/alerts/compactor.libsonnet delete mode 100644 example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/config.libsonnet delete mode 100644 example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards.jsonnet delete mode 100644 example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards.libsonnet delete mode 100644 example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards/chunks.libsonnet delete mode 100644 example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards/compactor-resources.libsonnet delete mode 100644 example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards/compactor.libsonnet delete mode 100644 example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards/comparison.libsonnet delete mode 100644 example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards/dashboard-utils.libsonnet delete mode 100644 example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards/object-store.libsonnet delete mode 100644 example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards/queries.libsonnet delete mode 100644 example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards/reads-resources.libsonnet delete mode 100644 example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards/reads.libsonnet delete mode 100644 example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards/ruler.libsonnet delete mode 100644 example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards/scaling.libsonnet delete mode 100644 example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards/writes-resources.libsonnet delete mode 100644 example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards/writes.libsonnet delete mode 100644 example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/docs/playbooks.md delete mode 100644 example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/jsonnetfile.json delete mode 100644 example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/jsonnetfile.lock.json delete mode 100644 example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/mixin.libsonnet delete mode 100644 example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/recording_rules.jsonnet delete mode 100644 example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/recording_rules.libsonnet delete mode 100644 example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/alert_condition.libsonnet delete mode 100644 example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/alertlist.libsonnet delete mode 100644 example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/annotation.libsonnet delete mode 100644 example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/cloudwatch.libsonnet delete mode 100644 example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/dashboard.libsonnet delete mode 100644 example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/dashlist.libsonnet delete mode 100644 example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/elasticsearch.libsonnet delete mode 100644 example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/gauge.libsonnet delete mode 100644 example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/grafana.libsonnet delete mode 100644 example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/graph_panel.libsonnet delete mode 100644 example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/graphite.libsonnet delete mode 100644 example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/heatmap_panel.libsonnet delete mode 100644 example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/influxdb.libsonnet delete mode 100644 example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/link.libsonnet delete mode 100644 example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/log_panel.libsonnet delete mode 100644 example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/loki.libsonnet delete mode 100644 example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/pie_chart_panel.libsonnet delete mode 100644 example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/pluginlist.libsonnet delete mode 100644 example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/prometheus.libsonnet delete mode 100644 example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/row.libsonnet delete mode 100644 example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/singlestat.libsonnet delete mode 100644 example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/sql.libsonnet delete mode 100644 example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/table_panel.libsonnet delete mode 100644 example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/template.libsonnet delete mode 100644 example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/text.libsonnet delete mode 100644 example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/timepicker.libsonnet delete mode 100644 example/k3d/vendor/github.com/grafana/jsonnet-libs/grafana-builder/grafana.libsonnet delete mode 100755 example/k3d/vendor/github.com/grafana/jsonnet-libs/ksonnet-util/kausal.libsonnet delete mode 100644 example/k3d/vendor/github.com/grafana/jsonnet-libs/mixin-utils/utils.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_custom/apps.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_custom/core.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_custom/mapContainers.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_custom/types.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/admissionregistration/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/admissionregistration/v1beta1/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/admissionregistration/v1beta1/mutatingWebhookConfiguration.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/admissionregistration/v1beta1/ruleWithOperations.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/admissionregistration/v1beta1/serviceReference.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/admissionregistration/v1beta1/validatingWebhookConfiguration.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/admissionregistration/v1beta1/webhook.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/admissionregistration/v1beta1/webhookClientConfig.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/controllerRevision.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/daemonSet.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/daemonSetCondition.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/daemonSetSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/daemonSetStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/daemonSetUpdateStrategy.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/deployment.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/deploymentCondition.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/deploymentSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/deploymentStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/deploymentStrategy.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/replicaSet.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/replicaSetCondition.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/replicaSetSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/replicaSetStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/rollingUpdateDaemonSet.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/rollingUpdateDeployment.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/rollingUpdateStatefulSetStrategy.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/statefulSet.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/statefulSetCondition.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/statefulSetSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/statefulSetStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/statefulSetUpdateStrategy.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/controllerRevision.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/deployment.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/deploymentCondition.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/deploymentRollback.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/deploymentSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/deploymentStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/deploymentStrategy.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/rollbackConfig.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/rollingUpdateDeployment.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/rollingUpdateStatefulSetStrategy.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/scale.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/scaleSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/scaleStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/statefulSet.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/statefulSetCondition.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/statefulSetSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/statefulSetStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/statefulSetUpdateStrategy.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/controllerRevision.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/daemonSet.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/daemonSetCondition.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/daemonSetSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/daemonSetStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/daemonSetUpdateStrategy.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/deployment.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/deploymentCondition.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/deploymentSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/deploymentStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/deploymentStrategy.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/replicaSet.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/replicaSetCondition.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/replicaSetSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/replicaSetStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/rollingUpdateDaemonSet.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/rollingUpdateDeployment.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/rollingUpdateStatefulSetStrategy.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/scale.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/scaleSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/scaleStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/statefulSet.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/statefulSetCondition.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/statefulSetSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/statefulSetStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/statefulSetUpdateStrategy.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/auditregistration/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/auditregistration/v1alpha1/auditSink.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/auditregistration/v1alpha1/auditSinkSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/auditregistration/v1alpha1/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/auditregistration/v1alpha1/policy.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/auditregistration/v1alpha1/serviceReference.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/auditregistration/v1alpha1/webhook.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/auditregistration/v1alpha1/webhookClientConfig.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/auditregistration/v1alpha1/webhookThrottleConfig.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authentication/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authentication/v1/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authentication/v1/tokenReview.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authentication/v1/tokenReviewSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authentication/v1/tokenReviewStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authentication/v1/userInfo.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authentication/v1beta1/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authentication/v1beta1/tokenReview.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authentication/v1beta1/tokenReviewSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authentication/v1beta1/tokenReviewStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authentication/v1beta1/userInfo.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/localSubjectAccessReview.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/nonResourceAttributes.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/nonResourceRule.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/resourceAttributes.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/resourceRule.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/selfSubjectAccessReview.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/selfSubjectAccessReviewSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/selfSubjectRulesReview.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/selfSubjectRulesReviewSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/subjectAccessReview.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/subjectAccessReviewSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/subjectAccessReviewStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/subjectRulesReviewStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/localSubjectAccessReview.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/nonResourceAttributes.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/nonResourceRule.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/resourceAttributes.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/resourceRule.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/selfSubjectAccessReview.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/selfSubjectAccessReviewSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/selfSubjectRulesReview.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/selfSubjectRulesReviewSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/subjectAccessReview.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/subjectAccessReviewSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/subjectAccessReviewStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/subjectRulesReviewStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v1/crossVersionObjectReference.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v1/horizontalPodAutoscaler.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v1/horizontalPodAutoscalerSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v1/horizontalPodAutoscalerStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v1/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v1/scale.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v1/scaleSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v1/scaleStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/crossVersionObjectReference.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/externalMetricSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/externalMetricStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/horizontalPodAutoscaler.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/horizontalPodAutoscalerCondition.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/horizontalPodAutoscalerSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/horizontalPodAutoscalerStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/metricSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/metricStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/objectMetricSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/objectMetricStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/podsMetricSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/podsMetricStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/resourceMetricSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/resourceMetricStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/crossVersionObjectReference.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/externalMetricSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/externalMetricStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/horizontalPodAutoscaler.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/horizontalPodAutoscalerCondition.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/horizontalPodAutoscalerSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/horizontalPodAutoscalerStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/metricIdentifier.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/metricSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/metricStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/metricTarget.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/metricValueStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/objectMetricSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/objectMetricStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/podsMetricSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/podsMetricStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/resourceMetricSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/resourceMetricStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v1/job.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v1/jobCondition.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v1/jobSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v1/jobStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v1/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v1beta1/cronJob.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v1beta1/cronJobSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v1beta1/cronJobStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v1beta1/jobTemplateSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v1beta1/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v2alpha1/cronJob.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v2alpha1/cronJobSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v2alpha1/cronJobStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v2alpha1/jobTemplateSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v2alpha1/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/certificates/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/certificates/v1beta1/certificateSigningRequest.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/certificates/v1beta1/certificateSigningRequestCondition.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/certificates/v1beta1/certificateSigningRequestSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/certificates/v1beta1/certificateSigningRequestStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/certificates/v1beta1/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/coordination/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/coordination/v1/lease.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/coordination/v1/leaseSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/coordination/v1/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/coordination/v1beta1/lease.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/coordination/v1beta1/leaseSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/coordination/v1beta1/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/affinity.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/attachedVolume.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/awsElasticBlockStoreVolumeSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/azureDiskVolumeSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/azureFilePersistentVolumeSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/azureFileVolumeSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/binding.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/capabilities.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/cephFSPersistentVolumeSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/cephFSVolumeSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/cinderPersistentVolumeSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/cinderVolumeSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/clientIPConfig.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/componentCondition.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/componentStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/configMap.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/configMapEnvSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/configMapKeySelector.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/configMapNodeConfigSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/configMapProjection.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/configMapVolumeSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/container.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/containerImage.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/containerPort.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/containerState.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/containerStateRunning.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/containerStateTerminated.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/containerStateWaiting.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/containerStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/csiPersistentVolumeSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/csiVolumeSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/daemonEndpoint.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/downwardAPIProjection.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/downwardAPIVolumeFile.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/downwardAPIVolumeSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/emptyDirVolumeSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/endpointAddress.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/endpointPort.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/endpointSubset.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/endpoints.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/envFromSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/envVar.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/envVarSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/event.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/eventSeries.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/eventSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/execAction.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/fcVolumeSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/flexPersistentVolumeSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/flexVolumeSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/flockerVolumeSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/gcePersistentDiskVolumeSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/gitRepoVolumeSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/glusterfsPersistentVolumeSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/glusterfsVolumeSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/handler.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/hostAlias.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/hostPathVolumeSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/httpGetAction.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/httpHeader.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/iscsiPersistentVolumeSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/iscsiVolumeSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/keyToPath.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/lifecycle.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/limitRange.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/limitRangeItem.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/limitRangeSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/loadBalancerIngress.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/loadBalancerStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/localObjectReference.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/localVolumeSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/namespace.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/namespaceSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/namespaceStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/nfsVolumeSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/node.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/nodeAddress.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/nodeAffinity.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/nodeCondition.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/nodeConfigSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/nodeConfigStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/nodeDaemonEndpoints.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/nodeSelector.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/nodeSelectorRequirement.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/nodeSelectorTerm.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/nodeSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/nodeStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/nodeSystemInfo.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/objectFieldSelector.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/objectReference.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/persistentVolume.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/persistentVolumeClaim.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/persistentVolumeClaimCondition.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/persistentVolumeClaimSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/persistentVolumeClaimStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/persistentVolumeClaimVolumeSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/persistentVolumeSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/persistentVolumeStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/photonPersistentDiskVolumeSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/pod.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/podAffinity.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/podAffinityTerm.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/podAntiAffinity.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/podCondition.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/podDNSConfig.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/podDNSConfigOption.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/podReadinessGate.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/podSecurityContext.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/podSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/podStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/podTemplate.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/podTemplateSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/portworxVolumeSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/preferredSchedulingTerm.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/probe.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/projectedVolumeSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/quobyteVolumeSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/rbdPersistentVolumeSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/rbdVolumeSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/replicationController.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/replicationControllerCondition.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/replicationControllerSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/replicationControllerStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/resourceFieldSelector.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/resourceQuota.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/resourceQuotaSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/resourceQuotaStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/resourceRequirements.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/scaleIOPersistentVolumeSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/scaleIOVolumeSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/scopeSelector.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/scopedResourceSelectorRequirement.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/seLinuxOptions.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/secret.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/secretEnvSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/secretKeySelector.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/secretProjection.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/secretReference.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/secretVolumeSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/securityContext.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/service.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/serviceAccount.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/serviceAccountTokenProjection.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/servicePort.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/serviceSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/serviceStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/sessionAffinityConfig.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/storageOSPersistentVolumeSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/storageOSVolumeSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/sysctl.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/taint.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/tcpSocketAction.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/toleration.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/topologySelectorLabelRequirement.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/topologySelectorTerm.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/typedLocalObjectReference.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/volume.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/volumeDevice.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/volumeMount.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/volumeNodeAffinity.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/volumeProjection.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/vsphereVirtualDiskVolumeSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/weightedPodAffinityTerm.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/events/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/events/v1beta1/event.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/events/v1beta1/eventSeries.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/events/v1beta1/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/allowedCSIDriver.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/allowedFlexVolume.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/allowedHostPath.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/daemonSet.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/daemonSetCondition.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/daemonSetSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/daemonSetStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/daemonSetUpdateStrategy.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/deployment.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/deploymentCondition.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/deploymentRollback.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/deploymentSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/deploymentStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/deploymentStrategy.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/fsGroupStrategyOptions.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/hostPortRange.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/httpIngressPath.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/httpIngressRuleValue.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/idRange.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/ingress.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/ingressBackend.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/ingressRule.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/ingressSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/ingressStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/ingressTLS.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/ipBlock.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/networkPolicy.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/networkPolicyEgressRule.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/networkPolicyIngressRule.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/networkPolicyPeer.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/networkPolicyPort.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/networkPolicySpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/podSecurityPolicy.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/podSecurityPolicySpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/replicaSet.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/replicaSetCondition.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/replicaSetSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/replicaSetStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/rollbackConfig.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/rollingUpdateDaemonSet.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/rollingUpdateDeployment.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/runAsGroupStrategyOptions.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/runAsUserStrategyOptions.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/scale.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/scaleSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/scaleStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/seLinuxStrategyOptions.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/supplementalGroupsStrategyOptions.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1/ipBlock.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1/networkPolicy.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1/networkPolicyEgressRule.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1/networkPolicyIngressRule.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1/networkPolicyPeer.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1/networkPolicyPort.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1/networkPolicySpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1beta1/httpIngressPath.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1beta1/httpIngressRuleValue.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1beta1/ingress.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1beta1/ingressBackend.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1beta1/ingressRule.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1beta1/ingressSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1beta1/ingressStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1beta1/ingressTLS.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1beta1/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/node/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/node/v1alpha1/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/node/v1alpha1/runtimeClass.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/node/v1alpha1/runtimeClassSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/node/v1beta1/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/node/v1beta1/runtimeClass.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/allowedCSIDriver.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/allowedFlexVolume.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/allowedHostPath.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/eviction.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/fsGroupStrategyOptions.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/hostPortRange.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/idRange.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/podDisruptionBudget.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/podDisruptionBudgetSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/podDisruptionBudgetStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/podSecurityPolicy.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/podSecurityPolicySpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/runAsGroupStrategyOptions.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/runAsUserStrategyOptions.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/seLinuxStrategyOptions.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/supplementalGroupsStrategyOptions.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1/aggregationRule.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1/clusterRole.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1/clusterRoleBinding.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1/policyRule.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1/role.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1/roleBinding.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1/roleRef.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1/subject.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1alpha1/aggregationRule.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1alpha1/clusterRole.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1alpha1/clusterRoleBinding.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1alpha1/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1alpha1/policyRule.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1alpha1/role.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1alpha1/roleBinding.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1alpha1/roleRef.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1alpha1/subject.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1beta1/aggregationRule.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1beta1/clusterRole.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1beta1/clusterRoleBinding.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1beta1/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1beta1/policyRule.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1beta1/role.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1beta1/roleBinding.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1beta1/roleRef.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1beta1/subject.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/scheduling/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/scheduling/v1/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/scheduling/v1/priorityClass.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/scheduling/v1alpha1/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/scheduling/v1alpha1/priorityClass.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/scheduling/v1beta1/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/scheduling/v1beta1/priorityClass.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/settings/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/settings/v1alpha1/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/settings/v1alpha1/podPreset.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/settings/v1alpha1/podPresetSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1/storageClass.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1/volumeAttachment.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1/volumeAttachmentSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1/volumeAttachmentSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1/volumeAttachmentStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1/volumeError.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1alpha1/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1alpha1/volumeAttachment.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1alpha1/volumeAttachmentSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1alpha1/volumeAttachmentSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1alpha1/volumeAttachmentStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1alpha1/volumeError.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1beta1/csiDriver.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1beta1/csiDriverSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1beta1/csiNode.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1beta1/csiNodeDriver.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1beta1/csiNodeSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1beta1/main.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1beta1/storageClass.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1beta1/volumeAttachment.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1beta1/volumeAttachmentSource.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1beta1/volumeAttachmentSpec.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1beta1/volumeAttachmentStatus.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1beta1/volumeError.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/extensions/kausal-shim.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/gen.libsonnet delete mode 100644 example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/main.libsonnet delete mode 120000 example/k3d/vendor/grafana-agent delete mode 120000 example/k3d/vendor/grafana-agent-mixin delete mode 120000 example/k3d/vendor/grafana-builder delete mode 120000 example/k3d/vendor/grafonnet delete mode 120000 example/k3d/vendor/ksonnet-util delete mode 120000 example/k3d/vendor/mixin-utils create mode 100644 pkg/config/integrations.go create mode 100644 pkg/config/integrations_test.go create mode 100644 pkg/integrations/install/shims.go create mode 100644 pkg/integrations/node_exporter/config_test.go create mode 100644 pkg/integrations/v2/agent/agent.go create mode 100644 pkg/integrations/v2/autoscrape/appender.go create mode 100644 pkg/integrations/v2/autoscrape/autoscrape.go create mode 100644 pkg/integrations/v2/autoscrape/autoscrape_test.go create mode 100644 pkg/integrations/v2/common/metrics.go create mode 100644 pkg/integrations/v2/controller.go create mode 100644 pkg/integrations/v2/controller_httpintegration_test.go create mode 100644 pkg/integrations/v2/controller_metricsintegration_test.go create mode 100644 pkg/integrations/v2/controller_test.go create mode 100644 pkg/integrations/v2/controller_updateintegration_test.go create mode 100644 pkg/integrations/v2/integrations.go create mode 100644 pkg/integrations/v2/metricsutils/metricshandler_integration.go create mode 100644 pkg/integrations/v2/metricsutils/versionshim.go create mode 100644 pkg/integrations/v2/register.go create mode 100644 pkg/integrations/v2/register_test.go create mode 100644 pkg/integrations/v2/subsystem.go create mode 100644 pkg/integrations/v2/subsystem_test.go create mode 100644 pkg/integrations/v2/targetgroup.go create mode 100644 pkg/integrations/v2/utils.go create mode 100644 pkg/util/trigger.go create mode 100644 pkg/util/trigger_test.go create mode 100644 pkg/util/yaml_test.go delete mode 120000 production/kubernetes/build/vendor/1.21 delete mode 100644 production/kubernetes/build/vendor/github.com/grafana/jsonnet-libs/ksonnet-util/grafana.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/grafana/jsonnet-libs/ksonnet-util/k-compat.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/grafana/jsonnet-libs/ksonnet-util/kausal.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/grafana/jsonnet-libs/ksonnet-util/legacy-custom.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/grafana/jsonnet-libs/ksonnet-util/legacy-noname.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/grafana/jsonnet-libs/ksonnet-util/legacy-subtypes.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/grafana/jsonnet-libs/ksonnet-util/legacy-types.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/grafana/jsonnet-libs/ksonnet-util/util.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_custom/apps.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_custom/batch.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_custom/core.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_custom/list.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_custom/mapContainers.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_custom/rbac.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_custom/volumeMounts.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1/mutatingWebhook.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1/mutatingWebhookConfiguration.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1/ruleWithOperations.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1/serviceReference.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1/validatingWebhook.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1/validatingWebhookConfiguration.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1/webhookClientConfig.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1beta1/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1beta1/mutatingWebhook.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1beta1/mutatingWebhookConfiguration.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1beta1/ruleWithOperations.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1beta1/serviceReference.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1beta1/validatingWebhook.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1beta1/validatingWebhookConfiguration.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1beta1/webhookClientConfig.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiregistration/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiregistration/v1/apiService.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiregistration/v1/apiServiceCondition.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiregistration/v1/apiServiceSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiregistration/v1/apiServiceStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiregistration/v1/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiregistration/v1/serviceReference.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiregistration/v1beta1/apiService.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiregistration/v1beta1/apiServiceCondition.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiregistration/v1beta1/apiServiceSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiregistration/v1beta1/apiServiceStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiregistration/v1beta1/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiregistration/v1beta1/serviceReference.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiserverinternal/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiserverinternal/v1alpha1/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiserverinternal/v1alpha1/serverStorageVersion.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiserverinternal/v1alpha1/storageVersion.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiserverinternal/v1alpha1/storageVersionCondition.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiserverinternal/v1alpha1/storageVersionSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiserverinternal/v1alpha1/storageVersionStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/controllerRevision.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/daemonSet.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/daemonSetCondition.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/daemonSetSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/daemonSetStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/daemonSetUpdateStrategy.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/deployment.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/deploymentCondition.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/deploymentSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/deploymentStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/deploymentStrategy.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/replicaSet.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/replicaSetCondition.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/replicaSetSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/replicaSetStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/rollingUpdateDaemonSet.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/rollingUpdateDeployment.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/rollingUpdateStatefulSetStrategy.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/statefulSet.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/statefulSetCondition.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/statefulSetSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/statefulSetStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/statefulSetUpdateStrategy.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1/boundObjectReference.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1/tokenRequest.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1/tokenRequestSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1/tokenRequestStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1/tokenReview.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1/tokenReviewSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1/tokenReviewStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1/userInfo.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1beta1/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1beta1/tokenReview.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1beta1/tokenReviewSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1beta1/tokenReviewStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1beta1/userInfo.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/localSubjectAccessReview.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/nonResourceAttributes.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/nonResourceRule.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/resourceAttributes.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/resourceRule.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/selfSubjectAccessReview.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/selfSubjectAccessReviewSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/selfSubjectRulesReview.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/selfSubjectRulesReviewSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/subjectAccessReview.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/subjectAccessReviewSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/subjectAccessReviewStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/subjectRulesReviewStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/localSubjectAccessReview.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/nonResourceAttributes.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/nonResourceRule.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/resourceAttributes.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/resourceRule.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/selfSubjectAccessReview.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/selfSubjectAccessReviewSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/selfSubjectRulesReview.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/selfSubjectRulesReviewSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/subjectAccessReview.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/subjectAccessReviewSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/subjectAccessReviewStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/subjectRulesReviewStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v1/crossVersionObjectReference.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v1/horizontalPodAutoscaler.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v1/horizontalPodAutoscalerSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v1/horizontalPodAutoscalerStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v1/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v1/scale.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v1/scaleSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v1/scaleStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/containerResourceMetricSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/containerResourceMetricStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/crossVersionObjectReference.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/externalMetricSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/externalMetricStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/horizontalPodAutoscaler.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/horizontalPodAutoscalerCondition.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/horizontalPodAutoscalerSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/horizontalPodAutoscalerStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/metricSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/metricStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/objectMetricSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/objectMetricStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/podsMetricSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/podsMetricStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/resourceMetricSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/resourceMetricStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/containerResourceMetricSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/containerResourceMetricStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/crossVersionObjectReference.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/externalMetricSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/externalMetricStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/horizontalPodAutoscaler.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/horizontalPodAutoscalerBehavior.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/horizontalPodAutoscalerCondition.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/horizontalPodAutoscalerSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/horizontalPodAutoscalerStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/hpaScalingPolicy.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/hpaScalingRules.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/metricIdentifier.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/metricSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/metricStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/metricTarget.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/metricValueStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/objectMetricSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/objectMetricStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/podsMetricSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/podsMetricStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/resourceMetricSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/resourceMetricStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1/cronJob.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1/cronJobSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1/cronJobStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1/job.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1/jobCondition.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1/jobSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1/jobStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1/jobTemplateSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1beta1/cronJob.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1beta1/cronJobSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1beta1/cronJobStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1beta1/jobTemplateSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1beta1/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/certificates/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/certificates/v1/certificateSigningRequest.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/certificates/v1/certificateSigningRequestCondition.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/certificates/v1/certificateSigningRequestSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/certificates/v1/certificateSigningRequestStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/certificates/v1/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/certificates/v1beta1/certificateSigningRequest.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/certificates/v1beta1/certificateSigningRequestCondition.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/certificates/v1beta1/certificateSigningRequestSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/certificates/v1beta1/certificateSigningRequestStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/certificates/v1beta1/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/coordination/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/coordination/v1/lease.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/coordination/v1/leaseSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/coordination/v1/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/coordination/v1beta1/lease.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/coordination/v1beta1/leaseSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/coordination/v1beta1/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/affinity.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/attachedVolume.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/awsElasticBlockStoreVolumeSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/azureDiskVolumeSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/azureFilePersistentVolumeSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/azureFileVolumeSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/binding.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/capabilities.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/cephFSPersistentVolumeSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/cephFSVolumeSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/cinderPersistentVolumeSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/cinderVolumeSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/clientIPConfig.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/componentCondition.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/componentStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/configMap.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/configMapEnvSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/configMapKeySelector.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/configMapNodeConfigSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/configMapProjection.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/configMapVolumeSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/container.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/containerImage.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/containerPort.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/containerState.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/containerStateRunning.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/containerStateTerminated.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/containerStateWaiting.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/containerStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/csiPersistentVolumeSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/csiVolumeSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/daemonEndpoint.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/downwardAPIProjection.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/downwardAPIVolumeFile.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/downwardAPIVolumeSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/emptyDirVolumeSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/endpointAddress.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/endpointPort.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/endpointSubset.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/endpoints.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/envFromSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/envVar.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/envVarSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/ephemeralContainer.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/ephemeralContainers.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/ephemeralVolumeSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/event.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/eventSeries.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/eventSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/execAction.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/fcVolumeSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/flexPersistentVolumeSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/flexVolumeSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/flockerVolumeSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/gcePersistentDiskVolumeSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/gitRepoVolumeSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/glusterfsPersistentVolumeSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/glusterfsVolumeSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/handler.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/hostAlias.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/hostPathVolumeSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/httpGetAction.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/httpHeader.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/iscsiPersistentVolumeSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/iscsiVolumeSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/keyToPath.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/lifecycle.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/limitRange.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/limitRangeItem.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/limitRangeSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/loadBalancerIngress.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/loadBalancerStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/localObjectReference.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/localVolumeSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/namespace.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/namespaceCondition.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/namespaceSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/namespaceStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/nfsVolumeSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/node.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/nodeAddress.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/nodeAffinity.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/nodeCondition.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/nodeConfigSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/nodeConfigStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/nodeDaemonEndpoints.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/nodeSelector.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/nodeSelectorRequirement.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/nodeSelectorTerm.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/nodeSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/nodeStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/nodeSystemInfo.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/objectFieldSelector.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/objectReference.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/persistentVolume.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/persistentVolumeClaim.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/persistentVolumeClaimCondition.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/persistentVolumeClaimSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/persistentVolumeClaimStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/persistentVolumeClaimTemplate.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/persistentVolumeClaimVolumeSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/persistentVolumeSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/persistentVolumeStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/photonPersistentDiskVolumeSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/pod.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/podAffinity.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/podAffinityTerm.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/podAntiAffinity.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/podCondition.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/podDNSConfig.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/podDNSConfigOption.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/podIP.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/podReadinessGate.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/podSecurityContext.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/podSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/podStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/podTemplate.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/podTemplateSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/portStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/portworxVolumeSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/preferredSchedulingTerm.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/probe.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/projectedVolumeSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/quobyteVolumeSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/rbdPersistentVolumeSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/rbdVolumeSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/replicationController.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/replicationControllerCondition.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/replicationControllerSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/replicationControllerStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/resourceFieldSelector.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/resourceQuota.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/resourceQuotaSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/resourceQuotaStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/resourceRequirements.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/scaleIOPersistentVolumeSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/scaleIOVolumeSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/scopeSelector.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/scopedResourceSelectorRequirement.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/seLinuxOptions.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/seccompProfile.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/secret.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/secretEnvSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/secretKeySelector.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/secretProjection.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/secretReference.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/secretVolumeSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/securityContext.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/service.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/serviceAccount.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/serviceAccountTokenProjection.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/servicePort.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/serviceSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/serviceStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/sessionAffinityConfig.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/storageOSPersistentVolumeSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/storageOSVolumeSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/sysctl.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/taint.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/tcpSocketAction.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/toleration.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/topologySelectorLabelRequirement.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/topologySelectorTerm.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/topologySpreadConstraint.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/typedLocalObjectReference.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/volume.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/volumeDevice.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/volumeMount.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/volumeNodeAffinity.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/volumeProjection.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/vsphereVirtualDiskVolumeSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/weightedPodAffinityTerm.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/windowsSecurityContextOptions.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1/endpoint.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1/endpointConditions.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1/endpointHints.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1/endpointPort.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1/endpointSlice.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1/forZone.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1beta1/endpoint.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1beta1/endpointConditions.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1beta1/endpointHints.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1beta1/endpointPort.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1beta1/endpointSlice.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1beta1/forZone.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1beta1/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/events/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/events/v1/event.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/events/v1/eventSeries.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/events/v1/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/events/v1beta1/event.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/events/v1beta1/eventSeries.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/events/v1beta1/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/extensions/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/extensions/v1beta1/httpIngressPath.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/extensions/v1beta1/httpIngressRuleValue.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/extensions/v1beta1/ingress.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/extensions/v1beta1/ingressBackend.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/extensions/v1beta1/ingressRule.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/extensions/v1beta1/ingressSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/extensions/v1beta1/ingressStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/extensions/v1beta1/ingressTLS.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/extensions/v1beta1/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/flowDistinguisherMethod.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/flowSchema.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/flowSchemaCondition.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/flowSchemaSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/flowSchemaStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/groupSubject.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/limitResponse.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/limitedPriorityLevelConfiguration.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/nonResourcePolicyRule.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/policyRulesWithSubjects.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/priorityLevelConfiguration.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/priorityLevelConfigurationCondition.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/priorityLevelConfigurationReference.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/priorityLevelConfigurationSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/priorityLevelConfigurationStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/queuingConfiguration.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/resourcePolicyRule.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/serviceAccountSubject.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/subject.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/userSubject.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/httpIngressPath.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/httpIngressRuleValue.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/ingress.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/ingressBackend.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/ingressClass.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/ingressClassParametersReference.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/ingressClassSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/ingressRule.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/ingressServiceBackend.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/ingressSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/ingressStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/ingressTLS.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/ipBlock.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/networkPolicy.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/networkPolicyEgressRule.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/networkPolicyIngressRule.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/networkPolicyPeer.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/networkPolicyPort.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/networkPolicySpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/serviceBackendPort.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1beta1/httpIngressPath.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1beta1/httpIngressRuleValue.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1beta1/ingress.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1beta1/ingressBackend.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1beta1/ingressClass.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1beta1/ingressClassParametersReference.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1beta1/ingressClassSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1beta1/ingressRule.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1beta1/ingressSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1beta1/ingressStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1beta1/ingressTLS.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1beta1/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/v1/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/v1/overhead.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/v1/runtimeClass.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/v1/scheduling.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/v1alpha1/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/v1alpha1/overhead.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/v1alpha1/runtimeClass.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/v1alpha1/runtimeClassSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/v1alpha1/scheduling.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/v1beta1/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/v1beta1/overhead.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/v1beta1/runtimeClass.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/v1beta1/scheduling.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1/podDisruptionBudget.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1/podDisruptionBudgetSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1/podDisruptionBudgetStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/allowedCSIDriver.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/allowedFlexVolume.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/allowedHostPath.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/eviction.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/fsGroupStrategyOptions.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/hostPortRange.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/idRange.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/podDisruptionBudget.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/podDisruptionBudgetSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/podDisruptionBudgetStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/podSecurityPolicy.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/podSecurityPolicySpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/runAsGroupStrategyOptions.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/runAsUserStrategyOptions.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/runtimeClassStrategyOptions.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/seLinuxStrategyOptions.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/supplementalGroupsStrategyOptions.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1/aggregationRule.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1/clusterRole.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1/clusterRoleBinding.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1/policyRule.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1/role.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1/roleBinding.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1/roleRef.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1/subject.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1alpha1/aggregationRule.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1alpha1/clusterRole.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1alpha1/clusterRoleBinding.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1alpha1/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1alpha1/policyRule.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1alpha1/role.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1alpha1/roleBinding.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1alpha1/roleRef.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1alpha1/subject.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1beta1/aggregationRule.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1beta1/clusterRole.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1beta1/clusterRoleBinding.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1beta1/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1beta1/policyRule.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1beta1/role.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1beta1/roleBinding.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1beta1/roleRef.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1beta1/subject.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/scheduling/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/scheduling/v1/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/scheduling/v1/priorityClass.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/scheduling/v1alpha1/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/scheduling/v1alpha1/priorityClass.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/scheduling/v1beta1/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/scheduling/v1beta1/priorityClass.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/csiDriver.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/csiDriverSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/csiNode.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/csiNodeDriver.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/csiNodeSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/storageClass.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/tokenRequest.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/volumeAttachment.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/volumeAttachmentSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/volumeAttachmentSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/volumeAttachmentStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/volumeError.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/volumeNodeResources.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1alpha1/csiStorageCapacity.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1alpha1/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1alpha1/volumeAttachment.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1alpha1/volumeAttachmentSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1alpha1/volumeAttachmentSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1alpha1/volumeAttachmentStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1alpha1/volumeError.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/csiDriver.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/csiDriverSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/csiNode.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/csiNodeDriver.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/csiNodeSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/csiStorageCapacity.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/main.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/storageClass.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/tokenRequest.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/volumeAttachment.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/volumeAttachmentSource.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/volumeAttachmentSpec.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/volumeAttachmentStatus.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/volumeError.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/volumeNodeResources.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/gen.libsonnet delete mode 100644 production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/main.libsonnet delete mode 120000 production/kubernetes/build/vendor/grafana-agent delete mode 120000 production/kubernetes/build/vendor/ksonnet-util diff --git a/.drone/drone.yml b/.drone/drone.yml index 9e2e6c0c2887..3b508a8869ec 100644 --- a/.drone/drone.yml +++ b/.drone/drone.yml @@ -54,6 +54,7 @@ steps: depends_on: - Lint + --- kind: pipeline type: docker @@ -113,6 +114,7 @@ steps: - docker run --rm --privileged multiarch/qemu-user-static --reset -p yes - docker buildx create --name multiarch --driver docker-container --use - export RELEASE_TAG=${DRONE_TAG} + - export IMAGE_BRANCH_TAG=${DRONE_BRANCH} - make DRONE=true CROSS_BUILD=true BUILD_IN_CONTAINER=true RELEASE_BUILD=true agent-image - make DRONE=true CROSS_BUILD=true BUILD_IN_CONTAINER=true RELEASE_BUILD=true agentctl-image - make DRONE=true CROSS_BUILD=true BUILD_IN_CONTAINER=true RELEASE_BUILD=true agent-operator-image @@ -240,6 +242,6 @@ get: name: pat --- kind: signature -hmac: c32fd61018bef3703edb694acd0c7312be8cb07898c2cb42eb0e84fee84efb67 +hmac: 11038ae4592a13955388dff643b35bb1f07e53a659cdca946e863c9f2ac77066 ... diff --git a/.github/depcheck.yml b/.github/depcheck.yml index 5fcac924b30d..4b8ac6dfc3b8 100644 --- a/.github/depcheck.yml +++ b/.github/depcheck.yml @@ -2,14 +2,15 @@ # obtained from the listing in go.mod. go_modules: - github.com/cortexproject/cortex + - github.com/drone/envsubst/v2 - github.com/grafana/loki - - github.com/prometheus-community/elasticsearch_exporter - github.com/oliver006/redis_exporter + - github.com/prometheus-community/elasticsearch_exporter - github.com/prometheus/consul_exporter - github.com/prometheus/memcached_exporter + - github.com/prometheus/node_exporter - github.com/prometheus/statsd_exporter - github.com/weaveworks/common - - github.com/drone/envsubst/v2 - go.opentelemetry.io/collector - sigs.k8s.io/controller-runtime diff --git a/.github/workflows/force_release.yml b/.github/workflows/force_release.yml deleted file mode 100644 index 1a9d3a30409f..000000000000 --- a/.github/workflows/force_release.yml +++ /dev/null @@ -1,143 +0,0 @@ -name: Force Release -on: - workflow_dispatch: - inputs: - tag: - description: "Tag to build for" - required: true -jobs: - test: - name: Test - runs-on: Linux - steps: - - name: Get build dependencies - run: sudo apt-get update && sudo apt-get install libsystemd-dev - - - name: Set up Go 1.16 - uses: actions/setup-go@v1 - with: - go-version: 1.16 - id: go - - - name: Checkout code - uses: actions/checkout@v2 - with: - ref: '${{ github.event.inputs.tag }}' - - - name: Test - run: make test - agent-container: - name: Build agent Container - runs-on: Linux - needs: test - steps: - - name: Get build dependencies - run: sudo apt-get update && sudo apt-get install binfmt-support qemu-user-static - - - name: Checkout code - uses: actions/checkout@v2 - with: - ref: '${{ github.event.inputs.tag }}' - - - name: Login to Docker Hub - run: docker login -u '${{ secrets.DOCKER_USER }}' -p '${{ secrets.DOCKER_PASS }}' - - - name: Prepare buildx - run: | - docker run --rm --privileged multiarch/qemu-user-static --reset -p yes - docker buildx create --name builder --node builder --driver docker-container --use - docker buildx inspect --bootstrap - - - name: Build container - run: | - export RELEASE_TAG=${{ github.event.inputs.tag }} - CROSS_BUILD=true RELEASE_BUILD=true make agent-image - agentctl-container: - name: Build agentctl Container - runs-on: Linux - needs: test - steps: - - name: Get build dependencies - run: sudo apt-get update && sudo apt-get install binfmt-support qemu-user-static - - - name: Checkout code - uses: actions/checkout@v2 - with: - ref: '${{ github.event.inputs.tag }}' - - - name: Login to Docker Hub - run: docker login -u '${{ secrets.DOCKER_USER }}' -p '${{ secrets.DOCKER_PASS }}' - - - name: Prepare buildx - run: | - docker run --rm --privileged multiarch/qemu-user-static --reset -p yes - docker buildx create --name builder --node builder --driver docker-container --use - docker buildx inspect --bootstrap - - - name: Build container - run: | - export RELEASE_TAG=${{ github.event.inputs.tag }} - CROSS_BUILD=true RELEASE_BUILD=true make agentctl-image - agent-operator-container: - name: Build agent-operator Container - runs-on: Linux - needs: test - steps: - - name: Get build dependencies - run: sudo apt-get update && sudo apt-get install binfmt-support qemu-user-static - - - name: Checkout code - uses: actions/checkout@v2 - with: - ref: '${{ github.event.inputs.tag }}' - - - name: Login to Docker Hub - run: docker login -u '${{ secrets.DOCKER_USER }}' -p '${{ secrets.DOCKER_PASS }}' - - - name: Prepare buildx - run: | - docker run --rm --privileged multiarch/qemu-user-static --reset -p yes - docker buildx create --name builder --node builder --driver docker-container --use - docker buildx inspect --bootstrap - - - name: Build container - run: | - export RELEASE_TAG=${{ github.event.inputs.tag }} - CROSS_BUILD=true RELEASE_BUILD=true make agent-operator-image - release: - name: Release - needs: test - runs-on: Linux - steps: - - name: Get build dependencies - run: sudo apt-get update && sudo apt-get install libsystemd-dev - - - name: Set up Go 1.16 - uses: actions/setup-go@v1 - with: - go-version: 1.16 - id: go - - - name: Install gox and ghr - run: | - pushd / - GO111MODULE=on go get -u \ - github.com/mitchellh/gox \ - github.com/tcnksm/ghr - popd - - - name: Checkout code - uses: actions/checkout@v2 - with: - ref: '${{ github.event.inputs.tag }}' - - - name: Make Release - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - # This is required so gox and ghr are available - export PATH="$(go env GOPATH)/bin:$PATH" - - export RELEASE_TAG=${{ github.event.inputs.tag }} - - make -j4 RELEASE_BUILD=true publish diff --git a/.gitignore b/.gitignore index 20070b65e626..fb39d6a8c73f 100644 --- a/.gitignore +++ b/.gitignore @@ -4,7 +4,7 @@ /.pkg /.cache /.vscode -/vendor +vendor /cmd/agent/agent /cmd/agentctl/agentctl diff --git a/CHANGELOG.md b/CHANGELOG.md index 4dd9513d673e..38aee5d014e3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Main (unreleased) +# v0.22.0 (2022-01-13) + +This release has deprecations. Please read [DEPRECATION] entries and consult +the [upgrade guide](https://github.com/grafana/agent/blob/main/docs/upgrade-guide/_index.md) +for detailed information. + - [FEATURE] (beta) Enable experimental config urls for fetching remote configs. Currently, only HTTP/S is supported. Pass the `-enable-features=remote-configs` flag to turn this on. (@rlankfo) @@ -9,6 +15,11 @@ - [FEATURE] Traces: Support jaeger/grpc exporter (@nicoche) +- [FEATURE] (beta) Enable an experimental integrations subsystem revamp. Pass + `integrations-next` to `-enable-features` to turn this on. Reading the + documentation for the revamp is recommended; enabling it causes breaking + config changes. (@rfratto) + - [ENHANCEMENT] Traces: Improved pod association in PromSD processor (@mapno) - [ENHANCEMENT] Updated OTel to v0.40.0 (@mapno) @@ -17,18 +28,52 @@ - [ENHANCEMENT] Remote write dashboard: add mean latency (@bboreham) +- [ENHANCEMENT] Update node_exporter dependency to v1.3.1. (@rfratto) + +- [ENHANCEMENT] Cherry-pick Prometheus PR #10102 into our Prometheus dependency (@rfratto). + - [BUGFIX] Fix usage of POSTGRES_EXPORTER_DATA_SOURCE_NAME when using postgres_exporter integration (@f11r) - [BUGFIX] Change ordering of the entrypoint for windows service so that it accepts commands immediately (@mattdurham) - [BUGFIX] Only stop WAL cleaner when it has been started (@56quarters) -- [BUGFIX] Fix issue with unquoted install path on Windows, that could allow escalation or running an arbitrary executable (@mattdurham) - -- [CHANGE] Remove log-level flag from systemd unit file (@jpkrohling) +- [BUGFIX] Fix issue with unquoted install path on Windows, that could allow escalation or running an arbitrary executable (@mattdurham) - [BUGFIX] Fix cAdvisor so it collects all defined metrics instead of the last (@pkoenig10) +- [BUGFIX] Fix panic when using 'stdout' in automatic logging (@mapno) + +- [BUGFIX] Grafana Agent Operator: The /-/ready and /-/healthy endpoints will + no longer always return 404 (@rfratto). + +- [DEPRECATION] The node_exporter integration's `netdev_device_whitelist` field + is deprecated in favor of `netdev_device_include`. Support for the old field + name will be removed in a future version. (@rfratto) + +- [DEPRECATION] The node_exporter integration's `netdev_device_blacklist` field + is deprecated in favor of `netdev_device_include`. Support for the old field + name will be removed in a future version. (@rfratto) + +- [DEPRECATION] The node_exporter integration's `systemd_unit_whitelist` field + is deprecated in favor of `systemd_unit_include`. Support for the old field + name will be removed in a future version. (@rfratto) + +- [DEPRECATION] The node_exporter integration's `systemd_unit_blacklist` field + is deprecated in favor of `systemd_unit_exclude`. Support for the old field + name will be removed in a future version. (@rfratto) + +- [DEPRECATION] The node_exporter integration's + `filesystem_ignored_mount_points` field is deprecated in favor of + `filesystem_mount_points_exclude`. Support for the old field name will be + removed in a future version. (@rfratto) + +- [DEPRECATION] The node_exporter integration's `filesystem_ignored_fs_types` + field is deprecated in favor of `filesystem_fs_types_exclude`. Support for + the old field name will be removed in a future version. (@rfratto) + +- [CHANGE] Remove log-level flag from systemd unit file (@jpkrohling) + # v0.21.2 (2021-12-08) - [SECURITY] This release contains a fix for diff --git a/Makefile b/Makefile index d7e358659cb9..0cb1265f704a 100644 --- a/Makefile +++ b/Makefile @@ -7,6 +7,7 @@ SHELL = /usr/bin/env bash # Docker image info IMAGE_PREFIX ?= grafana +IMAGE_BRANCH_TAG ?= main ifeq ($(RELEASE_TAG),) IMAGE_TAG ?= $(shell ./tools/image-tag) # If RELEASE_TAG has a valid value it will be the same as IMAGE_TAG @@ -14,6 +15,7 @@ IMAGE_TAG ?= $(shell ./tools/image-tag) RELEASE_TAG = $(IMAGE_TAG) else IMAGE_TAG ?= $(RELEASE_TAG) +IMAGE_BRANCH_TAG = latest endif DRONE ?= false @@ -199,13 +201,13 @@ cmd/grafana-agent-crow/grafana-agent-crow: cmd/grafana-agent-crow/main.go $(NETGO_CHECK) agent-image: - $(docker-build) -t $(IMAGE_PREFIX)/agent:latest -t $(IMAGE_PREFIX)/agent:$(IMAGE_TAG) -f cmd/agent/$(DOCKERFILE) . + $(docker-build) -t $(IMAGE_PREFIX)/agent:$(IMAGE_BRANCH_TAG) -t $(IMAGE_PREFIX)/agent:$(IMAGE_TAG) -f cmd/agent/$(DOCKERFILE) . agentctl-image: - $(docker-build) -t $(IMAGE_PREFIX)/agentctl:latest -t $(IMAGE_PREFIX)/agentctl:$(IMAGE_TAG) -f cmd/agentctl/$(DOCKERFILE) . + $(docker-build) -t $(IMAGE_PREFIX)/agentctl:$(IMAGE_BRANCH_TAG) -t $(IMAGE_PREFIX)/agentctl:$(IMAGE_TAG) -f cmd/agentctl/$(DOCKERFILE) . agent-operator-image: - $(docker-build) -t $(IMAGE_PREFIX)/agent-operator:latest -t $(IMAGE_PREFIX)/agent-operator:$(IMAGE_TAG) -f cmd/agent-operator/$(DOCKERFILE) . + $(docker-build) -t $(IMAGE_PREFIX)/agent-operator:$(IMAGE_BRANCH_TAG) -t $(IMAGE_PREFIX)/agent-operator:$(IMAGE_TAG) -f cmd/agent-operator/$(DOCKERFILE) . grafana-agent-crow-image: - $(docker-build) -t $(IMAGE_PREFIX)/agent-crow:latest -t $(IMAGE_PREFIX)/agent-crow:$(IMAGE_TAG) -f cmd/grafana-agent-crow/$(DOCKERFILE) . + $(docker-build) -t $(IMAGE_PREFIX)/agent-crow:$(IMAGE_BRANCH_TAG) -t $(IMAGE_PREFIX)/agent-crow:$(IMAGE_TAG) -f cmd/grafana-agent-crow/$(DOCKERFILE) . install: CGO_ENABLED=1 go install $(CGO_FLAGS) ./cmd/agent @@ -229,6 +231,12 @@ test: CGO_ENABLED=1 go test $(CGO_FLAGS) -tags=has_network -race -cover -coverprofile=cover.out -p=4 ./... CGO_ENABLED=1 go test $(CGO_FLAGS) -tags=has_network -cover -coverprofile=cover-norace.out -p=4 ./pkg/integrations/node_exporter ./pkg/logs +e2e/lint: + $(MAKE) -C e2e lint + +e2e/test: + $(MAKE) -C e2e test + clean: rm -rf cmd/agent/agent go clean ./... @@ -237,8 +245,8 @@ example-kubernetes: cd production/kubernetes/build && bash build.sh example-dashboards: - cd example/docker-compose/grafana/dashboards && \ - jsonnet template.jsonnet -J ../../vendor -m . + cd example/docker-compose && jb install && \ + cd grafana/dashboards && jsonnet template.jsonnet -J ../../vendor -m . ############# # Releasing # diff --git a/cmd/agent-operator/main.go b/cmd/agent-operator/main.go index aae4009da3cf..09d0d0f9bcc0 100644 --- a/cmd/agent-operator/main.go +++ b/cmd/agent-operator/main.go @@ -12,6 +12,7 @@ import ( "github.com/grafana/agent/pkg/operator/logutil" "github.com/prometheus/common/version" controller "sigs.k8s.io/controller-runtime" + "sigs.k8s.io/controller-runtime/pkg/healthz" // Needed for clients. _ "k8s.io/client-go/plugin/pkg/client/auth" @@ -33,6 +34,13 @@ func main() { os.Exit(1) } + if err := m.AddReadyzCheck("running", healthz.Ping); err != nil { + level.Warn(logger).Log("msg", "failed to set up 'running' readyz check", "err", err) + } + if err := m.AddHealthzCheck("running", healthz.Ping); err != nil { + level.Warn(logger).Log("msg", "failed to set up 'running' healthz check", "err", err) + } + if err := operator.New(logger, cfg, m); err != nil { level.Error(logger).Log("msg", "unable to create operator", "err", err) os.Exit(1) diff --git a/cmd/agent/DEVELOPERS.md b/cmd/agent/DEVELOPERS.md index a3e64fbf1c95..c919c6250e79 100644 --- a/cmd/agent/DEVELOPERS.md +++ b/cmd/agent/DEVELOPERS.md @@ -34,7 +34,7 @@ before releasing the Grafana Agent. #### Prerelease testing -For testing a release, run the [K3d example](../example/k3d/README.md) locally. +For testing a release, run the [K3d example](../../example/k3d/README.md) locally. Let it run for about 90 minutes, keeping an occasional eye on the Agent Operational dashboard (noting that metrics from the scraping service will take time to show up). After 90 minutes, if nothing has crashed and you see metrics diff --git a/cmd/agent/entrypoint.go b/cmd/agent/entrypoint.go index 565668207a4c..a7d77277cb7e 100644 --- a/cmd/agent/entrypoint.go +++ b/cmd/agent/entrypoint.go @@ -4,16 +4,16 @@ import ( "fmt" "net" "net/http" + "net/url" "os" "os/signal" "sync" "syscall" "github.com/gorilla/mux" - "github.com/grafana/agent/pkg/integrations" "github.com/grafana/agent/pkg/logs" - loki "github.com/grafana/agent/pkg/logs" "github.com/grafana/agent/pkg/metrics" + "github.com/grafana/agent/pkg/metrics/instance" "github.com/grafana/agent/pkg/traces" "github.com/grafana/agent/pkg/util" "github.com/grafana/agent/pkg/util/server" @@ -37,11 +37,11 @@ type Entrypoint struct { log *util.Logger cfg config.Config - srv *server.Server - promMetrics *metrics.Agent - lokiLogs *loki.Logs - tempoTraces *traces.Traces - manager *integrations.Manager + srv *server.Server + promMetrics *metrics.Agent + lokiLogs *logs.Logs + tempoTraces *traces.Traces + integrations config.Integrations reloadListener net.Listener reloadServer *http.Server @@ -90,7 +90,11 @@ func NewEntrypoint(logger *util.Logger, cfg *config.Config, reloader Reloader) ( return nil, err } - ep.manager, err = integrations.NewManager(cfg.Integrations, logger, ep.promMetrics.InstanceManager(), ep.promMetrics.Validate) + integrationGlobals, err := ep.createIntegrationsGlobals(cfg) + if err != nil { + return nil, err + } + ep.integrations, err = config.NewIntegrations(logger, &cfg.Integrations, integrationGlobals) if err != nil { return nil, err } @@ -103,6 +107,31 @@ func NewEntrypoint(logger *util.Logger, cfg *config.Config, reloader Reloader) ( return ep, nil } +func (ep *Entrypoint) createIntegrationsGlobals(cfg *config.Config) (config.IntegrationsGlobals, error) { + hostname, err := instance.Hostname() + if err != nil { + return config.IntegrationsGlobals{}, fmt.Errorf("getting hostname: %w", err) + } + + usingTLS := len(cfg.Server.HTTPTLSConfig.TLSCertPath) > 0 && len(cfg.Server.HTTPTLSConfig.TLSKeyPath) > 0 + scheme := "http" + if usingTLS { + scheme = "https" + } + + return config.IntegrationsGlobals{ + AgentIdentifier: fmt.Sprintf("%s:%d", hostname, cfg.Server.HTTPListenPort), + Metrics: ep.promMetrics, + Logs: ep.lokiLogs, + Tracing: ep.tempoTraces, + // TODO(rfratto): set SubsystemOptions here when v1 is removed. + AgentBaseURL: &url.URL{ + Scheme: scheme, + Host: fmt.Sprintf("127.0.0.1:%d", cfg.Server.HTTPListenPort), + }, + }, nil +} + // ApplyConfig applies changes to the subsystems of the Agent. func (ep *Entrypoint) ApplyConfig(cfg config.Config) error { ep.mut.Lock() @@ -136,7 +165,11 @@ func (ep *Entrypoint) ApplyConfig(cfg config.Config) error { failed = true } - if err := ep.manager.ApplyConfig(cfg.Integrations); err != nil { + integrationGlobals, err := ep.createIntegrationsGlobals(&cfg) + if err != nil { + level.Error(ep.log).Log("msg", "failed to update integrations", "err", err) + failed = true + } else if err := ep.integrations.ApplyConfig(&cfg.Integrations, integrationGlobals); err != nil { level.Error(ep.log).Log("msg", "failed to update integrations", "err", err) failed = true } @@ -155,7 +188,7 @@ func (ep *Entrypoint) wire(mux *mux.Router, grpc *grpc.Server) { ep.promMetrics.WireAPI(mux) ep.promMetrics.WireGRPC(grpc) - ep.manager.WireAPI(mux) + ep.integrations.WireAPI(mux) mux.HandleFunc("/-/healthy", func(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusOK) @@ -224,7 +257,7 @@ func (ep *Entrypoint) Stop() { ep.mut.Lock() defer ep.mut.Unlock() - ep.manager.Stop() + ep.integrations.Stop() ep.lokiLogs.Stop() ep.promMetrics.Stop() ep.tempoTraces.Stop() diff --git a/docs/api/_index.md b/docs/api/_index.md index 350ea82fc740..d0d8f65ec6be 100644 --- a/docs/api/_index.md +++ b/docs/api/_index.md @@ -7,15 +7,17 @@ weight = 400 The API is divided into several parts: -- [Config Management API](#config-management-api) +- [Config Management API](#config-management-api) - [Agent API](#agent-api) +- [Integrations API](#integrations-api) - [Ready/Healthy API](#ready--health-api) ## Config management API -Grafana Agent exposes a config management REST API for managing instance configurations when it is running in [scraping service mode]({{< relref "../scraping-service" >}}). +Grafana Agent exposes a config management REST API for managing instance configurations when it is running in [scraping service mode]({{< relref "../scraping-service" >}}). -(Note that scraping service mode is a requirement for the config management API, however this is not a pre-req for the Agent API or Ready/Healthy API) +(Note that scraping service mode is a requirement for the config management +API, however this is not a prerequisite for the Agent API or Ready/Healthy API) The following endpoints are exposed: @@ -30,7 +32,7 @@ All Config Management API endpoints will return responses in the following form, unless an internal service error prevents the server from responding properly: -```json +``` { "status": "success" | "error", "data": {} @@ -270,6 +272,94 @@ configuration file on disk. Status code: 200 on success. +## Integrations API + +> **WARNING**: This API is currently only available when the experimental +> [integrations revamp]({{< relref "../configuration/integrations/integrations-next" >}}) +> is enabled. Both the revamp and this API are subject to change while they +> are still experimental. + +### Integrations SD API + +``` +GET /agent/api/v1/metrics/integrations/sd +``` + +This endpoint returns all running metrics-based integrations. It conforms to +the Prometheus [http_sd_config +API](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#http_sd_config). +Targets include integrations regardless of autoscrape being enabled; this +allows for manually configuring scrape jobs to collect metrics from an +integration running on an external agent. + +The following labels will be present on all returned targets: + +- `instance`: The unique instance ID of the running integration. +- `job`: `integrations/<__meta_agent_integration_name>` +- `agent_hostname`: `hostname:port` of the agent running the integration. +- `__meta_agent_integration_name`: The name of the integration. +- `__meta_agent_integration_instance`: The unique instance ID for the running integration. +- `__meta_agent_integration_autoscrape`: `1` if autoscrape is enabled for this integration, `0` otherwise. + +To reduce the load on the agent's HTTP server, the following query parameters +may also be provided to the URL: + +- `integrations`: Comma-delimited list of integrations to return. i.e., `agent,node_exporter`. +- `instance`: Return all integrations matching a specific value for instance. + +Status code: 200 if successful. +Response on success: + +``` +[ + { + "targets": [ "", ... ], + "labels": { + "": "", ... + } + }, + ... +] +``` + +### Integrations autoscrape targets + +``` +GET /agent/api/v1/metrics/integrations/targets +``` + +This endpoint returns all integrations for which autoscrape is enabled. The +response is identical to [`/agent/api/v1/targets`](#list-current-scrape-targets). + +Status code: 200 on success. +Response on success: + +``` +{ + "status": "success", + "data": [ + { + "instance": , + "target_group": , + "endpoint": + "state": , + "discovered_labels": { + "__address__": "
", + ... + }, + "labels": { + "label_a": "value_a", + ... + }, + "last_scrape": , + "scrape_duration_ms": , + "scrape_error": + }, + ... + ] +} +``` + ## Ready / health API ### Readiness check diff --git a/docs/configuration/integrations/integrations-next/_index.md b/docs/configuration/integrations/integrations-next/_index.md new file mode 100644 index 000000000000..2a724de64172 --- /dev/null +++ b/docs/configuration/integrations/integrations-next/_index.md @@ -0,0 +1,165 @@ ++++ +title = "(Beta) Integrations Revamp" +weight = 100 ++++ + +# (Beta) Integrations Revamp + +Release v0.22.0 of Grafana Agent includes experimental support for a revamped +integrations subsystem. The integrations subsystem is the second oldest part of +Grafana Agent, and has started to feel out of place as we built out the +project. + +The revamped integrations subsystem can be enabled by passing +`integrations-next` to the `-enable-features` command line flag. As an +experimental feature, there are no stability guarantees, and it may receive a +higher frequency of breaking changes than normal. + +The revamped integrations subsystem has the following benefits over the +original subsystem: + +* Integrations can opt in to supporting multiple instances. For example, you + may now run any number of `redis_exporter` integrations, where before you + could only have one per agent. Integrations such as `node_exporter` still + only support a single instance, as it wouldn't make sense to have multiple + instances of those. + +* Autoscrape (previously called "self-scraping"), when enabled, now supports + sending metrics for an integration directly to a running metrics instance. + This allows you configuring an integration to send to a specific Prometheus + remote_write endpoint. + +* A new service discovery HTTP API is included. This can be used with + Prometheus' [http_sd_config][http_sd_config]. The API returns extra labels + for integrations that previously were only availble when autoscraping, such + as `agent_hostname`. + +* Integrations that aren't Prometheus exporters may now be added, such as + integrations that generate logs or traces. + +[http_sd_config]: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#http_sd_config + +## Config changes + +The revamp contains a number of breaking changes to the config. The schema of the +`integrations` key in the config file is now the following: + +```yaml +integrations: + # Controls settings for integrations that generate metrics. + metrics: + # Controls default settings for autoscrape. Individual instances of + # integrations inherit the defaults and may override them. + autoscrape: + # Enables autoscrape of integrations. + [enable: | default = true] + + # Specifies the metrics instance name to send metrics to. Instance + # names are located at metrics.configs[].name from the top-level config. + # The instance must exist. + # + # As it is common to use the name "default" for your primary instance, + # we assume the same here. + [metrics_instance: | default = "default"] + + # Autoscrape interval and timeout. Defaults are inherited from the global + # section of the top-level metrics config. + [scrape_interval: | default = ] + [scrape_timeout: | default = ] + + # Override settings for agent to self-communivate for autoscrape. This is + # currently required if you are using TLS for the agent server. This field is + # temporary and will be removed in the near future once autoscrape can work # + # without using the network. + # + # Settings are omitted for brevity, but the schema is from: + # https://github.com/prometheus/common/blob/2af6d036253eee1a9a08c6ddf6be6d67537bcdff/config/http_config.go#L177 + client_config: + # + + # Configs for integrations which do not support multiple instances. + [agent: ] + [cadvisor: ] + [node_exporter: ] + [process_exporter: ] + [statsd_exporter: ] + [windows_exporter: ] + + # Configs for integrations that do support multiple instances. Note that + # these must be arrays. + consul_exporter_configs: + [- ...] + + dnsmasq_exporter_configs: + [- ...] + + elasticsearch_exporter_configs: + [- ...] + + github_exporter_configs: + [- ...] + + kafka_exporter_configs: + [- ...] + + memcached_exporter_configs: + [- ...] + + mongodb_exporter_configs: + [- ...] + + mysqld_exporter_configs: + [- ...] + + postgres_exporter_configs: + [- ...] + + redis_exporter_configs: + [- ...] +``` + +## Integrations changes + +Integrations no longer support an `enabled` field; they are enabled by being +defined in the YAML. To disable an integration, comment it out or remove it. + +Metrics-based integrations now use this common set of options: + +```yaml +# Provide an explicit value to uniquely identify this instance of the +# integration. If not provided, a reasonable default will be inferred based +# on the integration. +# +# The value here must be unique across all instances of the same integration. +[instance: ] + +# Override autoscrape defaults for this integration. +autoscrape: + # Enables autoscrape of integrations. + [enable: | default = ] + + # Specifies the metrics instance name to send metrics to. + [metrics_instance: | default = ] + + # Autoscrape interval and timeout. + [scrape_interval: | default = ] + [scrape_timeout: | default = ] +``` + +The old set of common options have been removed and do not work when the revamp +is being used: + +```yaml +# OLD SCHEMA: NO LONGER SUPPORTED + +[enabled: | default = false] +[instance: ] +[scrape_integration: | default = ] +[scrape_interval: | default = ] +[scrape_timeout: | default = ] +[wal_truncate_frequency: | default = "60m"] +relabel_configs: + [- ...] +metric_relabel_configs: + [ - ...] +``` diff --git a/docs/configuration/integrations/node-exporter-config.md b/docs/configuration/integrations/node-exporter-config.md index d44d675a6a39..6ce79fbab36a 100644 --- a/docs/configuration/integrations/node-exporter-config.md +++ b/docs/configuration/integrations/node-exporter-config.md @@ -26,7 +26,7 @@ docker run \ -v "/proc:/host/proc:ro,rslave" \ -v /tmp/agent:/etc/agent \ -v /path/to/config.yaml:/etc/agent-config/agent.yaml \ - grafana/agent:v0.21.2 \ + grafana/agent:v0.22.0 \ --config.file=/etc/agent-config/agent.yaml ``` @@ -66,7 +66,7 @@ metadata: name: agent spec: containers: - - image: grafana/agent:v0.21.2 + - image: grafana/agent:v0.22.0 name: agent args: - --config.file=/etc/agent-config/agent.yaml @@ -120,10 +120,14 @@ the Agent is running on is a no-op. | cpufreq | Exposes CPU frequency statistics. | Linux, Solaris | yes | | devstat | Exposes device statistics. | Dragonfly, FreeBSD | no | | diskstats | Exposes disk I/O statistics. | Darwin, Linux, OpenBSD | yes | +| dmi | Exposes DMI information. | Linux | yes | | drbd | Exposes Distributed Replicated Block Device statistics (to version 8.4). | Linux | no | +| drm | Exposes GPU card info from /sys/class/drm/card?/device | Linux | no | | edac | Exposes error detection and correction statistics. | Linux | yes | | entropy | Exposes available entropy. | Linux | yes | +| ethtool | Exposes ethtool stats | Linux | no | | exec | Exposes execution statistics. | Dragonfly, FreeBSD | yes | +| fibrechannel | Exposes FibreChannel statistics. | Linux | yes | | filefd | Exposes file descriptor statistics from /proc/sys/fs/file-nr. | Linux | yes | | filesystem | Exposes filesystem statistics, such as disk space used. | Darwin, Dragonfly, FreeBSD, Linux, OpenBSD | yes | | hwmon | Exposes hardware monitoring and sensor data from /sys/class/hwmon. | Linux | yes | @@ -131,6 +135,7 @@ the Agent is running on is a no-op. | interrupts | Exposes detailed interrupts statistics. | Linux, OpenBSD | no | | ipvs | Exposes IPVS status from /proc/net/ip_vs and stats from /proc/net/ip_vs_stats. | Linux | yes | | ksmd | Exposes kernel and system statistics from /sys/kernel/mm/ksm. | Linux | no | +| lnstat | Exposes Linux network cache stats | Linux | no | | loadavg | Exposes load average. | Darwin, Dragonfly, FreeBSD, Linux, NetBSD, OpenBSD, Solaris | yes | | logind | Exposes session counts from logind. | Linux | no | | mdadm | Exposes statistics about devices in /proc/mdstat (does nothing if no /proc/mdstat present). | Linux | yes | @@ -140,9 +145,12 @@ the Agent is running on is a no-op. | netclass | Exposes network interface info from /sys/class/net. | Linux | yes | | netdev | Exposes network interface statistics such as bytes transferred. | Darwin, Dragonfly, FreeBSD, Linux, OpenBSD | yes | | netstat | Exposes network statistics from /proc/net/netstat. This is the same information as netstat -s. | Linux | yes | +| network_route | Exposes network route statistics. | Linux | no | | nfs | Exposes NFS client statistics from /proc/net/rpc/nfs. This is the same information as nfsstat -c. | Linux | yes | | nfsd | Exposes NFS kernel server statistics from /proc/net/rpc/nfsd. This is the same information as nfsstat -s. | Linux | yes | -| ntp | Exposes local NTP daemon helath to check time. | any | no | +| ntp | Exposes local NTP daemon health to check time. | any | no | +| nvme | Exposes NVMe statistics. | Linux | yes | +| os | Exposes os-release information. | Linux | yes | | perf | Exposes perf based metrics (Warning: Metrics are dependent on kernel configuration and settings). | Linux | no | | powersupplyclass | Collects information on power supplies. | any | yes | | pressure | Exposes pressure stall statistics from /proc/pressure/. | Linux (kernel 4.20+ and/or CONFIG_PSI) | yes | @@ -156,8 +164,10 @@ the Agent is running on is a no-op. | stat | Exposes various statistics from /proc/stat. This includes boot time, forks and interrupts. | Linux | yes | | supervisord | Exposes service status from supervisord. | any | no | | systemd | Exposes service and system status from systemd. | Linux | no | +| tapestats | Exposes tape device stats. | Linux | yes | | tcpstat | Exposes TCP connection status information from /proc/net/tcp and /proc/net/tcp6. (Warning: the current version has potential performance issues in high load situations). | Linux | no | | textfile | Collects metrics from files in a directory matching the filename pattern *.prom. The files must be using the text format defined here: https://prometheus.io/docs/instrumenting/exposition_formats/ | any | yes | +| thermal | Exposes thermal statistics. | Darwin | yes | | thermal_zone | Exposes thermal zone & cooling device statistics from /sys/class/thermal. | Linux | yes | | time | Exposes the current system time. | any | yes | | timex | Exposes selected adjtimex(2) system call stats. | Linux | yes | @@ -167,7 +177,7 @@ the Agent is running on is a no-op. | wifi | Exposes WiFi device and station statistics. | Linux | no | | xfs | Exposes XFS runtime statistics. | Linux (kernel 4.4+) | yes | | zfs | Exposes ZFS performance statistics. | Linux, Solaris | yes | - +| zoneinfo | Exposes zone stats. | Linux | no | ```yaml # Enables the node_exporter integration, allowing the Agent to automatically @@ -230,9 +240,6 @@ the Agent is running on is a no-op. # Additional collectors to disable on top of the default set of disabled # collectors. Takes precedence over enable_collectors. - - # Additional collectors to disable from the set of enabled collectors. - # Takes precedence over enabled_collectors. # # This is useful if you have a few collectors you do not want to run that # are enabled by default, but do not want to explicitly provide an entire @@ -251,17 +258,47 @@ the Agent is running on is a no-op. # directory. [rootfs_path: | default = "/"] + # Expose expensive bcache priority stats. + [enable_bcache_priority_stats: ] + + # Regexp of `bugs` field in cpu info to filter. + [cpu_bugs_include: ] + + # Enable the node_cpu_guest_seconds_total metric. + [enable_cpu_guest_seconds_metric: | default = true] + # Enable the cpu_info metric for the cpu collector. [enable_cpu_info_metric: | default = true] + # Regexp of `flags` field in cpu info to filter. + [cpu_flags_include: ] + # Regexmp of devices to ignore for diskstats. [diskstats_ignored_devices: | default = "^(ram|loop|fd|(h|s|v|xv)d[a-z]|nvme\\d+n\\d+p)\\d+$"] + # Regexp of ethtool devices to exclude (mutually exclusive with ethtool_device_include) + [ethtool_device_exclude: ] + + # Regexp of ethtool devices to include (mutually exclusive with ethtool_device_exclude) + [ethtool_device_include: ] + + # Regexp of ethtool stats to include. + [ethtool_metrics_include: | default = ".*"] + # Regexp of mount points to ignore for filesystem collector. - [filesystem_ignored_mount_points: | default = "^/(dev|proc|sys|var/lib/docker/.+)($|/)"] + [filesystem_mount_points_exclude: | default = "^/(dev|proc|sys|var/lib/docker/.+)($|/)"] # Regexp of filesystem types to ignore for filesystem collector. - [filesystem_ignored_fs_types: | default = "^(autofs|binfmt_misc|bpf|cgroup2?|configfs|debugfs|devpts|devtmpfs|fusectl|hugetlbfs|iso9660|mqueue|nsfs|overlay|proc|procfs|pstore|rpc_pipefs|securityfs|selinuxfs|squashfs|sysfs|tracefs)$"] + [filesystem_fs_types_exclude: | default = "^(autofs|binfmt_misc|bpf|cgroup2?|configfs|debugfs|devpts|devtmpfs|fusectl|hugetlbfs|iso9660|mqueue|nsfs|overlay|proc|procfs|pstore|rpc_pipefs|securityfs|selinuxfs|squashfs|sysfs|tracefs)$"] + + # How long to wait for a mount to respond before marking it as stale. + [filesystem_mount_timeout: | default = "5s"] + + # Array of IPVS backend stats labels. + # + # The default is [local_address, local_port, remote_address, remote_port, proto, local_mark]. + ipvs_backend_labels: + [- ] # NTP server to use for ntp collector [ntp_server: | default = "127.0.0.1"] @@ -284,18 +321,29 @@ the Agent is running on is a no-op. # Regexp of net devices to ignore for netclass collector. [netclass_ignored_devices: | default = "^$"] - # Regexp of net devices to blacklist (mutually exclusive with whitelist) - [netdev_device_blacklist: | default = ""] + # Ignore net devices with invalid speed values. This will default to true in + # node_exporter 2.0. + [netclass_ignore_invalid_speed_device: | default = false] + + # Enable collecting address-info for every device. + [netdev_address_info: ] - # Regexp of net devices to whitelist (mutually exclusive with blacklist) - [netdev_device_whitelist: | default = ""] + # Regexp of net devices to exclude (mutually exclusive with include) + [netdev_device_exclude: | default = ""] + + # Regexp of net devices to include (mutually exclusive with exclude) + [netdev_device_include: | default = ""] # Regexp of fields to return for netstat collector. - [netstat_fields: | default = "^(.*_(InErrors|InErrs)|Ip_Forwarding|Ip(6|Ext)_(InOctets|OutOctets)|Icmp6?_(InMsgs|OutMsgs)|TcpExt_(Listen.*|Syncookies.*|TCPSynRetrans)|Tcp_(ActiveOpens|InSegs|OutSegs|PassiveOpens|RetransSegs|CurrEstab)|Udp6?_(InDatagrams|OutDatagrams|NoPorts|RcvbufErrors|SndbufErrors))$"] + [netstat_fields: | default = "^(.*_(InErrors|InErrs)|Ip_Forwarding|Ip(6|Ext)_(InOctets|OutOctets)|Icmp6?_(InMsgs|OutMsgs)|TcpExt_(Listen.*|Syncookies.*|TCPSynRetrans|TCPTimeouts)|Tcp_(ActiveOpens|InSegs|OutSegs|OutRsts|PassiveOpens|RetransSegs|CurrEstab)|Udp6?_(InDatagrams|OutDatagrams|NoPorts|RcvbufErrors|SndbufErrors))$"] # List of CPUs from which perf metrics should be collected. [perf_cpus: | default = ""] + # Array of perf tracepoints that should be collected. + perf_tracepoint: + [- ] + # Regexp of power supplies to ignore for the powersupplyclass collector. [powersupply_ignored_supplies: | default = "^$"] @@ -303,15 +351,19 @@ the Agent is running on is a no-op. [runit_service_dir: | default = "/etc/service"] # XML RPC endpoint for the supervisord collector. + # + # Setting SUPERVISORD_URL in the environment will override the default value. + # An explicit value in the YAML config takes precedence over the environment + # variable. [supervisord_url: | default = "http://localhost:9001/RPC2"] - # Regexp of systemd units to whitelist. Units must both match whitelist - # and not match blacklist to be included. - [systemd_unit_whitelist: | default = ".+"] + # Regexp of systemd units to include. Units must both match include and not + # match exclude to be collected. + [systemd_unit_include: | default = ".+"] - # Regexp of systemd units to blacklist. Units must both match whitelist - # and not match blacklist to be included. - [systemd_unit_blacklist: | default = ".+\\.(automount|device|mount|scope|slice)"] + # Regexp of systemd units to exclude. Units must both match include and not + # match exclude to be collected. + [systemd_unit_exclude: | default = ".+\\.(automount|device|mount|scope|slice)"] # Enables service unit tasks metrics unit_tasks_current and unit_tasks_max [systemd_enable_task_metrics: | default = false] @@ -322,6 +374,9 @@ the Agent is running on is a no-op. # Enables service unit metric unit_start_time_seconds [systemd_enable_start_time_metrics: | default = false] + # Regexp of tapestats devices to ignore. + [tapestats_ignored_devices: | default = "^$"] + # Directory to read *.prom files from for the textfile collector. [textfile_directory: | default = ""] diff --git a/docs/configuration/integrations/process-exporter-config.md b/docs/configuration/integrations/process-exporter-config.md index d5e428841a54..55b6d35c1f31 100644 --- a/docs/configuration/integrations/process-exporter-config.md +++ b/docs/configuration/integrations/process-exporter-config.md @@ -18,7 +18,7 @@ docker run \ -v "/proc:/proc:ro" \ -v /tmp/agent:/etc/agent \ -v /path/to/config.yaml:/etc/agent-config/agent.yaml \ - grafana/agent:v0.21.2 \ + grafana/agent:v0.22.0 \ --config.file=/etc/agent-config/agent.yaml ``` @@ -35,7 +35,7 @@ metadata: name: agent spec: containers: - - image: grafana/agent:v0.21.2 + - image: grafana/agent:v0.22.0 name: agent args: - --config.file=/etc/agent-config/agent.yaml diff --git a/docs/getting-started/_index.md b/docs/getting-started/_index.md index e7aead64b57c..686264eab8c8 100644 --- a/docs/getting-started/_index.md +++ b/docs/getting-started/_index.md @@ -26,7 +26,7 @@ See the list of [Community Projects](#community-projects) for the community-driv docker run \ -v /tmp/agent:/etc/agent/data \ -v /path/to/config.yaml:/etc/agent/agent.yaml \ - grafana/agent:v0.21.2 + grafana/agent:v0.22.0 ``` Replace `/tmp/agent` with the folder you wish to store WAL data in. WAL data is diff --git a/docs/operator/custom-resource-quickstart.md b/docs/operator/custom-resource-quickstart.md index bfef07d9cb47..084d1b47a06a 100644 --- a/docs/operator/custom-resource-quickstart.md +++ b/docs/operator/custom-resource-quickstart.md @@ -43,7 +43,7 @@ metadata: labels: app: grafana-agent spec: - image: grafana/agent:v0.21.2 + image: grafana/agent:v0.22.0 logLevel: info serviceAccountName: grafana-agent metrics: diff --git a/docs/operator/getting-started.md b/docs/operator/getting-started.md index fe11b9543a92..2438a0846534 100644 --- a/docs/operator/getting-started.md +++ b/docs/operator/getting-started.md @@ -72,7 +72,7 @@ spec: serviceAccountName: grafana-agent-operator containers: - name: operator - image: grafana/agent-operator:v0.21.2 + image: grafana/agent-operator:v0.22.0 args: - --kubelet-service=default/kubelet --- diff --git a/docs/upgrade-guide/_index.md b/docs/upgrade-guide/_index.md index bff63e6ae01a..7363673ad8b4 100644 --- a/docs/upgrade-guide/_index.md +++ b/docs/upgrade-guide/_index.md @@ -12,6 +12,27 @@ releases and how to migrate to newer versions. These changes will come in a future version. +## v0.22.0 + +### `node_exporter` integration deprecated field names + +The following field names for the `node_exporter` integration are now deprecated: + +* `netdev_device_whitelist` is deprecated in favor of `netdev_device_include`. +* `netdev_device_blacklist` is deprecated in favor of `netdev_device_exclude`. +* `systemd_unit_whitelist` is deprecated in favor of `systemd_unit_include`. +* `systemd_unit_blacklist` is deprecated in favor of `systemd_unit_exclude`. +* `filesystem_ignored_mount_points` is deprecated in favor of + `filesystem_mount_points_exclude`. +* `filesystem_ignored_fs_types` is deprecated in favor of + `filesystem_fs_types_exclude`. + +This change aligns with the equivalent flag names also being deprecated in the +upstream node_exporter. + +Support for the old field names will be removed in a future version. A warning +will be logged if using the old field names when the integration is enabled. + ## v0.21.2, v0.20.1 ### Disabling of config retrieval enpoints diff --git a/e2e/Makefile b/e2e/Makefile new file mode 100644 index 000000000000..d5426f9a341d --- /dev/null +++ b/e2e/Makefile @@ -0,0 +1,6 @@ +# We don't use -race here because there's races in docker/cli :) +test: + go test -p=4 ./... + +lint: + GO111MODULE=on golangci-lint run -v --timeout=10m diff --git a/e2e/go.mod b/e2e/go.mod new file mode 100644 index 000000000000..6311b503c6c2 --- /dev/null +++ b/e2e/go.mod @@ -0,0 +1,109 @@ +module github.com/grafana/agent/e2e + +go 1.17 + +require ( + github.com/docker/docker v20.10.10+incompatible + github.com/docker/go-connections v0.4.0 + github.com/rancher/k3d/v5 v5.2.2 + github.com/stretchr/testify v1.7.0 + k8s.io/api v0.23.0 + k8s.io/apimachinery v0.23.0 + k8s.io/client-go v0.23.0 + sigs.k8s.io/controller-runtime v0.11.0 +) + +require ( + github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect + github.com/Microsoft/go-winio v0.5.1 // indirect + github.com/Microsoft/hcsshim v0.9.1 // indirect + github.com/beorn7/perks v1.0.1 // indirect + github.com/cespare/xxhash/v2 v2.1.1 // indirect + github.com/containerd/cgroups v1.0.2 // indirect + github.com/containerd/containerd v1.5.7 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/docker/cli v20.10.10+incompatible // indirect + github.com/docker/distribution v2.7.1+incompatible // indirect + github.com/docker/docker-credential-helpers v0.6.4 // indirect + github.com/docker/go v1.5.1-1.0.20160303222718-d30aec9fd63c // indirect + github.com/docker/go-metrics v0.0.1 // indirect + github.com/docker/go-units v0.4.0 // indirect + github.com/evanphx/json-patch v4.12.0+incompatible // indirect + github.com/fsnotify/fsnotify v1.5.1 // indirect + github.com/fvbommel/sortorder v1.0.2 // indirect + github.com/go-logr/logr v1.2.0 // indirect + github.com/go-test/deep v1.0.8 // indirect + github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect + github.com/golang/protobuf v1.5.2 // indirect + github.com/google/go-cmp v0.5.6 // indirect + github.com/google/gofuzz v1.1.0 // indirect + github.com/googleapis/gnostic v0.5.5 // indirect + github.com/gorilla/mux v1.8.0 // indirect + github.com/hashicorp/hcl v1.0.0 // indirect + github.com/imdario/mergo v0.3.12 // indirect + github.com/inconshreveable/mousetrap v1.0.0 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de // indirect + github.com/magiconair/properties v1.8.5 // indirect + github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect + github.com/miekg/pkcs11 v1.0.3 // indirect + github.com/mitchellh/copystructure v1.2.0 // indirect + github.com/mitchellh/go-homedir v1.1.0 // indirect + github.com/mitchellh/mapstructure v1.4.2 // indirect + github.com/mitchellh/reflectwalk v1.0.2 // indirect + github.com/moby/sys/mount v0.3.0 // indirect + github.com/moby/sys/mountinfo v0.5.0 // indirect + github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/morikuni/aec v1.0.0 // indirect + github.com/opencontainers/go-digest v1.0.0 // indirect + github.com/opencontainers/image-spec v1.0.1 // indirect + github.com/opencontainers/runc v1.0.2 // indirect + github.com/pelletier/go-toml v1.9.4 // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/prometheus/client_golang v1.11.0 // indirect + github.com/prometheus/client_model v0.2.0 // indirect + github.com/prometheus/common v0.28.0 // indirect + github.com/prometheus/procfs v0.6.0 // indirect + github.com/sirupsen/logrus v1.8.1 // indirect + github.com/spf13/afero v1.6.0 // indirect + github.com/spf13/cast v1.4.1 // indirect + github.com/spf13/cobra v1.2.1 // indirect + github.com/spf13/jwalterweatherman v1.1.0 // indirect + github.com/spf13/pflag v1.0.5 // indirect + github.com/spf13/viper v1.9.0 // indirect + github.com/subosito/gotenv v1.2.0 // indirect + github.com/theupdateframework/notary v0.7.0 // indirect + github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect + github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect + github.com/xeipuuv/gojsonschema v1.2.0 // indirect + go.opencensus.io v0.23.0 // indirect + go4.org/intern v0.0.0-20210108033219-3eb7198706b2 // indirect + go4.org/unsafe/assume-no-moving-gc v0.0.0-20201222180813-1025295fd063 // indirect + golang.org/x/crypto v0.0.0-20210817164053-32db794688a5 // indirect + golang.org/x/net v0.0.0-20211111160137-58aab5ef257a // indirect + golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f // indirect + golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect + golang.org/x/sys v0.0.0-20211112143042-c6105e7cf70d // indirect + golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b // indirect + golang.org/x/text v0.3.7 // indirect + golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac // indirect + google.golang.org/appengine v1.6.7 // indirect + google.golang.org/genproto v0.0.0-20211112145013-271947fe86fd // indirect + google.golang.org/grpc v1.42.0 // indirect + google.golang.org/protobuf v1.27.1 // indirect + gopkg.in/inf.v0 v0.9.1 // indirect + gopkg.in/ini.v1 v1.64.0 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect + gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect + inet.af/netaddr v0.0.0-20210903134321-85fa6c94624e // indirect + k8s.io/klog/v2 v2.30.0 // indirect + k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65 // indirect + k8s.io/utils v0.0.0-20210930125809-cb0fa318a74b // indirect + sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6 // indirect + sigs.k8s.io/structured-merge-diff/v4 v4.2.0 // indirect + sigs.k8s.io/yaml v1.3.0 // indirect +) diff --git a/e2e/go.sum b/e2e/go.sum new file mode 100644 index 000000000000..f85cd520b1ff --- /dev/null +++ b/e2e/go.sum @@ -0,0 +1,1619 @@ +bazil.org/fuse v0.0.0-20160811212531-371fbbdaa898/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= +bazil.org/fuse v0.0.0-20200407214033-5883e5a4b512/go.mod h1:FbcW6z/2VytnFDhZfumh8Ss8zxHE6qpMP5sHTRe0EaM= +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +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.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= +cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= +cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= +cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= +cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= +cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= +cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= +cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= +cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= +cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= +cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= +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= +cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= +cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= +cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +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/firestore v1.6.0/go.mod h1:afJwI0vaXwAG54kI7A//lP/lSPDkQORQuMkv56TxEPU= +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= +cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +github.com/Azure/azure-sdk-for-go v16.2.1+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= +github.com/Azure/go-ansiterm v0.0.0-20210608223527-2377c96fe795/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= +github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= +github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= +github.com/Azure/go-autorest v10.8.1+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= +github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= +github.com/Azure/go-autorest/autorest v0.11.1/go.mod h1:JFgpikqFJ/MleTTxwepExTKnFUKKszPS8UavbQYUMuw= +github.com/Azure/go-autorest/autorest v0.11.18/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA= +github.com/Azure/go-autorest/autorest/adal v0.9.0/go.mod h1:/c022QCutn2P7uY+/oQWWNcK9YU+MH96NgK+jErpbcg= +github.com/Azure/go-autorest/autorest/adal v0.9.5/go.mod h1:B7KF7jKIeC9Mct5spmyCB/A8CG/sEz1vwIRGv/bbw7A= +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.0/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= +github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= +github.com/Azure/go-autorest/logger v0.2.0/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= +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/Microsoft/go-winio v0.4.11/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA= +github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= +github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= +github.com/Microsoft/go-winio v0.4.16-0.20201130162521-d1ffc52c7331/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= +github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= +github.com/Microsoft/go-winio v0.4.17-0.20210211115548-6eac466e5fa3/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= +github.com/Microsoft/go-winio v0.4.17-0.20210324224401-5516f17a5958/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= +github.com/Microsoft/go-winio v0.4.17/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= +github.com/Microsoft/go-winio v0.5.1 h1:aPJp2QD7OOrhO5tQXqQoGSJc+DjDtWTGLOmNyAm6FgY= +github.com/Microsoft/go-winio v0.5.1/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= +github.com/Microsoft/hcsshim v0.8.6/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= +github.com/Microsoft/hcsshim v0.8.7-0.20190325164909-8abdbb8205e4/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= +github.com/Microsoft/hcsshim v0.8.7/go.mod h1:OHd7sQqRFrYd3RmSgbgji+ctCwkbq2wbEYNSzOYtcBQ= +github.com/Microsoft/hcsshim v0.8.9/go.mod h1:5692vkUqntj1idxauYlpoINNKeqCiG6Sg38RRsjT5y8= +github.com/Microsoft/hcsshim v0.8.14/go.mod h1:NtVKoYxQuTLx6gEq0L96c9Ju4JbRJ4nY2ow3VK6a9Lg= +github.com/Microsoft/hcsshim v0.8.15/go.mod h1:x38A4YbHbdxJtc0sF6oIz+RG0npwSCAvn69iY6URG00= +github.com/Microsoft/hcsshim v0.8.16/go.mod h1:o5/SZqmR7x9JNKsW3pu+nqHm0MF8vbA+VxGOoXdC600= +github.com/Microsoft/hcsshim v0.8.21/go.mod h1:+w2gRZ5ReXQhFOrvSQeNfhrYB/dg3oDwTOcER2fw4I4= +github.com/Microsoft/hcsshim v0.9.1 h1:VfDCj+QnY19ktX5TsH22JHcjaZ05RWQiwDbOyEg5ziM= +github.com/Microsoft/hcsshim v0.9.1/go.mod h1:Y/0uV2jUab5kBI7SQgl62at0AVX7uaruzADAVmxm3eM= +github.com/Microsoft/hcsshim/test v0.0.0-20201218223536-d3e5debf77da/go.mod h1:5hlzMzRKMLyo42nCZ9oml8AdTlq/0cvIaBv6tK1RehU= +github.com/Microsoft/hcsshim/test v0.0.0-20210227013316-43a75bb4edd3/go.mod h1:mw7qgWloBUl75W/gVH3cQszUg1+gUITj7D6NY7ywVnY= +github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= +github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= +github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= +github.com/Shopify/logrus-bugsnag v0.0.0-20170309145241-6dbc35f2c30d/go.mod h1:HI8ITrYtUY+O+ZhtlqUnD8+KwNPOyugEhfP9fdUIaEQ= +github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d h1:UrqY+r/OJnIp5u0s1SbQ8dVfLCZJsnvazdBP5hS4iRs= +github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod h1:HI8ITrYtUY+O+ZhtlqUnD8+KwNPOyugEhfP9fdUIaEQ= +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/alexflint/go-filemutex v0.0.0-20171022225611-72bdc8eae2ae/go.mod h1:CgnQgUtFrFz9mxFNtED3jI5tLDjKlOM+oUF/sTk6ps0= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20210826220005-b48c857c3a0e/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY= +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/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= +github.com/aws/aws-sdk-go v1.15.11/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= +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/beorn7/perks v0.0.0-20150223135152-b965b613227f/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v0.0.0-20160804104726-4c0e84591b9a/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +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/bitly/go-hostpool v0.1.0/go.mod h1:4gOCgp6+NZnVqlKyZ/iBZFTAJKembaVENUpMkpg42fw= +github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngEKAMDJEczWVA= +github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= +github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= +github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= +github.com/blang/semver v3.1.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= +github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= +github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= +github.com/bshuster-repo/logrus-logstash-hook v0.4.1/go.mod h1:zsTqEiSzDgAa/8GZR7E1qaXrhYNDKBYy5/dWPTIflbk= +github.com/buger/jsonparser v0.0.0-20180808090653-f4dd9f5a6b44/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= +github.com/bugsnag/bugsnag-go v0.0.0-20141110184014-b1d153021fcd/go.mod h1:2oa8nejYd4cQ/b0hMIopN0lCRxU0bueqREvZLWFrtK8= +github.com/bugsnag/bugsnag-go v1.0.5-0.20150529004307-13fd6b8acda0 h1:s7+5BfS4WFJoVF9pnB8kBk03S7pZXRdKamnV0FOl5Sc= +github.com/bugsnag/bugsnag-go v1.0.5-0.20150529004307-13fd6b8acda0/go.mod h1:2oa8nejYd4cQ/b0hMIopN0lCRxU0bueqREvZLWFrtK8= +github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b h1:otBG+dV+YK+Soembjv71DPz3uX/V/6MMlSyD9JBQ6kQ= +github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b/go.mod h1:obH5gd0BsqsP2LwDJ9aOkm/6J86V6lyAXCoQWGw3K50= +github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0 h1:nvj0OLI3YqYXer/kZD8Ri1aaunCxIEsOst1BVJswV0o= +github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE= +github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/certifi/gocertifi v0.0.0-20191021191039-0944d244cd40/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= +github.com/certifi/gocertifi v0.0.0-20200922220541-2c3bb06c6054/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= +github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/checkpoint-restore/go-criu/v4 v4.1.0/go.mod h1:xUQBLp4RLc5zJtWY++yjOoMoB5lihDt7fai+75m+rGw= +github.com/checkpoint-restore/go-criu/v5 v5.0.0/go.mod h1:cfwC0EG7HMUenopBsUf9d89JlCLQIfgVcNsNN0t6T2M= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/cilium/ebpf v0.0.0-20200110133405-4032b1d8aae3/go.mod h1:MA5e5Lr8slmEg9bt0VpxxWqJlO4iwu3FBdHUzV7wQVg= +github.com/cilium/ebpf v0.0.0-20200702112145-1c8d4c9ef775/go.mod h1:7cR51M8ViRLIdUjrmSXlK9pkrsDlLHbO8jiB8X8JnOc= +github.com/cilium/ebpf v0.2.0/go.mod h1:To2CFviqOWL/M0gIMsvSMlqe7em/l1ALkX1PyjrX2Qs= +github.com/cilium/ebpf v0.4.0/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= +github.com/cilium/ebpf v0.6.2/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cloudflare/cfssl v0.0.0-20180223231731-4e2dcbde5004 h1:lkAMpLVBDaj17e85keuznYcH5rqI438v41pKcBl4ZxQ= +github.com/cloudflare/cfssl v0.0.0-20180223231731-4e2dcbde5004/go.mod h1:yMWuSON2oQp+43nFtAV/uvKQIFpSPerB57DCt9t8sSA= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= +github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= +github.com/cockroachdb/datadriven v0.0.0-20200714090401-bf6692d28da5/go.mod h1:h6jFvWxBdQXxjopDMZyH2UVceIRfR84bdzbkoKrsWNo= +github.com/cockroachdb/errors v1.2.4/go.mod h1:rQD95gz6FARkaKkQXUksEje/d9a6wBJoCr5oaCLELYA= +github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f/go.mod h1:i/u985jwjWRlyHXQbwatDASoW0RMlZ/3i9yJHE2xLkI= +github.com/containerd/aufs v0.0.0-20200908144142-dab0cbea06f4/go.mod h1:nukgQABAEopAHvB6j7cnP5zJ+/3aVcE7hCYqvIwAHyE= +github.com/containerd/aufs v0.0.0-20201003224125-76a6863f2989/go.mod h1:AkGGQs9NM2vtYHaUen+NljV0/baGCAPELGm2q9ZXpWU= +github.com/containerd/aufs v0.0.0-20210316121734-20793ff83c97/go.mod h1:kL5kd6KM5TzQjR79jljyi4olc1Vrx6XBlcyj3gNv2PU= +github.com/containerd/aufs v1.0.0/go.mod h1:kL5kd6KM5TzQjR79jljyi4olc1Vrx6XBlcyj3gNv2PU= +github.com/containerd/btrfs v0.0.0-20201111183144-404b9149801e/go.mod h1:jg2QkJcsabfHugurUvvPhS3E08Oxiuh5W/g1ybB4e0E= +github.com/containerd/btrfs v0.0.0-20210316141732-918d888fb676/go.mod h1:zMcX3qkXTAi9GI50+0HOeuV8LU2ryCE/V2vG/ZBiTss= +github.com/containerd/btrfs v1.0.0/go.mod h1:zMcX3qkXTAi9GI50+0HOeuV8LU2ryCE/V2vG/ZBiTss= +github.com/containerd/cgroups v0.0.0-20190717030353-c4b9ac5c7601/go.mod h1:X9rLEHIqSf/wfK8NsPqxJmeZgW4pcfzdXITDrUSJ6uI= +github.com/containerd/cgroups v0.0.0-20190919134610-bf292b21730f/go.mod h1:OApqhQ4XNSNC13gXIwDjhOQxjWa/NxkwZXJ1EvqT0ko= +github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59/go.mod h1:pA0z1pT8KYB3TCXK/ocprsh7MAkoW8bZVzPdih9snmM= +github.com/containerd/cgroups v0.0.0-20200710171044-318312a37340/go.mod h1:s5q4SojHctfxANBDvMeIaIovkq29IP48TKAxnhYRxvo= +github.com/containerd/cgroups v0.0.0-20200824123100-0b889c03f102/go.mod h1:s5q4SojHctfxANBDvMeIaIovkq29IP48TKAxnhYRxvo= +github.com/containerd/cgroups v0.0.0-20210114181951-8a68de567b68/go.mod h1:ZJeTFisyysqgcCdecO57Dj79RfL0LNeGiFUqLYQRYLE= +github.com/containerd/cgroups v1.0.1/go.mod h1:0SJrPIenamHDcZhEcJMNBB85rHcUsw4f25ZfBiPYRkU= +github.com/containerd/cgroups v1.0.2 h1:mZBclaSgNDfPWtfhj2xJY28LZ9nYIgzB0pwSURPl6JM= +github.com/containerd/cgroups v1.0.2/go.mod h1:qpbpJ1jmlqsR9f2IyaLPsdkCdnt0rbDVqIDlhuu5tRY= +github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= +github.com/containerd/console v0.0.0-20181022165439-0650fd9eeb50/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= +github.com/containerd/console v0.0.0-20191206165004-02ecf6a7291e/go.mod h1:8Pf4gM6VEbTNRIT26AyyU7hxdQU3MvAvxVI0sc00XBE= +github.com/containerd/console v1.0.1/go.mod h1:XUsP6YE/mKtz6bxc+I8UiKKTP04qjQL4qcS3XoQ5xkw= +github.com/containerd/console v1.0.2/go.mod h1:ytZPjGgY2oeTkAONYafi2kSj0aYggsf8acV1PGKCbzQ= +github.com/containerd/containerd v1.2.10/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.3.0-beta.2.0.20190828155532-0293cbd26c69/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.3.0/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.3.1-0.20191213020239-082f7e3aed57/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.3.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.4.0-beta.2.0.20200729163537-40b22ef07410/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.4.1/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.4.3/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.5.0-beta.1/go.mod h1:5HfvG1V2FsKesEGQ17k5/T7V960Tmcumvqn8Mc+pCYQ= +github.com/containerd/containerd v1.5.0-beta.3/go.mod h1:/wr9AVtEM7x9c+n0+stptlo/uBBoBORwEx6ardVcmKU= +github.com/containerd/containerd v1.5.0-beta.4/go.mod h1:GmdgZd2zA2GYIBZ0w09ZvgqEq8EfBp/m3lcVZIvPHhI= +github.com/containerd/containerd v1.5.0-rc.0/go.mod h1:V/IXoMqNGgBlabz3tHD2TWDoTJseu1FGOKuoA4nNb2s= +github.com/containerd/containerd v1.5.1/go.mod h1:0DOxVqwDy2iZvrZp2JUx/E+hS0UNTVn7dJnIOwtYR4g= +github.com/containerd/containerd v1.5.7 h1:rQyoYtj4KddB3bxG6SAqd4+08gePNyJjRqvOIfV3rkM= +github.com/containerd/containerd v1.5.7/go.mod h1:gyvv6+ugqY25TiXxcZC3L5yOeYgEw0QMhscqVp1AR9c= +github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= +github.com/containerd/continuity v0.0.0-20190815185530-f2a389ac0a02/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= +github.com/containerd/continuity v0.0.0-20191127005431-f65d91d395eb/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= +github.com/containerd/continuity v0.0.0-20200710164510-efbc4488d8fe/go.mod h1:cECdGN1O8G9bgKTlLhuPJimka6Xb/Gg7vYzCTNVxhvo= +github.com/containerd/continuity v0.0.0-20201208142359-180525291bb7/go.mod h1:kR3BEg7bDFaEddKm54WSmrol1fKWDU1nKYkgrcgZT7Y= +github.com/containerd/continuity v0.0.0-20210208174643-50096c924a4e/go.mod h1:EXlVlkqNba9rJe3j7w3Xa924itAMLgZH4UD/Q4PExuQ= +github.com/containerd/continuity v0.1.0/go.mod h1:ICJu0PwR54nI0yPEnJ6jcS+J7CZAUXrLh8lPo2knzsM= +github.com/containerd/continuity v0.2.1 h1:/EeEo2EtN3umhbbgCveyjifoMYg0pS+nMMEemaYw634= +github.com/containerd/continuity v0.2.1/go.mod h1:wCYX+dRqZdImhGucXOqTQn05AhX6EUDaGEMUzTFFpLg= +github.com/containerd/fifo v0.0.0-20180307165137-3d5202aec260/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= +github.com/containerd/fifo v0.0.0-20190226154929-a9fb20d87448/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= +github.com/containerd/fifo v0.0.0-20200410184934-f15a3290365b/go.mod h1:jPQ2IAeZRCYxpS/Cm1495vGFww6ecHmMk1YJH2Q5ln0= +github.com/containerd/fifo v0.0.0-20201026212402-0724c46b320c/go.mod h1:jPQ2IAeZRCYxpS/Cm1495vGFww6ecHmMk1YJH2Q5ln0= +github.com/containerd/fifo v0.0.0-20210316144830-115abcc95a1d/go.mod h1:ocF/ME1SX5b1AOlWi9r677YJmCPSwwWnQ9O123vzpE4= +github.com/containerd/fifo v1.0.0/go.mod h1:ocF/ME1SX5b1AOlWi9r677YJmCPSwwWnQ9O123vzpE4= +github.com/containerd/go-cni v1.0.1/go.mod h1:+vUpYxKvAF72G9i1WoDOiPGRtQpqsNW/ZHtSlv++smU= +github.com/containerd/go-cni v1.0.2/go.mod h1:nrNABBHzu0ZwCug9Ije8hL2xBCYh/pjfMb1aZGrrohk= +github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= +github.com/containerd/go-runc v0.0.0-20190911050354-e029b79d8cda/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= +github.com/containerd/go-runc v0.0.0-20200220073739-7016d3ce2328/go.mod h1:PpyHrqVs8FTi9vpyHwPwiNEGaACDxT/N/pLcvMSRA9g= +github.com/containerd/go-runc v0.0.0-20201020171139-16b287bc67d0/go.mod h1:cNU0ZbCgCQVZK4lgG3P+9tn9/PaJNmoDXPpoJhDR+Ok= +github.com/containerd/go-runc v1.0.0/go.mod h1:cNU0ZbCgCQVZK4lgG3P+9tn9/PaJNmoDXPpoJhDR+Ok= +github.com/containerd/imgcrypt v1.0.1/go.mod h1:mdd8cEPW7TPgNG4FpuP3sGBiQ7Yi/zak9TYCG3juvb0= +github.com/containerd/imgcrypt v1.0.4-0.20210301171431-0ae5c75f59ba/go.mod h1:6TNsg0ctmizkrOgXRNQjAPFWpMYRWuiB6dSF4Pfa5SA= +github.com/containerd/imgcrypt v1.1.1-0.20210312161619-7ed62a527887/go.mod h1:5AZJNI6sLHJljKuI9IHnw1pWqo/F0nGDOuR9zgTs7ow= +github.com/containerd/imgcrypt v1.1.1/go.mod h1:xpLnwiQmEUJPvQoAapeb2SNCxz7Xr6PJrXQb0Dpc4ms= +github.com/containerd/nri v0.0.0-20201007170849-eb1350a75164/go.mod h1:+2wGSDGFYfE5+So4M5syatU0N0f0LbWpuqyMi4/BE8c= +github.com/containerd/nri v0.0.0-20210316161719-dbaa18c31c14/go.mod h1:lmxnXF6oMkbqs39FiCt1s0R2HSMhcLel9vNL3m4AaeY= +github.com/containerd/nri v0.1.0/go.mod h1:lmxnXF6oMkbqs39FiCt1s0R2HSMhcLel9vNL3m4AaeY= +github.com/containerd/stargz-snapshotter/estargz v0.4.1/go.mod h1:x7Q9dg9QYb4+ELgxmo4gBUeJB0tl5dqH1Sdz0nJU1QM= +github.com/containerd/ttrpc v0.0.0-20190828154514-0e0f228740de/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= +github.com/containerd/ttrpc v0.0.0-20190828172938-92c8520ef9f8/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= +github.com/containerd/ttrpc v0.0.0-20191028202541-4f1b8fe65a5c/go.mod h1:LPm1u0xBw8r8NOKoOdNMeVHSawSsltak+Ihv+etqsE8= +github.com/containerd/ttrpc v1.0.1/go.mod h1:UAxOpgT9ziI0gJrmKvgcZivgxOp8iFPSk8httJEt98Y= +github.com/containerd/ttrpc v1.0.2/go.mod h1:UAxOpgT9ziI0gJrmKvgcZivgxOp8iFPSk8httJEt98Y= +github.com/containerd/ttrpc v1.1.0/go.mod h1:XX4ZTnoOId4HklF4edwc4DcqskFZuvXB1Evzy5KFQpQ= +github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= +github.com/containerd/typeurl v0.0.0-20190911142611-5eb25027c9fd/go.mod h1:GeKYzf2pQcqv7tJ0AoCuuhtnqhva5LNU3U+OyKxxJpk= +github.com/containerd/typeurl v1.0.1/go.mod h1:TB1hUtrpaiO88KEK56ijojHS1+NeF0izUACaJW2mdXg= +github.com/containerd/typeurl v1.0.2/go.mod h1:9trJWW2sRlGub4wZJRTW83VtbOLS6hwcDZXTn6oPz9s= +github.com/containerd/zfs v0.0.0-20200918131355-0a33824f23a2/go.mod h1:8IgZOBdv8fAgXddBT4dBXJPtxyRsejFIpXoklgxgEjw= +github.com/containerd/zfs v0.0.0-20210301145711-11e8f1707f62/go.mod h1:A9zfAbMlQwE+/is6hi0Xw8ktpL+6glmqZYtevJgaB8Y= +github.com/containerd/zfs v0.0.0-20210315114300-dde8f0fda960/go.mod h1:m+m51S1DvAP6r3FcmYCp54bQ34pyOwTieQDNRIRHsFY= +github.com/containerd/zfs v0.0.0-20210324211415-d5c4544f0433/go.mod h1:m+m51S1DvAP6r3FcmYCp54bQ34pyOwTieQDNRIRHsFY= +github.com/containerd/zfs v1.0.0/go.mod h1:m+m51S1DvAP6r3FcmYCp54bQ34pyOwTieQDNRIRHsFY= +github.com/containernetworking/cni v0.7.1/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= +github.com/containernetworking/cni v0.8.0/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= +github.com/containernetworking/cni v0.8.1/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= +github.com/containernetworking/plugins v0.8.6/go.mod h1:qnw5mN19D8fIwkqW7oHHYDHVlzhJpcY6TQxn/fUyDDM= +github.com/containernetworking/plugins v0.9.1/go.mod h1:xP/idU2ldlzN6m4p5LmGiwRDjeJr6FLK6vuiUwoH7P8= +github.com/containers/ocicrypt v1.0.1/go.mod h1:MeJDzk1RJHv89LjsH0Sp5KTY3ZYkjXO/C+bKAeWFIrc= +github.com/containers/ocicrypt v1.1.0/go.mod h1:b8AOe0YR67uU8OqfVNcznfFpAzu3rdgUV4GP9qXPfu4= +github.com/containers/ocicrypt v1.1.1/go.mod h1:Dm55fwWm1YZAjYRaJ94z2mfZikIyIN4B0oB3dj3jFxY= +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-iptables v0.4.5/go.mod h1:/mVI274lEDI2ns62jHCDnCyBF9Iwsmekav8Dbxlm1MU= +github.com/coreos/go-iptables v0.5.0/go.mod h1:/mVI274lEDI2ns62jHCDnCyBF9Iwsmekav8Dbxlm1MU= +github.com/coreos/go-oidc v2.1.0+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-20161114122254-48702e0da86b/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd/v22 v22.0.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= +github.com/coreos/go-systemd/v22 v22.1.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= +github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +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 h1:07n33Z8lZxZ2qwegKbObQohDhXDQxiMMz1NOUGYlesw= +github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4= +github.com/d2g/dhcp4 v0.0.0-20170904100407-a1d1b6c41b1c/go.mod h1:Ct2BUK8SB0YC1SMSibvLzxjeJLnrYEVLULFNiHY9YfQ= +github.com/d2g/dhcp4client v1.0.0/go.mod h1:j0hNfjhrt2SxUOw55nL0ATM/z4Yt3t2Kd1mW34z5W5s= +github.com/d2g/dhcp4server v0.0.0-20181031114812-7d4a0a7f59a5/go.mod h1:Eo87+Kg/IX2hfWJfwxMzLyuSZyxSoAug2nGa1G2QAi8= +github.com/d2g/hardwareaddr v0.0.0-20190221164911-e7d9fbe030e4/go.mod h1:bMl4RjIciD2oAxI7DmWRx6gbeqrkoLqv3MV0vzNad+I= +github.com/danieljoos/wincred v1.1.0/go.mod h1:XYlo+eRTsVA9aHGp7NGjFkPla4m+DCL7hqDjlFjiygg= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/denisenkom/go-mssqldb v0.0.0-20191128021309-1d7a30a10f73/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU= +github.com/denverdino/aliyungo v0.0.0-20190125010748-a747050bb1ba/go.mod h1:dV8lFg6daOBZbT6/BDGIz6Y3WFGn8juu6G+CQ6LHtl0= +github.com/dgrijalva/jwt-go v0.0.0-20170104182250-a601269ab70c/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= +github.com/docker/cli v0.0.0-20191017083524-a8ff7f821017/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/cli v20.10.10+incompatible h1:kcbwdgWbrBOH8QwQzaJmyriHwF7XIl4HT1qh0HTRys4= +github.com/docker/cli v20.10.10+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/distribution v0.0.0-20190905152932-14b96e55d84c/go.mod h1:0+TTO4EOBfRPhZXAeF1Vu+W3hHZ8eLp8PgKVZlcvtFY= +github.com/docker/distribution v2.7.1-0.20190205005809-0d3efadf0154+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= +github.com/docker/distribution v2.7.1+incompatible h1:a5mlkVzth6W5A4fOsS3D2EO5BUmsJpcB+cRlLU7cSug= +github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= +github.com/docker/docker v1.4.2-0.20190924003213-a8608b5b67c7/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v20.10.10+incompatible h1:GKkP0T7U4ks6X3lmmHKC2QDprnpRJor2Z5a8m62R9ZM= +github.com/docker/docker v20.10.10+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker-credential-helpers v0.6.3/go.mod h1:WRaJzqw3CTB9bk10avuGsjVBZsD05qeibJ1/TYlvc0Y= +github.com/docker/docker-credential-helpers v0.6.4 h1:axCks+yV+2MR3/kZhAmy07yC56WZ2Pwu/fKWtKuZB0o= +github.com/docker/docker-credential-helpers v0.6.4/go.mod h1:ofX3UI0Gz1TteYBjtgs07O36Pyasyp66D2uKT7H8W1c= +github.com/docker/go v1.5.1-1.0.20160303222718-d30aec9fd63c h1:lzqkGL9b3znc+ZUgi7FlLnqjQhcXxkNM/quxIjBVMD0= +github.com/docker/go v1.5.1-1.0.20160303222718-d30aec9fd63c/go.mod h1:CADgU4DSXK5QUlFslkQu2yW2TKzFZcXq/leZfM0UH5Q= +github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= +github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= +github.com/docker/go-events v0.0.0-20170721190031-9461782956ad/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= +github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= +github.com/docker/go-metrics v0.0.0-20180209012529-399ea8c73916/go.mod h1:/u0gXw0Gay3ceNrsHubL3BtdOL2fHf93USgMTe0W5dI= +github.com/docker/go-metrics v0.0.1 h1:AgB/0SvBxihN0X8OR4SjsblXkbMvalQ8cjmtKQ2rQV8= +github.com/docker/go-metrics v0.0.1/go.mod h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHzueweSI3Vw= +github.com/docker/go-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw= +github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/docker/libtrust v0.0.0-20150114040149-fa567046d9b1/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE= +github.com/docker/libtrust v0.0.0-20160708172513-aabc10ec26b7 h1:UhxFibDNY/bfvqU5CAUmr9zpesgbU6SWc8/B4mflAE4= +github.com/docker/libtrust v0.0.0-20160708172513-aabc10ec26b7/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE= +github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= +github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= +github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/dvsekhvalnov/jose2go v0.0.0-20170216131308-f21a8cedbbae/go.mod h1:7BvyPhdbLxMXIYTFPLsyJRFMsKmOZnQmzh6Gb+uquuM= +github.com/dvyukov/go-fuzz v0.0.0-20210103155950-6a8e9d1f2415/go.mod h1:11Gm+ccJnvAhCNLlf5+cS9KjtbaD5I5zaZpFMsTHWTw= +github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= +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/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.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= +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/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= +github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5/go.mod h1:a2zkGnVExMxdzMo3M0Hi/3sEU+cWnZpSni0O6/Yb/P0= +github.com/evanphx/json-patch v0.5.2/go.mod h1:ZWS5hhDbVDyob71nXKNL0+PWn6ToqBHMikGIFbs31qQ= +github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/evanphx/json-patch v4.11.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +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/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= +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/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= +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.5.1 h1:mZcQUHVQUQWoPXXtuf9yuEXKudkV2sx1E06UadKWpgI= +github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU= +github.com/fullsailor/pkcs7 v0.0.0-20190404230743-d7302db945fa/go.mod h1:KnogPXtdwXqoenmZCw6S+25EAm2MkxbG0deNDu4cbSA= +github.com/fvbommel/sortorder v1.0.2 h1:mV4o8B2hKboCdkJm+a7uX/SIpZob4JzUpc5GGnM45eo= +github.com/fvbommel/sortorder v1.0.2/go.mod h1:uk88iVf1ovNn1iLfgUVU2F9o5eO30ui720w+kxuqRs0= +github.com/garyburd/redigo v0.0.0-20150301180006-535138d7bcd7/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= +github.com/getkin/kin-openapi v0.76.0/go.mod h1:660oXbgy5JFMKreazJaQTw7o+X00qeSyhcnluiMv+Xg= +github.com/getsentry/raven-go v0.2.0/go.mod h1:KungGk8q33+aIAZUIVWZDr2OfAEBsO49PX4NzFV5kcQ= +github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +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-ini/ini v1.25.4/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= +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 h1:QK40JKJyMdUDz+h+xvCsru/bJhvG0UxvePV0ufL/AcE= +github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/zapr v1.2.0 h1:n4JnPI1T3Qq1SFEi/F8rwLrZERp2bso19PJZDB9dayk= +github.com/go-logr/zapr v1.2.0/go.mod h1:Qa4Bsj2Vb+FAVeAKsLD8RLQ+YRJB8YDmOAKxaBQf7Ro= +github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= +github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= +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/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg= +github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= +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/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= +github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= +github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= +github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +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-sql-driver/mysql v1.3.0 h1:pgwjLi/dvffoP9aabwkT3AKpXQM93QARkjFhDDqC1UE= +github.com/go-sql-driver/mysql v1.3.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= +github.com/go-test/deep v1.0.8 h1:TDsG77qcSprGbC6vTN8OuXp5g+J+b5Pcguhf7Zt61VM= +github.com/go-test/deep v1.0.8/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE= +github.com/godbus/dbus v0.0.0-20151105175453-c7fdd8b5cd55/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= +github.com/godbus/dbus v0.0.0-20180201030542-885f9cc04c9c/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= +github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= +github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/gogo/googleapis v1.2.0/go.mod h1:Njal3psf3qN6dwBtQfUmBZh2ybovJ0tlu3o/AC7HYjU= +github.com/gogo/googleapis v1.4.0/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c= +github.com/gogo/protobuf v1.0.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +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.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/gogo/protobuf v1.3.0/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= +github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +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= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +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.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= +github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +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.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= +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.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= +github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +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/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= +github.com/google/cel-go v0.9.0/go.mod h1:U7ayypeSkw23szu4GaQTPJGx66c20mx8JklMSxrmI1w= +github.com/google/cel-spec v0.6.0/go.mod h1:Nwjgxy5CbjlPrtCWjeDjUyKMl8w41YBYGjsyDdqk0xA= +github.com/google/certificate-transparency-go v1.0.10-0.20180222191210-5ab67e519c93 h1:jc2UWq7CbdszqeH6qu1ougXMIUBfSy8Pbh/anURYbGI= +github.com/google/certificate-transparency-go v1.0.10-0.20180222191210-5ab67e519c93/go.mod h1:QeJfpSbVSfYc7RgB3gJFj9cbuQMMchQxrWXz8Ruopmg= +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.4.1/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.1/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.3/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.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-containerregistry v0.5.1/go.mod h1:Ct15B4yir3PLOP5jsy0GNeYVaIZs/MK/Jz5any1wFW0= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g= +github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +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-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +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.2.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/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= +github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= +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/gorilla/handlers v0.0.0-20150720190736-60c7bfde3e33/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= +github.com/gorilla/mux v1.7.0/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.7.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= +github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +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/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.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= +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.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= +github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed h1:5upAirOpQc1Q53c0bnx2ufif5kANL7bfZWcc6VJWJd8= +github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed/go.mod h1:tMWxXQ9wFIaZeTI9F+hmhFiGpFmhOHzyShyFUhRm0H4= +github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= +github.com/hashicorp/consul/api v1.10.1/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= +github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= +github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms= +github.com/hashicorp/errwrap v0.0.0-20141028054710-7554cd9344ce/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/errwrap v1.0.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-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= +github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= +github.com/hashicorp/go-multierror v0.0.0-20161216184304-ed905158d874/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.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= +github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= +github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= +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 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.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/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= +github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +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/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY= +github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= +github.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= +github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= +github.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk= +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/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.10/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= +github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= +github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= +github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= +github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= +github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/j-keck/arping v0.0.0-20160618110441-2cf9dc699c56/go.mod h1:ymszkNOg6tORTn+6F6j+Jc8TOr5osrynvN6ivFWZ2GA= +github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/jinzhu/gorm v0.0.0-20170222002820-5409931a1bb8 h1:CZkYfurY6KGhVtlalI4QwQ6T0Cu6iuY3e0x5RLu96WE= +github.com/jinzhu/gorm v0.0.0-20170222002820-5409931a1bb8/go.mod h1:Vla75njaFJ8clLU1W44h34PjIkijhjHIYnZxMqCdxqo= +github.com/jinzhu/inflection v0.0.0-20170102125226-1c35d901db3d h1:jRQLvyVGL+iVtDElaEIDdKwpPqUIZJfzkNLV34htpEc= +github.com/jinzhu/inflection v0.0.0-20170102125226-1c35d901db3d/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= +github.com/jinzhu/now v1.1.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= +github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/jmespath/go-jmespath v0.0.0-20160803190731-bd40a432e4c7/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/joefitzgerald/rainbow-reporter v0.1.0/go.mod h1:481CNgqmVHQZzdIbN52CupLJyoVwB10FQ/IQlF1pdL8= +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/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.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +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/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/juju/loggo v0.0.0-20190526231331-6e530bcce5d8/go.mod h1:vgyd7OREkbtVEN/8IXZe5Ooef3LQePvuBm9UWj6ZL8U= +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/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +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.11.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/compress v1.11.13/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +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/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= +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.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/lib/pq v0.0.0-20150723085316-0dad96c0b94f/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de h1:9TO3cAIGXtEhnIaL+V+BEER86oLrvS+kWobKpbJuye0= +github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE= +github.com/linuxkit/virtsock v0.0.0-20201010232012-f8cee7dfc7a3/go.mod h1:3r6x7q95whyfWQpmGZTu3gk3v2YkMi05HEzl7Tf7YEo= +github.com/magiconair/properties v1.5.3/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +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.5 h1:b6kJs+EmPFMYGkow9GiUyCyOvIwYetYJ3fSaWak/Gls= +github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= +github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +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/marstr/guid v1.1.0/go.mod h1:74gB1z2wpxxInTG6yaqA7KrtM0NZ+RbrcqDvYHefzho= +github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +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.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= +github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-shellwords v1.0.3/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= +github.com/mattn/go-shellwords v1.0.6/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= +github.com/mattn/go-sqlite3 v1.6.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= +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 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI= +github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/maxbrunsfeld/counterfeiter/v6 v6.2.2/go.mod h1:eD9eIE7cdwcMi9rYluz88Jz2VyhSmden33/aXg4oVIY= +github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= +github.com/miekg/pkcs11 v1.0.2/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= +github.com/miekg/pkcs11 v1.0.3 h1:iMwmD7I5225wv84WxIG/bmxz9AXjWvTWIbM/TYHvWtw= +github.com/miekg/pkcs11 v1.0.3/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= +github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible/go.mod h1:8AuVvqP/mXw1px98n46wfvcGfQ4ci2FwoAjKYxuo3Z4= +github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= +github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= +github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= +github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= +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/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-20150613213606-2caf8efc9366/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/mapstructure v1.4.2 h1:6h7AQ0yhTcIsmFmnAwQls75jp2Gzs4iB8W7pjMO+rqo= +github.com/mitchellh/mapstructure v1.4.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/osext v0.0.0-20151018003038-5e2d6d41470f/go.mod h1:OkQIRizQZAeMln+1tSwduZz7+Af5oFlKirV/MSYes2A= +github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= +github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= +github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= +github.com/moby/sys/mount v0.3.0 h1:bXZYMmq7DBQPwHRxH/MG+u9+XF90ZOwoXpHTOznMGp0= +github.com/moby/sys/mount v0.3.0/go.mod h1:U2Z3ur2rXPFrFmy4q6WMwWrBOAQGYtYTRVM8BIvzbwk= +github.com/moby/sys/mountinfo v0.4.0/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= +github.com/moby/sys/mountinfo v0.4.1/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= +github.com/moby/sys/mountinfo v0.5.0 h1:2Ks8/r6lopsxWi9m58nlwjaeSzUX9iiL1vj5qB/9ObI= +github.com/moby/sys/mountinfo v0.5.0/go.mod h1:3bMD3Rg+zkqx8MRYPi7Pyb0Ie97QEBmdxbhnCLlSvSU= +github.com/moby/sys/symlink v0.1.0/go.mod h1:GGDODQmbFOjFsXvfLVn3+ZRxkch54RkSiGqsZeMYowQ= +github.com/moby/term v0.0.0-20200312100748-672ec06f55cd/go.mod h1:DdlQx2hp0Ss5/fLikoLlEeIYiATotOjgB//nb973jeo= +github.com/moby/term v0.0.0-20210610120745-9d4ed1856297/go.mod h1:vgPCkQMyxTZ7IDy8SXRufE172gr8+K/JE/7hHFxHW3A= +github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6 h1:dcztxKSvZ4Id8iPpHERQBbIJfabdt4wUm5qy3wOL2Zc= +github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6/go.mod h1:E2VnQOmVuvZB6UYnnDB0qG5Nq/1tD9acaOpo6xmt0Kw= +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/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= +github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= +github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ= +github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/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/ncw/swift v1.0.47/go.mod h1:23YIA4yWVnGwv2dQlN4bB7egfYX6YLn0Yo/S6zZO/ZM= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= +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/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= +github.com/onsi/ginkgo v0.0.0-20151202141238-7f8ab55aaf3b/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +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.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg= +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.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= +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-20151007035656-2152b45fa28a/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= +github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= +github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.9.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= +github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/onsi/gomega v1.10.3/go.mod h1:V9xEwhxec5O8UDM77eCW8vLymOMltsqPVYWrpDsH8xc= +github.com/onsi/gomega v1.17.0 h1:9Luw4uT5HTjHTN8+aNcSThgH1vdXnmdJ8xIfZ4wyTRE= +github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= +github.com/opencontainers/go-digest v0.0.0-20170106003457-a6d0ee40d420/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= +github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= +github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= +github.com/opencontainers/go-digest v1.0.0-rc1.0.20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= +github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= +github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= +github.com/opencontainers/image-spec v1.0.0/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= +github.com/opencontainers/image-spec v1.0.1 h1:JMemWkRwHx4Zj+fVxWoMCFm/8sYGGrUVojFA6h/TRcI= +github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= +github.com/opencontainers/runc v0.0.0-20190115041553-12f6a991201f/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= +github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= +github.com/opencontainers/runc v1.0.0-rc8.0.20190926000215-3e425f80a8c9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= +github.com/opencontainers/runc v1.0.0-rc9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= +github.com/opencontainers/runc v1.0.0-rc93/go.mod h1:3NOsor4w32B2tC0Zbl8Knk4Wg84SM2ImC1fxBuqJ/H0= +github.com/opencontainers/runc v1.0.2 h1:opHZMaswlyxz1OuGpBE53Dwe4/xF7EZTY0A2L/FpCOg= +github.com/opencontainers/runc v1.0.2/go.mod h1:aTaHFFwQXuA71CiyxOdFFIorAoemI04suvGRQFzWTD0= +github.com/opencontainers/runtime-spec v0.1.2-0.20190507144316-5b71a03e2700/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.0.1/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.0.2-0.20190207185410-29686dbc5559/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.0.3-0.20200929063507-e6143ca7d51d/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-tools v0.0.0-20181011054405-1d69bd0f9c39/go.mod h1:r3f7wjNzSs2extwzU3Y+6pKfobzPh+kKFJ3ofN+3nfs= +github.com/opencontainers/selinux v1.6.0/go.mod h1:VVGKuOLlE7v4PJyT6h7mNWvq1rzqiriPsEqVhc+svHE= +github.com/opencontainers/selinux v1.8.0/go.mod h1:RScLhm78qiWa2gbVCcGkC7tCGdgk3ogry1nUQF8Evvo= +github.com/opencontainers/selinux v1.8.2/go.mod h1:MUIHuUEvKB1wtJjQdOyYRgOnLD2xAPP8dBsCoU0KuF8= +github.com/opentracing/opentracing-go v1.1.0 h1:pWlfV3Bxv7k65HYwkikxat0+s3pV4bsqf19k25Ur8rU= +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/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pelletier/go-toml v1.8.1/go.mod h1:T2/BmBdy8dvIRq1a/8aqjN41wvWlN4lrapLU/GW4pbc= +github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= +github.com/pelletier/go-toml v1.9.4 h1:tjENF6MfZAg8e4ZmZTeWaWiT2vXtsoO6+iuOjFhECwM= +github.com/pelletier/go-toml v1.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= +github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1-0.20171018195549-f15c970de5b7/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/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= +github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= +github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= +github.com/prometheus/client_golang v0.0.0-20180209125602-c332b6f63c06/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.0-pre1.0.20180209125602-c332b6f63c06/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +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.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= +github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= +github.com/prometheus/client_golang v1.11.0 h1:HNkLOAEQMIDv/K+04rukrLx6ch7msSRwf3/SASFAGtQ= +github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= +github.com/prometheus/client_model v0.0.0-20171117100541-99fa1f4be8e5/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +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 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.0.0-20180110214958-89604d197083/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +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.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= +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.28.0 h1:vGVfV9KrDTvWt5boZO0I19g2E3CsWfpPPKZM9dt3mEw= +github.com/prometheus/common v0.28.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= +github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +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.0-20190522114515-bc1a522cf7b1/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= +github.com/prometheus/procfs v0.0.5/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= +github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= +github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.6.0 h1:mxy4L2jP6qMonqmq+aTtOx1ifVWUgG/TAmntgbh3xv4= +github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/rancher/k3d/v5 v5.2.2 h1:9F+wqmRZz5Gl7o70g0OSPLYVyCOrz/rJPVQhxmaI2Bo= +github.com/rancher/k3d/v5 v5.2.2/go.mod h1:wf9CUngX+Klerdc1rKlQV5OKzTQesCwoYGDMcB56DLQ= +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/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/safchain/ethtool v0.0.0-20190326074333-42ed695e3de8/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4= +github.com/sagikazarmark/crypt v0.1.0/go.mod h1:B/mN0msZuINBtQ1zZLEQcegFJJf9vnYIR88KRMEuODE= +github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= +github.com/sclevine/spec v1.2.0/go.mod h1:W4J29eT/Kzv7/b9IWLB055Z+qvVC9vt0Arko24q7p+U= +github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= +github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/sirupsen/logrus v1.0.4-0.20170822132746-89742aefa4b2/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= +github.com/sirupsen/logrus v1.0.6/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= +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.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE= +github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +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/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +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.6.0 h1:xoax2sJ2DT8S8xA2paPFjDCScCNeWsg75VG0DLRreiY= +github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= +github.com/spf13/cast v0.0.0-20150508191742-4d07383ffe94/go.mod h1:r2rcYCSwa1IExKTDiTfzaxqT2FNHs8hODu4LnUfgKEg= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cast v1.4.1 h1:s0hze+J0196ZfEMTs80N7UlFt0BDuQ7Q+JDnHiMWKdA= +github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cobra v0.0.1/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/cobra v0.0.2-0.20171109065643-2da4a54c5cee/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/cobra v0.0.3/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.2.1 h1:+KmjbUw1hriSNMF55oPrkZcb27aECyrj8V2ytv7kWDw= +github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk= +github.com/spf13/jwalterweatherman v0.0.0-20141219030609-3d60171a6431/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= +github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= +github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.0/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.1-0.20171106142849-4c012f6dcd95/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.1/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 v0.0.0-20150530192845-be5ff3e4840c/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.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= +github.com/spf13/viper v1.9.0 h1:yR6EXjTp0y0cLN8OZg1CRZmOBdI88UcGkhgyJhu6nZk= +github.com/spf13/viper v1.9.0/go.mod h1:+i6ajR7OX2XaiBkrcZJFK21htRk7eDeLg7+O6bhUPP4= +github.com/stefanberger/go-pkcs11uri v0.0.0-20201008174630-78d3cae3a980/go.mod h1:AO3tvPzVZ/ayst6UlUKUv6rcPQInYe3IknH3jYhAKu8= +github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= +github.com/stretchr/objx v0.0.0-20180129172003-8a3f7159479f/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= +github.com/stretchr/testify v0.0.0-20180303142811-b89eecf5ca5d/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= +github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= +github.com/syndtr/gocapability v0.0.0-20170704070218-db04d3cc01c8/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= +github.com/syndtr/gocapability v0.0.0-20180916011248-d98352740cb2/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= +github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= +github.com/tchap/go-patricia v2.2.6+incompatible/go.mod h1:bmLyhP68RS6kStMGxByiQ23RP/odRBOTVjwp2cDyi6I= +github.com/theupdateframework/notary v0.7.0 h1:QyagRZ7wlSpjT5N2qQAh/pN+DVqgekv4DzbAiAiEL3c= +github.com/theupdateframework/notary v0.7.0/go.mod h1:c9DRxcmhHmVLDay4/2fUYdISnHqbFDGRSlXPO0AhYWw= +github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tv42/httpunix v0.0.0-20191220191345-2ba4b9c3382c/go.mod h1:hzIxponao9Kjc7aWznkXaL4U4TWaDSs8zcsY4Ka08nM= +github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= +github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= +github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= +github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/vishvananda/netlink v0.0.0-20181108222139-023a6dafdcdf/go.mod h1:+SR5DhBJrl6ZM7CoCKvpw5BKroDKQ+PJqOg65H/2ktk= +github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= +github.com/vishvananda/netlink v1.1.1-0.20201029203352-d40f9887b852/go.mod h1:twkDnbuQxJYemMlGd4JFIcuhgX83tXhKS2B/PRMpOho= +github.com/vishvananda/netns v0.0.0-20180720170159-13995c7128cc/go.mod h1:ZjcWmFBXmLKZu9Nxj3WKYEafiSqer2rnvPr0en9UNpI= +github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= +github.com/vishvananda/netns v0.0.0-20200728191858-db3c7e526aae/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0= +github.com/willf/bitset v1.1.11-0.20200630133818-d5bec3311243/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= +github.com/willf/bitset v1.1.11/go.mod h1:83CECat5yLh5zVOf4P1ErAgKA5UDvKtgyUABdr3+MjI= +github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= +github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo= +github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0= +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= +github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f/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/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43/go.mod h1:aX5oPXxHm3bOH+xeAttToC8pqch2ScQN/JoXYupl6xs= +github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50/go.mod h1:NUSPSUX/bi6SeDMUh6brw0nXpxHnc96TguQh0+r/ssA= +github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f/go.mod h1:GlGEuHIJweS1mbCqG+7vt2nvWLzLLnRHbXz5JKd/Qbg= +go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= +go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= +go.etcd.io/etcd v0.5.0-alpha.5.0.20200910180754-dd1b699fc489/go.mod h1:yVHk9ub3CSBatqGNg7GRmsnfLWtoW60w4eDYfh7vHDg= +go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= +go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= +go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= +go.etcd.io/etcd/client/v3 v3.5.0/go.mod h1:AIKXXVX/DQXtfTEqBryiLTUXwON+GuvO6Z7lLS/oTh0= +go.etcd.io/etcd/pkg/v3 v3.5.0/go.mod h1:UzJGatBQ1lXChBkQF0AuAtkRQMYnHubxAEYIrC3MSsE= +go.etcd.io/etcd/raft/v3 v3.5.0/go.mod h1:UFOHSIvO/nKwd4lhkwabrTD3cqW5yVyYYf/KlD00Szc= +go.etcd.io/etcd/server/v3 v3.5.0/go.mod h1:3Ah5ruV+M+7RZr0+Y/5mNLwC+eQlni+mQmOVdCRJoS4= +go.mozilla.org/pkcs7 v0.0.0-20200128120323-432b2356ecb1/go.mod h1:SNgMg+EgDFwmvSmLRTNKC5fegJjB7v23qTQ0XLGUNHk= +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.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +go.opencensus.io v0.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M= +go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= +go.opentelemetry.io/contrib v0.20.0/go.mod h1:G/EtFaa6qaN7+LxqfIAT3GiZa7Wv5DTBUzl5H4LY0Kc= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.20.0/go.mod h1:oVGt1LRbBOBq1A5BQLlUg9UaU/54aiHw8cgjV3aWZ/E= +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.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= +go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= +go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= +go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= +go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= +go.uber.org/zap v1.19.1 h1:ue41HOKd1vGURxrmeKIgELGb3jPW9DMUDGtsinblHwI= +go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= +go4.org/intern v0.0.0-20210108033219-3eb7198706b2 h1:VFTf+jjIgsldaz/Mr00VaCSswHJrI2hIjQygE/W4IMg= +go4.org/intern v0.0.0-20210108033219-3eb7198706b2/go.mod h1:vLqJ+12kCw61iCWsPto0EOHhBS+o4rO5VIucbc9g2Cc= +go4.org/unsafe/assume-no-moving-gc v0.0.0-20201222175341-b30ae309168e/go.mod h1:FftLjUGFEDu5k8lt0ddY+HcrH/qU/0qk+H8j9/nTl3E= +go4.org/unsafe/assume-no-moving-gc v0.0.0-20201222180813-1025295fd063 h1:1tk03FUNpulq2cuWpXZWj649rwJpk0d20rxWiopKRmc= +go4.org/unsafe/assume-no-moving-gc v0.0.0-20201222180813-1025295fd063/go.mod h1:FftLjUGFEDu5k8lt0ddY+HcrH/qU/0qk+H8j9/nTl3E= +golang.org/x/crypto v0.0.0-20171113213409-9f005a07e0d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181009213950-7c1a557ab941/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-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= +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-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201117144127-c1f2f97bffc9/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-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20210817164053-32db794688a5 h1:HWj/xjIHfjYU5nVXpTM0s39J9CbLn7Cc5a7IC5rwsMQ= +golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= +golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +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-20201208152925-83fdc39ff7b5/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= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +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-20181011144130-49bb7cea24b1/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-20190619014844-b5b0513f8c1b/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-20190628185345-da137c7871d7/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-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/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-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/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-20200520182314-0ba52f642ac2/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-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201006153459-a7d1128ccaa0/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/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-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= +golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210520170846-37e1c6afe023/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210825183410-e898025ed96a/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211111160137-58aab5ef257a h1:c83jeVQW0KGKNaKBRfelNYNHaev+qawl9yaA825s8XE= +golang.org/x/net v0.0.0-20211111160137-58aab5ef257a/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f h1:Qmd2pbz05z7z6lm0DrgQVVPuBm92jqujBKMHMOlOQEw= +golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +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-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/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 h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +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-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190514135907-3a4b5fb9f71f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190522044717-8097e1b27ff5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190602015325-4c4f7f33c9ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190812073006-9eafafc0a87e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191115151921-52ab43148777/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-20191210023423-ac6580df4449/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-20200120151820-655fe14d7479/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/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-20200217220822-9197077df867/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-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200728102440-3e129f6d46b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200817155316-9781c653f443/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200831180312-196b9ba8737a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200916030750-2334cc1a136f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200922070232-aee5d888a860/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201112073958-5cba982894dd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201117170446-d9b008d0a637/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201202213521-69691e467435/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/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-20210514084401-e8d321eab015/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-20210603125802-9665404d3644/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-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210831042530-f4d43177bf5e/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-20211029165221-6e7872819dc8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211112143042-c6105e7cf70d h1:jp6PtFmjL+vGsuzd86xYqaJGv6eXdLvmVGzVVLI6EPI= +golang.org/x/sys v0.0.0-20211112143042-c6105e7cf70d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +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-20210615171337-6886f2dfbf5b h1:9zKuko04nR4gjZ4+DNjHqRlAJqbJETHwiNKDqTfOjfE= +golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +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 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +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-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac h1:7zkz7BUtwNFFqcowJ+RIgu2MaV/MapERkDIy+mwPyjs= +golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +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-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/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-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-20190614205625-5aca471b1d59/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-20190706070813-72ffa07ba3db/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/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= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +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-20200227222343-706bc42d1f0d/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-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200616133436-c1934b75d054/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/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-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= +golang.org/x/tools v0.0.0-20200916195026-c9a70fc28ce3/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= +golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= +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.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.6-0.20210820212750-d4cc65f0b2ff/go.mod h1:YD9qOF0M9xpSpdWTBbzEl5e/RnCefISl8E5Noe10jFM= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +gomodules.xyz/jsonpatch/v2 v2.2.0 h1:4pT439QV83L+G9FkcCriY6EkpcK6r6bK+A5FBUMI7qY= +gomodules.xyz/jsonpatch/v2 v2.2.0/go.mod h1:WXp+iVDkoLQqPudfQ9GBlwB2eZ5DKOnjQZCYdOS8GPY= +google.golang.org/api v0.0.0-20160322025152-9bf6e6e569ff/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +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.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= +google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= +google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= +google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= +google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= +google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= +google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= +google.golang.org/api v0.44.0/go.mod h1:EBOGZqzyhtvMDoxwS97ctnh0zUmYY6CxqXsc1AvkYD8= +google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= +google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= +google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= +google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= +google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= +google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +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= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= +google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/cloud v0.0.0-20151119220103-975617b05ea8/go.mod h1:0H1ncTHf11KCFhTc/+EFRbzSCOZx+VUbRMk55Yv5MYk= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190522204451-c2c4e71fbf69/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200117163144-32f20d992d24/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +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-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200527145253-8367513e4ece/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201019141844-1ed22bb0c154/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201102152239-715cce707fb0/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201110150050-8816d57aaa9a/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= +google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= +google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= +google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20211112145013-271947fe86fd h1:8jqRgiTTWyKMDOM2AvhjA5dZLBSKXg1yFupPRBV/4fQ= +google.golang.org/genproto v0.0.0-20211112145013-271947fe86fd/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/grpc v0.0.0-20160317175043-d3ddb4469d5a/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= +google.golang.org/grpc v1.0.5/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.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= +google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= +google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.42.0 h1:XT2/MFpuPFsEX2fWh3YQtHkZ+WYZFQRfaUgLZYj/p6A= +google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +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.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= +google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/cenkalti/backoff.v2 v2.2.1 h1:eJ9UAg01/HIHG987TwxvnzK2MgxXq97YY6rYDpY9aII= +gopkg.in/cenkalti/backoff.v2 v2.2.1/go.mod h1:S0QdOvT2AlerfSBkp0O+dk+bbIMaNbEmVk876gPCthU= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20141024133853-64131543e789/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 h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= +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/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= +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.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.63.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.64.0 h1:Mj2zXEXcNb5joEiSA0zc3HZpTst/iyjNiR4CN8tDzOg= +gopkg.in/ini.v1 v1.64.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +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/rethinkdb/rethinkdb-go.v6 v6.2.1 h1:d4KQkxAaAiRY2h5Zqis161Pv91A37uZyJOx73duwUwM= +gopkg.in/rethinkdb/rethinkdb-go.v6 v6.2.1/go.mod h1:WbjuEoo1oadwzQ4apSDU+JTvmllEHtsNHS6y7vFc7iw= +gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/square/go-jose.v2 v2.5.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= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= +gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= +gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= +gotest.tools/v3 v3.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0= +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= +honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +inet.af/netaddr v0.0.0-20210903134321-85fa6c94624e h1:tvgqez5ZQoBBiBAGNU/fmJy247yB/7++kcLOEoMYup0= +inet.af/netaddr v0.0.0-20210903134321-85fa6c94624e/go.mod h1:z0nx+Dh+7N7CC8V5ayHtHGpZpxLQZZxkIaaz6HN65Ls= +k8s.io/api v0.20.1/go.mod h1:KqwcCVogGxQY3nBlRpwt+wpAMF/KjaCc7RpywacvqUo= +k8s.io/api v0.20.4/go.mod h1:++lNL1AJMkDymriNniQsWRkMDzRaX2Y/POTUi8yvqYQ= +k8s.io/api v0.20.6/go.mod h1:X9e8Qag6JV/bL5G6bU8sdVRltWKmdHsFUGS3eVndqE8= +k8s.io/api v0.22.3/go.mod h1:azgiXFiXqiWyLCfI62/eYBOu19rj2LKmIhFPP4+33fs= +k8s.io/api v0.23.0 h1:WrL1gb73VSC8obi8cuYETJGXEoFNEh3LU0Pt+Sokgro= +k8s.io/api v0.23.0/go.mod h1:8wmDdLBHBNxtOIytwLstXt5E9PddnZb0GaMcqsvDBpg= +k8s.io/apiextensions-apiserver v0.23.0 h1:uii8BYmHYiT2ZTAJxmvc3X8UhNYMxl2A0z0Xq3Pm+WY= +k8s.io/apiextensions-apiserver v0.23.0/go.mod h1:xIFAEEDlAZgpVBl/1VSjGDmLoXAWRG40+GsWhKhAxY4= +k8s.io/apimachinery v0.20.1/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= +k8s.io/apimachinery v0.20.4/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= +k8s.io/apimachinery v0.20.6/go.mod h1:ejZXtW1Ra6V1O5H8xPBGz+T3+4gfkTCeExAHKU57MAc= +k8s.io/apimachinery v0.22.3/go.mod h1:O3oNtNadZdeOMxHFVxOreoznohCpy0z6mocxbZr7oJ0= +k8s.io/apimachinery v0.23.0 h1:mIfWRMjBuMdolAWJ3Fd+aPTMv3X9z+waiARMpvvb0HQ= +k8s.io/apimachinery v0.23.0/go.mod h1:fFCTTBKvKcwTPFzjlcxp91uPFZr+JA0FubU4fLzzFYc= +k8s.io/apiserver v0.20.1/go.mod h1:ro5QHeQkgMS7ZGpvf4tSMx6bBOgPfE+f52KwvXfScaU= +k8s.io/apiserver v0.20.4/go.mod h1:Mc80thBKOyy7tbvFtB4kJv1kbdD0eIH8k8vianJcbFM= +k8s.io/apiserver v0.20.6/go.mod h1:QIJXNt6i6JB+0YQRNcS0hdRHJlMhflFmsBDeSgT1r8Q= +k8s.io/apiserver v0.23.0/go.mod h1:Cec35u/9zAepDPPFyT+UMrgqOCjgJ5qtfVJDxjZYmt4= +k8s.io/client-go v0.20.1/go.mod h1:/zcHdt1TeWSd5HoUe6elJmHSQ6uLLgp4bIJHVEuy+/Y= +k8s.io/client-go v0.20.4/go.mod h1:LiMv25ND1gLUdBeYxBIwKpkSC5IsozMMmOOeSJboP+k= +k8s.io/client-go v0.20.6/go.mod h1:nNQMnOvEUEsOzRRFIIkdmYOjAZrC8bgq0ExboWSU1I0= +k8s.io/client-go v0.22.3/go.mod h1:ElDjYf8gvZsKDYexmsmnMQ0DYO8W9RwBjfQ1PI53yow= +k8s.io/client-go v0.23.0 h1:vcsOqyPq7XV3QmQRCBH/t9BICJM9Q1M18qahjv+rebY= +k8s.io/client-go v0.23.0/go.mod h1:hrDnpnK1mSr65lHHcUuIZIXDgEbzc7/683c6hyG4jTA= +k8s.io/code-generator v0.19.7/go.mod h1:lwEq3YnLYb/7uVXLorOJfxg+cUu2oihFhHZ0n9NIla0= +k8s.io/code-generator v0.23.0/go.mod h1:vQvOhDXhuzqiVfM/YHp+dmg10WDZCchJVObc9MvowsE= +k8s.io/component-base v0.20.1/go.mod h1:guxkoJnNoh8LNrbtiQOlyp2Y2XFCZQmrcg2n/DeYNLk= +k8s.io/component-base v0.20.4/go.mod h1:t4p9EdiagbVCJKrQ1RsA5/V4rFQNDfRlevJajlGwgjI= +k8s.io/component-base v0.20.6/go.mod h1:6f1MPBAeI+mvuts3sIdtpjljHWBQ2cIy38oBIWMYnrM= +k8s.io/component-base v0.23.0/go.mod h1:DHH5uiFvLC1edCpvcTDV++NKULdYYU6pR9Tt3HIKMKI= +k8s.io/cri-api v0.17.3/go.mod h1:X1sbHmuXhwaHs9xxYffLqJogVsnI+f6cPRcgPel7ywM= +k8s.io/cri-api v0.20.1/go.mod h1:2JRbKt+BFLTjtrILYVqQK5jqhI+XNdF6UiGMgczeBCI= +k8s.io/cri-api v0.20.4/go.mod h1:2JRbKt+BFLTjtrILYVqQK5jqhI+XNdF6UiGMgczeBCI= +k8s.io/cri-api v0.20.6/go.mod h1:ew44AjNXwyn1s0U4xCKGodU7J1HzBeZ1MpGrpa5r8Yc= +k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20201113003025-83324d819ded/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= +k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/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.4.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/klog/v2 v2.30.0 h1:bUO6drIvCIsvZ/XFgfxoGFQU/a4Qkh0iAlvUR7vlHJw= +k8s.io/klog/v2 v2.30.0/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= +k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6/go.mod h1:UuqjUnNftUyPE5H64/qeyjQoUZhGpeFDVdxjTeEVN2o= +k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd/go.mod h1:WOJ3KddDSol4tAGcJo0Tvi+dK12EcqSLqcWsryKMpfM= +k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= +k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65 h1:E3J9oCLlaobFUqsjG9DfKbP2BmgwBL2p7pn0A3dG9W4= +k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65/go.mod h1:sX9MT8g7NVZM5lVL/j8QyCCJe8YSMW30QvGZWaCIDIk= +k8s.io/kubernetes v1.13.0/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk= +k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20210819203725-bdf08cb9a70a/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20210930125809-cb0fa318a74b h1:wxEMGetGMur3J1xuGLQY7GEQYg9bZxKn3tKo5k/eYcs= +k8s.io/utils v0.0.0-20210930125809-cb0fa318a74b/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +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/apiserver-network-proxy/konnectivity-client v0.0.14/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.15/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.25/go.mod h1:Mlj9PNLmG9bZ6BHFwFKDo5afkpWyUISkb9Me0GnK66I= +sigs.k8s.io/controller-runtime v0.11.0 h1:DqO+c8mywcZLFJWILq4iktoECTyn30Bkj0CwgqMpZWQ= +sigs.k8s.io/controller-runtime v0.11.0/go.mod h1:KKwLiTooNGu+JmLZGn9Sl3Gjmfj66eMbCQznLP5zcqA= +sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6 h1:fD1pz4yfdADVNfFmcP2aBEtudwUQ1AlLnRBALr33v3s= +sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6/go.mod h1:p4QtZmO4uMYipTQNzagwnNoseA6OxSUutVw05NhYDRs= +sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= +sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= +sigs.k8s.io/structured-merge-diff/v4 v4.0.3/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= +sigs.k8s.io/structured-merge-diff/v4 v4.1.2/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4= +sigs.k8s.io/structured-merge-diff/v4 v4.2.0 h1:kDvPBbnPk+qYmkHmSo8vKGp438IASWofnbbUKDE/bv0= +sigs.k8s.io/structured-merge-diff/v4 v4.2.0/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4= +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.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= +sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= diff --git a/e2e/k8s/k8s.go b/e2e/k8s/k8s.go new file mode 100644 index 000000000000..ad83b82aaf4c --- /dev/null +++ b/e2e/k8s/k8s.go @@ -0,0 +1,324 @@ +// Package k8s spins up a Kubernetes cluster for testing. +package k8s + +import ( + "context" + "fmt" + "os" + "sort" + "time" + + docker_types "github.com/docker/docker/api/types" + docker_nat "github.com/docker/go-connections/nat" + k3d_client "github.com/rancher/k3d/v5/pkg/client" + config "github.com/rancher/k3d/v5/pkg/config" + k3d_cfgtypes "github.com/rancher/k3d/v5/pkg/config/types" + k3d_config "github.com/rancher/k3d/v5/pkg/config/v1alpha3" + k3d_log "github.com/rancher/k3d/v5/pkg/logger" + k3d_runtime "github.com/rancher/k3d/v5/pkg/runtimes" + k3d_docker "github.com/rancher/k3d/v5/pkg/runtimes/docker" + k3d_types "github.com/rancher/k3d/v5/pkg/types" + k3d_version "github.com/rancher/k3d/v5/version" + "k8s.io/apimachinery/pkg/util/rand" + "k8s.io/client-go/rest" + k8s_clientcmd "k8s.io/client-go/tools/clientcmd" +) + +// Cluster is a Kubernetes cluster that runs inside of a k3s Docker container. +// Call GetConfig to retrieve a Kubernetes *rest.Config to use to connect to +// the cluster. +// +// Cluster also runs an NGINX ingress controller which is exposed to the host. +// Call GetHTTPAddr to get the address for making requests against the server. +// +// Set E2E_K8S_USE_DOCKER_NETWORK in your environment variables if you are +// running tests from inside of a Docker container. This environment variable +// configures the k3s Docker container to join the same network as the +// container tests are running in. When this environment variable isn't set, +// the exposed ports on the Docker host are used for cluster communication. +// +// Note that k3s uses containerd as its runtime, which means local Docker +// images are not immediately available for use. To push local images to a +// container, call PushImages. It's recommended that tests use image names that +// are not available on Docker Hub to avoid accidentally testing against the +// wrong image. +// +// Cluster should be stopped by calling Stop, otherwise running Docker +// containers will leak. +type Cluster struct { + runtime k3d_runtime.Runtime + k3dCluster k3d_types.Cluster + restConfig *rest.Config + nginxAddr string +} + +// NewCluster creates a new Cluster. +func NewCluster() (cluster *Cluster, err error) { + var ( + ctx = context.Background() + + // We force the Docker runtime so we can create a Docker client for getting + // the exposed ports for the API server and NGINX. + runtime = k3d_runtime.Docker + + // Running in docker indicates that we should configure k3s to connect to + // the same docker network as the current container. + runningInDocker = os.Getenv("E2E_K8S_USE_DOCKER_NETWORK") == "1" + ) + + k3dConfig := k3d_config.SimpleConfig{ + TypeMeta: k3d_cfgtypes.TypeMeta{ + Kind: "Simple", + APIVersion: config.DefaultConfigApiVersion, + }, + Name: randomClusterName(), + Servers: 1, + Ports: []k3d_config.PortWithNodeFilters{{ + // Bind NGINX (container port 80) to 127.0.0.1:0 + Port: "127.0.0.1:0:80", + NodeFilters: []string{"loadbalancer"}, + }}, + ExposeAPI: k3d_config.SimpleExposureOpts{ + // Bind API sever to 127.0.0.1:0 + Host: "127.0.0.1", + HostIP: "127.0.0.1", + HostPort: "0", + }, + Image: fmt.Sprintf("%s:%s", k3d_types.DefaultK3sImageRepo, k3d_version.K3sVersion), + Options: k3d_config.SimpleConfigOptions{ + K3dOptions: k3d_config.SimpleConfigOptionsK3d{ + Wait: true, + Timeout: time.Minute, + }, + }, + } + if runningInDocker { + err := injectCurrentDockerNetwork(ctx, &k3dConfig) + if err != nil { + return nil, fmt.Errorf("could not connect k3d to current docker network: %w", err) + } + } + + clusterConfig, err := config.TransformSimpleToClusterConfig(ctx, runtime, k3dConfig) + if err != nil { + return nil, fmt.Errorf("failed to generate cluster config: %w", err) + } + + err = k3d_client.ClusterRun(ctx, runtime, clusterConfig) + + defer func() { + // We don't want to leak the cluster here, and we can't really be sure how + // many resources exist, even if ClusterRun fails. If we never set our + // cluster return argument, we'll delete the k3d cluster. This also + // gracefully handles panics. + if cluster == nil { + _ = k3d_client.ClusterDelete(ctx, runtime, &clusterConfig.Cluster, k3d_types.ClusterDeleteOpts{}) + } + }() + if err != nil { + return nil, fmt.Errorf("failed to run cluster: %w", err) + } + + var ( + httpAddr string + apiServerAddr string + ) + + // If we're currently running inside of Docker, we can connect directly to + // our container. Otherwise, we have to find what the bound host IPs are. + if runningInDocker { + httpAddr, apiServerAddr, err = clusterInternalAddrs(ctx, clusterConfig.Cluster) + } else { + httpAddr, apiServerAddr, err = loadBalancerExposedAddrs(ctx, clusterConfig.Cluster) + } + if err != nil { + return nil, fmt.Errorf("failed to discover exposed cluster addresses: %w", err) + } + + kubeconfig, err := k3d_client.KubeconfigGet(ctx, runtime, &clusterConfig.Cluster) + if err != nil { + return nil, fmt.Errorf("failed to retrieve kubeconfig: %w", err) + } + if c, ok := kubeconfig.Clusters[kubeconfig.CurrentContext]; ok && c != nil { + // The generated kubeconfig will set https://127.0.0.1:0 as the address. We + // need to replace it with the actual exposed port that Docker generated + // for us. + c.Server = "https://" + apiServerAddr + } else { + return nil, fmt.Errorf("generated kubeconfig missing context set") + } + restCfg, err := k8s_clientcmd.NewDefaultClientConfig(*kubeconfig, nil).ClientConfig() + if err != nil { + return nil, fmt.Errorf("could not generate k8s REST API config: %w", err) + } + + return &Cluster{ + runtime: runtime, + k3dCluster: clusterConfig.Cluster, + restConfig: restCfg, + nginxAddr: httpAddr, + }, nil +} + +// injectCurrentDockerNetwork reconfigures config to join the Docker network of +// the current container. Fails if the function is not being called from inside +// of a Docker container. +func injectCurrentDockerNetwork(ctx context.Context, config *k3d_config.SimpleConfig) error { + hostname, err := os.Hostname() + if err != nil { + return fmt.Errorf("could not get hostname: %w", err) + } + + cli, err := k3d_docker.GetDockerClient() + if err != nil { + return fmt.Errorf("failed to get docker client: %w", err) + } + info, err := cli.ContainerInspect(ctx, hostname) + if err != nil { + return fmt.Errorf("failed to find current docker container: %w", err) + } + + networks := make([]string, 0, len(info.NetworkSettings.Networks)) + for nw := range info.NetworkSettings.Networks { + networks = append(networks, nw) + } + sort.Strings(networks) + + if len(networks) == 0 { + return fmt.Errorf("no networks") + } + config.Network = networks[0] + return nil +} + +func randomClusterName() string { + return "grafana-agent-e2e-" + rand.String(5) +} + +func clusterInternalAddrs(ctx context.Context, cluster k3d_types.Cluster) (httpAddr, serverAddr string, err error) { + var lb, server *k3d_types.Node + for _, n := range cluster.Nodes { + switch n.Role { + case k3d_types.LoadBalancerRole: + if lb == nil { + lb = n + } + case k3d_types.ServerRole: + if server == nil { + server = n + } + } + } + if lb == nil { + return "", "", fmt.Errorf("no loadbalancer node") + } else if server == nil { + return "", "", fmt.Errorf("no server node") + } + + cli, err := k3d_docker.GetDockerClient() + if err != nil { + return "", "", fmt.Errorf("failed to get docker client: %w", err) + } + + lbInfo, err := cli.ContainerInspect(ctx, lb.Name) + if err != nil { + return "", "", fmt.Errorf("failed to inspect loadbalancer: %w", err) + } else if nw, found := lbInfo.NetworkSettings.Networks[cluster.Network.Name]; !found { + return "", "", fmt.Errorf("loadbalancer not connected to expected network %q", cluster.Network.Name) + } else { + httpAddr = fmt.Sprintf("%s:80", nw.IPAddress) + } + + serverInfo, err := cli.ContainerInspect(ctx, server.Name) + if err != nil { + return "", "", fmt.Errorf("failed to inspect worker: %w", err) + } else if nw, found := serverInfo.NetworkSettings.Networks[cluster.Network.Name]; !found { + return "", "", fmt.Errorf("worker not connected to expected network %q", cluster.Network.Name) + } else { + serverAddr = fmt.Sprintf("%s:6443", nw.IPAddress) + } + + return httpAddr, serverAddr, nil +} + +func loadBalancerExposedAddrs(ctx context.Context, cluster k3d_types.Cluster) (httpAddr, apiServerAddr string, err error) { + var lb *k3d_types.Node + for _, n := range cluster.Nodes { + if n.Role == k3d_types.LoadBalancerRole { + lb = n + break + } + } + if lb == nil { + return "", "", fmt.Errorf("no loadbalancer node") + } + + cli, err := k3d_docker.GetDockerClient() + if err != nil { + return "", "", fmt.Errorf("failed to get docker client: %w", err) + } + info, err := cli.ContainerInspect(ctx, lb.Name) + if err != nil { + return "", "", fmt.Errorf("failed to inspect loadbalancer: %w", err) + } + + httpAddr, err = hostBinding(info, 80) + if err != nil { + return "", "", fmt.Errorf("failed to discover NGINX HTTP addr: %w", err) + } + apiServerAddr, err = hostBinding(info, 6443) + if err != nil { + return "", "", fmt.Errorf("failed to discover API server addr: %w", err) + } + return httpAddr, apiServerAddr, nil +} + +func hostBinding(containerInfo docker_types.ContainerJSON, containerPort int) (string, error) { + for rawPort, bindings := range containerInfo.NetworkSettings.Ports { + _, portString := docker_nat.SplitProtoPort(string(rawPort)) + port, _ := docker_nat.ParsePort(portString) + if port != containerPort { + continue + } + if len(bindings) == 0 { + return "", fmt.Errorf("no exposed bindings for port %d", containerPort) + } + return fmt.Sprintf("%s:%s", bindings[0].HostIP, bindings[0].HostPort), nil + } + + return "", fmt.Errorf("no container port %d exposed", containerPort) +} + +// GetConfig returns a *rest.Config that can be used to connect to the +// Kubernetes cluster. The returned Config is a copy and is safe for +// modification. +func (c *Cluster) GetConfig() *rest.Config { + return rest.CopyConfig(c.restConfig) +} + +// GetHTTPAddr returns the host:port address that can be used to connect to the +// cluster's NGINX server. +func (c *Cluster) GetHTTPAddr() string { + return c.nginxAddr +} + +// PushImages push images from the local Docker host into the Cluster. If the +// specified image does not have a tag, `:latest` is assumed. +func (c *Cluster) PushImages(images ...string) error { + return k3d_client.ImageImportIntoClusterMulti( + context.Background(), + c.runtime, + images, + &c.k3dCluster, + k3d_types.ImageImportOpts{}, + ) +} + +// Stop shuts down and deletes the cluster. Stop must be called to clean up +// created Docker resources. +func (c *Cluster) Stop() { + err := k3d_client.ClusterDelete(context.Background(), c.runtime, &c.k3dCluster, k3d_types.ClusterDeleteOpts{}) + if err != nil { + k3d_log.Log().Errorf("failed to shut down cluster, docker containers may have leaked: %s", err) + } +} diff --git a/e2e/k8s/k8s_test.go b/e2e/k8s/k8s_test.go new file mode 100644 index 000000000000..ce4a72065146 --- /dev/null +++ b/e2e/k8s/k8s_test.go @@ -0,0 +1,30 @@ +package k8s + +import ( + "context" + "testing" + + "github.com/stretchr/testify/require" + core "k8s.io/api/core/v1" + "sigs.k8s.io/controller-runtime/pkg/client" +) + +func TestCluster(t *testing.T) { + ctx := context.Background() + + cluster, err := NewCluster() + require.NoError(t, err) + defer cluster.Stop() + + cli, err := client.New(cluster.GetConfig(), client.Options{}) + require.NoError(t, err) + + var nss core.NamespaceList + require.NoError(t, cli.List(ctx, &nss)) + + names := make([]string, len(nss.Items)) + for i, ns := range nss.Items { + names[i] = ns.Name + } + require.Contains(t, names, "kube-system") +} diff --git a/example/docker-compose/agent/config/agent-integrations-next.yaml b/example/docker-compose/agent/config/agent-integrations-next.yaml new file mode 100644 index 000000000000..78428dd40246 --- /dev/null +++ b/example/docker-compose/agent/config/agent-integrations-next.yaml @@ -0,0 +1,23 @@ +# agent-integrations-next.yaml is intended to be used with +# docker-compose.integrations-next.yaml. It demonstrates a config with +# --enable-features=integrations-next and --config.expand-env, but does not +# test absolutely all integrations. +server: + log_level: info + http_listen_port: 12345 + +metrics: + wal_directory: /tmp/agent + global: + scrape_interval: 1m + remote_write: + - url: http://${REMOTE_WRITE:-localhost:9009}/api/prom/push + configs: + - name: default + +integrations: + agent: {} + node_exporter: {} + redis_exporter_configs: + - redis_addr: ${REDIS_1:-localhost:6379} + - redis_addr: ${REDIS_2:-localhost:6380} diff --git a/example/docker-compose/docker-compose.integrations-next.yaml b/example/docker-compose/docker-compose.integrations-next.yaml new file mode 100644 index 000000000000..5a0a00be6f10 --- /dev/null +++ b/example/docker-compose/docker-compose.integrations-next.yaml @@ -0,0 +1,90 @@ +# The docker-compose.integrations-next.yaml runs an agent environment with +# -enable-features=integrations-next being used. +version: "2" +services: + agent: + image: grafana/agent:latest + volumes: + - ./agent/config:/etc/agent-config + - /var/log:/var/log + entrypoint: + - /bin/agent + - -config.file=/etc/agent-config/agent-integrations-next.yaml + - -prometheus.wal-directory=/tmp/agent/wal + - -enable-features=integrations-next + - -config.expand-env + - -config.enable-read-api + environment: + REMOTE_WRITE: cortex:9009 + REDIS_1: redis_1:6379 + REDIS_2: redis_2:6379 + HOSTNAME: agent + ports: + - "12345:12345" + depends_on: + - cortex + - loki + - tempo + - redis_1 + - redis_2 + + # + # Frontend + # + + grafana: + image: grafana/grafana:8.3.3 + entrypoint: + - /usr/share/grafana/bin/grafana-server + - --homepath=/usr/share/grafana + - --config=/etc/grafana-config/grafana.ini + volumes: + - ./grafana/config:/etc/grafana-config + - ./grafana/datasources:/etc/grafana/provisioning/datasources + - ./grafana/dashboards-provisioning:/etc/grafana/provisioning/dashboards + - ./grafana/dashboards:/var/lib/grafana/dashboards + ports: + - "3000:3000" + + # + # Backend for remote_write components + # + + cortex: + image: cortexproject/cortex:v1.8.1 + volumes: + - /tmp/cortex:/tmp/cortex + - ./cortex/config:/etc/cortex-config + entrypoint: + - /bin/cortex + - -config.file=/etc/cortex-config/cortex.yaml + ports: + - "9009:9009" + + loki: + image: grafana/loki:1.5.0 + ports: + - "3100:3100" + command: -config.file=/etc/loki/local-config.yaml + + tempo: + image: grafana/tempo:df7225ae + command: + - "-storage.trace.backend=local" # tell tempo where to permanently put traces + - "-storage.trace.local.path=/tmp/tempo/traces" + - "-storage.trace.wal.path=/tmp/tempo/wal" # tell tempo where to store the wal + - "-auth.enabled=false" # disables the requirement for the X-Scope-OrgID header + - "-server.http-listen-port=3200" + ports: + - "3200:3200" + + # + # Integrations + # + + redis_1: + image: redis:6 + ports: ["6379:6379"] + redis_2: + image: redis:6 + ports: ["6380:6379"] diff --git a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/alert_condition.libsonnet b/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/alert_condition.libsonnet deleted file mode 100644 index 163d08282e35..000000000000 --- a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/alert_condition.libsonnet +++ /dev/null @@ -1,47 +0,0 @@ -{ - /** - * Returns a new condition of alert of graph panel. - * Currently the only condition type that exists is a Query condition - * that allows to specify a query letter, time range and an aggregation function. - * - * @name alertCondition.new - * - * @param evaluatorParams Value of threshold - * @param evaluatorType Type of threshold - * @param operatorType Operator between conditions - * @param queryRefId The letter defines what query to execute from the Metrics tab - * @param queryTimeStart Begging of time range - * @param queryTimeEnd End of time range - * @param reducerParams Params of an aggregation function - * @param reducerType Name of an aggregation function - * - * @return A json that represents a condition of alert - */ - new( - evaluatorParams=[], - evaluatorType='gt', - operatorType='and', - queryRefId='A', - queryTimeEnd='now', - queryTimeStart='5m', - reducerParams=[], - reducerType='avg', - ):: - { - evaluator: { - params: if std.type(evaluatorParams) == 'array' then evaluatorParams else [evaluatorParams], - type: evaluatorType, - }, - operator: { - type: operatorType, - }, - query: { - params: [queryRefId, queryTimeStart, queryTimeEnd], - }, - reducer: { - params: if std.type(reducerParams) == 'array' then reducerParams else [reducerParams], - type: reducerType, - }, - type: 'query', - }, -} diff --git a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/alertlist.libsonnet b/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/alertlist.libsonnet deleted file mode 100644 index 94df3603e99e..000000000000 --- a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/alertlist.libsonnet +++ /dev/null @@ -1,43 +0,0 @@ -{ - /** - * Creates an [Alert list panel](https://grafana.com/docs/grafana/latest/panels/visualizations/alert-list-panel/) - * - * @name alertlist.new - * - * @param title (default `''`) - * @param span (optional) - * @param show (default `'current'`) Whether the panel should display the current alert state or recent alert state changes. - * @param limit (default `10`) Sets the maximum number of alerts to list. - * @param sortOrder (default `'1'`) '1': alerting, '2': no_data, '3': pending, '4': ok, '5': paused - * @param stateFilter (optional) - * @param onlyAlertsOnDashboard (optional) Shows alerts only from the dashboard the alert list is in - * @param transparent (optional) Whether to display the panel without a background - * @param description (optional) - * @param datasource (optional) - */ - new( - title='', - span=null, - show='current', - limit=10, - sortOrder=1, - stateFilter=[], - onlyAlertsOnDashboard=true, - transparent=null, - description=null, - datasource=null, - ):: - { - [if transparent != null then 'transparent']: transparent, - title: title, - [if span != null then 'span']: span, - type: 'alertlist', - show: show, - limit: limit, - sortOrder: sortOrder, - [if show != 'changes' then 'stateFilter']: stateFilter, - onlyAlertsOnDashboard: onlyAlertsOnDashboard, - [if description != null then 'description']: description, - datasource: datasource, - }, -} diff --git a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/annotation.libsonnet b/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/annotation.libsonnet deleted file mode 100644 index 955b029cb044..000000000000 --- a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/annotation.libsonnet +++ /dev/null @@ -1,40 +0,0 @@ -{ - default:: - { - builtIn: 1, - datasource: '-- Grafana --', - enable: true, - hide: true, - iconColor: 'rgba(0, 211, 255, 1)', - name: 'Annotations & Alerts', - type: 'dashboard', - }, - - /** - * @name annotation.datasource - */ - - datasource( - name, - datasource, - expr=null, - enable=true, - hide=false, - iconColor='rgba(255, 96, 96, 1)', - tags=[], - type='tags', - builtIn=null, - ):: - { - datasource: datasource, - enable: enable, - [if expr != null then 'expr']: expr, - hide: hide, - iconColor: iconColor, - name: name, - showIn: 0, - tags: tags, - type: type, - [if builtIn != null then 'builtIn']: builtIn, - }, -} diff --git a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/bar_gauge_panel.libsonnet b/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/bar_gauge_panel.libsonnet deleted file mode 100644 index 313e5a033685..000000000000 --- a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/bar_gauge_panel.libsonnet +++ /dev/null @@ -1,47 +0,0 @@ -{ - /** - * Create a [bar gauge panel](https://grafana.com/docs/grafana/latest/panels/visualizations/bar-gauge-panel/), - * - * @name barGaugePanel.new - * - * @param title Panel title. - * @param description (optional) Panel description. - * @param datasource (optional) Panel datasource. - * @param unit (optional) The unit of the data. - * @param thresholds (optional) An array of threashold values. - * - * @method addTarget(target) Adds a target object. - * @method addTargets(targets) Adds an array of targets. - */ - new( - title, - description=null, - datasource=null, - unit=null, - thresholds=[], - ):: { - type: 'bargauge', - title: title, - [if description != null then 'description']: description, - datasource: datasource, - targets: [ - ], - fieldConfig: { - defaults: { - unit: unit, - thresholds: { - mode: 'absolute', - steps: thresholds, - }, - }, - }, - _nextTarget:: 0, - addTarget(target):: self { - // automatically ref id in added targets. - local nextTarget = super._nextTarget, - _nextTarget: nextTarget + 1, - targets+: [target { refId: std.char(std.codepoint('A') + nextTarget) }], - }, - addTargets(targets):: std.foldl(function(p, t) p.addTarget(t), targets, self), - }, -} diff --git a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/cloudmonitoring.libsonnet b/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/cloudmonitoring.libsonnet deleted file mode 100644 index 49cef5e1a00f..000000000000 --- a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/cloudmonitoring.libsonnet +++ /dev/null @@ -1,57 +0,0 @@ -{ - /** - * Creates a [Google Cloud Monitoring target](https://grafana.com/docs/grafana/latest/datasources/google-cloud-monitoring/) - * - * @name cloudmonitoring.target - * - * @param metric - * @param project - * @param filters (optional) - * @param groupBys (optional) - * @param period (default: `'cloud-monitoring-auto'`) - * @param crossSeriesReducer (default 'REDUCE_MAX') - * @param valueType (default 'INT64') - * @param perSeriesAligner (default 'ALIGN_DELTA') - * @param metricKind (default 'CUMULATIVE') - * @param unit (optional) - * @param alias (optional) - - * @return Panel target - */ - - target( - metric, - project, - filters=[], - groupBys=[], - period='cloud-monitoring-auto', - crossSeriesReducer='REDUCE_MAX', - valueType='INT64', - perSeriesAligner='ALIGN_DELTA', - metricKind='CUMULATIVE', - unit=1, - alias=null, - ):: { - metricQuery: { - [if alias != null then 'aliasBy']: alias, - alignmentPeriod: period, - crossSeriesReducer: crossSeriesReducer, - [if filters != null then 'filters']: filters, - [if groupBys != null then 'groupBys']: groupBys, - metricKind: metricKind, - metricType: metric, - perSeriesAligner: perSeriesAligner, - projectName: project, - unit: unit, - valueType: valueType, - }, - sloQuery: { - [if alias != null then 'aliasBy']: alias, - alignmentPeriod: period, - projectName: project, - selectorName: 'select_slo_health', - serviceId: '', - sloId: '', - }, - }, -} diff --git a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/cloudwatch.libsonnet b/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/cloudwatch.libsonnet deleted file mode 100644 index f56056f4eb73..000000000000 --- a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/cloudwatch.libsonnet +++ /dev/null @@ -1,51 +0,0 @@ -{ - /** - * Creates a [CloudWatch target](https://grafana.com/docs/grafana/latest/datasources/cloudwatch/) - * - * @name cloudwatch.target - * - * @param region - * @param namespace - * @param metric - * @param datasource (optional) - * @param statistic (default: `'Average'`) - * @param alias (optional) - * @param highResolution (default: `false`) - * @param period (default: `'auto'`) - * @param dimensions (optional) - * @param id (optional) - * @param expression (optional) - * @param hide (optional) - - * @return Panel target - */ - - target( - region, - namespace, - metric, - datasource=null, - statistic='Average', - alias=null, - highResolution=false, - period='auto', - dimensions={}, - id=null, - expression=null, - hide=null - ):: { - region: region, - namespace: namespace, - metricName: metric, - [if datasource != null then 'datasource']: datasource, - statistics: [statistic], - [if alias != null then 'alias']: alias, - highResolution: highResolution, - period: period, - dimensions: dimensions, - [if id != null then 'id']: id, - [if expression != null then 'expression']: expression, - [if hide != null then 'hide']: hide, - - }, -} diff --git a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/dashboard.libsonnet b/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/dashboard.libsonnet deleted file mode 100644 index 1cc1bf320677..000000000000 --- a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/dashboard.libsonnet +++ /dev/null @@ -1,181 +0,0 @@ -local timepickerlib = import 'timepicker.libsonnet'; - -{ - /** - * Creates a [dashboard](https://grafana.com/docs/grafana/latest/features/dashboard/dashboards/) - * - * @name dashboard.new - * - * @param title The title of the dashboard - * @param editable (default: `false`) Whether the dashboard is editable via Grafana UI. - * @param style (default: `'dark'`) Theme of dashboard, `'dark'` or `'light'` - * @param tags (optional) Array of tags associated to the dashboard, e.g.`['tag1','tag2']` - * @param time_from (default: `'now-6h'`) - * @param time_to (default: `'now'`) - * @param timezone (default: `'browser'`) Timezone of the dashboard, `'utc'` or `'browser'` - * @param refresh (default: `''`) Auto-refresh interval, e.g. `'30s'` - * @param timepicker (optional) See timepicker API - * @param graphTooltip (default: `'default'`) `'default'` : no shared crosshair or tooltip (0), `'shared_crosshair'`: shared crosshair (1), `'shared_tooltip'`: shared crosshair AND shared tooltip (2) - * @param hideControls (default: `false`) - * @param schemaVersion (default: `14`) Version of the Grafana JSON schema, incremented each time an update brings changes. `26` for Grafana 7.1.5, `22` for Grafana 6.7.4, `16` for Grafana 5.4.5, `14` for Grafana 4.6.3. etc. - * @param uid (default: `''`) Unique dashboard identifier as a string (8-40), that can be chosen by users. Used to identify a dashboard to update when using Grafana REST API. - * @param description (optional) - * - * @method addTemplate(template) Add a template variable - * @method addTemplates(templates) Adds an array of template variables - * @method addAnnotation(annotation) Add an [annotation](https://grafana.com/docs/grafana/latest/dashboards/annotations/) - * @method addPanel(panel,gridPos) Appends a panel, with an optional grid position in grid coordinates, e.g. `gridPos={'x':0, 'y':0, 'w':12, 'h': 9}` - * @method addPanels(panels) Appends an array of panels - * @method addLink(link) Adds a [dashboard link](https://grafana.com/docs/grafana/latest/linking/dashboard-links/) - * @method addLinks(dashboardLink) Adds an array of [dashboard links](https://grafana.com/docs/grafana/latest/linking/dashboard-links/) - * @method addRequired(type, name, id, version) - * @method addInput(name, label, type, pluginId, pluginName, description, value) - * @method addRow(row) Adds a row. This is the legacy row concept from Grafana < 5, when rows were needed for layout. Rows should now be added via `addPanel`. - */ - new( - title, - editable=false, - style='dark', - tags=[], - time_from='now-6h', - time_to='now', - timezone='browser', - refresh='', - timepicker=timepickerlib.new(), - graphTooltip='default', - hideControls=false, - schemaVersion=14, - uid='', - description=null, - ):: { - local it = self, - _annotations:: [], - [if uid != '' then 'uid']: uid, - editable: editable, - [if description != null then 'description']: description, - gnetId: null, - graphTooltip: - if graphTooltip == 'shared_tooltip' then 2 - else if graphTooltip == 'shared_crosshair' then 1 - else if graphTooltip == 'default' then 0 - else graphTooltip, - hideControls: hideControls, - id: null, - links: [], - panels:: [], - refresh: refresh, - rows: [], - schemaVersion: schemaVersion, - style: style, - tags: tags, - time: { - from: time_from, - to: time_to, - }, - timezone: timezone, - timepicker: timepicker, - title: title, - version: 0, - addAnnotations(annotations):: self { - _annotations+:: annotations, - }, - addAnnotation(a):: self.addAnnotations([a]), - addTemplates(templates):: self { - templates+: templates, - }, - addTemplate(t):: self.addTemplates([t]), - templates:: [], - annotations: { list: it._annotations }, - templating: { list: it.templates }, - _nextPanel:: 2, - addRow(row):: - self { - // automatically number panels in added rows. - // https://github.com/kausalco/public/blob/master/klumps/grafana.libsonnet - local n = std.length(row.panels), - local nextPanel = super._nextPanel, - local panels = std.makeArray(n, function(i) - row.panels[i] { id: nextPanel + i }), - - _nextPanel: nextPanel + n, - rows+: [row { panels: panels }], - }, - addPanels(newpanels):: - self { - // automatically number panels in added rows. - // https://github.com/kausalco/public/blob/master/klumps/grafana.libsonnet - local n = std.foldl(function(numOfPanels, p) - (if 'panels' in p then - numOfPanels + 1 + std.length(p.panels) - else - numOfPanels + 1), newpanels, 0), - local nextPanel = super._nextPanel, - local _panels = std.makeArray( - std.length(newpanels), function(i) - newpanels[i] { - id: nextPanel + ( - if i == 0 then - 0 - else - if 'panels' in _panels[i - 1] then - (_panels[i - 1].id - nextPanel) + 1 + std.length(_panels[i - 1].panels) - else - (_panels[i - 1].id - nextPanel) + 1 - - ), - [if 'panels' in newpanels[i] then 'panels']: std.makeArray( - std.length(newpanels[i].panels), function(j) - newpanels[i].panels[j] { - id: 1 + j + - nextPanel + ( - if i == 0 then - 0 - else - if 'panels' in _panels[i - 1] then - (_panels[i - 1].id - nextPanel) + 1 + std.length(_panels[i - 1].panels) - else - (_panels[i - 1].id - nextPanel) + 1 - - ), - } - ), - } - ), - - _nextPanel: nextPanel + n, - panels+::: _panels, - }, - addPanel(panel, gridPos):: self.addPanels([panel { gridPos: gridPos }]), - addRows(rows):: std.foldl(function(d, row) d.addRow(row), rows, self), - addLink(link):: self { - links+: [link], - }, - addLinks(dashboardLinks):: std.foldl(function(d, t) d.addLink(t), dashboardLinks, self), - required:: [], - __requires: it.required, - addRequired(type, name, id, version):: self { - required+: [{ type: type, name: name, id: id, version: version }], - }, - inputs:: [], - __inputs: it.inputs, - addInput( - name, - label, - type, - pluginId=null, - pluginName=null, - description='', - value=null, - ):: self { - inputs+: [{ - name: name, - label: label, - type: type, - [if pluginId != null then 'pluginId']: pluginId, - [if pluginName != null then 'pluginName']: pluginName, - [if value != null then 'value']: value, - description: description, - }], - }, - }, -} diff --git a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/dashlist.libsonnet b/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/dashlist.libsonnet deleted file mode 100644 index 436cb02b6ad4..000000000000 --- a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/dashlist.libsonnet +++ /dev/null @@ -1,41 +0,0 @@ -{ - /** - * Creates a [dashlist panel](https://grafana.com/docs/grafana/latest/panels/visualizations/dashboard-list-panel/). - * It requires the dashlist panel plugin in grafana, which is built-in. - * - * @name dashlist.new - * - * @param title The title of the dashlist panel. - * @param description (optional) Description of the panel - * @param query (optional) Query to search by - * @param tags (optional) Array of tag(s) to search by - * @param recent (default `true`) Displays recently viewed dashboards - * @param search (default `false`) Description of the panel - * @param starred (default `false`) Displays starred dashboards - * @param headings (default `true`) Chosen list selection(starred, recently Viewed, search) is shown as a heading - * @param limit (default `10`) Set maximum items in a list - * @return A json that represents a dashlist panel - */ - new( - title, - description=null, - query=null, - tags=[], - recent=true, - search=false, - starred=false, - headings=true, - limit=10, - ):: { - type: 'dashlist', - title: title, - query: if query != null then query else '', - tags: tags, - recent: recent, - search: search, - starred: starred, - headings: headings, - limit: limit, - [if description != null then 'description']: description, - }, -} diff --git a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/elasticsearch.libsonnet b/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/elasticsearch.libsonnet deleted file mode 100644 index 769e1c7081eb..000000000000 --- a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/elasticsearch.libsonnet +++ /dev/null @@ -1,51 +0,0 @@ -{ - /** - * Creates an [Elasticsearch target](https://grafana.com/docs/grafana/latest/datasources/elasticsearch/) - * - * @name elasticsearch.target - * - * @param query - * @param timeField - * @param id (optional) - * @param datasource (optional) - * @param metrics (optional) - * @param bucketAggs (optional) - * @param alias (optional) - */ - target( - query, - timeField, - id=null, - datasource=null, - metrics=[{ - field: 'value', - id: null, - type: 'percentiles', - settings: { - percents: [ - '90', - ], - }, - }], - bucketAggs=[{ - field: 'timestamp', - id: null, - type: 'date_histogram', - settings: { - interval: '1s', - min_doc_count: 0, - trimEdges: 0, - }, - }], - alias=null, - ):: { - [if datasource != null then 'datasource']: datasource, - query: query, - id: id, - timeField: timeField, - bucketAggs: bucketAggs, - metrics: metrics, - alias: alias, - // TODO: generate bucket ids - }, -} diff --git a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/gauge_panel.libsonnet b/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/gauge_panel.libsonnet deleted file mode 100644 index 40b367351e46..000000000000 --- a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/gauge_panel.libsonnet +++ /dev/null @@ -1,211 +0,0 @@ -{ - /** - * Creates a [gauge panel](https://grafana.com/docs/grafana/latest/panels/visualizations/gauge-panel/). - * - * @name gaugePanel.new - * - * @param title Panel title. - * @param description (optional) Panel description. - * @param transparent (default `false`) Whether to display the panel without a background. - * @param datasource (optional) Panel datasource. - * @param allValues (default `false`) Show all values instead of reducing to one. - * @param valueLimit (optional) Limit of values in all values mode. - * @param reducerFunction (default `'mean'`) Function to use to reduce values to when using single value. - * @param fields (default `''`) Fields that should be included in the panel. - * @param showThresholdLabels (default `false`) Render the threshold values around the gauge bar. - * @param showThresholdMarkers (default `true`) Render the thresholds as an outer bar. - * @param unit (default `'percent'`) Panel unit field option. - * @param min (optional) Leave empty to calculate based on all values. - * @param max (optional) Leave empty to calculate based on all values. - * @param decimals Number of decimal places to show. - * @param displayName Change the field or series name. - * @param noValue (optional) What to show when there is no value. - * @param thresholdsMode (default `'absolute'`) 'absolute' or 'percentage'. - * @param repeat (optional) Name of variable that should be used to repeat this panel. - * @param repeatDirection (default `'h'`) 'h' for horizontal or 'v' for vertical. - * @param repeatMaxPerRow (optional) Maximum panels per row in repeat mode. - * @param pluginVersion (default `'7'`) Plugin version the panel should be modeled for. This has been tested with the default, '7', and '6.7'. - * - * @method addTarget(target) Adds a target object. - * @method addTargets(targets) Adds an array of targets. - * @method addLink(link) Adds a [panel link](https://grafana.com/docs/grafana/latest/linking/panel-links/). Argument format: `{ title: 'Link Title', url: 'https://...', targetBlank: true }`. - * @method addLinks(links) Adds an array of links. - * @method addThreshold(step) Adds a threshold step. Argument format: `{ color: 'green', value: 0 }`. - * @method addThresholds(steps) Adds an array of threshold steps. - * @method addMapping(mapping) Adds a value mapping. - * @method addMappings(mappings) Adds an array of value mappings. - * @method addDataLink(link) Adds a data link. - * @method addDataLinks(links) Adds an array of data links. - * @param timeFrom (optional) - */ - new( - title, - description=null, - transparent=false, - datasource=null, - allValues=false, - valueLimit=null, - reducerFunction='mean', - fields='', - showThresholdLabels=false, - showThresholdMarkers=true, - unit='percent', - min=0, - max=100, - decimals=null, - displayName=null, - noValue=null, - thresholdsMode='absolute', - repeat=null, - repeatDirection='h', - repeatMaxPerRow=null, - timeFrom=null, - pluginVersion='7', - ):: { - - type: 'gauge', - title: title, - [if description != null then 'description']: description, - transparent: transparent, - datasource: datasource, - targets: [], - links: [], - [if repeat != null then 'repeat']: repeat, - [if repeat != null then 'repeatDirection']: repeatDirection, - [if repeat != null then 'repeatMaxPerRow']: repeatMaxPerRow, - [if timeFrom != null then 'timeFrom']: timeFrom, - - // targets - _nextTarget:: 0, - addTarget(target):: self { - local nextTarget = super._nextTarget, - _nextTarget: nextTarget + 1, - targets+: [target { refId: std.char(std.codepoint('A') + nextTarget) }], - }, - addTargets(targets):: std.foldl(function(p, t) p.addTarget(t), targets, self), - - // links - addLink(link):: self { - links+: [link], - }, - addLinks(links):: std.foldl(function(p, l) p.addLink(l), links, self), - - pluginVersion: pluginVersion, - } + ( - - if pluginVersion >= '7' then { - options: { - reduceOptions: { - values: allValues, - [if allValues && valueLimit != null then 'limit']: valueLimit, - calcs: [ - reducerFunction, - ], - fields: fields, - }, - showThresholdLabels: showThresholdLabels, - showThresholdMarkers: showThresholdMarkers, - }, - fieldConfig: { - defaults: { - unit: unit, - [if min != null then 'min']: min, - [if max != null then 'max']: max, - [if decimals != null then 'decimals']: decimals, - [if displayName != null then 'displayName']: displayName, - [if noValue != null then 'noValue']: noValue, - thresholds: { - mode: thresholdsMode, - steps: [], - }, - mappings: [], - links: [], - }, - }, - - // thresholds - addThreshold(step):: self { - fieldConfig+: { defaults+: { thresholds+: { steps+: [step] } } }, - }, - - // mappings - _nextMapping:: 0, - addMapping(mapping):: self { - local nextMapping = super._nextMapping, - _nextMapping: nextMapping + 1, - fieldConfig+: { defaults+: { mappings+: [mapping { id: nextMapping }] } }, - }, - - // data links - addDataLink(link):: self { - fieldConfig+: { defaults+: { links+: [link] } }, - }, - - // Overrides - addOverride( - matcher=null, - properties=null, - ):: self { - fieldConfig+: { - overrides+: [ - { - [if matcher != null then 'matcher']: matcher, - [if properties != null then 'properties']: properties, - }, - ], - }, - }, - addOverrides(overrides):: std.foldl(function(p, o) p.addOverride(o.matcher, o.properties), overrides, self), - } else { - - options: { - fieldOptions: { - values: allValues, - [if allValues && valueLimit != null then 'limit']: valueLimit, - calcs: [ - reducerFunction, - ], - fields: fields, - defaults: { - unit: unit, - [if min != null then 'min']: min, - [if max != null then 'max']: max, - [if decimals != null then 'decimals']: decimals, - [if displayName != null then 'displayName']: displayName, - [if noValue != null then 'noValue']: noValue, - thresholds: { - mode: thresholdsMode, - steps: [], - }, - mappings: [], - links: [], - }, - }, - showThresholdLabels: showThresholdLabels, - showThresholdMarkers: showThresholdMarkers, - }, - - // thresholds - addThreshold(step):: self { - options+: { fieldOptions+: { defaults+: { thresholds+: { steps+: [step] } } } }, - }, - - // mappings - _nextMapping:: 0, - addMapping(mapping):: self { - local nextMapping = super._nextMapping, - _nextMapping: nextMapping + 1, - options+: { fieldOptions+: { defaults+: { mappings+: [mapping { id: nextMapping }] } } }, - }, - - // data links - addDataLink(link):: self { - options+: { fieldOptions+: { defaults+: { links+: [link] } } }, - }, - } - ) + { - addThresholds(steps):: std.foldl(function(p, s) p.addThreshold(s), steps, self), - addMappings(mappings):: std.foldl(function(p, m) p.addMapping(m), mappings, self), - addDataLinks(links):: std.foldl(function(p, l) p.addDataLink(l), links, self), - }, -} diff --git a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/grafana.libsonnet b/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/grafana.libsonnet deleted file mode 100644 index b94ddf3916a0..000000000000 --- a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/grafana.libsonnet +++ /dev/null @@ -1,32 +0,0 @@ -{ - alertlist:: import 'alertlist.libsonnet', - dashboard:: import 'dashboard.libsonnet', - template:: import 'template.libsonnet', - text:: import 'text.libsonnet', - timepicker:: import 'timepicker.libsonnet', - row:: import 'row.libsonnet', - link:: import 'link.libsonnet', - annotation:: import 'annotation.libsonnet', - graphPanel:: import 'graph_panel.libsonnet', - logPanel:: import 'log_panel.libsonnet', - tablePanel:: import 'table_panel.libsonnet', - singlestat:: import 'singlestat.libsonnet', - pieChartPanel:: import 'pie_chart_panel.libsonnet', - influxdb:: import 'influxdb.libsonnet', - prometheus:: import 'prometheus.libsonnet', - loki:: import 'loki.libsonnet', - sql:: import 'sql.libsonnet', - graphite:: import 'graphite.libsonnet', - alertCondition:: import 'alert_condition.libsonnet', - cloudmonitoring:: import 'cloudmonitoring.libsonnet', - cloudwatch:: import 'cloudwatch.libsonnet', - elasticsearch:: import 'elasticsearch.libsonnet', - heatmapPanel:: import 'heatmap_panel.libsonnet', - dashlist:: import 'dashlist.libsonnet', - pluginlist:: import 'pluginlist.libsonnet', - gauge:: error 'gauge is removed, migrate to gaugePanel', - gaugePanel:: import 'gauge_panel.libsonnet', - barGaugePanel:: import 'bar_gauge_panel.libsonnet', - statPanel:: import 'stat_panel.libsonnet', - transformation:: import 'transformation.libsonnet', -} diff --git a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/graph_panel.libsonnet b/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/graph_panel.libsonnet deleted file mode 100644 index 872769579cfc..000000000000 --- a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/graph_panel.libsonnet +++ /dev/null @@ -1,313 +0,0 @@ -{ - /** - * Creates a [graph panel](https://grafana.com/docs/grafana/latest/panels/visualizations/graph-panel/). - * It requires the graph panel plugin in grafana, which is built-in. - * - * @name graphPanel.new - * - * @param title The title of the graph panel. - * @param description (optional) The description of the panel - * @param span (optional) Width of the panel - * @param datasource (optional) Datasource - * @param fill (default `1`) , integer from 0 to 10 - * @param fillGradient (default `0`) , integer from 0 to 10 - * @param linewidth (default `1`) Line Width, integer from 0 to 10 - * @param decimals (optional) Override automatic decimal precision for legend and tooltip. If null, not added to the json output. - * @param decimalsY1 (optional) Override automatic decimal precision for the first Y axis. If null, use decimals parameter. - * @param decimalsY2 (optional) Override automatic decimal precision for the second Y axis. If null, use decimals parameter. - * @param min_span (optional) Min span - * @param format (default `short`) Unit of the Y axes - * @param formatY1 (optional) Unit of the first Y axis - * @param formatY2 (optional) Unit of the second Y axis - * @param min (optional) Min of the Y axes - * @param max (optional) Max of the Y axes - * @param maxDataPoints (optional) If the data source supports it, sets the maximum number of data points for each series returned. - * @param labelY1 (optional) Label of the first Y axis - * @param labelY2 (optional) Label of the second Y axis - * @param x_axis_mode (default `'time'`) X axis mode, one of [time, series, histogram] - * @param x_axis_values (default `'total'`) Chosen value of series, one of [avg, min, max, total, count] - * @param x_axis_buckets (optional) Restricts the x axis to this amount of buckets - * @param x_axis_min (optional) Restricts the x axis to display from this value if supplied - * @param x_axis_max (optional) Restricts the x axis to display up to this value if supplied - * @param lines (default `true`) Display lines - * @param points (default `false`) Display points - * @param pointradius (default `5`) Radius of the points, allowed values are 0.5 or [1 ... 10] with step 1 - * @param bars (default `false`) Display bars - * @param staircase (default `false`) Display line as staircase - * @param dashes (default `false`) Display line as dashes - * @param stack (default `false`) Whether to stack values - * @param repeat (optional) Name of variable that should be used to repeat this panel. - * @param repeatDirection (default `'h'`) 'h' for horizontal or 'v' for vertical. - * @param legend_show (default `true`) Show legend - * @param legend_values (default `false`) Show values in legend - * @param legend_min (default `false`) Show min in legend - * @param legend_max (default `false`) Show max in legend - * @param legend_current (default `false`) Show current in legend - * @param legend_total (default `false`) Show total in legend - * @param legend_avg (default `false`) Show average in legend - * @param legend_alignAsTable (default `false`) Show legend as table - * @param legend_rightSide (default `false`) Show legend to the right - * @param legend_sideWidth (optional) Legend width - * @param legend_sort (optional) Sort order of legend - * @param legend_sortDesc (optional) Sort legend descending - * @param aliasColors (optional) Define color mappings for graphs - * @param thresholds (optional) An array of graph thresholds - * @param logBase1Y (default `1`) Value of logarithm base of the first Y axis - * @param logBase2Y (default `1`) Value of logarithm base of the second Y axis - * @param transparent (default `false`) Whether to display the panel without a background. - * @param value_type (default `'individual'`) Type of tooltip value - * @param shared_tooltip (default `true`) Allow to group or spit tooltips on mouseover within a chart - * @param percentage (defaut: false) show as percentages - * @param interval (defaut: null) A lower limit for the interval. - - * - * @method addTarget(target) Adds a target object. - * @method addTargets(targets) Adds an array of targets. - * @method addSeriesOverride(override) - * @method addYaxis(format,min,max,label,show,logBase,decimals) Adds a Y axis to the graph - * @method addAlert(alert) Adds an alert - * @method addLink(link) Adds a [panel link](https://grafana.com/docs/grafana/latest/linking/panel-links/) - * @method addLinks(links) Adds an array of links. - */ - new( - title, - span=null, - fill=1, - fillGradient=0, - linewidth=1, - decimals=null, - decimalsY1=null, - decimalsY2=null, - description=null, - min_span=null, - format='short', - formatY1=null, - formatY2=null, - min=null, - max=null, - labelY1=null, - labelY2=null, - x_axis_mode='time', - x_axis_values='total', - x_axis_buckets=null, - x_axis_min=null, - x_axis_max=null, - lines=true, - datasource=null, - points=false, - pointradius=5, - bars=false, - staircase=false, - height=null, - nullPointMode='null', - dashes=false, - stack=false, - repeat=null, - repeatDirection=null, - sort=0, - show_xaxis=true, - legend_show=true, - legend_values=false, - legend_min=false, - legend_max=false, - legend_current=false, - legend_total=false, - legend_avg=false, - legend_alignAsTable=false, - legend_rightSide=false, - legend_sideWidth=null, - legend_hideEmpty=null, - legend_hideZero=null, - legend_sort=null, - legend_sortDesc=null, - aliasColors={}, - thresholds=[], - links=[], - logBase1Y=1, - logBase2Y=1, - transparent=false, - value_type='individual', - shared_tooltip=true, - percentage=false, - maxDataPoints=null, - time_from=null, - time_shift=null, - interval=null - ):: { - title: title, - [if span != null then 'span']: span, - [if min_span != null then 'minSpan']: min_span, - [if decimals != null then 'decimals']: decimals, - type: 'graph', - datasource: datasource, - targets: [ - ], - [if description != null then 'description']: description, - [if height != null then 'height']: height, - renderer: 'flot', - yaxes: [ - self.yaxe( - if formatY1 != null then formatY1 else format, - min, - max, - decimals=(if decimalsY1 != null then decimalsY1 else decimals), - logBase=logBase1Y, - label=labelY1 - ), - self.yaxe( - if formatY2 != null then formatY2 else format, - min, - max, - decimals=(if decimalsY2 != null then decimalsY2 else decimals), - logBase=logBase2Y, - label=labelY2 - ), - ], - xaxis: { - show: show_xaxis, - mode: x_axis_mode, - name: null, - values: if x_axis_mode == 'series' then [x_axis_values] else [], - buckets: if x_axis_mode == 'histogram' then x_axis_buckets else null, - [if x_axis_min != null then 'min']: x_axis_min, - [if x_axis_max != null then 'max']: x_axis_max, - }, - lines: lines, - fill: fill, - fillGradient: fillGradient, - linewidth: linewidth, - dashes: dashes, - dashLength: 10, - spaceLength: 10, - points: points, - pointradius: pointradius, - bars: bars, - stack: stack, - percentage: percentage, - [if maxDataPoints != null then 'maxDataPoints']: maxDataPoints, - legend: { - show: legend_show, - values: legend_values, - min: legend_min, - max: legend_max, - current: legend_current, - total: legend_total, - alignAsTable: legend_alignAsTable, - rightSide: legend_rightSide, - sideWidth: legend_sideWidth, - avg: legend_avg, - [if legend_hideEmpty != null then 'hideEmpty']: legend_hideEmpty, - [if legend_hideZero != null then 'hideZero']: legend_hideZero, - [if legend_sort != null then 'sort']: legend_sort, - [if legend_sortDesc != null then 'sortDesc']: legend_sortDesc, - }, - nullPointMode: nullPointMode, - steppedLine: staircase, - tooltip: { - value_type: value_type, - shared: shared_tooltip, - sort: if sort == 'decreasing' then 2 else if sort == 'increasing' then 1 else sort, - }, - timeFrom: time_from, - timeShift: time_shift, - [if interval != null then 'interval']: interval, - [if transparent == true then 'transparent']: transparent, - aliasColors: aliasColors, - repeat: repeat, - [if repeatDirection != null then 'repeatDirection']: repeatDirection, - seriesOverrides: [], - thresholds: thresholds, - links: links, - yaxe( - format='short', - min=null, - max=null, - label=null, - show=true, - logBase=1, - decimals=null, - ):: { - label: label, - show: show, - logBase: logBase, - min: min, - max: max, - format: format, - [if decimals != null then 'decimals']: decimals, - }, - _nextTarget:: 0, - addTarget(target):: self { - // automatically ref id in added targets. - // https://github.com/kausalco/public/blob/master/klumps/grafana.libsonnet - local nextTarget = super._nextTarget, - _nextTarget: nextTarget + 1, - targets+: [target { refId: std.char(std.codepoint('A') + nextTarget) }], - }, - addTargets(targets):: std.foldl(function(p, t) p.addTarget(t), targets, self), - addSeriesOverride(override):: self { - seriesOverrides+: [override], - }, - resetYaxes():: self { - yaxes: [], - }, - addYaxis( - format='short', - min=null, - max=null, - label=null, - show=true, - logBase=1, - decimals=null, - ):: self { - yaxes+: [self.yaxe(format, min, max, label, show, logBase, decimals)], - }, - addAlert( - name, - executionErrorState='alerting', - forDuration='5m', - frequency='60s', - handler=1, - message='', - noDataState='no_data', - notifications=[], - alertRuleTags={}, - ):: self { - local it = self, - _conditions:: [], - alert: { - name: name, - conditions: it._conditions, - executionErrorState: executionErrorState, - 'for': forDuration, - frequency: frequency, - handler: handler, - noDataState: noDataState, - notifications: notifications, - message: message, - alertRuleTags: alertRuleTags, - }, - addCondition(condition):: self { - _conditions+: [condition], - }, - addConditions(conditions):: std.foldl(function(p, c) p.addCondition(c), conditions, it), - }, - addLink(link):: self { - links+: [link], - }, - addLinks(links):: std.foldl(function(p, t) p.addLink(t), links, self), - addOverride( - matcher=null, - properties=null, - ):: self { - fieldConfig+: { - overrides+: [ - { - [if matcher != null then 'matcher']: matcher, - [if properties != null then 'properties']: properties, - }, - ], - }, - }, - addOverrides(overrides):: std.foldl(function(p, o) p.addOverride(o.matcher, o.properties), overrides, self), - }, -} diff --git a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/graphite.libsonnet b/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/graphite.libsonnet deleted file mode 100644 index 46a011335238..000000000000 --- a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/graphite.libsonnet +++ /dev/null @@ -1,29 +0,0 @@ -{ - /** - * Creates a [Graphite target](https://grafana.com/docs/grafana/latest/datasources/graphite/) - * - * @name graphite.target - * - * @param target Graphite Query. Nested queries are possible by adding the query reference (refId). - * @param targetFull (optional) Expanding the @target. Used in nested queries. - * @param hide (default `false`) Disable query on graph. - * @param textEditor (default `false`) Enable raw query mode. - * @param datasource (optional) Datasource. - - * @return Panel target - */ - target( - target, - targetFull=null, - hide=false, - textEditor=false, - datasource=null, - ):: { - target: target, - hide: hide, - textEditor: textEditor, - - [if targetFull != null then 'targetFull']: targetFull, - [if datasource != null then 'datasource']: datasource, - }, -} diff --git a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/heatmap_panel.libsonnet b/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/heatmap_panel.libsonnet deleted file mode 100644 index 5e9a04c49f93..000000000000 --- a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/heatmap_panel.libsonnet +++ /dev/null @@ -1,150 +0,0 @@ -{ - /** - * Creates a [heatmap panel](https://grafana.com/docs/grafana/latest/panels/visualizations/heatmap/). - * Requires the heatmap panel plugin in Grafana, which is built-in. - * - * @name heatmapPanel.new - * - * @param title The title of the heatmap panel - * @param description (optional) Description of panel - * @param datasource (optional) Datasource - * @param min_span (optional) Min span - * @param span (optional) Width of the panel - * @param cards_cardPadding (optional) How much padding to put between bucket cards - * @param cards_cardRound (optional) How much rounding should be applied to the bucket card shape - * @param color_cardColor (default `'#b4ff00'`) Hex value of color used when color_colorScheme is 'opacity' - * @param color_colorScale (default `'sqrt'`) How to scale the color range, 'linear' or 'sqrt' - * @param color_colorScheme (default `'interpolateOranges'`) TODO: document - * @param color_exponent (default `0.5`) TODO: document - * @param color_max (optional) The value for the end of the color range - * @param color_min (optional) The value for the beginning of the color range - * @param color_mode (default `'spectrum'`) How to display difference in frequency with color - * @param dataFormat (default `'timeseries'`) How to format the data - * @param highlightCards (default `true`) TODO: document - * @param hideZeroBuckets (default `false`) Whether or not to hide empty buckets, default is false - * @param legend_show (default `false`) Show legend - * @param minSpan (optional) Minimum span of the panel when repeated on a template variable - * @param repeat (optional) Variable used to repeat the heatmap panel - * @param repeatDirection (optional) Which direction to repeat the panel, 'h' for horizontal and 'v' for vertically - * @param tooltipDecimals (optional) The number of decimal places to display in the tooltip - * @param tooltip_show (default `true`) Whether or not to display a tooltip when hovering over the heatmap - * @param tooltip_showHistogram (default `false`) Whether or not to display a histogram in the tooltip - * @param xAxis_show (default `true`) Whether or not to show the X axis, default true - * @param xBucketNumber (optional) Number of buckets for the X axis - * @param xBucketSize (optional) Size of X axis buckets. Number or interval(10s, 15h, etc.) Has priority over xBucketNumber - * @param yAxis_decimals (optional) Override automatic decimal precision for the Y axis - * @param yAxis_format (default `'short'`) Unit of the Y axis - * @param yAxis_logBase (default `1`) Only if dataFormat is 'timeseries' - * @param yAxis_min (optional) Only if dataFormat is 'timeseries', min of the Y axis - * @param yAxis_max (optional) Only if dataFormat is 'timeseries', max of the Y axis - * @param yAxis_show (default `true`) Whether or not to show the Y axis - * @param yAxis_splitFactor (optional) TODO: document - * @param yBucketBound (default `'auto'`) Which bound ('lower' or 'upper') of the bucket to use - * @param yBucketNumber (optional) Number of buckets for the Y axis - * @param yBucketSize (optional) Size of Y axis buckets. Has priority over yBucketNumber - * @param maxDataPoints (optional) The maximum data points per series. Used directly by some data sources and used in calculation of auto interval. With streaming data this value is used for the rolling buffer. - * - * @method addTarget(target) Adds a target object. - * @method addTargets(targets) Adds an array of targets. - */ - new( - title, - datasource=null, - description=null, - cards_cardPadding=null, - cards_cardRound=null, - color_cardColor='#b4ff00', - color_colorScale='sqrt', - color_colorScheme='interpolateOranges', - color_exponent=0.5, - color_max=null, - color_min=null, - color_mode='spectrum', - dataFormat='timeseries', - highlightCards=true, - hideZeroBuckets=false, - legend_show=false, - minSpan=null, - span=null, - repeat=null, - repeatDirection=null, - tooltipDecimals=null, - tooltip_show=true, - tooltip_showHistogram=false, - xAxis_show=true, - xBucketNumber=null, - xBucketSize=null, - yAxis_decimals=null, - yAxis_format='short', - yAxis_logBase=1, - yAxis_min=null, - yAxis_max=null, - yAxis_show=true, - yAxis_splitFactor=null, - yBucketBound='auto', - yBucketNumber=null, - yBucketSize=null, - maxDataPoints=null, - ):: { - title: title, - type: 'heatmap', - [if description != null then 'description']: description, - datasource: datasource, - cards: { - cardPadding: cards_cardPadding, - cardRound: cards_cardRound, - }, - color: { - mode: color_mode, - cardColor: color_cardColor, - colorScale: color_colorScale, - exponent: color_exponent, - [if color_mode == 'spectrum' then 'colorScheme']: color_colorScheme, - [if color_max != null then 'max']: color_max, - [if color_min != null then 'min']: color_min, - }, - [if dataFormat != null then 'dataFormat']: dataFormat, - heatmap: {}, - hideZeroBuckets: hideZeroBuckets, - highlightCards: highlightCards, - legend: { - show: legend_show, - }, - [if minSpan != null then 'minSpan']: minSpan, - [if span != null then 'span']: span, - [if repeat != null then 'repeat']: repeat, - [if repeatDirection != null then 'repeatDirection']: repeatDirection, - tooltip: { - show: tooltip_show, - showHistogram: tooltip_showHistogram, - }, - [if tooltipDecimals != null then 'tooltipDecimals']: tooltipDecimals, - xAxis: { - show: xAxis_show, - }, - xBucketNumber: if dataFormat == 'timeseries' && xBucketSize != null then xBucketNumber else null, - xBucketSize: if dataFormat == 'timeseries' && xBucketSize != null then xBucketSize else null, - yAxis: { - decimals: yAxis_decimals, - [if dataFormat == 'timeseries' then 'logBase']: yAxis_logBase, - format: yAxis_format, - [if dataFormat == 'timeseries' then 'max']: yAxis_max, - [if dataFormat == 'timeseries' then 'min']: yAxis_min, - show: yAxis_show, - splitFactor: yAxis_splitFactor, - }, - yBucketBound: yBucketBound, - [if dataFormat == 'timeseries' then 'yBucketNumber']: yBucketNumber, - [if dataFormat == 'timeseries' then 'yBucketSize']: yBucketSize, - [if maxDataPoints != null then 'maxDataPoints']: maxDataPoints, - - _nextTarget:: 0, - addTarget(target):: self { - local nextTarget = super._nextTarget, - _nextTarget: nextTarget + 1, - targets+: [target { refId: std.char(std.codepoint('A') + nextTarget) }], - }, - addTargets(targets):: std.foldl(function(p, t) p.addTarget(t), targets, self), - }, - -} diff --git a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/influxdb.libsonnet b/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/influxdb.libsonnet deleted file mode 100644 index dd7c4fd4e953..000000000000 --- a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/influxdb.libsonnet +++ /dev/null @@ -1,104 +0,0 @@ -{ - /** - * Creates an [InfluxDB target](https://grafana.com/docs/grafana/latest/datasources/influxdb/) - * - * @name influxdb.target - * - * @param query Raw InfluxQL statement - * - * @param alias (optional) 'Alias By' pattern - * @param datasource (optional) Datasource - * @param hide (optional) Disable query on graph - * - * @param rawQuery (optional) Enable/disable raw query mode - * - * @param policy (default: `'default'`) Tagged query 'From' policy - * @param measurement (optional) Tagged query 'From' measurement - * @param group_time (default: `'$__interval'`) 'Group by' time condition (if set to null, do not groups by time) - * @param group_tags (optional) 'Group by' tags list - * @param fill (default: `'none'`) 'Group by' missing values fill mode (works only with 'Group by time()') - * - * @param resultFormat (default: `'time_series'`) Format results as 'Time series' or 'Table' - * - * @return Panel target - */ - target( - query=null, - - alias=null, - datasource=null, - hide=null, - - rawQuery=null, - - policy='default', - measurement=null, - - group_time='$__interval', - group_tags=[], - fill='none', - - resultFormat='time_series', - ):: { - local it = self, - - [if alias != null then 'alias']: alias, - [if datasource != null then 'datasource']: datasource, - [if hide != null then 'hide']: hide, - - [if query != null then 'query']: query, - [if rawQuery != null then 'rawQuery']: rawQuery, - [if rawQuery == null && query != null then 'rawQuery']: true, - - policy: policy, - [if measurement != null then 'measurement']: measurement, - tags: [], - select: [], - groupBy: - if group_time != null then - [{ type: 'time', params: [group_time] }] + - [{ type: 'tag', params: [tag_name] } for tag_name in group_tags] + - [{ type: 'fill', params: [fill] }] - else - [{ type: 'tag', params: [tag_name] } for tag_name in group_tags], - - resultFormat: resultFormat, - - where(key, operator, value, condition=null):: self { - /* - * Adds query tag condition ('Where' section) - */ - tags: - if std.length(it.tags) == 0 then - [{ key: key, operator: operator, value: value }] - else - it.tags + [{ - key: key, - operator: operator, - value: value, - condition: if condition == null then 'AND' else condition, - }], - }, - - selectField(value):: self { - /* - * Adds InfluxDB selection ('field(value)' part of 'Select' statement) - */ - select+: [[{ params: [value], type: 'field' }]], - }, - - addConverter(type, params=[]):: self { - /* - * Appends converter (aggregation, selector, etc.) to last added selection - */ - local len = std.length(it.select), - select: - if len == 1 then - [it.select[0] + [{ params: params, type: type }]] - else if len > 1 then - it.select[0:(len - 1)] + [it.select[len - 1] + [{ params: params, type: type }]] - else - [], - }, - }, -} diff --git a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/link.libsonnet b/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/link.libsonnet deleted file mode 100644 index 5e5ebd237419..000000000000 --- a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/link.libsonnet +++ /dev/null @@ -1,39 +0,0 @@ -{ - /** - * Creates [links](https://grafana.com/docs/grafana/latest/linking/linking-overview/) to navigate to other dashboards. - * - * @param title Human-readable label for the link. - * @param tags Limits the linked dashboards to only the ones with the corresponding tags. Otherwise, Grafana includes links to all other dashboards. - * @param asDropdown (default: `true`) Whether to use a dropdown (with an optional title). If `false`, displays the dashboard links side by side across the top of dashboard. - * @param includeVars (default: `false`) Whether to include template variables currently used as query parameters in the link. Any matching templates in the linked dashboard are set to the values from the link - * @param keepTime (default: `false`) Whether to include the current dashboard time range in the link (e.g. from=now-3h&to=now) - * @param icon (default: `'external link'`) Icon displayed with the link. - * @param url (default: `''`) URL of the link - * @param targetBlank (default: `false`) Whether the link will open in a new window. - * @param type (default: `'dashboards'`) - * - * @name link.dashboards - */ - dashboards( - title, - tags, - asDropdown=true, - includeVars=false, - keepTime=false, - icon='external link', - url='', - targetBlank=false, - type='dashboards', - ):: - { - asDropdown: asDropdown, - icon: icon, - includeVars: includeVars, - keepTime: keepTime, - tags: tags, - title: title, - type: type, - url: url, - targetBlank: targetBlank, - }, -} diff --git a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/log_panel.libsonnet b/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/log_panel.libsonnet deleted file mode 100644 index 747ad5f3327d..000000000000 --- a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/log_panel.libsonnet +++ /dev/null @@ -1,56 +0,0 @@ -{ - /** - * Creates a [log panel](https://grafana.com/docs/grafana/latest/panels/visualizations/logs-panel/). - * It requires the log panel plugin in grafana, which is built-in. - * - * @name logPanel.new - * - * @param title (default `''`) The title of the log panel. - * @param span (optional) Width of the panel - * @param datasource (optional) Datasource - * @showLabels (default `false`) Whether to show or hide labels - * @showTime (default `true`) Whether to show or hide time for each line - * @wrapLogMessage (default `true`) Whether to wrap log line to the next line - * @sortOrder (default `'Descending'`) sort log by time (can be 'Descending' or 'Ascending' ) - * - * @method addTarget(target) Adds a target object - * @method addTargets(targets) Adds an array of targets - */ - new( - title='', - datasource=null, - time_from=null, - time_shift=null, - showLabels=false, - showTime=true, - sortOrder='Descending', - wrapLogMessage=true, - span=12, - height=null, - ):: { - [if height != null then 'height']: height, - span: span, - datasource: datasource, - options: { - showLabels: showLabels, - showTime: showTime, - sortOrder: sortOrder, - wrapLogMessage: wrapLogMessage, - }, - targets: [ - ], - _nextTarget:: 0, - addTarget(target):: self { - // automatically ref id in added targets. - // https://github.com/kausalco/public/blob/master/klumps/grafana.libsonnet - local nextTarget = super._nextTarget, - _nextTarget: nextTarget + 1, - targets+: [target { refId: std.char(std.codepoint('A') + nextTarget) }], - }, - addTargets(targets):: std.foldl(function(p, t) p.addTarget(t), targets, self), - timeFrom: time_from, - timeShift: time_shift, - title: title, - type: 'logs', - }, -} diff --git a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/loki.libsonnet b/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/loki.libsonnet deleted file mode 100644 index 25fa79a85a8d..000000000000 --- a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/loki.libsonnet +++ /dev/null @@ -1,20 +0,0 @@ -{ - /** - * Creates a [Loki target](https://grafana.com/docs/grafana/latest/datasources/loki/) - * - * @name loki.target - * - * @param expr - * @param hide (optional) Disable query on graph. - * @param legendFormat (optional) Defines the legend. Defaults to ''. - */ - target( - expr, - hide=null, - legendFormat='', - ):: { - [if hide != null then 'hide']: hide, - expr: expr, - legendFormat: legendFormat, - }, -} diff --git a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/pie_chart_panel.libsonnet b/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/pie_chart_panel.libsonnet deleted file mode 100644 index 11719e10875f..000000000000 --- a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/pie_chart_panel.libsonnet +++ /dev/null @@ -1,72 +0,0 @@ -{ - /** - * Creates a pie chart panel. - * It requires the [pie chart panel plugin in grafana](https://grafana.com/grafana/plugins/grafana-piechart-panel), - * which needs to be explicitly installed. - * - * @name pieChartPanel.new - * - * @param title The title of the pie chart panel. - * @param description (default `''`) Description of the panel - * @param span (optional) Width of the panel - * @param min_span (optional) Min span - * @param datasource (optional) Datasource - * @param aliasColors (optional) Define color mappings - * @param pieType (default `'pie'`) Type of pie chart (one of pie or donut) - * @param showLegend (default `true`) Show legend - * @param showLegendPercentage (default `true`) Show percentage values in the legend - * @param legendType (default `'Right side'`) Type of legend (one of 'Right side', 'Under graph' or 'On graph') - * @param valueName (default `'current') Type of tooltip value - * @param repeat (optional) Variable used to repeat the pie chart - * @param repeatDirection (optional) Which direction to repeat the panel, 'h' for horizontal and 'v' for vertical - * @param maxPerRow (optional) Number of panels to display when repeated. Used in combination with repeat. - * @return A json that represents a pie chart panel - * - * @method addTarget(target) Adds a target object. - */ - new( - title, - description='', - span=null, - min_span=null, - datasource=null, - height=null, - aliasColors={}, - pieType='pie', - valueName='current', - showLegend=true, - showLegendPercentage=true, - legendType='Right side', - repeat=null, - repeatDirection=null, - maxPerRow=null, - ):: { - type: 'grafana-piechart-panel', - [if description != null then 'description']: description, - pieType: pieType, - title: title, - aliasColors: aliasColors, - [if span != null then 'span']: span, - [if min_span != null then 'minSpan']: min_span, - [if height != null then 'height']: height, - [if repeat != null then 'repeat']: repeat, - [if repeatDirection != null then 'repeatDirection']: repeatDirection, - [if maxPerRow != null then 'maxPerRow']: maxPerRow, - valueName: valueName, - datasource: datasource, - legend: { - show: showLegend, - values: true, - percentage: showLegendPercentage, - }, - legendType: legendType, - targets: [ - ], - _nextTarget:: 0, - addTarget(target):: self { - local nextTarget = super._nextTarget, - _nextTarget: nextTarget + 1, - targets+: [target { refId: std.char(std.codepoint('A') + nextTarget) }], - }, - }, -} diff --git a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/pluginlist.libsonnet b/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/pluginlist.libsonnet deleted file mode 100644 index d3f23ab0ab66..000000000000 --- a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/pluginlist.libsonnet +++ /dev/null @@ -1,23 +0,0 @@ -{ - /** - * Returns a new pluginlist panel that can be added in a row. - * It requires the pluginlist panel plugin in grafana, which is built-in. - * - * @name pluginlist.new - * - * @param title The title of the pluginlist panel. - * @param description (optional) Description of the panel - * @param limit (optional) Set maximum items in a list - * @return A json that represents a pluginlist panel - */ - new( - title, - description=null, - limit=null, - ):: { - type: 'pluginlist', - title: title, - [if limit != null then 'limit']: limit, - [if description != null then 'description']: description, - }, -} diff --git a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/prometheus.libsonnet b/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/prometheus.libsonnet deleted file mode 100644 index 46b75b05842b..000000000000 --- a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/prometheus.libsonnet +++ /dev/null @@ -1,38 +0,0 @@ -{ - /** - * Creates a [Prometheus target](https://grafana.com/docs/grafana/latest/datasources/prometheus/) - * to be added to panels. - * - * @name prometheus.target - * - * @param expr PromQL query to be exercised against Prometheus. Checkout [Prometheus documentation](https://prometheus.io/docs/prometheus/latest/querying/basics/). - * @param format (default `'time_series'`) Switch between `'table'`, `'time_series'` or `'heatmap'`. Table will only work in the Table panel. Heatmap is suitable for displaying metrics of the Histogram type on a Heatmap panel. Under the hood, it converts cumulative histograms to regular ones and sorts series by the bucket bound. - * @param intervalFactor (default `2`) - * @param legendFormat (default `''`) Controls the name of the time series, using name or pattern. For example `{{hostname}}` is replaced with the label value for the label `hostname`. - * @param datasource (optional) Name of the Prometheus datasource. Leave by default otherwise. - * @param interval (optional) Time span used to aggregate or group data points by time. By default Grafana uses an automatic interval calculated based on the width of the graph. - * @param instant (optional) Perform an "instant" query, to return only the latest value that Prometheus has scraped for the requested time series. Instant queries return results much faster than normal range queries. Use them to look up label sets. - * @param hide (optional) Set to `true` to hide the target from the panel. - * - * @return A Prometheus target to be added to panels. - */ - target( - expr, - format='time_series', - intervalFactor=2, - legendFormat='', - datasource=null, - interval=null, - instant=null, - hide=null, - ):: { - [if hide != null then 'hide']: hide, - [if datasource != null then 'datasource']: datasource, - expr: expr, - format: format, - intervalFactor: intervalFactor, - legendFormat: legendFormat, - [if interval != null then 'interval']: interval, - [if instant != null then 'instant']: instant, - }, -} diff --git a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/row.libsonnet b/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/row.libsonnet deleted file mode 100644 index b380192d05da..000000000000 --- a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/row.libsonnet +++ /dev/null @@ -1,47 +0,0 @@ -{ - /** - * Creates a [row](https://grafana.com/docs/grafana/latest/features/dashboard/dashboards/#rows). - * Rows are logical dividers within a dashboard and used to group panels together. - * - * @name row.new - * - * @param title The title of the row. - * @param showTitle (default `true` if title is set) Whether to show the row title - * @paral titleSize (default `'h6'`) The size of the title - * @param collapse (default `false`) The initial state of the row when opening the dashboard. Panels in a collapsed row are not load until the row is expanded. - * @param repeat (optional) Name of variable that should be used to repeat this row. It is recommended to use the variable in the row title as well. - * - * @method addPanels(panels) Appends an array of nested panels - * @method addPanel(panel,gridPos) Appends a nested panel, with an optional grid position in grid coordinates, e.g. `gridPos={'x':0, 'y':0, 'w':12, 'h': 9}` - */ - new( - title='Dashboard Row', - height=null, - collapse=false, - repeat=null, - showTitle=null, - titleSize='h6' - ):: { - collapse: collapse, - collapsed: collapse, - [if height != null then 'height']: height, - panels: [], - repeat: repeat, - repeatIteration: null, - repeatRowId: null, - showTitle: - if showTitle != null then - showTitle - else - title != 'Dashboard Row', - title: title, - type: 'row', - titleSize: titleSize, - addPanels(panels):: self { - panels+: panels, - }, - addPanel(panel, gridPos={}):: self { - panels+: [panel { gridPos: gridPos }], - }, - }, -} diff --git a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/singlestat.libsonnet b/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/singlestat.libsonnet deleted file mode 100644 index 78428d252d2e..000000000000 --- a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/singlestat.libsonnet +++ /dev/null @@ -1,181 +0,0 @@ -{ - /** - * Creates a singlestat panel. - * - * @name singlestat.new - * - * @param title The title of the singlestat panel. - * @param format (default `'none'`) Unit - * @param description (default `''`) - * @param interval (optional) - * @param height (optional) - * @param datasource (optional) - * @param span (optional) - * @param min_span (optional) - * @param decimals (optional) - * @param valueName (default `'avg'`) - * @param valueFontSize (default `'80%'`) - * @param prefixFontSize (default `'50%'`) - * @param postfixFontSize (default `'50%'`) - * @param mappingType (default `1`) - * @param repeat (optional) - * @param repeatDirection (optional) - * @param prefix (default `''`) - * @param postfix (default `''`) - * @param colors (default `['#299c46','rgba(237, 129, 40, 0.89)','#d44a3a']`) - * @param colorBackground (default `false`) - * @param colorValue (default `false`) - * @param thresholds (default `''`) - * @param valueMaps (default `{value: 'null',op: '=',text: 'N/A'}`) - * @param rangeMaps (default `{value: 'null',op: '=',text: 'N/A'}`) - * @param transparent (optional) - * @param sparklineFillColor (default `'rgba(31, 118, 189, 0.18)'`) - * @param sparklineFull (default `false`) - * @param sparklineLineColor (default `'rgb(31, 120, 193)'`) - * @param sparklineShow (default `false`) - * @param gaugeShow (default `false`) - * @param gaugeMinValue (default `0`) - * @param gaugeMaxValue (default `100`) - * @param gaugeThresholdMarkers (default `true`) - * @param gaugeThresholdLabels (default `false`) - * @param timeFrom (optional) - * @param links (optional) - * @param tableColumn (default `''`) - * @param maxPerRow (optional) - * @param maxDataPoints (default `100`) - * - * @method addTarget(target) Adds a target object. - */ - new( - title, - format='none', - description='', - interval=null, - height=null, - datasource=null, - span=null, - min_span=null, - decimals=null, - valueName='avg', - valueFontSize='80%', - prefixFontSize='50%', - postfixFontSize='50%', - mappingType=1, - repeat=null, - repeatDirection=null, - prefix='', - postfix='', - colors=[ - '#299c46', - 'rgba(237, 129, 40, 0.89)', - '#d44a3a', - ], - colorBackground=false, - colorValue=false, - thresholds='', - valueMaps=[ - { - value: 'null', - op: '=', - text: 'N/A', - }, - ], - rangeMaps=[ - { - from: 'null', - to: 'null', - text: 'N/A', - }, - ], - transparent=null, - sparklineFillColor='rgba(31, 118, 189, 0.18)', - sparklineFull=false, - sparklineLineColor='rgb(31, 120, 193)', - sparklineShow=false, - gaugeShow=false, - gaugeMinValue=0, - gaugeMaxValue=100, - gaugeThresholdMarkers=true, - gaugeThresholdLabels=false, - timeFrom=null, - links=[], - tableColumn='', - maxPerRow=null, - maxDataPoints=100, - ):: - { - [if height != null then 'height']: height, - [if description != '' then 'description']: description, - [if repeat != null then 'repeat']: repeat, - [if repeatDirection != null then 'repeatDirection']: repeatDirection, - [if transparent != null then 'transparent']: transparent, - [if min_span != null then 'minSpan']: min_span, - title: title, - [if span != null then 'span']: span, - type: 'singlestat', - datasource: datasource, - targets: [ - ], - links: links, - [if decimals != null then 'decimals']: decimals, - maxDataPoints: maxDataPoints, - interval: interval, - cacheTimeout: null, - format: format, - prefix: prefix, - postfix: postfix, - nullText: null, - valueMaps: valueMaps, - [if maxPerRow != null then 'maxPerRow']: maxPerRow, - mappingTypes: [ - { - name: 'value to text', - value: 1, - }, - { - name: 'range to text', - value: 2, - }, - ], - rangeMaps: rangeMaps, - mappingType: - if mappingType == 'value' - then - 1 - else if mappingType == 'range' - then - 2 - else - mappingType, - nullPointMode: 'connected', - valueName: valueName, - prefixFontSize: prefixFontSize, - valueFontSize: valueFontSize, - postfixFontSize: postfixFontSize, - thresholds: thresholds, - [if timeFrom != null then 'timeFrom']: timeFrom, - colorBackground: colorBackground, - colorValue: colorValue, - colors: colors, - gauge: { - show: gaugeShow, - minValue: gaugeMinValue, - maxValue: gaugeMaxValue, - thresholdMarkers: gaugeThresholdMarkers, - thresholdLabels: gaugeThresholdLabels, - }, - sparkline: { - fillColor: sparklineFillColor, - full: sparklineFull, - lineColor: sparklineLineColor, - show: sparklineShow, - }, - tableColumn: tableColumn, - _nextTarget:: 0, - addTarget(target):: self { - local nextTarget = super._nextTarget, - _nextTarget: nextTarget + 1, - targets+: [target { refId: std.char(std.codepoint('A') + nextTarget) }], - }, - }, -} diff --git a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/sql.libsonnet b/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/sql.libsonnet deleted file mode 100644 index ab48543fe7d9..000000000000 --- a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/sql.libsonnet +++ /dev/null @@ -1,23 +0,0 @@ -{ - /** - * Creates an SQL target. - * - * @name sql.target - * - * @param rawSql The SQL query - * @param datasource (optional) - * @param format (default `'time_series'`) - * @param alias (optional) - */ - target( - rawSql, - datasource=null, - format='time_series', - alias=null, - ):: { - [if datasource != null then 'datasource']: datasource, - format: format, - [if alias != null then 'alias']: alias, - rawSql: rawSql, - }, -} diff --git a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/stat_panel.libsonnet b/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/stat_panel.libsonnet deleted file mode 100644 index 5d1e5e7f6a44..000000000000 --- a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/stat_panel.libsonnet +++ /dev/null @@ -1,222 +0,0 @@ -{ - /** - * Creates a [stat panel](https://grafana.com/docs/grafana/latest/panels/visualizations/stat-panel/). - * - * @name statPanel.new - * - * @param title Panel title. - * @param description (optional) Panel description. - * @param transparent (default `false`) Whether to display the panel without a background. - * @param datasource (optional) Panel datasource. - * @param allValues (default `false`) Show all values instead of reducing to one. - * @param valueLimit (optional) Limit of values in all values mode. - * @param reducerFunction (default `'mean'`) Function to use to reduce values to when using single value. - * @param fields (default `''`) Fields that should be included in the panel. - * @param orientation (default `'auto'`) Stacking direction in case of multiple series or fields. - * @param colorMode (default `'value'`) 'value' or 'background'. - * @param graphMode (default `'area'`) 'none' or 'area' to enable sparkline mode. - * @param textMode (default `'auto'`) Control if name and value is displayed or just name. - * @param justifyMode (default `'auto'`) 'auto' or 'center'. - * @param unit (default `'none'`) Panel unit field option. - * @param min (optional) Leave empty to calculate based on all values. - * @param max (optional) Leave empty to calculate based on all values. - * @param decimals (optional) Number of decimal places to show. - * @param displayName (optional) Change the field or series name. - * @param noValue (optional) What to show when there is no value. - * @param thresholdsMode (default `'absolute'`) 'absolute' or 'percentage'. - * @param timeFrom (optional) Override the relative time range. - * @param repeat (optional) Name of variable that should be used to repeat this panel. - * @param repeatDirection (default `'h'`) 'h' for horizontal or 'v' for vertical. - * @param maxPerRow (optional) Maximum panels per row in repeat mode. - * @param pluginVersion (default `'7'`) Plugin version the panel should be modeled for. This has been tested with the default, '7', and '6.7'. - * - * @method addTarget(target) Adds a target object. - * @method addTargets(targets) Adds an array of targets. - * @method addLink(link) Adds a [panel link](https://grafana.com/docs/grafana/latest/linking/panel-links/). Argument format: `{ title: 'Link Title', url: 'https://...', targetBlank: true }`. - * @method addLinks(links) Adds an array of links. - * @method addThreshold(step) Adds a [threshold](https://grafana.com/docs/grafana/latest/panels/thresholds/) step. Argument format: `{ color: 'green', value: 0 }`. - * @method addThresholds(steps) Adds an array of threshold steps. - * @method addMapping(mapping) Adds a value mapping. - * @method addMappings(mappings) Adds an array of value mappings. - * @method addDataLink(link) Adds a data link. - * @method addDataLinks(links) Adds an array of data links. - */ - new( - title, - description=null, - transparent=false, - datasource=null, - allValues=false, - valueLimit=null, - reducerFunction='mean', - fields='', - orientation='auto', - colorMode='value', - graphMode='area', - textMode='auto', - justifyMode='auto', - unit='none', - min=null, - max=null, - decimals=null, - displayName=null, - noValue=null, - thresholdsMode='absolute', - timeFrom=null, - repeat=null, - repeatDirection='h', - maxPerRow=null, - pluginVersion='7', - ):: { - - type: 'stat', - title: title, - [if description != null then 'description']: description, - transparent: transparent, - datasource: datasource, - targets: [], - links: [], - [if repeat != null then 'repeat']: repeat, - [if repeat != null then 'repeatDirection']: repeatDirection, - [if timeFrom != null then 'timeFrom']: timeFrom, - [if repeat != null then 'maxPerRow']: maxPerRow, - - // targets - _nextTarget:: 0, - addTarget(target):: self { - local nextTarget = super._nextTarget, - _nextTarget: nextTarget + 1, - targets+: [target { refId: std.char(std.codepoint('A') + nextTarget) }], - }, - addTargets(targets):: std.foldl(function(p, t) p.addTarget(t), targets, self), - - // links - addLink(link):: self { - links+: [link], - }, - addLinks(links):: std.foldl(function(p, l) p.addLink(l), links, self), - - pluginVersion: pluginVersion, - } + ( - - if pluginVersion >= '7' then { - options: { - reduceOptions: { - values: allValues, - [if allValues && valueLimit != null then 'limit']: valueLimit, - calcs: [ - reducerFunction, - ], - fields: fields, - }, - orientation: orientation, - colorMode: colorMode, - graphMode: graphMode, - justifyMode: justifyMode, - textMode: textMode, - }, - fieldConfig: { - defaults: { - unit: unit, - [if min != null then 'min']: min, - [if max != null then 'max']: max, - [if decimals != null then 'decimals']: decimals, - [if displayName != null then 'displayName']: displayName, - [if noValue != null then 'noValue']: noValue, - thresholds: { - mode: thresholdsMode, - steps: [], - }, - mappings: [], - links: [], - }, - }, - - // thresholds - addThreshold(step):: self { - fieldConfig+: { defaults+: { thresholds+: { steps+: [step] } } }, - }, - - // mappings - _nextMapping:: 0, - addMapping(mapping):: self { - local nextMapping = super._nextMapping, - _nextMapping: nextMapping + 1, - fieldConfig+: { defaults+: { mappings+: [mapping { id: nextMapping }] } }, - }, - - // data links - addDataLink(link):: self { - fieldConfig+: { defaults+: { links+: [link] } }, - }, - - // Overrides - addOverride( - matcher=null, - properties=null, - ):: self { - fieldConfig+: { - overrides+: [ - { - [if matcher != null then 'matcher']: matcher, - [if properties != null then 'properties']: properties, - }, - ], - }, - }, - addOverrides(overrides):: std.foldl(function(p, o) p.addOverride(o.matcher, o.properties), overrides, self), - } else { - options: { - fieldOptions: { - values: allValues, - [if allValues && valueLimit != null then 'limit']: valueLimit, - calcs: [ - reducerFunction, - ], - fields: fields, - defaults: { - unit: unit, - [if min != null then 'min']: min, - [if max != null then 'max']: max, - [if decimals != null then 'decimals']: decimals, - [if displayName != null then 'displayName']: displayName, - [if noValue != null then 'noValue']: noValue, - thresholds: { - mode: thresholdsMode, - steps: [], - }, - mappings: [], - links: [], - }, - }, - orientation: orientation, - colorMode: colorMode, - graphMode: graphMode, - justifyMode: justifyMode, - }, - - // thresholds - addThreshold(step):: self { - options+: { fieldOptions+: { defaults+: { thresholds+: { steps+: [step] } } } }, - }, - - // mappings - _nextMapping:: 0, - addMapping(mapping):: self { - local nextMapping = super._nextMapping, - _nextMapping: nextMapping + 1, - options+: { fieldOptions+: { defaults+: { mappings+: [mapping { id: nextMapping }] } } }, - }, - - // data links - addDataLink(link):: self { - options+: { fieldOptions+: { defaults+: { links+: [link] } } }, - }, - } - - ) + { - addThresholds(steps):: std.foldl(function(p, s) p.addThreshold(s), steps, self), - addMappings(mappings):: std.foldl(function(p, m) p.addMapping(m), mappings, self), - addDataLinks(links):: std.foldl(function(p, l) p.addDataLink(l), links, self), - }, -} diff --git a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/table_panel.libsonnet b/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/table_panel.libsonnet deleted file mode 100644 index 4c686b3d547c..000000000000 --- a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/table_panel.libsonnet +++ /dev/null @@ -1,91 +0,0 @@ -{ - /** - * Creates a [table panel](https://grafana.com/docs/grafana/latest/panels/visualizations/table-panel/) that can be added in a row. - * It requires the table panel plugin in grafana, which is built-in. - * - * @name table.new - * - * @param title The title of the graph panel. - * @param description (optional) Description of the panel - * @param span (optional) Width of the panel - * @param height (optional) Height of the panel - * @param datasource (optional) Datasource - * @param min_span (optional) Min span - * @param styles (optional) Array of styles for the panel - * @param columns (optional) Array of columns for the panel - * @param sort (optional) Sorting instruction for the panel - * @param transform (optional) Allow table manipulation to present data as desired - * @param transparent (default: 'false') Whether to display the panel without a background - * @param links (optional) Array of links for the panel. - * @return A json that represents a table panel - * - * @method addTarget(target) Adds a target object - * @method addTargets(targets) Adds an array of targets - * @method addColumn(field, style) Adds a column - * @method hideColumn(field) Hides a column - * @method addLink(link) Adds a link - * @method addTransformation(transformation) Adds a transformation object - * @method addTransformations(transformations) Adds an array of transformations - */ - new( - title, - description=null, - span=null, - min_span=null, - height=null, - datasource=null, - styles=[], - transform=null, - transparent=false, - columns=[], - sort=null, - time_from=null, - time_shift=null, - links=[], - ):: { - type: 'table', - title: title, - [if span != null then 'span']: span, - [if min_span != null then 'minSpan']: min_span, - [if height != null then 'height']: height, - datasource: datasource, - targets: [ - ], - styles: styles, - columns: columns, - timeFrom: time_from, - timeShift: time_shift, - links: links, - [if sort != null then 'sort']: sort, - [if description != null then 'description']: description, - [if transform != null then 'transform']: transform, - [if transparent == true then 'transparent']: transparent, - _nextTarget:: 0, - addTarget(target):: self { - local nextTarget = super._nextTarget, - _nextTarget: nextTarget + 1, - targets+: [target { refId: std.char(std.codepoint('A') + nextTarget) }], - }, - addTargets(targets):: std.foldl(function(p, t) p.addTarget(t), targets, self), - addColumn(field, style):: self { - local style_ = style { pattern: field }, - local column_ = { text: field, value: field }, - styles+: [style_], - columns+: [column_], - }, - hideColumn(field):: self { - styles+: [{ - alias: field, - pattern: field, - type: 'hidden', - }], - }, - addLink(link):: self { - links+: [link], - }, - addTransformation(transformation):: self { - transformations+: [transformation], - }, - addTransformations(transformations):: std.foldl(function(p, t) p.addTransformation(t), transformations, self), - }, -} diff --git a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/template.libsonnet b/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/template.libsonnet deleted file mode 100644 index be253e19a12c..000000000000 --- a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/template.libsonnet +++ /dev/null @@ -1,289 +0,0 @@ -{ - /** - * Creates a [template](https://grafana.com/docs/grafana/latest/variables/#templates) that can be added to a dashboard. - * - * @name template.new - * - * @param name Name of variable. - * @param datasource Template [datasource](https://grafana.com/docs/grafana/latest/variables/variable-types/add-data-source-variable/) - * @param query [Query expression](https://grafana.com/docs/grafana/latest/variables/variable-types/add-query-variable/) for the datasource. - * @param label (optional) Display name of the variable dropdown. If null, then the dropdown label will be the variable name. - * @param allValues (optional) Formatting for [multi-value variables](https://grafana.com/docs/grafana/latest/variables/formatting-multi-value-variables/#formatting-multi-value-variables) - * @param tagValuesQuery (default `''`) Group values into [selectable tags](https://grafana.com/docs/grafana/latest/variables/variable-value-tags/) - * @param current (default `null`) Can be `null`, `'all'` for all, or any other custom text value. - * @param hide (default `''`) `''`: the variable dropdown displays the variable Name or Label value. `'label'`: the variable dropdown only displays the selected variable value and a down arrow. Any other value: no variable dropdown is displayed on the dashboard. - * @param regex (default `''`) Regex expression to filter or capture specific parts of the names returned by your data source query. To see examples, refer to [Filter variables with regex](https://grafana.com/docs/grafana/latest/variables/filter-variables-with-regex/). - * @param refresh (default `'never'`) `'never'`: variables queries are cached and values are not updated. This is fine if the values never change, but problematic if they are dynamic and change a lot. `'load'`: Queries the data source every time the dashboard loads. This slows down dashboard loading, because the variable query needs to be completed before dashboard can be initialized. `'time'`: Queries the data source when the dashboard time range changes. Only use this option if your variable options query contains a time range filter or is dependent on the dashboard time range. - * @param includeAll (default `false`) Whether all value option is available or not. - * @param multi (default `false`) Whether multiple values can be selected or not from variable value list. - * @param sort (default `0`) `0`: Without Sort, `1`: Alphabetical (asc), `2`: Alphabetical (desc), `3`: Numerical (asc), `4`: Numerical (desc). - * - * @return A [template](https://grafana.com/docs/grafana/latest/variables/#templates) - */ - new( - name, - datasource, - query, - label=null, - allValues=null, - tagValuesQuery='', - current=null, - hide='', - regex='', - refresh='never', - includeAll=false, - multi=false, - sort=0, - ):: - { - allValue: allValues, - current: $.current(current), - datasource: datasource, - includeAll: includeAll, - hide: $.hide(hide), - label: label, - multi: multi, - name: name, - options: [], - query: query, - refresh: $.refresh(refresh), - regex: regex, - sort: sort, - tagValuesQuery: tagValuesQuery, - tags: [], - tagsQuery: '', - type: 'query', - useTags: false, - }, - /** - * Use an [interval variable](https://grafana.com/docs/grafana/latest/variables/variable-types/add-interval-variable/) to represent time spans such as '1m', '1h', '1d'. You can think of them as a dashboard-wide "group by time" command. Interval variables change how the data is grouped in the visualization. You can also use the Auto Option to return a set number of data points per time span. - * You can use an interval variable as a parameter to group by time (for InfluxDB), date histogram interval (for Elasticsearch), or as a summarize function parameter (for Graphite). - * - * @name template.interval - * - * @param name Variable name - * @param query Comma separated values without spacing of intervals available for selection. Add `'auto'` in the query to turn on the Auto Option. Ex: `'auto,5m,10m,20m'`. - * @param current Currently selected interval. Must be one of the values in the query. `'auto'` is allowed if defined in the query. - * @param hide (default `''`) `''`: the variable dropdown displays the variable Name or Label value. `'label'`: the variable dropdown only displays the selected variable value and a down arrow. Any other value: no variable dropdown is displayed on the dashboard. - * @param label (optional) Display name of the variable dropdown. If null, then the dropdown label will be the variable name. - * @param auto_count (default `300`) Valid only if `'auto'` is defined in query. Number of times the current time range will be divided to calculate the value, similar to the Max data points query option. For example, if the current visible time range is 30 minutes, then the auto interval groups the data into 30 one-minute increments. The default value is 30 steps. - * @param auto_min (default `'10s'`) Valid only if `'auto'` is defined in query. The minimum threshold below which the step count intervals will not divide the time. To continue the 30 minute example, if the minimum interval is set to `'2m'`, then Grafana would group the data into 15 two-minute increments. - * - * @return A new interval variable for templating. - */ - interval( - name, - query, - current, - hide='', - label=null, - auto_count=300, - auto_min='10s', - ):: - { - current: $.current(current), - hide: $.hide(hide), - label: label, - name: name, - query: std.join(',', std.filter($.filterAuto, std.split(query, ','))), - refresh: 2, - type: 'interval', - auto: std.count(std.split(query, ','), 'auto') > 0, - auto_count: auto_count, - auto_min: auto_min, - }, - hide(hide):: - if hide == '' then 0 else if hide == 'label' then 1 else 2, - current(current):: { - [if current != null then 'text']: current, - [if current != null then 'value']: if current == 'auto' then - '$__auto_interval' - else if current == 'all' then - '$__all' - else - current, - }, - /** - * Data [source variables](https://grafana.com/docs/grafana/latest/variables/variable-types/add-data-source-variable/) - * allow you to quickly change the data source for an entire dashboard. - * They are useful if you have multiple instances of a data source, perhaps in different environments. - * - * @name template.datasource - * - * @param name Data source variable name. Ex: `'PROMETHEUS_DS'`. - * @param query Type of data source. Ex: `'prometheus'`. - * @param current Ex: `'Prometheus'`. - * @param hide (default `''`) `''`: the variable dropdown displays the variable Name or Label value. `'label'`: the variable dropdown only displays the selected variable value and a down arrow. Any other value: no variable dropdown is displayed on the dashboard. - * @param label (optional) Display name of the variable dropdown. If null, then the dropdown label will be the variable name. - * @param regex (default `''`) Regex filter for which data source instances to choose from in the variable value drop-down list. Leave this field empty to display all instances. - * @param refresh (default `'load'`) `'never'`: Variables queries are cached and values are not updated. This is fine if the values never change, but problematic if they are dynamic and change a lot. `'load'`: Queries the data source every time the dashboard loads. This slows down dashboard loading, because the variable query needs to be completed before dashboard can be initialized. `'time'`: Queries the data source when the dashboard time range changes. Only use this option if your variable options query contains a time range filter or is dependent on the dashboard time range. - * - * @return A [data source variable](https://grafana.com/docs/grafana/latest/variables/variable-types/add-data-source-variable/). - */ - datasource( - name, - query, - current, - hide='', - label=null, - regex='', - refresh='load', - ):: { - current: $.current(current), - hide: $.hide(hide), - label: label, - name: name, - options: [], - query: query, - refresh: $.refresh(refresh), - regex: regex, - type: 'datasource', - }, - refresh(refresh):: if refresh == 'never' - then - 0 - else if refresh == 'load' - then - 1 - else if refresh == 'time' - then - 2 - else - refresh, - filterAuto(str):: str != 'auto', - /** - * Use a [custom variable](https://grafana.com/docs/grafana/latest/variables/variable-types/add-custom-variable/) - * for values that do not change. - * - * @name template.custom - * This might be numbers, strings, or even other variables. - * @param name Variable name - * @param query Comma separated without spacing list of selectable values. - * @param current Selected value - * @param refresh (default `'never'`) `'never'`: Variables queries are cached and values are not updated. This is fine if the values never change, but problematic if they are dynamic and change a lot. `'load'`: Queries the data source every time the dashboard loads. This slows down dashboard loading, because the variable query needs to be completed before dashboard can be initialized. `'time'`: Queries the data source when the dashboard time range changes. Only use this option if your variable options query contains a time range filter or is dependent on the dashboard time range. - * @param label (default `''`) Display name of the variable dropdown. If you don’t enter a display name, then the dropdown label will be the variable name. - * @param valuelabels (default `{}`) Display names for values defined in query. For example, if `query='new,old'`, then you may display them as follows `valuelabels={new: 'nouveau', old: 'ancien'}`. - * @param multi (default `false`) Whether multiple values can be selected or not from variable value list. - * @param allValues (optional) Formatting for [multi-value variables](https://grafana.com/docs/grafana/latest/variables/formatting-multi-value-variables/#formatting-multi-value-variables) - * @param includeAll (default `false`) Whether all value option is available or not. - * @param hide (default `''`) `''`: the variable dropdown displays the variable Name or Label value. `'label'`: the variable dropdown only displays the selected variable value and a down arrow. Any other value: no variable dropdown is displayed on the dashboard. - * - * @return A custom variable. - */ - custom( - name, - query, - current, - refresh='never', - label='', - valuelabels={}, - multi=false, - allValues=null, - includeAll=false, - hide='', - ):: - { - // self has dynamic scope, so self may not be myself below. - // '$' can't be used neither as this object is not top-level object. - local custom = self, - - allValue: allValues, - current: { - // Both 'all' and 'All' are accepted for consistency. - value: if includeAll && (current == 'All' || current == 'all') then - if multi then ['$__all'] else '$__all' - else - current, - text: if std.isArray(current) then - std.join(' + ', std.map(custom.valuelabel, current)) - else - custom.valuelabel(current), - [if multi then 'selected']: true, - }, - options: std.map(self.option, self.query_array(query)), - hide: $.hide(hide), - includeAll: includeAll, - label: label, - refresh: $.refresh(refresh), - multi: multi, - name: name, - query: query, - type: 'custom', - - valuelabel(value):: if value in valuelabels then - valuelabels[value] - else value, - - option(option):: { - text: custom.valuelabel(option), - value: if includeAll && option == 'All' then '$__all' else option, - [if multi then 'selected']: if multi && std.isArray(current) then - std.member(current, option) - else if multi then - current == option - else - null, - }, - query_array(query):: std.split( - if includeAll then 'All,' + query else query, ',' - ), - }, - /** - * [Text box variables](https://grafana.com/docs/grafana/latest/variables/variable-types/add-text-box-variable/) - * display a free text input field with an optional default value. - * This is the most flexible variable, because you can enter any value. - * Use this type of variable if you have metrics with high cardinality or if you want to - * update multiple panels in a dashboard at the same time. - * - * @name template.text - * - * @param name Variable name. - * @param label (default `''`) Display name of the variable dropdown. If you don’t enter a display name, then the dropdown label will be the variable name. - * - * @return A text box variable. - */ - text( - name, - label='' - ):: - { - current: { - selected: false, - text: '', - value: '', - }, - name: name, - label: label, - query: '', - type: 'textbox', - }, - /** - * [Ad hoc filters](https://grafana.com/docs/grafana/latest/variables/variable-types/add-ad-hoc-filters/) - * allow you to add key/value filters that are automatically added to all metric queries - * that use the specified data source. Unlike other variables, you do not use ad hoc filters in queries. - * Instead, you use ad hoc filters to write filters for existing queries. - * Note: Ad hoc filter variables only work with InfluxDB, Prometheus, and Elasticsearch data sources. - * - * @name template.adhoc - * - * @param name Variable name. - * @param datasource Target data source - * @param label (optional) Display name of the variable dropdown. If you don’t enter a display name, then the dropdown label will be the variable name. - * @param hide (default `''`) `''`: the variable dropdown displays the variable Name or Label value. `'label'`: the variable dropdown only displays the selected variable value and a down arrow. Any other value: no variable dropdown is displayed on the dashboard. - * - * @return An ad hoc filter - */ - adhoc( - name, - datasource, - label=null, - hide='', - ):: - { - datasource: datasource, - hide: $.hide(hide), - label: label, - name: name, - type: 'adhoc', - }, -} diff --git a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/text.libsonnet b/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/text.libsonnet deleted file mode 100644 index 18020a67862e..000000000000 --- a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/text.libsonnet +++ /dev/null @@ -1,43 +0,0 @@ -{ - /** - * Creates a [text panel](https://grafana.com/docs/grafana/latest/panels/visualizations/text-panel/). - * - * @name text.new - * - * @param title (default `''`) Panel title. - * @param description (optional) Panel description. - * @param datasource (optional) Panel datasource. - * @param span (optional) - * @param content (default `''`) - * @param mode (default `'markdown'`) Rendering of the content: 'markdown','html', ... - * @param transparent (optional) Whether to display the panel without a background. - * @param repeat (optional) Name of variable that should be used to repeat this panel. - * @param repeatDirection (default `'h'`) 'h' for horizontal or 'v' for vertical. - * @param repeatMaxPerRow (optional) Maximum panels per row in repeat mode. - */ - new( - title='', - span=null, - mode='markdown', - content='', - transparent=null, - description=null, - datasource=null, - repeat=null, - repeatDirection=null, - repeatMaxPerRow=null, - ):: - { - [if transparent != null then 'transparent']: transparent, - title: title, - [if span != null then 'span']: span, - type: 'text', - mode: mode, - content: content, - [if description != null then 'description']: description, - datasource: datasource, - [if repeat != null then 'repeat']: repeat, - [if repeat != null then 'repeatDirection']: repeatDirection, - [if repeat != null then 'maxPerRow']: repeatMaxPerRow, - }, -} diff --git a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/timepicker.libsonnet b/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/timepicker.libsonnet deleted file mode 100644 index 9c18bef863d7..000000000000 --- a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/timepicker.libsonnet +++ /dev/null @@ -1,40 +0,0 @@ -{ - /** - * Creates a Timepicker - * - * @name timepicker.new - * - * @param refresh_intervals (default: `['5s','10s','30s','1m','5m','15m','30m','1h','2h','1d']`) Array of time durations - * @param time_options (default: `['5m','15m','1h','6h','12h','24h','2d','7d','30d']`) Array of time durations - */ - new( - refresh_intervals=[ - '5s', - '10s', - '30s', - '1m', - '5m', - '15m', - '30m', - '1h', - '2h', - '1d', - ], - time_options=[ - '5m', - '15m', - '1h', - '6h', - '12h', - '24h', - '2d', - '7d', - '30d', - ], - nowDelay=null, - ):: { - refresh_intervals: refresh_intervals, - time_options: time_options, - [if nowDelay != null then 'nowDelay']: nowDelay, - }, -} diff --git a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/transformation.libsonnet b/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/transformation.libsonnet deleted file mode 100644 index 5e62adeac471..000000000000 --- a/example/docker-compose/vendor/github.com/grafana/grafonnet-lib/grafonnet/transformation.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - /** - * @name transformation.new - */ - new( - id='', - options={} - ):: { - id: id, - options: options, - }, -} diff --git a/example/docker-compose/vendor/github.com/grafana/jsonnet-libs/grafana-builder/grafana.libsonnet b/example/docker-compose/vendor/github.com/grafana/jsonnet-libs/grafana-builder/grafana.libsonnet deleted file mode 100644 index c98e2b360619..000000000000 --- a/example/docker-compose/vendor/github.com/grafana/jsonnet-libs/grafana-builder/grafana.libsonnet +++ /dev/null @@ -1,459 +0,0 @@ -{ - dashboard(title, uid='', datasource='default'):: { - // Stuff that isn't materialised. - _nextPanel:: 1, - addRow(row):: self { - // automatically number panels in added rows. - local n = std.length(row.panels), - local nextPanel = super._nextPanel, - local panels = std.makeArray(n, function(i) - row.panels[i] { id: nextPanel + i }), - - _nextPanel: nextPanel + n, - rows+: [row { panels: panels }], - }, - - addTemplate(name, metric_name, label_name, hide=0, allValue=null):: self { - templating+: { - list+: [{ - allValue: allValue, - current: { - text: 'prod', - value: 'prod', - }, - datasource: '$datasource', - hide: hide, - includeAll: false, - label: name, - multi: false, - name: name, - options: [], - query: 'label_values(%s, %s)' % [metric_name, label_name], - refresh: 1, - regex: '', - sort: 2, - tagValuesQuery: '', - tags: [], - tagsQuery: '', - type: 'query', - useTags: false, - }], - }, - }, - - addMultiTemplate(name, metric_name, label_name, hide=0, allValue='.+'):: self { - templating+: { - list+: [{ - allValue: allValue, - current: { - selected: true, - text: 'All', - value: '$__all', - }, - datasource: '$datasource', - hide: hide, - includeAll: true, - label: name, - multi: true, - name: name, - options: [], - query: 'label_values(%s, %s)' % [metric_name, label_name], - refresh: 1, - regex: '', - sort: 2, - tagValuesQuery: '', - tags: [], - tagsQuery: '', - type: 'query', - useTags: false, - }], - }, - }, - - dashboardLinkUrl(title, url):: self { - links+: [ - { - asDropdown: false, - icon: 'external link', - includeVars: true, - keepTime: true, - tags: [], - targetBlank: true, - title: title, - tooltip: '', - type: 'link', - url: url, - }, - ], - }, - - // Stuff that is materialised. - uid: uid, - annotations: { - list: [], - }, - hideControls: false, - links: [], - rows: [], - schemaVersion: 14, - style: 'dark', - tags: [], - editable: true, - gnetId: null, - graphTooltip: 0, - templating: { - list: [ - { - current: { - text: datasource, - value: datasource, - }, - hide: 0, - label: 'Data Source', - name: 'datasource', - options: [], - query: 'prometheus', - refresh: 1, - regex: '', - type: 'datasource', - }, - ], - }, - time: { - from: 'now-1h', - to: 'now', - }, - refresh: '10s', - timepicker: { - refresh_intervals: [ - '5s', - '10s', - '30s', - '1m', - '5m', - '15m', - '30m', - '1h', - '2h', - '1d', - ], - time_options: [ - '5m', - '15m', - '1h', - '6h', - '12h', - '24h', - '2d', - '7d', - '30d', - ], - }, - timezone: 'utc', - title: title, - version: 0, - }, - - row(title):: { - _panels:: [], - addPanel(panel):: self { - _panels+: [panel], - }, - - panels: - // Automatically distribute panels within a row. - local n = std.length(self._panels); - [ - p { span: std.floor(12 / n) } - for p in self._panels - ], - - collapse: false, - height: '250px', - repeat: null, - repeatIteration: null, - repeatRowId: null, - showTitle: true, - title: title, - titleSize: 'h6', - }, - - panel(title):: { - aliasColors: {}, - bars: false, - dashLength: 10, - dashes: false, - datasource: '$datasource', - fill: 1, - legend: { - avg: false, - current: false, - max: false, - min: false, - show: true, - total: false, - values: false, - }, - lines: true, - linewidth: 1, - links: [], - nullPointMode: 'null as zero', - percentage: false, - pointradius: 5, - points: false, - renderer: 'flot', - seriesOverrides: [], - spaceLength: 10, - span: 6, - stack: false, - steppedLine: false, - targets: [], - thresholds: [], - timeFrom: null, - timeShift: null, - title: title, - tooltip: { - shared: true, - sort: 2, - value_type: 'individual', - }, - type: 'graph', - xaxis: { - buckets: null, - mode: 'time', - name: null, - show: true, - values: [], - }, - yaxes: $.yaxes('short'), - }, - - queryPanel(queries, legends, legendLink=null):: { - - local qs = - if std.type(queries) == 'string' - then [queries] - else queries, - local ls = - if std.type(legends) == 'string' - then [legends] - else legends, - - local qsandls = if std.length(ls) == std.length(qs) - then std.makeArray(std.length(qs), function(x) { q: qs[x], l: ls[x] }) - else error 'length of queries is not equal to length of legends', - - targets+: [ - { - legendLink: legendLink, - expr: ql.q, - format: 'time_series', - intervalFactor: 2, - legendFormat: ql.l, - step: 10, - } - for ql in qsandls - ], - }, - - statPanel(query, format='percentunit'):: { - type: 'singlestat', - thresholds: '70,80', - format: format, - targets: [ - { - expr: query, - format: 'time_series', - instant: true, - intervalFactor: 2, - refId: 'A', - }, - ], - }, - - tablePanel(queries, labelStyles):: { - local qs = - if std.type(queries) == 'string' - then [queries] - else queries, - - local style(labelStyle) = - if std.type(labelStyle) == 'string' - then { - alias: labelStyle, - colorMode: null, - colors: [], - dateFormat: 'YYYY-MM-DD HH:mm:ss', - decimals: 2, - thresholds: [], - type: 'string', - unit: 'short', - } - else { - alias: labelStyle.alias, - colorMode: null, - colors: [], - dateFormat: 'YYYY-MM-DD HH:mm:ss', - decimals: if std.objectHas(labelStyle, 'decimals') then labelStyle.decimals else 2, - thresholds: [], - type: if std.objectHas(labelStyle, 'type') then labelStyle.type else 'number', - unit: if std.objectHas(labelStyle, 'unit') then labelStyle.unit else 'short', - link: std.objectHas(labelStyle, 'link'), - linkTargetBlank: if std.objectHas(labelStyle, 'linkTargetBlank') then labelStyle.linkTargetBlank else false, - linkTooltip: if std.objectHas(labelStyle, 'linkTooltip') then labelStyle.linkTooltip else 'Drill down', - linkUrl: if std.objectHas(labelStyle, 'link') then labelStyle.link else '', - }, - - _styles:: { - // By default hide time. - Time: { - alias: 'Time', - dateFormat: 'YYYY-MM-DD HH:mm:ss', - type: 'hidden', - }, - } + { - [label]: style(labelStyles[label]) - for label in std.objectFields(labelStyles) - }, - - styles: [ - self._styles[pattern] { pattern: pattern } - for pattern in std.objectFields(self._styles) - ] + [style('') + { pattern: '/.*/' }], - - transform: 'table', - type: 'table', - targets: [ - { - expr: qs[i], - format: 'table', - instant: true, - intervalFactor: 2, - legendFormat: '', - step: 10, - refId: std.char(65 + i), - } - for i in std.range(0, std.length(qs) - 1) - ], - }, - - textPanel(title, markdown):: { - type: 'text', - title: title, - options: { - content: markdown, - mode: 'markdown', - }, - transparent: true, - datasource: null, - timeFrom: null, - timeShift: null, - fieldConfig: { - defaults: { - custom: {}, - }, - overrides: [], - }, - }, - - stack:: { - stack: true, - fill: 10, - linewidth: 0, - }, - - yaxes(args):: - local format = if std.type(args) == 'string' then args else null; - local options = if std.type(args) == 'object' then args else {}; - [ - { - format: format, - label: null, - logBase: 1, - max: null, - min: 0, - show: true, - } + options, - { - format: 'short', - label: null, - logBase: 1, - max: null, - min: null, - show: false, - }, - ], - - qpsPanel(selector, statusLabelName='status_code'):: { - aliasColors: { - '1xx': '#EAB839', - '2xx': '#7EB26D', - '3xx': '#6ED0E0', - '4xx': '#EF843C', - '5xx': '#E24D42', - success: '#7EB26D', - 'error': '#E24D42', - }, - targets: [ - { - expr: - ||| - sum by (status) ( - label_replace(label_replace(rate(%s[$__rate_interval]), - "status", "${1}xx", "%s", "([0-9]).."), - "status", "${1}", "%s", "([a-z]+)")) - ||| % [selector, statusLabelName, statusLabelName], - format: 'time_series', - intervalFactor: 2, - legendFormat: '{{status}}', - refId: 'A', - step: 10, - }, - ], - } + $.stack, - - latencyPanel(metricName, selector, multiplier='1e3'):: { - nullPointMode: 'null as zero', - targets: [ - { - expr: 'histogram_quantile(0.99, sum(rate(%s_bucket%s[$__rate_interval])) by (le)) * %s' % [metricName, selector, multiplier], - format: 'time_series', - intervalFactor: 2, - legendFormat: '99th Percentile', - refId: 'A', - step: 10, - }, - { - expr: 'histogram_quantile(0.50, sum(rate(%s_bucket%s[$__rate_interval])) by (le)) * %s' % [metricName, selector, multiplier], - format: 'time_series', - intervalFactor: 2, - legendFormat: '50th Percentile', - refId: 'B', - step: 10, - }, - { - expr: 'sum(rate(%s_sum%s[$__rate_interval])) * %s / sum(rate(%s_count%s[$__rate_interval]))' % [metricName, selector, multiplier, metricName, selector], - format: 'time_series', - intervalFactor: 2, - legendFormat: 'Average', - refId: 'C', - step: 10, - }, - ], - yaxes: $.yaxes('ms'), - }, - - selector:: { - eq(label, value):: { label: label, op: '=', value: value }, - neq(label, value):: { label: label, op: '!=', value: value }, - re(label, value):: { label: label, op: '=~', value: value }, - nre(label, value):: { label: label, op: '!~', value: value }, - }, - - toPrometheusSelector(selector):: - local pairs = [ - '%(label)s%(op)s"%(value)s"' % matcher - for matcher in selector - ]; - '{%s}' % std.join(', ', pairs), -} diff --git a/example/docker-compose/vendor/grafana-agent-mixin b/example/docker-compose/vendor/grafana-agent-mixin deleted file mode 120000 index 63e91aa19269..000000000000 --- a/example/docker-compose/vendor/grafana-agent-mixin +++ /dev/null @@ -1 +0,0 @@ -../../../production/grafana-agent-mixin \ No newline at end of file diff --git a/example/docker-compose/vendor/grafana-builder b/example/docker-compose/vendor/grafana-builder deleted file mode 120000 index cfa90ddb0f31..000000000000 --- a/example/docker-compose/vendor/grafana-builder +++ /dev/null @@ -1 +0,0 @@ -github.com/grafana/jsonnet-libs/grafana-builder \ No newline at end of file diff --git a/example/docker-compose/vendor/grafonnet b/example/docker-compose/vendor/grafonnet deleted file mode 120000 index fd2d163fc4f1..000000000000 --- a/example/docker-compose/vendor/grafonnet +++ /dev/null @@ -1 +0,0 @@ -github.com/grafana/grafonnet-lib/grafonnet \ No newline at end of file diff --git a/example/k3d/README.md b/example/k3d/README.md index 24830224117b..e46fb3ffa279 100644 --- a/example/k3d/README.md +++ b/example/k3d/README.md @@ -12,6 +12,7 @@ that implements a full Grafana Agent environment for testing. - Docker - [Tanka >= v0.9.2](https://github.com/grafana/tanka) - [k3d >= v4.0.0](https://github.com/rancher/k3d) +- [jsonnet-bundler >= v0.4.0](https://github.com/jsonnet-bundler/jsonnet-bundler) ### Getting Started @@ -27,6 +28,8 @@ Run the following to create your cluster: k3d image import -c agent-k3d grafana/agent:latest k3d image import -c agent-k3d grafana/agentctl:latest +# Ensure jsonnet is up to date before applying environment +jb install tk apply ./environment # Navigate to grafana.k3d.localhost:30080 in your browser to view dashboards @@ -37,17 +40,17 @@ k3d cluster delete agent-k3d ## Smoke Test Environment -The smoke test environment is used to validate samples end to end. +The smoke test environment is used to validate samples end to end. ### Running Smoke Test environment is invoked via `/scripts/smoke-test.bash` -This tool will spin up cluster of Grafana Agent, Cortex, Avalanche and [Crow](../../cmd/grafana-agent-crow/README.md) instances. The tool will then periodically kill instances and check for any failed alerts. At the end of the duration (default 3h) it will end the testing. +This tool will spin up cluster of Grafana Agent, Cortex, Avalanche and [Crow](../../cmd/grafana-agent-crow/README.md) instances. The tool will then periodically kill instances and check for any failed alerts. At the end of the duration (default 3h) it will end the testing. ### What to look for? -These alerts are viewable [here](http://prometheus.k3d.localhost:50080/alerts). +These alerts are viewable [here](http://prometheus.k3d.localhost:50080/alerts). Prometheus alerts are triggered: - If any Crow instances are not running or Crow samples are not being propagated correctly. @@ -90,4 +93,4 @@ Crow instance will check to see if the metrics that were scraped shows up in the ### Avalanche -Avalanche is used to add some additional load on the system and general testing. \ No newline at end of file +Avalanche is used to add some additional load on the system and general testing. diff --git a/example/k3d/jsonnetfile.lock.json b/example/k3d/jsonnetfile.lock.json index b08a56d1d0ea..2537becf63bd 100644 --- a/example/k3d/jsonnetfile.lock.json +++ b/example/k3d/jsonnetfile.lock.json @@ -18,8 +18,8 @@ "subdir": "grafonnet" } }, - "version": "7ab8a79738de007c407b939b35e54e84c213d542", - "sum": "q2B0w9iyqTD99PJacSpHg9XshQN7kiupxaORQcAlb2E=" + "version": "0d4f64154ee2024820396aa66841a64d851302b0", + "sum": "1DvaFCCiwjI9624YYhLPdwiEPDvLsrCOES0aBxr7wrM=" }, { "source": { diff --git a/example/k3d/scripts/smoke-test.bash b/example/k3d/scripts/smoke-test.bash index d855ca930c57..36059107d3ce 100755 --- a/example/k3d/scripts/smoke-test.bash +++ b/example/k3d/scripts/smoke-test.bash @@ -83,11 +83,12 @@ run() { echo "--- Importing local images" k3d image import -c $K3D_CLUSTER_NAME \ - grafana/agent:latest \ - grafana/agentctl:latest \ - grafana/agent-crow:latest + grafana/agent:main \ + grafana/agentctl:main \ + grafana/agent-crow:main fi + (cd $ROOT/example/k3d && jb install) tk apply $ROOT/example/k3d/smoke --dangerous-auto-approve echo "--- Spawning background tasks" diff --git a/example/k3d/smoke/main.jsonnet b/example/k3d/smoke/main.jsonnet index 1c9ab6cfe019..df4dcf8f4dc2 100644 --- a/example/k3d/smoke/main.jsonnet +++ b/example/k3d/smoke/main.jsonnet @@ -11,8 +11,8 @@ local pvc = k.core.v1.persistentVolumeClaim; local volumeMount = k.core.v1.volumeMount; local images = { - agent: 'grafana/agent:latest', - agentctl: 'grafana/agentctl:latest', + agent: 'grafana/agent:main', + agentctl: 'grafana/agentctl:main', }; local new_crow(name, selector) = diff --git a/example/k3d/vendor/1.14 b/example/k3d/vendor/1.14 deleted file mode 120000 index 0a5326624ef2..000000000000 --- a/example/k3d/vendor/1.14 +++ /dev/null @@ -1 +0,0 @@ -github.com/jsonnet-libs/k8s-alpha/1.14 \ No newline at end of file diff --git a/example/k3d/vendor/cortex-mixin b/example/k3d/vendor/cortex-mixin deleted file mode 120000 index eecdebf5cbe2..000000000000 --- a/example/k3d/vendor/cortex-mixin +++ /dev/null @@ -1 +0,0 @@ -github.com/grafana/cortex-jsonnet/cortex-mixin \ No newline at end of file diff --git a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/alerts.jsonnet b/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/alerts.jsonnet deleted file mode 100644 index 75e7c1b297a2..000000000000 --- a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/alerts.jsonnet +++ /dev/null @@ -1 +0,0 @@ -std.manifestYamlDoc((import 'mixin.libsonnet').prometheusAlerts) diff --git a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/alerts.libsonnet b/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/alerts.libsonnet deleted file mode 100644 index c6e52da89739..000000000000 --- a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/alerts.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - prometheusAlerts+:: - (import 'alerts/alerts.libsonnet') + - - (if std.setMember('tsdb', $._config.storage_engine) - then - (import 'alerts/blocks.libsonnet') + - (import 'alerts/compactor.libsonnet') - else {}) + - - { _config:: $._config }, -} diff --git a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/alerts/alert-utils.libsonnet b/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/alerts/alert-utils.libsonnet deleted file mode 100644 index e72d20c8b3fc..000000000000 --- a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/alerts/alert-utils.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - _config:: error 'must provide _config for alerts', - - namespace_matcher(prefix=''):: - if std.length($._config.alert_namespace_matcher) != 0 - then '%s namespace=~"%s"' % [prefix, $._config.alert_namespace_matcher] - else '', -} diff --git a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/alerts/alerts.libsonnet b/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/alerts/alerts.libsonnet deleted file mode 100644 index d44b8bb7e1fa..000000000000 --- a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/alerts/alerts.libsonnet +++ /dev/null @@ -1,465 +0,0 @@ -(import 'alert-utils.libsonnet') { - groups+: [ - { - name: 'cortex_alerts', - rules: [ - { - alert: 'CortexIngesterUnhealthy', - 'for': '15m', - expr: ||| - min(cortex_ring_members{state="Unhealthy", job=~"[a-z]+/distributor" %s}) by (namespace, job) > 0 - ||| % $.namespace_matcher(','), - labels: { - severity: 'critical', - }, - annotations: { - message: '{{ $labels.job }} reports more than one unhealthy ingester.', - }, - }, - { - alert: 'CortexFlushStuck', - expr: ||| - (cortex_ingester_memory_chunks / cortex_ingester_memory_series) > 1.3 - |||, - 'for': '15m', - labels: { - severity: 'critical', - }, - annotations: { - message: '{{ $labels.job }}/{{ $labels.instance }} is stuck flushing chunks.', - }, - }, - { - alert: 'CortexRequestErrors', - expr: ||| - 100 * sum(rate(cortex_request_duration_seconds_count{status_code=~"5.."}[1m])) by (namespace, job, route) - / - sum(rate(cortex_request_duration_seconds_count[1m])) by (namespace, job, route) - > 1 - |||, - 'for': '15m', - labels: { - severity: 'warning', - }, - annotations: { - message: ||| - {{ $labels.job }} {{ $labels.route }} is experiencing {{ printf "%.2f" $value }}% errors. - |||, - }, - }, - { - alert: 'CortexRequestLatency', - expr: ||| - cluster_namespace_job_route:cortex_request_duration_seconds:99quantile{route!~"metrics|/frontend.Frontend/Process"} - > - %(cortex_p99_latency_threshold_seconds)s - ||| % $._config, - 'for': '15m', - labels: { - severity: 'warning', - }, - annotations: { - message: ||| - {{ $labels.job }} {{ $labels.route }} is experiencing {{ printf "%.2f" $value }}s 99th percentile latency. - |||, - }, - }, - { - // We're syncing every 10mins, and this means with a 5min rate, we will have a NaN when syncs fail - // and we will never trigger the alert. - // We also have a 3h grace-period for creation of tables which means the we can fail for 3h before it's an outage. - alert: 'CortexTableSyncFailure', - expr: ||| - 100 * rate(cortex_table_manager_sync_duration_seconds_count{status_code!~"2.."}[15m]) - / - rate(cortex_table_manager_sync_duration_seconds_count[15m]) - > 10 - |||, - 'for': '30m', - labels: { - severity: 'critical', - }, - annotations: { - message: ||| - {{ $labels.job }} is experiencing {{ printf "%.2f" $value }}% errors syncing tables. - |||, - }, - }, - { - alert: 'CortexQueriesIncorrect', - expr: ||| - 100 * sum by (job, namespace) (rate(test_exporter_test_case_result_total{result="fail"}[5m])) - / - sum by (job, namespace) (rate(test_exporter_test_case_result_total[5m])) > 1 - |||, - 'for': '15m', - labels: { - severity: 'warning', - }, - annotations: { - message: ||| - {{ $labels.job }} is reporting incorrect results for {{ printf "%.2f" $value }}% of queries. - |||, - }, - }, - { - alert: 'CortexBadOverrides', - expr: ||| - cortex_overrides_last_reload_successful{job!~".+/table-manager|.+/alertmanager" %s} == 0 - ||| % $.namespace_matcher(','), - 'for': '15m', - labels: { - severity: 'warning', - }, - annotations: { - message: ||| - {{ $labels.job }} failed to reload overrides. - |||, - }, - }, - { - alert: 'CortexQuerierCapacityFull', - expr: ||| - prometheus_engine_queries_concurrent_max{job=~".+/querier"} - prometheus_engine_queries{job=~".+/querier"} == 0 - |||, - 'for': '5m', // We don't want to block for longer. - labels: { - severity: 'critical', - }, - annotations: { - message: ||| - {{ $labels.job }} is at capacity processing queries. - |||, - }, - }, - { - alert: 'CortexFrontendQueriesStuck', - expr: ||| - sum by (namespace) (cortex_query_frontend_queue_length{job=~".+/query-frontend" %s}) > 1 - ||| % $.namespace_matcher(','), - 'for': '5m', // We don't want to block for longer. - labels: { - severity: 'critical', - }, - annotations: { - message: ||| - {{ $labels.job }} has {{ $value }} queued up queries. - |||, - }, - }, - { - alert: 'CortexCacheRequestErrors', - expr: ||| - 100 * sum(rate(cortex_cache_request_duration_seconds_count{status_code=~"5.." %s}[1m])) by (namespace, job, method) - / - sum(rate(cortex_cache_request_duration_seconds_count{%s}[1m])) by (namespace, job, method) - > 1 - ||| % [$.namespace_matcher(','), $.namespace_matcher()], - 'for': '15m', - labels: { - severity: 'warning', - }, - annotations: { - message: ||| - {{ $labels.job }} cache {{ $labels.method }} is experiencing {{ printf "%.2f" $value }}% errors. - |||, - }, - }, - { - alert: 'CortexIngesterRestarts', - expr: ||| - rate(kube_pod_container_status_restarts_total{container="ingester" %s}[30m]) > 0 - ||| % $.namespace_matcher(','), - labels: { - severity: 'critical', - }, - annotations: { - message: '{{ $labels.namespace }}/{{ $labels.pod }} is restarting', - }, - }, - { - alert: 'CortexTransferFailed', - expr: ||| - max_over_time(cortex_shutdown_duration_seconds_count{op="transfer",status!="success" %s}[15m]) - ||| % $.namespace_matcher(','), - 'for': '5m', - labels: { - severity: 'critical', - }, - annotations: { - message: '{{ $labels.namespace }}/{{ $labels.instance }} transfer failed.', - }, - }, - { - alert: 'CortexOldChunkInMemory', - // Even though we should flush chunks after 6h, we see that 99p of age of flushed chunks is closer - // to 10 hours. - // Ignore cortex_oldest_unflushed_chunk_timestamp_seconds that are zero (eg. distributors). - expr: ||| - (time() - cortex_oldest_unflushed_chunk_timestamp_seconds > 36000) and cortex_oldest_unflushed_chunk_timestamp_seconds > 0 - |||, - 'for': '5m', - labels: { - severity: 'warning', - }, - annotations: { - message: ||| - {{ $labels.namespace }}/{{ $labels.instance }} has very old unflushed chunk in memory. - |||, - }, - }, - { - // Alert immediately if WAL is corrupt. - alert: 'CortexWALCorruption', - expr: ||| - increase(cortex_ingester_wal_corruptions_total[5m]) > 0 - |||, - labels: { - severity: 'critical', - }, - annotations: { - message: ||| - {{ $labels.namespace }}/{{ $labels.instance }} has a corrupted WAL or checkpoint. - |||, - }, - }, - { - // 1 failed checkpoint creation is a warning. - alert: 'CortexCheckpointCreationFailed', - expr: ||| - increase(cortex_ingester_checkpoint_creations_failed_total[10m]) > 0 - |||, - labels: { - severity: 'warning', - }, - annotations: { - message: ||| - {{ $labels.namespace }}/{{ $labels.instance }} failed to create checkpoint. - |||, - }, - }, - { - // 2 or more failed checkpoint creation in 1h means something is wrong. - alert: 'CortexCheckpointCreationFailing', - expr: ||| - increase(cortex_ingester_checkpoint_creations_failed_total[1h]) > 1 - |||, - labels: { - severity: 'critical', - }, - annotations: { - message: ||| - {{ $labels.namespace }}/{{ $labels.instance }} is failing to create checkpoint. - |||, - }, - }, - { - // 1 failed checkpoint deletion is a warning. - alert: 'CortexCheckpointDeletionFailed', - expr: ||| - increase(cortex_ingester_checkpoint_deletions_failed_total[10m]) > 0 - |||, - labels: { - severity: 'warning', - }, - annotations: { - message: ||| - {{ $labels.namespace }}/{{ $labels.instance }} failed to delete checkpoint. - |||, - }, - }, - { - // 2 or more failed checkpoint deletion in 2h means something is wrong. - // We give this more buffer than creation as this is a less critical operation. - alert: 'CortexCheckpointDeletionFailed', - expr: ||| - increase(cortex_ingester_checkpoint_deletions_failed_total[2h]) > 1 - |||, - labels: { - severity: 'critical', - }, - annotations: { - message: ||| - {{ $labels.namespace }}/{{ $labels.instance }} is failing to delete checkpoint. - |||, - }, - }, - ], - }, - { - name: 'cortex-provisioning', - rules: [ - { - alert: 'CortexProvisioningMemcachedTooSmall', - // 4 x in-memory series size = 24hrs of data. - expr: ||| - ( - 4 * - sum by(cluster, namespace) (cortex_ingester_memory_series{job=~".+/ingester"} * cortex_ingester_chunk_size_bytes_sum{job=~".+/ingester"} / cortex_ingester_chunk_size_bytes_count{job=~".+/ingester"}) - / 1e9 - ) - > - ( - sum by (cluster, namespace) (memcached_limit_bytes{job=~".+/memcached"}) / 1e9 - ) - |||, - 'for': '15m', - labels: { - severity: 'warning', - }, - annotations: { - message: ||| - Chunk memcached cluster for namespace {{ $labels.namespace }} are too small, should be at least {{ printf "%.2f" $value }}GB. - |||, - }, - }, - { - alert: 'CortexProvisioningTooManyActiveSeries', - // 1 million active series per ingester max. - expr: ||| - avg by (cluster, namespace) (cortex_ingester_memory_series{job=~".+/ingester"}) > 1.1e6 - and - sum by (cluster, namespace) (rate(cortex_ingester_received_chunks{job=~".+/ingester"}[1h])) == 0 - |||, - 'for': '1h', - labels: { - severity: 'warning', - }, - annotations: { - message: ||| - Too many active series for ingesters in namespace {{ $labels.namespace }}, add more ingesters. - |||, - }, - }, - { - alert: 'CortexProvisioningTooManyWrites', - // 80k writes / s per ingester max. - expr: ||| - avg by (cluster,namespace) (rate(cortex_ingester_ingested_samples_total[1m])) > 80e3 - |||, - 'for': '15m', - labels: { - severity: 'warning', - }, - annotations: { - message: ||| - Too much write QPS for ingesters in namespace {{ $labels.namespace }}, add more ingesters. - |||, - }, - }, - { - alert: 'CortexProvisioningTooMuchMemory', - expr: ||| - avg by (cluster, namespace) (container_memory_working_set_bytes{container_name="ingester" %s} / container_spec_memory_limit_bytes{container_name="ingester" %s}) > 0.7 - ||| % [$.namespace_matcher(','), $.namespace_matcher(',')], - 'for': '15m', - labels: { - severity: 'critical', - }, - annotations: { - message: ||| - Too much memory being used by ingesters in namespace {{ $labels.namespace }}, add more ingesters. - |||, - }, - }, - ], - }, - { - name: 'memcached', - rules: [ - { - alert: 'MemcachedDown', - expr: ||| - memcached_up == 0 - |||, - 'for': '15m', - labels: { - severity: 'critical', - }, - annotations: { - message: ||| - Memcached Instance {{ $labels.instance }} is down for more than 15mins. - |||, - }, - }, - ], - }, - { - name: 'ruler_alerts', - rules: [ - { - alert: 'CortexRulerFailedEvaluations', - expr: ||| - sum(rate(cortex_prometheus_rule_evaluation_failures_total[1m])) by (namespace, job) - / - sum(rate(cortex_prometheus_rule_evaluations_total[1m])) by (namespace, job) - > 0.01 - |||, - 'for': '5m', - labels: { - severity: 'warning', - }, - annotations: { - message: ||| - {{ $labels.job }} is experiencing {{ printf "%.2f" $value }}% errors. - |||, - }, - }, - { - alert: 'CortexRulerMissedEvaluations', - expr: ||| - sum(rate(cortex_prometheus_rule_group_iterations_missed_total[1m])) by (namespace, job) - / - sum(rate(cortex_prometheus_rule_group_iterations_total[1m])) by (namespace, job) - > 0.01 - |||, - 'for': '5m', - labels: { - severity: 'warning', - }, - annotations: { - message: ||| - {{ $labels.job }} is experiencing {{ printf "%.2f" $value }}% missed iterations. - |||, - }, - }, - { - alert: 'CortexRulerFailedRingCheck', - expr: ||| - sum(rate(cortex_ruler_ring_check_errors_total[5m])) by (namespace, job) - > 0 - |||, - 'for': '1m', - labels: { - severity: 'critical', - }, - annotations: { - message: ||| - {{ $labels.job }} is experiencing {{ printf "%.2f" $value }}% errors when checking the ring for rule group ownership. - |||, - }, - }, - ], - }, - { - name: 'gossip_alerts', - rules: [ - { - alert: 'CortexGossipMembersMismatch', - expr: ||| - memberlist_client_cluster_members_count{%s} - != on (cluster,namespace) group_left - sum(up{job=~".+/(distributor|ingester|querier)"}) by (cluster,namespace) - ||| % $.namespace_matcher(), - 'for': '5m', - labels: { - severity: 'warning', - }, - annotations: { - message: '{{ $labels.job }}/{{ $labels.instance }} sees incorrect number of gossip members.', - }, - }, - ], - }, - ], -} diff --git a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/alerts/blocks.libsonnet b/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/alerts/blocks.libsonnet deleted file mode 100644 index 822a9bc38afc..000000000000 --- a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/alerts/blocks.libsonnet +++ /dev/null @@ -1,71 +0,0 @@ -(import 'alert-utils.libsonnet') { - groups+: [ - { - name: 'cortex_blocks_alerts', - rules: [ - { - // Alert if the ingester has not shipped any block in the last 4h. - alert: 'CortexIngesterHasNotShippedBlocks', - 'for': '15m', - expr: ||| - (time() - thanos_objstore_bucket_last_successful_upload_time{job=~".+/ingester"%s} > 60 * 60 * 4) - and - (thanos_objstore_bucket_last_successful_upload_time{job=~".+/ingester"%s} > 0) - ||| % [$.namespace_matcher(','), $.namespace_matcher(',')], - labels: { - severity: 'critical', - }, - annotations: { - message: 'Cortex Ingester {{ $labels.namespace }}/{{ $labels.instance }} has not shipped any block in the last 4 hours.', - }, - }, - { - // Alert if the ingester has not shipped any block since start. - alert: 'CortexIngesterHasNotShippedBlocksSinceStart', - 'for': '4h', - expr: ||| - thanos_objstore_bucket_last_successful_upload_time{job=~".+/ingester"%s} == 0 - ||| % $.namespace_matcher(','), - labels: { - severity: 'critical', - }, - annotations: { - message: 'Cortex Ingester {{ $labels.namespace }}/{{ $labels.instance }} has not shipped any block in the last 4 hours.', - }, - }, - { - // Alert if the querier is not successfully scanning the bucket. - alert: 'CortexQuerierHasNotScanTheBucket', - 'for': '5m', - expr: ||| - (time() - cortex_querier_blocks_last_successful_scan_timestamp_seconds{%s} > 60 * 30) - and - cortex_querier_blocks_last_successful_scan_timestamp_seconds{%s} > 0 - ||| % [$.namespace_matcher(''), $.namespace_matcher('')], - labels: { - severity: 'critical', - }, - annotations: { - message: 'Cortex Querier {{ $labels.namespace }}/{{ $labels.instance }} has not successfully scanned the bucket since {{ $value | humanizeDuration }}.', - }, - }, - { - // Alert if the store-gateway is not successfully synching the bucket. - alert: 'CortexStoreGatewayHasNotSyncTheBucket', - 'for': '5m', - expr: ||| - (time() - cortex_storegateway_blocks_last_successful_sync_timestamp_seconds{%s} > 60 * 30) - and - cortex_storegateway_blocks_last_successful_sync_timestamp_seconds{%s} > 0 - ||| % [$.namespace_matcher(''), $.namespace_matcher('')], - labels: { - severity: 'critical', - }, - annotations: { - message: 'Cortex Store Gateway {{ $labels.namespace }}/{{ $labels.instance }} has not successfully synched the bucket since {{ $value | humanizeDuration }}.', - }, - }, - ], - }, - ], -} diff --git a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/alerts/compactor.libsonnet b/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/alerts/compactor.libsonnet deleted file mode 100644 index 2f2d1a17de8d..000000000000 --- a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/alerts/compactor.libsonnet +++ /dev/null @@ -1,69 +0,0 @@ -(import 'alert-utils.libsonnet') { - groups+: [ - { - name: 'cortex_compactor_alerts', - rules: [ - { - // Alert if the compactor has not successfully completed a run in the last 24h. - alert: 'CortexCompactorHasNotSuccessfullyRun', - 'for': '15m', - expr: ||| - (time() - cortex_compactor_last_successful_run_timestamp_seconds{%s} > 60 * 60 * 24) - and - (cortex_compactor_last_successful_run_timestamp_seconds{%s} > 0) - ||| % [$.namespace_matcher(''), $.namespace_matcher('')], - labels: { - severity: 'critical', - }, - annotations: { - message: 'Cortex Compactor {{ $labels.namespace }}/{{ $labels.instance }} has not successfully completed a run in the last 24 hours.', - }, - }, - { - // Alert if the compactor has not successfully completed a run since its start. - alert: 'CortexCompactorHasNotSuccessfullyRunSinceStart', - 'for': '24h', - expr: ||| - cortex_compactor_last_successful_run_timestamp_seconds{%s} == 0 - ||| % $.namespace_matcher(''), - labels: { - severity: 'critical', - }, - annotations: { - message: 'Cortex Compactor {{ $labels.namespace }}/{{ $labels.instance }} has not successfully completed a run in the last 24 hours.', - }, - }, - { - // Alert if the compactor has not uploaded anything in the last 24h. - alert: 'CortexCompactorHasNotUploadedBlocks', - 'for': '15m', - expr: ||| - (time() - thanos_objstore_bucket_last_successful_upload_time{job=~".+/compactor"%s} > 60 * 60 * 24) - and - (thanos_objstore_bucket_last_successful_upload_time{job=~".+/compactor"%s} > 0) - ||| % [$.namespace_matcher(','), $.namespace_matcher(',')], - labels: { - severity: 'critical', - }, - annotations: { - message: 'Cortex Compactor {{ $labels.namespace }}/{{ $labels.instance }} has not uploaded any block in the last 24 hours.', - }, - }, - { - // Alert if the compactor has not uploaded anything since its start. - alert: 'CortexCompactorHasNotUploadedBlocksSinceStart', - 'for': '24h', - expr: ||| - thanos_objstore_bucket_last_successful_upload_time{job=~".+/compactor"%s} == 0 - ||| % $.namespace_matcher(','), - labels: { - severity: 'critical', - }, - annotations: { - message: 'Cortex Compactor {{ $labels.namespace }}/{{ $labels.instance }} has not uploaded any block in the last 24 hours.', - }, - }, - ], - }, - ], -} diff --git a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/config.libsonnet b/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/config.libsonnet deleted file mode 100644 index 73f59c54214b..000000000000 --- a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/config.libsonnet +++ /dev/null @@ -1,42 +0,0 @@ -{ - grafanaDashboardFolder: 'Cortex', - grafanaDashboardShards: 4, - - _config+:: { - // Switch for overall storage engine. - // May contain 'chunks', 'tsdb' or both. - // Enables chunks- or tsdb- specific panels and dashboards. - storage_engine: ['chunks', 'tsdb'], - - // For chunks backend, switch for chunk index type. - // May contain 'bigtable', 'dynamodb' or 'cassandra'. - chunk_index_backend: ['bigtable', 'dynamodb', 'cassandra'], - - // For chunks backend, switch for chunk store type. - // May contain 'bigtable', 'dynamodb', 'cassandra', 's3' or 'gcs'. - chunk_store_backend: ['bigtable', 'dynamodb', 'cassandra', 's3', 'gcs'], - - // Tags for dashboards. - tags: ['cortex'], - - // If Cortex is deployed as a single binary, set to true to - // modify the job selectors in the dashboard queries. - singleBinary: false, - - job_names: { - ingester: 'ingester', - distributor: 'distributor', - querier: 'querier', - query_frontend: 'query-frontend', - table_manager: 'table-manager', - store_gateway: 'store-gateway', - gateway: 'cortex-gw', - }, - - cortex_p99_latency_threshold_seconds: 2.5, - alert_namespace_matcher: '', - - // Whether resources dashboards are enabled (based on cAdvisor metrics). - resources_dashboards_enabled: false, - }, -} diff --git a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards.jsonnet b/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards.jsonnet deleted file mode 100644 index c3ec625a2796..000000000000 --- a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards.jsonnet +++ /dev/null @@ -1,6 +0,0 @@ -local mixin = import 'mixin.libsonnet'; - -{ - [name]: std.manifestJsonEx(mixin.grafanaDashboards[name], ' ') - for name in std.objectFields(mixin.grafanaDashboards) -} diff --git a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards.libsonnet b/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards.libsonnet deleted file mode 100644 index 3eacaeb60179..000000000000 --- a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards.libsonnet +++ /dev/null @@ -1,30 +0,0 @@ -{ - grafanaDashboards+: - (import 'dashboards/queries.libsonnet') + - (import 'dashboards/reads.libsonnet') + - (import 'dashboards/ruler.libsonnet') + - (import 'dashboards/scaling.libsonnet') + - (import 'dashboards/writes.libsonnet') + - - (if std.setMember('tsdb', $._config.storage_engine) - then - (import 'dashboards/compactor.libsonnet') + - (import 'dashboards/compactor-resources.libsonnet') + - (import 'dashboards/object-store.libsonnet') - else {}) + - - (if std.setMember('chunks', $._config.storage_engine) - then import 'dashboards/chunks.libsonnet' - else {}) + - - (if std.setMember('tsdb', $._config.storage_engine) - && std.setMember('chunks', $._config.storage_engine) - then import 'dashboards/comparison.libsonnet' - else {}) + - - (if !$._config.resources_dashboards_enabled then {} else - (import 'dashboards/reads-resources.libsonnet') + - (import 'dashboards/writes-resources.libsonnet')) + - - { _config:: $._config }, -} diff --git a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards/chunks.libsonnet b/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards/chunks.libsonnet deleted file mode 100644 index 15b6426cf833..000000000000 --- a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards/chunks.libsonnet +++ /dev/null @@ -1,100 +0,0 @@ -local utils = import 'mixin-utils/utils.libsonnet'; - -(import 'dashboard-utils.libsonnet') { - 'cortex-chunks.json': - $.dashboard('Cortex / Chunks') - .addClusterSelectorTemplates() - .addRow( - $.row('Active Series / Chunks') - .addPanel( - $.panel('Series') + - $.queryPanel('sum(cortex_ingester_memory_series{%s})' % $.jobMatcher($._config.job_names.ingester), 'series'), - ) - .addPanel( - $.panel('Chunks per series') + - $.queryPanel('sum(cortex_ingester_memory_chunks{%s}) / sum(cortex_ingester_memory_series{%s})' % [$.jobMatcher($._config.job_names.ingester), $.jobMatcher($._config.job_names.ingester)], 'chunks'), - ) - ) - .addRow( - $.row('Flush Stats') - .addPanel( - $.panel('Utilization') + - $.latencyPanel('cortex_ingester_chunk_utilization', '{%s}' % $.jobMatcher($._config.job_names.ingester), multiplier='1') + - { yaxes: $.yaxes('percentunit') }, - ) - .addPanel( - $.panel('Age') + - $.latencyPanel('cortex_ingester_chunk_age_seconds', '{%s}' % $.jobMatcher($._config.job_names.ingester)), - ), - ) - .addRow( - $.row('Flush Stats') - .addPanel( - $.panel('Size') + - $.latencyPanel('cortex_ingester_chunk_length', '{%s}' % $.jobMatcher($._config.job_names.ingester), multiplier='1') + - { yaxes: $.yaxes('short') }, - ) - .addPanel( - $.panel('Entries') + - $.queryPanel('sum(rate(cortex_chunk_store_index_entries_per_chunk_sum{%s}[5m])) / sum(rate(cortex_chunk_store_index_entries_per_chunk_count{%s}[5m]))' % [$.jobMatcher($._config.job_names.ingester), $.jobMatcher($._config.job_names.ingester)], 'entries'), - ), - ) - .addRow( - $.row('Flush Stats') - .addPanel( - $.panel('Queue Length') + - $.queryPanel('cortex_ingester_flush_queue_length{%s}' % $.jobMatcher($._config.job_names.ingester), '{{instance}}'), - ) - .addPanel( - $.panel('Flush Rate') + - $.qpsPanel('cortex_ingester_chunk_age_seconds_count{%s}' % $.jobMatcher($._config.job_names.ingester)), - ), - ), - - 'cortex-wal.json': - $.dashboard('Cortex / WAL') - .addClusterSelectorTemplates() - .addRow( - $.row('') - .addPanel( - $.panel('Bytes Logged (WAL+Checkpoint) / ingester / second') + - $.queryPanel('avg(rate(cortex_ingester_wal_logged_bytes_total{%(m)s}[$__interval])) + avg(rate(cortex_ingester_checkpoint_logged_bytes_total{%(m)s}[$__interval]))' % { m: $.jobMatcher($._config.job_names.ingester) }, 'bytes') + - { yaxes: $.yaxes('bytes') }, - ) - ) - .addRow( - $.row('WAL') - .addPanel( - $.panel('Records logged / ingester / second') + - $.queryPanel('avg(rate(cortex_ingester_wal_records_logged_total{%s}[$__interval]))' % $.jobMatcher($._config.job_names.ingester), 'records'), - ) - .addPanel( - $.panel('Bytes per record') + - $.queryPanel('avg(rate(cortex_ingester_wal_logged_bytes_total{%(m)s}[$__interval]) / rate(cortex_ingester_wal_records_logged_total{%(m)s}[$__interval]))' % { m: $.jobMatcher($._config.job_names.ingester) }, 'bytes') + - { yaxes: $.yaxes('bytes') }, - ) - .addPanel( - $.panel('Bytes per sample') + - $.queryPanel('avg(rate(cortex_ingester_wal_logged_bytes_total{%(m)s}[$__interval]) / rate(cortex_ingester_ingested_samples_total{%(m)s}[$__interval]))' % { m: $.jobMatcher($._config.job_names.ingester) }, 'bytes') + - { yaxes: $.yaxes('bytes') }, - ) - .addPanel( - $.panel('Min(available disk space)') + - $.queryPanel('min(kubelet_volume_stats_available_bytes{cluster=~"$cluster", namespace=~"$namespace", persistentvolumeclaim=~"ingester.*"})', 'bytes') + - { yaxes: $.yaxes('bytes') }, - ) - ) - .addRow( - $.row('Checkpoint') - .addPanel( - $.panel('Checkpoint creation/deletion / sec') + - $.queryPanel('rate(cortex_ingester_checkpoint_creations_total{%s}[$__interval])' % $.jobMatcher($._config.job_names.ingester), '{{instance}}-creation') + - $.queryPanel('rate(cortex_ingester_checkpoint_deletions_total{%s}[$__interval])' % $.jobMatcher($._config.job_names.ingester), '{{instance}}-deletion'), - ) - .addPanel( - $.panel('Checkpoint creation/deletion failed / sec') + - $.queryPanel('rate(cortex_ingester_checkpoint_creations_failed_total{%s}[$__interval])' % $.jobMatcher($._config.job_names.ingester), '{{instance}}-creation') + - $.queryPanel('rate(cortex_ingester_checkpoint_deletions_failed_total{%s}[$__interval])' % $.jobMatcher($._config.job_names.ingester), '{{instance}}-deletion'), - ) - ), -} diff --git a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards/compactor-resources.libsonnet b/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards/compactor-resources.libsonnet deleted file mode 100644 index 043a33374d2d..000000000000 --- a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards/compactor-resources.libsonnet +++ /dev/null @@ -1,70 +0,0 @@ -local utils = import 'mixin-utils/utils.libsonnet'; - -(import 'dashboard-utils.libsonnet') { - 'cortex-compactor-resources.json': - local filterNodeDiskByCompactor = ||| - ignoring(pod_name) group_right() (label_replace(count by(pod_name, instance, device) (container_fs_writes_bytes_total{%s,container="compactor",device!~".*sda.*"}), "device", "$1", "device", "/dev/(.*)") * 0) - ||| % $.namespaceMatcher(); - - $.dashboard('Cortex / Compactor Resources') - .addClusterSelectorTemplates() - .addRow( - $.row('CPU and Memory') - .addPanel( - $.containerCPUUsagePanel('CPU', 'compactor'), - ) - .addPanel( - $.containerMemoryWorkingSetPanel('Memory (workingset)', 'compactor'), - ) - .addPanel( - $.goHeapInUsePanel('Memory (go heap inuse)', 'compactor'), - ) - ) - .addRow( - $.row('Network') - .addPanel( - $.panel('Receive Bandwidth') + - $.queryPanel('sum by(pod_name) (rate(container_network_receive_bytes_total{%s,pod_name=~"compactor.*"}[$__interval]))' % $.namespaceMatcher(), '{{pod_name}}') + - $.stack + - { yaxes: $.yaxes('Bps') }, - ) - .addPanel( - $.panel('Transmit Bandwidth') + - $.queryPanel('sum by(pod_name) (rate(container_network_transmit_bytes_total{%s,pod_name=~"compactor.*"}[$__interval]))' % $.namespaceMatcher(), '{{pod_name}}') + - $.stack + - { yaxes: $.yaxes('Bps') }, - ) - ) - .addRow( - $.row('Disk') - .addPanel( - $.panel('Writes') + - $.queryPanel('sum by(instance, device) (rate(node_disk_written_bytes_total[$__interval])) + %s' % filterNodeDiskByCompactor, '{{pod_name}} - {{device}}') + - $.stack + - { yaxes: $.yaxes('Bps') }, - ) - .addPanel( - $.panel('Reads') + - $.queryPanel('sum by(instance, device) (rate(node_disk_read_bytes_total[$__interval])) + %s' % filterNodeDiskByCompactor, '{{pod_name}} - {{device}}') + - $.stack + - { yaxes: $.yaxes('Bps') }, - ) - ) - .addRow( - $.row('') - .addPanel( - $.panel('Disk Space Utilization') + - $.queryPanel('max by(persistentvolumeclaim) (kubelet_volume_stats_used_bytes{%s} / kubelet_volume_stats_capacity_bytes{%s}) and count by(persistentvolumeclaim) (kube_persistentvolumeclaim_labels{%s,label_name="compactor"})' % [$.namespaceMatcher(), $.namespaceMatcher(), $.namespaceMatcher()], '{{persistentvolumeclaim}}') + - { yaxes: $.yaxes('percentunit') }, - ) - ) + { - templating+: { - list: [ - // Do not allow to include all clusters/namespaces otherwise this dashboard - // risks to explode because it shows resources per pod. - l + (if (l.name == 'cluster' || l.name == 'namespace') then { includeAll: false } else {}) - for l in super.list - ], - }, - }, -} diff --git a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards/compactor.libsonnet b/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards/compactor.libsonnet deleted file mode 100644 index 2327b4d1e34f..000000000000 --- a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards/compactor.libsonnet +++ /dev/null @@ -1,89 +0,0 @@ -local utils = import 'mixin-utils/utils.libsonnet'; - -(import 'dashboard-utils.libsonnet') { - 'cortex-compactor.json': - $.dashboard('Cortex / Compactor') - .addClusterSelectorTemplates() - .addRow( - $.row('Compactions') - .addPanel( - $.textPanel('', ||| - - **Per-instance runs**: number of times a compactor instance triggers a compaction across all tenants its shard manage. - - **Per-tenant runs**: number of times a compactor instance triggers the compaction for a single tenant's blocks. - |||), - ) - .addPanel( - $.startedCompletedFailedPanel( - 'Per-instance runs / sec', - 'sum(rate(cortex_compactor_runs_started_total{%s}[$__interval]))' % $.jobMatcher('compactor'), - 'sum(rate(cortex_compactor_runs_completed_total{%s}[$__interval]))' % $.jobMatcher('compactor'), - 'sum(rate(cortex_compactor_runs_failed_total{%s}[$__interval]))' % $.jobMatcher('compactor') - ) + - $.bars + - { yaxes: $.yaxes('ops') }, - ) - .addPanel( - $.successFailurePanel( - 'Per-tenant runs / sec', - 'sum(rate(cortex_compactor_group_compactions_total{%s}[$__interval])) - sum(rate(cortex_compactor_group_compactions_failures_total{%s}[$__interval]))' % [$.jobMatcher('compactor'), $.jobMatcher('compactor')], - 'sum(rate(cortex_compactor_group_compactions_failures_total{%s}[$__interval]))' % $.jobMatcher('compactor'), - ) + - $.bars + - { yaxes: $.yaxes('ops') }, - ) - ) - .addRow( - $.row('') - .addPanel( - $.textPanel('', ||| - - **Compacted blocks**: number of blocks generated as a result of a compaction operation. - - **Per-block compaction duration**: time taken to generate a single compacted block. - |||), - ) - .addPanel( - $.panel('Compacted blocks / sec') + - $.queryPanel('sum(rate(prometheus_tsdb_compactions_total{%s}[$__interval]))' % $.jobMatcher('compactor'), 'blocks') + - { yaxes: $.yaxes('ops') }, - ) - .addPanel( - $.panel('Per-block compaction duration') + - $.latencyPanel('prometheus_tsdb_compaction_duration_seconds', '{%s}' % $.jobMatcher('compactor')) - ) - ) - .addRow( - $.row('Garbage Collector') - .addPanel( - $.panel('Blocks marked for deletion / sec') + - $.queryPanel('sum(rate(cortex_compactor_blocks_marked_for_deletion_total{%s}[$__interval]))' % $.jobMatcher('compactor'), 'blocks') + - { yaxes: $.yaxes('ops') }, - ) - .addPanel( - $.successFailurePanel( - 'Blocks deletions / sec', - // The cortex_compactor_blocks_cleaned_total tracks the number of successfully - // deleted blocks. - 'sum(rate(cortex_compactor_blocks_cleaned_total{%s}[$__interval]))' % $.jobMatcher('compactor'), - 'sum(rate(cortex_compactor_block_cleanup_failures_total{%s}[$__interval]))' % $.jobMatcher('compactor'), - ) + { yaxes: $.yaxes('ops') } - ) - ) - .addRow( - $.row('Metadata Sync') - .addPanel( - $.successFailurePanel( - 'Metadata Syncs / sec', - // The cortex_compactor_meta_syncs_total metric is incremented each time a per-tenant - // metadata sync is triggered. - 'sum(rate(cortex_compactor_meta_syncs_total{%s}[$__interval])) - sum(rate(cortex_compactor_meta_sync_failures_total{%s}[$__interval]))' % [$.jobMatcher('compactor'), $.jobMatcher('compactor')], - 'sum(rate(cortex_compactor_meta_sync_failures_total{%s}[$__interval]))' % $.jobMatcher('compactor'), - ) + { yaxes: $.yaxes('ops') } - ) - .addPanel( - $.panel('Metadata Sync Duration') + - // This metric tracks the duration of a per-tenant metadata sync. - $.latencyPanel('cortex_compactor_meta_sync_duration_seconds', '{%s}' % $.jobMatcher('compactor')), - ) - ) - .addRow($.objectStorePanels1('Object Store', 'compactor')) - .addRow($.objectStorePanels2('', 'compactor')), -} diff --git a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards/comparison.libsonnet b/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards/comparison.libsonnet deleted file mode 100644 index 2646fffb9819..000000000000 --- a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards/comparison.libsonnet +++ /dev/null @@ -1,105 +0,0 @@ -local utils = import 'mixin-utils/utils.libsonnet'; - -(import 'dashboard-utils.libsonnet') -{ - 'cortex-blocks-vs-chunks.json': - $.dashboard('Cortex / Blocks vs Chunks') - .addMultiTemplate('cluster', 'kube_pod_container_info{image=~".*cortex.*"}', 'cluster') - .addTemplate('blocks_namespace', 'kube_pod_container_info{image=~".*cortex.*"}', 'namespace') - .addTemplate('chunks_namespace', 'kube_pod_container_info{image=~".*cortex.*"}', 'namespace') - .addRow( - $.row('Ingesters') - .addPanel( - $.panel('Samples / sec') + - $.queryPanel('sum(rate(cortex_ingester_ingested_samples_total{cluster=~"$cluster",job=~"($blocks_namespace)/ingester"}[$__interval]))', 'blocks') + - $.queryPanel('sum(rate(cortex_ingester_ingested_samples_total{cluster=~"$cluster",job=~"($chunks_namespace)/ingester"}[$__interval]))', 'chunks') - ) - ) - .addRow( - $.row('') - .addPanel( - $.panel('Blocks Latency') + - utils.latencyRecordingRulePanel('cortex_request_duration_seconds', [utils.selector.re('cluster', '$cluster'), utils.selector.re('job', '($blocks_namespace)/ingester'), utils.selector.eq('route', '/cortex.Ingester/Push')]) - ) - .addPanel( - $.panel('Chunks Latency') + - utils.latencyRecordingRulePanel('cortex_request_duration_seconds', [utils.selector.re('cluster', '$cluster'), utils.selector.re('job', '($chunks_namespace)/ingester'), utils.selector.eq('route', '/cortex.Ingester/Push')]) - ) - ) - .addRow( - $.row('') - .addPanel( - $.panel('CPU per sample') + - $.queryPanel('sum(rate(container_cpu_usage_seconds_total{cluster=~"$cluster",namespace="$blocks_namespace",container_name="ingester"}[$__interval])) / sum(rate(cortex_ingester_ingested_samples_total{cluster=~"$cluster",job="$blocks_namespace/ingester"}[$__interval]))', 'blocks') + - $.queryPanel('sum(rate(container_cpu_usage_seconds_total{cluster=~"$cluster",namespace="$chunks_namespace",container_name="ingester"}[$__interval])) / sum(rate(cortex_ingester_ingested_samples_total{cluster=~"$cluster",job="$chunks_namespace/ingester"}[$__interval]))', 'chunks') - ) - .addPanel( - $.panel('Memory per active series') + - $.queryPanel('sum(container_memory_working_set_bytes{cluster=~"$cluster",namespace="$blocks_namespace",container_name="ingester"}) / sum(cortex_ingester_memory_series{cluster=~"$cluster",job=~"$blocks_namespace/ingester"})', 'blocks - working set') + - $.queryPanel('sum(container_memory_working_set_bytes{cluster=~"$cluster",namespace="$chunks_namespace",container_name="ingester"}) / sum(cortex_ingester_memory_series{cluster=~"$cluster",job=~"$chunks_namespace/ingester"})', 'chunks - working set') + - $.queryPanel('sum(go_memstats_heap_inuse_bytes{cluster=~"$cluster",job=~"$blocks_namespace/ingester"}) / sum(cortex_ingester_memory_series{cluster=~"$cluster",job=~"$blocks_namespace/ingester"})', 'blocks - heap inuse') + - $.queryPanel('sum(go_memstats_heap_inuse_bytes{cluster=~"$cluster",job=~"$chunks_namespace/ingester"}) / sum(cortex_ingester_memory_series{cluster=~"$cluster",job=~"$chunks_namespace/ingester"})', 'chunks - heap inuse') + - { yaxes: $.yaxes('bytes') } - ) - ) - .addRow( - $.row('') - .addPanel( - $.panel('CPU') + - $.queryPanel('sum(rate(container_cpu_usage_seconds_total{cluster=~"$cluster",namespace="$blocks_namespace",container_name="ingester"}[$__interval]))', 'blocks') + - $.queryPanel('sum(rate(container_cpu_usage_seconds_total{cluster=~"$cluster",namespace="$chunks_namespace",container_name="ingester"}[$__interval]))', 'chunks') - ) - .addPanel( - $.panel('Memory') + - $.queryPanel('sum(container_memory_working_set_bytes{cluster=~"$cluster",namespace="$blocks_namespace",container_name="ingester"})', 'blocks - working set') + - $.queryPanel('sum(container_memory_working_set_bytes{cluster=~"$cluster",namespace="$chunks_namespace",container_name="ingester"})', 'chunks - working set') + - $.queryPanel('sum(go_memstats_heap_inuse_bytes{cluster=~"$cluster",job=~"$blocks_namespace/ingester"})', 'blocks - heap inuse') + - $.queryPanel('sum(go_memstats_heap_inuse_bytes{cluster=~"$cluster",job=~"$chunks_namespace/ingester"})', 'chunks - heap inuse') + - { yaxes: $.yaxes('bytes') } - ) - ) - .addRow( - $.row('Queriers') - .addPanel( - $.panel('Queries / sec (query-frontend)') + - $.queryPanel('sum(rate(cortex_request_duration_seconds_count{cluster=~"$cluster",job="$blocks_namespace/query-frontend",route!="metrics"}[$__interval]))', 'blocks') + - $.queryPanel('sum(rate(cortex_request_duration_seconds_count{cluster=~"$cluster",job="$chunks_namespace/query-frontend",route!="metrics"}[$__interval]))', 'chunks') - ) - .addPanel( - $.panel('Queries / sec (query-tee)') + - $.queryPanel('sum(rate(cortex_querytee_request_duration_seconds_count{cluster=~"$cluster",backend=~".*\\\\.$blocks_namespace\\\\..*"}[$__interval]))', 'blocks') + - $.queryPanel('sum(rate(cortex_querytee_request_duration_seconds_count{cluster=~"$cluster",backend=~".*\\\\.$chunks_namespace\\\\..*"}[$__interval]))', 'chunks') - ) - ) - .addRow( - $.row('') - .addPanel( - $.panel('Latency 99th') + - $.queryPanel('histogram_quantile(0.99, sum by(backend, le) (rate(cortex_querytee_request_duration_seconds_bucket{cluster=~"$cluster",backend=~".*\\\\.$blocks_namespace\\\\..*"}[$__interval])))', 'blocks') + - $.queryPanel('histogram_quantile(0.99, sum by(backend, le) (rate(cortex_querytee_request_duration_seconds_bucket{cluster=~"$cluster",backend=~".*\\\\.$chunks_namespace\\\\..*"}[$__interval])))', 'chunks') + - { yaxes: $.yaxes('s') } - ) - .addPanel( - $.panel('Latency average') + - $.queryPanel('sum by(backend) (rate(cortex_querytee_request_duration_seconds_sum{cluster=~"$cluster",backend=~".*\\\\.$blocks_namespace\\\\..*"}[$__interval])) / sum by(backend) (rate(cortex_querytee_request_duration_seconds_count{cluster=~"$cluster",backend=~".*\\\\.$blocks_namespace\\\\..*"}[$__interval]))', 'blocks') + - $.queryPanel('sum by(backend) (rate(cortex_querytee_request_duration_seconds_sum{cluster=~"$cluster",backend=~".*\\\\.$chunks_namespace\\\\..*"}[$__interval])) / sum by(backend) (rate(cortex_querytee_request_duration_seconds_count{cluster=~"$cluster",backend=~".*\\\\.$chunks_namespace\\\\..*"}[$__interval]))', 'chunks') + - { yaxes: $.yaxes('s') } - ) - ) - .addRow( - $.row('') - .addPanel( - $.panel('CPU') + - $.queryPanel('sum(rate(container_cpu_usage_seconds_total{cluster=~"$cluster",namespace="$blocks_namespace",container_name="querier"}[$__interval]))', 'blocks') + - $.queryPanel('sum(rate(container_cpu_usage_seconds_total{cluster=~"$cluster",namespace="$chunks_namespace",container_name="querier"}[$__interval]))', 'chunks') - ) - .addPanel( - $.panel('Memory') + - $.queryPanel('sum(container_memory_working_set_bytes{cluster=~"$cluster",namespace="$blocks_namespace",container_name="querier"})', 'blocks - working set') + - $.queryPanel('sum(container_memory_working_set_bytes{cluster=~"$cluster",namespace="$chunks_namespace",container_name="querier"})', 'chunks - working set') + - $.queryPanel('sum(go_memstats_heap_inuse_bytes{cluster=~"$cluster",job=~"$blocks_namespace/querier"})', 'blocks - heap inuse') + - $.queryPanel('sum(go_memstats_heap_inuse_bytes{cluster=~"$cluster",job=~"$chunks_namespace/querier"})', 'chunks - heap inuse') + - { yaxes: $.yaxes('bytes') } - ) - ), -} diff --git a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards/dashboard-utils.libsonnet b/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards/dashboard-utils.libsonnet deleted file mode 100644 index 2a9d7a440956..000000000000 --- a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards/dashboard-utils.libsonnet +++ /dev/null @@ -1,205 +0,0 @@ -local utils = import 'mixin-utils/utils.libsonnet'; - -(import 'grafana-builder/grafana.libsonnet') { - - _config:: error 'must provide _config', - - // Override the dashboard constructor to add: - // - default tags, - // - some links that propagate the selectred cluster. - dashboard(title):: - super.dashboard(title) + { - addRowIf(condition, row):: - if condition - then self.addRow(row) - else self, - - addClusterSelectorTemplates():: - local d = self { - tags: $._config.tags, - links: [ - { - asDropdown: true, - icon: 'external link', - includeVars: true, - keepTime: true, - tags: $._config.tags, - targetBlank: false, - title: 'Cortex Dashboards', - type: 'dashboards', - }, - ], - }; - - if $._config.singleBinary - then d.addMultiTemplate('job', 'cortex_build_info', 'job') - else d - .addMultiTemplate('cluster', 'cortex_build_info', 'cluster') - .addMultiTemplate('namespace', 'cortex_build_info', 'namespace'), - }, - - // The ,ixin allow specialism of the job selector depending on if its a single binary - // deployment or a namespaced one. - jobMatcher(job):: - if $._config.singleBinary - then 'job=~"$job"' - else 'cluster=~"$cluster", job=~"($namespace)/%s"' % job, - - namespaceMatcher():: - if $._config.singleBinary - then 'job=~"$job"' - else 'cluster=~"$cluster", namespace=~"$namespace"', - - jobSelector(job):: - if $._config.singleBinary - then [utils.selector.noop('cluster'), utils.selector.re('job', '$job')] - else [utils.selector.re('cluster', '$cluster'), utils.selector.re('job', '($namespace)/%s' % job)], - - queryPanel(queries, legends, legendLink=null):: - super.queryPanel(queries, legends, legendLink) + { - targets: [ - target { - interval: '1m', - } - for target in super.targets - ], - }, - - qpsPanel(selector):: - super.qpsPanel(selector) + { - targets: [ - target { - interval: '1m', - } - for target in super.targets - ], - }, - - latencyPanel(metricName, selector, multiplier='1e3'):: - super.latencyPanel(metricName, selector, multiplier) + { - targets: [ - target { - interval: '1m', - } - for target in super.targets - ], - }, - - successFailurePanel(title, successMetric, failureMetric):: - $.panel(title) + - $.queryPanel([successMetric, failureMetric], ['successful', 'failed']) + - $.stack + { - aliasColors: { - successful: '#7EB26D', - failed: '#E24D42', - }, - }, - - // Displays started, completed and failed rate. - startedCompletedFailedPanel(title, startedMetric, completedMetric, failedMetric):: - $.panel(title) + - $.queryPanel([startedMetric, completedMetric, failedMetric], ['started', 'completed', 'failed']) + - $.stack + { - aliasColors: { - started: '#34CCEB', - completed: '#7EB26D', - failed: '#E24D42', - }, - }, - - containerCPUUsagePanel(title, containerName):: - $.panel(title) + - $.queryPanel([ - 'sum by(pod_name) (rate(container_cpu_usage_seconds_total{%s,container_name="%s"}[$__interval]))' % [$.namespaceMatcher(), containerName], - 'min(container_spec_cpu_quota{%s,container_name="%s"} / container_spec_cpu_period{%s,container_name="%s"})' % [$.namespaceMatcher(), containerName, $.namespaceMatcher(), containerName], - ], ['{{pod_name}}', 'limit']) + - { - seriesOverrides: [ - { - alias: 'limit', - color: '#E02F44', - fill: 0, - }, - ], - }, - - containerMemoryWorkingSetPanel(title, containerName):: - $.panel(title) + - $.queryPanel([ - 'sum by(pod_name) (container_memory_working_set_bytes{%s,container_name="%s"})' % [$.namespaceMatcher(), containerName], - 'min(container_spec_memory_limit_bytes{%s,container_name="%s"} > 0)' % [$.namespaceMatcher(), containerName], - ], ['{{pod_name}}', 'limit']) + - { - seriesOverrides: [ - { - alias: 'limit', - color: '#E02F44', - fill: 0, - }, - ], - yaxes: $.yaxes('bytes'), - }, - - goHeapInUsePanel(title, jobName):: - $.panel(title) + - $.queryPanel('sum by(instance) (go_memstats_heap_inuse_bytes{%s})' % $.jobMatcher(jobName), '{{instance}}') + - { yaxes: $.yaxes('bytes') }, - - // Switches a panel from lines (default) to bars. - bars:: { - bars: true, - lines: false, - }, - - textPanel(title, content, options={}):: { - content: content, - datasource: null, - description: '', - mode: 'markdown', - title: title, - transparent: true, - type: 'text', - } + options, - - objectStorePanels1(title, component):: - super.row(title) - .addPanel( - $.panel('Operations / sec') + - $.queryPanel('sum by(operation) (rate(thanos_objstore_bucket_operations_total{%s,component="%s"}[$__interval]))' % [$.namespaceMatcher(), component], '{{operation}}') + - $.stack + - { yaxes: $.yaxes('rps') }, - ) - .addPanel( - $.panel('Error rate') + - $.queryPanel('sum by(operation) (rate(thanos_objstore_bucket_operation_failures_total{%s,component="%s"}[$__interval])) / sum by(operation) (rate(thanos_objstore_bucket_operations_total{%s,component="%s"}[$__interval]))' % [$.namespaceMatcher(), component, $.namespaceMatcher(), component], '{{operation}}') + - { yaxes: $.yaxes('percentunit') }, - ) - .addPanel( - $.panel('Op: ObjectSize') + - $.latencyPanel('thanos_objstore_bucket_operation_duration_seconds', '{%s,component="%s",operation="objectsize"}' % [$.namespaceMatcher(), component]), - ) - .addPanel( - $.panel('Op: Exists') + - $.latencyPanel('thanos_objstore_bucket_operation_duration_seconds', '{%s,component="%s",operation="exists"}' % [$.namespaceMatcher(), component]), - ), - - // Second row of Object Store stats - objectStorePanels2(title, component):: - super.row(title) - .addPanel( - $.panel('Op: Get') + - $.latencyPanel('thanos_objstore_bucket_operation_duration_seconds', '{%s,component="%s",operation="get"}' % [$.namespaceMatcher(), component]), - ) - .addPanel( - $.panel('Op: GetRange') + - $.latencyPanel('thanos_objstore_bucket_operation_duration_seconds', '{%s,component="%s",operation="get_range"}' % [$.namespaceMatcher(), component]), - ) - .addPanel( - $.panel('Op: Upload') + - $.latencyPanel('thanos_objstore_bucket_operation_duration_seconds', '{%s,component="%s",operation="upload"}' % [$.namespaceMatcher(), component]), - ) - .addPanel( - $.panel('Op: Delete') + - $.latencyPanel('thanos_objstore_bucket_operation_duration_seconds', '{%s,component="%s",operation="delete"}' % [$.namespaceMatcher(), component]), - ), -} diff --git a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards/object-store.libsonnet b/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards/object-store.libsonnet deleted file mode 100644 index c02160236a0e..000000000000 --- a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards/object-store.libsonnet +++ /dev/null @@ -1,65 +0,0 @@ -local utils = import 'mixin-utils/utils.libsonnet'; - -(import 'dashboard-utils.libsonnet') { - 'cortex-object-store.json': - $.dashboard('Cortex / Object Store') - .addClusterSelectorTemplates() - .addRow( - $.row('Components') - .addPanel( - $.panel('RPS / component') + - $.queryPanel('sum by(component) (rate(thanos_objstore_bucket_operations_total{%s}[$__interval]))' % $.namespaceMatcher(), '{{component}}') + - $.stack + - { yaxes: $.yaxes('rps') }, - ) - .addPanel( - $.panel('Error rate / component') + - $.queryPanel('sum by(component) (rate(thanos_objstore_bucket_operation_failures_total{%s}[$__interval])) / sum by(component) (rate(thanos_objstore_bucket_operations_total{%s}[$__interval]))' % [$.namespaceMatcher(), $.namespaceMatcher()], '{{component}}') + - { yaxes: $.yaxes('percentunit') }, - ) - ) - .addRow( - $.row('Operations') - .addPanel( - $.panel('RPS / operation') + - $.queryPanel('sum by(operation) (rate(thanos_objstore_bucket_operations_total{%s}[$__interval]))' % $.namespaceMatcher(), '{{operation}}') + - $.stack + - { yaxes: $.yaxes('rps') }, - ) - .addPanel( - $.panel('Error rate / operation') + - $.queryPanel('sum by(operation) (rate(thanos_objstore_bucket_operation_failures_total{%s}[$__interval])) / sum by(operation) (rate(thanos_objstore_bucket_operations_total{%s}[$__interval]))' % [$.namespaceMatcher(), $.namespaceMatcher()], '{{operation}}') + - { yaxes: $.yaxes('percentunit') }, - ) - ) - .addRow( - $.row('') - .addPanel( - $.panel('Op: Get') + - $.latencyPanel('thanos_objstore_bucket_operation_duration_seconds', '{%s,operation="get"}' % $.namespaceMatcher()), - ) - .addPanel( - $.panel('Op: GetRange') + - $.latencyPanel('thanos_objstore_bucket_operation_duration_seconds', '{%s,operation="get_range"}' % $.namespaceMatcher()), - ) - .addPanel( - $.panel('Op: Exists') + - $.latencyPanel('thanos_objstore_bucket_operation_duration_seconds', '{%s,operation="exists"}' % $.namespaceMatcher()), - ) - ) - .addRow( - $.row('') - .addPanel( - $.panel('Op: ObjectSize') + - $.latencyPanel('thanos_objstore_bucket_operation_duration_seconds', '{%s,operation="objectsize"}' % $.namespaceMatcher()), - ) - .addPanel( - $.panel('Op: Upload') + - $.latencyPanel('thanos_objstore_bucket_operation_duration_seconds', '{%s,operation="upload"}' % $.namespaceMatcher()), - ) - .addPanel( - $.panel('Op: Delete') + - $.latencyPanel('thanos_objstore_bucket_operation_duration_seconds', '{%s,operation="delete"}' % $.namespaceMatcher()), - ) - ), -} diff --git a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards/queries.libsonnet b/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards/queries.libsonnet deleted file mode 100644 index 91b039f76395..000000000000 --- a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards/queries.libsonnet +++ /dev/null @@ -1,186 +0,0 @@ -local utils = import 'mixin-utils/utils.libsonnet'; - -(import 'dashboard-utils.libsonnet') { - - 'cortex-queries.json': - $.dashboard('Cortex / Queries') - .addClusterSelectorTemplates() - .addRow( - $.row('Query Frontend') - .addPanel( - $.panel('Queue Duration') + - $.latencyPanel('cortex_query_frontend_queue_duration_seconds', '{%s}' % $.jobMatcher($._config.job_names.query_frontend)), - ) - .addPanel( - $.panel('Retries') + - $.latencyPanel('cortex_query_frontend_retries', '{%s}' % $.jobMatcher($._config.job_names.query_frontend), multiplier=1) + - { yaxes: $.yaxes('short') }, - ) - .addPanel( - $.panel('Queue Length') + - $.queryPanel('cortex_query_frontend_queue_length{%s}' % $.jobMatcher($._config.job_names.query_frontend), '{{cluster}} / {{namespace}} / {{instance}}'), - ) - ) - .addRow( - $.row('Query Frontend - Results Cache') - .addPanel( - $.panel('Cache Hit %') + - $.queryPanel('sum(rate(cortex_cache_hits{%s}[1m])) / sum(rate(cortex_cache_fetched_keys{%s}[1m]))' % [$.jobMatcher($._config.job_names.query_frontend), $.jobMatcher($._config.job_names.query_frontend)], 'Hit Rate') + - { yaxes: $.yaxes({ format: 'percentunit', max: 1 }) }, - ) - .addPanel( - $.panel('Cache misses') + - $.queryPanel('sum(rate(cortex_cache_fetched_keys{%s}[1m])) - sum(rate(cortex_cache_hits{%s}[1m]))' % [$.jobMatcher($._config.job_names.query_frontend), $.jobMatcher($._config.job_names.query_frontend)], 'Miss Rate'), - ) - ) - .addRow( - $.row('Query Frontend - Sharding/Splitting') - .addPanel( - $.panel('Intervals per Query') + - $.queryPanel('sum(rate(cortex_frontend_split_queries_total{%s}[1m])) / sum(rate(cortex_frontend_query_range_duration_seconds_count{%s, method="split_by_interval"}[1m]))' % [$.jobMatcher($._config.job_names.query_frontend), $.jobMatcher($._config.job_names.query_frontend)], 'partition rate'), - ) - .addPanel( - $.panel('Sharded Queries %') + - $.queryPanel('sum(rate(cortex_frontend_mapped_asts_total{%s}[1m])) / sum(rate(cortex_frontend_split_queries_total{%s}[1m])) * 100' % [$.jobMatcher($._config.job_names.query_frontend), $.jobMatcher($._config.job_names.query_frontend)], 'shard rate'), - ) - .addPanel( - $.panel('Sharding factor') + - $.queryPanel('sum(rate(cortex_frontend_sharded_queries_total{%s}[1m])) / sum(rate(cortex_frontend_mapped_asts_total{%s}[1m]))' % [$.jobMatcher($._config.job_names.query_frontend), $.jobMatcher($._config.job_names.query_frontend)], 'Average'), - ) - ) - .addRow( - $.row('Querier') - .addPanel( - $.panel('Stages') + - $.queryPanel('max by (slice) (prometheus_engine_query_duration_seconds{quantile="0.9",%s}) * 1e3' % $.jobMatcher($._config.job_names.querier), '{{slice}}') + - { yaxes: $.yaxes('ms') } + - $.stack, - ) - .addPanel( - $.panel('Chunk cache misses') + - $.queryPanel('sum(rate(cortex_cache_fetched_keys{%s,name="chunksmemcache"}[1m])) - sum(rate(cortex_cache_hits{%s,name="chunksmemcache"}[1m]))' % [$.jobMatcher($._config.job_names.querier), $.jobMatcher($._config.job_names.querier)], 'Hit rate'), - ) - .addPanel( - $.panel('Chunk cache corruptions') + - $.queryPanel('sum(rate(cortex_cache_corrupt_chunks_total{%s}[1m]))' % $.jobMatcher($._config.job_names.querier), 'Corrupt chunks'), - ) - ) - .addRowIf( - std.setMember('chunks', $._config.storage_engine), - $.row('Querier - Chunks storage - Index Cache') - .addPanel( - $.panel('Total entries') + - $.queryPanel('sum(querier_cache_added_new_total{cache="store.index-cache-read.fifocache",%s}) - sum(querier_cache_evicted_total{cache="store.index-cache-read.fifocache",%s})' % [$.jobMatcher($._config.job_names.querier), $.jobMatcher($._config.job_names.querier)], 'Entries'), - ) - .addPanel( - $.panel('Cache Hit %') + - $.queryPanel('(sum(rate(querier_cache_gets_total{cache="store.index-cache-read.fifocache",%s}[1m])) - sum(rate(querier_cache_misses_total{cache="store.index-cache-read.fifocache",%s}[1m]))) / sum(rate(querier_cache_gets_total{cache="store.index-cache-read.fifocache",%s}[1m]))' % [$.jobMatcher($._config.job_names.querier), $.jobMatcher($._config.job_names.querier), $.jobMatcher($._config.job_names.querier)], 'hit rate') - { yaxes: $.yaxes({ format: 'percentunit', max: 1 }) }, - ) - .addPanel( - $.panel('Churn Rate') + - $.queryPanel('sum(rate(querier_cache_evicted_total{cache="store.index-cache-read.fifocache",%s}[1m]))' % $.jobMatcher($._config.job_names.querier), 'churn rate'), - ) - ) - .addRow( - $.row('Ingester') - .addPanel( - $.panel('Series per Query') + - utils.latencyRecordingRulePanel('cortex_ingester_queried_series', $.jobSelector($._config.job_names.ingester), multiplier=1) + - { yaxes: $.yaxes('short') }, - ) - .addPanel( - $.panel('Chunks per Query') + - utils.latencyRecordingRulePanel('cortex_ingester_queried_chunks', $.jobSelector($._config.job_names.ingester), multiplier=1) + - { yaxes: $.yaxes('short') }, - ) - .addPanel( - $.panel('Samples per Query') + - utils.latencyRecordingRulePanel('cortex_ingester_queried_samples', $.jobSelector($._config.job_names.ingester), multiplier=1) + - { yaxes: $.yaxes('short') }, - ) - ) - .addRowIf( - std.setMember('chunks', $._config.storage_engine), - $.row('Querier - Chunks storage - Store') - .addPanel( - $.panel('Index Lookups per Query') + - utils.latencyRecordingRulePanel('cortex_chunk_store_index_lookups_per_query', $.jobSelector($._config.job_names.querier), multiplier=1) + - { yaxes: $.yaxes('short') }, - ) - .addPanel( - $.panel('Series (pre-intersection) per Query') + - utils.latencyRecordingRulePanel('cortex_chunk_store_series_pre_intersection_per_query', $.jobSelector($._config.job_names.querier), multiplier=1) + - { yaxes: $.yaxes('short') }, - ) - .addPanel( - $.panel('Series (post-intersection) per Query') + - utils.latencyRecordingRulePanel('cortex_chunk_store_series_post_intersection_per_query', $.jobSelector($._config.job_names.querier), multiplier=1) + - { yaxes: $.yaxes('short') }, - ) - .addPanel( - $.panel('Chunks per Query') + - utils.latencyRecordingRulePanel('cortex_chunk_store_chunks_per_query', $.jobSelector($._config.job_names.querier), multiplier=1) + - { yaxes: $.yaxes('short') }, - ) - ) - .addRowIf( - std.setMember('tsdb', $._config.storage_engine), - $.row('Store-gateway - Blocks') - .addPanel( - $.panel('Blocks queried / sec') + - $.queryPanel('sum(rate(cortex_storegateway_bucket_store_series_blocks_queried_sum{%s}[$__interval]))' % $.jobMatcher($._config.job_names.store_gateway), 'blocks') + - { yaxes: $.yaxes('ops') }, - ) - .addPanel( - $.panel('Data fetched / sec') + - $.queryPanel('sum by(data_type) (rate(cortex_storegateway_bucket_store_series_data_fetched_sum{%s}[$__interval]))' % $.jobMatcher($._config.job_names.store_gateway), '{{data_type}}') + - $.stack + - { yaxes: $.yaxes('ops') }, - ) - .addPanel( - $.panel('Data touched / sec') + - $.queryPanel('sum by(data_type) (rate(cortex_storegateway_bucket_store_series_data_touched_sum{%s}[$__interval]))' % $.jobMatcher($._config.job_names.store_gateway), '{{data_type}}') + - $.stack + - { yaxes: $.yaxes('ops') }, - ) - ) - .addRowIf( - std.setMember('tsdb', $._config.storage_engine), - $.row('') - .addPanel( - $.panel('Series fetch duration (per request)') + - $.latencyPanel('cortex_storegateway_bucket_store_series_get_all_duration_seconds', '{%s}' % $.jobMatcher($._config.job_names.store_gateway)), - ) - .addPanel( - $.panel('Series merge duration (per request)') + - $.latencyPanel('cortex_storegateway_bucket_store_series_merge_duration_seconds', '{%s}' % $.jobMatcher($._config.job_names.store_gateway)), - ) - .addPanel( - $.panel('Series returned (per request)') + - $.queryPanel('sum(rate(cortex_storegateway_bucket_store_series_result_series_sum{%s}[$__interval])) / sum(rate(cortex_storegateway_bucket_store_series_result_series_count{%s}[$__interval]))' % [$.jobMatcher($._config.job_names.store_gateway), $.jobMatcher($._config.job_names.store_gateway)], 'avg series returned'), - ) - ) - .addRowIf( - std.setMember('tsdb', $._config.storage_engine), - $.row('') - .addPanel( - $.panel('Blocks currently loaded') + - $.queryPanel('cortex_storegateway_bucket_store_blocks_loaded{%s}' % $.jobMatcher($._config.job_names.store_gateway), '{{instance}}') - ) - .addPanel( - $.successFailurePanel( - 'Blocks loaded / sec', - 'sum(rate(cortex_storegateway_bucket_store_block_loads_total{%s}[$__interval])) - sum(rate(cortex_storegateway_bucket_store_block_load_failures_total{%s}[$__interval]))' % [$.jobMatcher($._config.job_names.store_gateway), $.jobMatcher($._config.job_names.store_gateway)], - 'sum(rate(cortex_storegateway_bucket_store_block_load_failures_total{%s}[$__interval]))' % $.jobMatcher($._config.job_names.store_gateway), - ) - ) - .addPanel( - $.successFailurePanel( - 'Blocks dropped / sec', - 'sum(rate(cortex_storegateway_bucket_store_block_drops_total{%s}[$__interval])) - sum(rate(cortex_storegateway_bucket_store_block_drop_failures_total{%s}[$__interval]))' % [$.jobMatcher($._config.job_names.store_gateway), $.jobMatcher($._config.job_names.store_gateway)], - 'sum(rate(cortex_storegateway_bucket_store_block_drop_failures_total{%s}[$__interval]))' % $.jobMatcher($._config.job_names.store_gateway), - ) - ) - ), -} diff --git a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards/reads-resources.libsonnet b/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards/reads-resources.libsonnet deleted file mode 100644 index a41d86d1a77b..000000000000 --- a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards/reads-resources.libsonnet +++ /dev/null @@ -1,65 +0,0 @@ -local utils = import 'mixin-utils/utils.libsonnet'; - -(import 'dashboard-utils.libsonnet') { - 'cortex-reads-resources.json': - $.dashboard('Cortex / Reads Resources') - .addClusterSelectorTemplates() - .addRow( - $.row('Gateway') - .addPanel( - $.containerCPUUsagePanel('CPU', 'cortex-gw'), - ) - .addPanel( - $.containerMemoryWorkingSetPanel('Memory (workingset)', 'cortex-gw'), - ) - .addPanel( - $.goHeapInUsePanel('Memory (go heap inuse)', 'cortex-gw'), - ) - ) - .addRow( - $.row('Query Frontend') - .addPanel( - $.containerCPUUsagePanel('CPU', 'query-frontend'), - ) - .addPanel( - $.containerMemoryWorkingSetPanel('Memory (workingset)', 'query-frontend'), - ) - .addPanel( - $.goHeapInUsePanel('Memory (go heap inuse)', 'query-frontend'), - ) - ) - .addRow( - $.row('Querier') - .addPanel( - $.containerCPUUsagePanel('CPU', 'querier'), - ) - .addPanel( - $.containerMemoryWorkingSetPanel('Memory (workingset)', 'querier'), - ) - .addPanel( - $.goHeapInUsePanel('Memory (go heap inuse)', 'querier'), - ) - ) - .addRowIf( - std.setMember('tsdb', $._config.storage_engine), - $.row('Store-gateway') - .addPanel( - $.containerCPUUsagePanel('CPU', 'store-gateway'), - ) - .addPanel( - $.containerMemoryWorkingSetPanel('Memory (workingset)', 'store-gateway'), - ) - .addPanel( - $.goHeapInUsePanel('Memory (go heap inuse)', 'store-gateway'), - ) - ) + { - templating+: { - list: [ - // Do not allow to include all clusters/namespaces otherwise this dashboard - // risks to explode because it shows resources per pod. - l + (if (l.name == 'cluster' || l.name == 'namespace') then { includeAll: false } else {}) - for l in super.list - ], - }, - }, -} diff --git a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards/reads.libsonnet b/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards/reads.libsonnet deleted file mode 100644 index e39ad6dc5e6c..000000000000 --- a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards/reads.libsonnet +++ /dev/null @@ -1,206 +0,0 @@ -local utils = import 'mixin-utils/utils.libsonnet'; - -(import 'dashboard-utils.libsonnet') { - 'cortex-reads.json': - $.dashboard('Cortex / Reads') - .addClusterSelectorTemplates() - .addRow( - $.row('Gateway') - .addPanel( - $.panel('QPS') + - $.qpsPanel('cortex_request_duration_seconds_count{%s, route=~"api_prom_api_v1_.+"}' % $.jobMatcher($._config.job_names.gateway)) - ) - .addPanel( - $.panel('Latency') + - utils.latencyRecordingRulePanel('cortex_request_duration_seconds', $.jobSelector($._config.job_names.gateway) + [utils.selector.re('route', 'api_prom_api_v1_.+')]) - ) - ) - .addRow( - $.row('Query Frontend') - .addPanel( - $.panel('QPS') + - $.qpsPanel('cortex_request_duration_seconds_count{%s, route=~"api_prom_api_v1_.+"}' % $.jobMatcher($._config.job_names.query_frontend)) - ) - .addPanel( - $.panel('Latency') + - utils.latencyRecordingRulePanel('cortex_request_duration_seconds', $.jobSelector($._config.job_names.query_frontend) + [utils.selector.re('route', 'api_prom_api_v1_.+')]) - ) - ) - .addRow( - $.row('Cache - Query Results') - .addPanel( - $.panel('QPS') + - $.qpsPanel('cortex_cache_request_duration_seconds_count{%s}' % $.jobMatcher($._config.job_names.query_frontend)) - ) - .addPanel( - $.panel('Latency') + - utils.latencyRecordingRulePanel('cortex_cache_request_duration_seconds', $.jobSelector($._config.job_names.query_frontend)) - ) - ) - .addRow( - $.row('Querier') - .addPanel( - $.panel('QPS') + - $.qpsPanel('cortex_request_duration_seconds_count{%s, route=~"api_prom_api_v1_.+"}' % $.jobMatcher($._config.job_names.querier)) - ) - .addPanel( - $.panel('Latency') + - utils.latencyRecordingRulePanel('cortex_request_duration_seconds', $.jobSelector($._config.job_names.querier) + [utils.selector.re('route', 'api_prom_api_v1_.+')]) - ) - ) - .addRow( - $.row('Ingester') - .addPanel( - $.panel('QPS') + - $.qpsPanel('cortex_request_duration_seconds_count{%s,route=~"/cortex.Ingester/Query(Stream)?|/cortex.Ingester/MetricsForLabelMatchers|/cortex.Ingester/LabelValues|/cortex.Ingester/MetricsMetadata"}' % $.jobMatcher($._config.job_names.ingester)) - ) - .addPanel( - $.panel('Latency') + - utils.latencyRecordingRulePanel('cortex_request_duration_seconds', $.jobSelector($._config.job_names.ingester) + [utils.selector.re('route', '/cortex.Ingester/Query(Stream)?|/cortex.Ingester/MetricsForLabelMatchers|/cortex.Ingester/LabelValues|/cortex.Ingester/MetricsMetadata')]) - ) - ) - .addRowIf( - std.setMember('tsdb', $._config.storage_engine), - $.row('Store-gateway') - .addPanel( - $.panel('QPS') + - $.qpsPanel('cortex_request_duration_seconds_count{%s,route=~"/gatewaypb.StoreGateway/.*"}' % $.jobMatcher($._config.job_names.store_gateway)) - ) - .addPanel( - $.panel('Latency') + - utils.latencyRecordingRulePanel('cortex_request_duration_seconds', $.jobSelector($._config.job_names.store_gateway) + [utils.selector.re('route', '/gatewaypb.StoreGateway/.*')]) - ) - ) - .addRowIf( - std.setMember('chunks', $._config.storage_engine), - $.row('Memcached - Chunks storage - Index') - .addPanel( - $.panel('QPS') + - $.qpsPanel('cortex_cache_request_duration_seconds_count{%s,method="store.index-cache-read.memcache.fetch"}' % $.jobMatcher($._config.job_names.querier)) - ) - .addPanel( - $.panel('Latency') + - utils.latencyRecordingRulePanel('cortex_cache_request_duration_seconds', $.jobSelector($._config.job_names.querier) + [utils.selector.eq('method', 'store.index-cache-read.memcache.fetch')]) - ) - ) - .addRowIf( - std.setMember('chunks', $._config.storage_engine), - $.row('Memcached - Chunks storage - Chunks') - .addPanel( - $.panel('QPS') + - $.qpsPanel('cortex_cache_request_duration_seconds_count{%s,method="chunksmemcache.fetch"}' % $.jobMatcher($._config.job_names.querier)) - ) - .addPanel( - $.panel('Latency') + - utils.latencyRecordingRulePanel('cortex_cache_request_duration_seconds', $.jobSelector($._config.job_names.querier) + [utils.selector.eq('method', 'chunksmemcache.fetch')]) - ) - ) - .addRowIf( - std.setMember('tsdb', $._config.storage_engine), - $.row('Memcached - Blocks Storage - Index header') - .addPanel( - $.panel('QPS') + - $.queryPanel('sum by(operation) (rate(cortex_storegateway_blocks_index_cache_memcached_operation_duration_seconds_count{%s}[$__interval]))' % $.jobMatcher($._config.job_names.store_gateway), '{{operation}}') + - $.stack + - { yaxes: $.yaxes('ops') }, - ) - .addPanel( - $.panel('Latency (getmulti)') + - $.latencyPanel('cortex_storegateway_blocks_index_cache_memcached_operation_duration_seconds', '{%s,operation="getmulti"}' % $.jobMatcher($._config.job_names.store_gateway)) - ) - .addPanel( - $.panel('Hit ratio') + - $.queryPanel('sum by(item_type) (rate(cortex_storegateway_blocks_index_cache_hits_total{%s}[$__interval])) / sum by(item_type) (rate(cortex_storegateway_blocks_index_cache_requests_total{%s}[$__interval]))' % [$.jobMatcher($._config.job_names.store_gateway), $.jobMatcher($._config.job_names.store_gateway)], '{{item_type}}') + - { yaxes: $.yaxes('percentunit') }, - ) - ) - .addRowIf( - std.setMember('tsdb', $._config.storage_engine), - $.row('Memcached - Blocks Storage - Chunks') - .addPanel( - $.panel('QPS') + - $.queryPanel('sum by(operation) (rate(cortex_storegateway_thanos_memcached_operations_total{%s,name="chunks-cache"}[$__interval]))' % $.jobMatcher($._config.job_names.store_gateway), '{{operation}}') + - $.stack + - { yaxes: $.yaxes('ops') }, - ) - .addPanel( - $.panel('Latency (getmulti)') + - $.latencyPanel('cortex_storegateway_thanos_memcached_operation_duration_seconds', '{%s,operation="getmulti",name="chunks-cache"}' % $.jobMatcher($._config.job_names.store_gateway)) - ) - .addPanel( - $.panel('Hit ratio') + - $.queryPanel('sum(rate(cortex_storegateway_thanos_cache_memcached_hits_total{%s,name="chunks-cache"}[$__interval])) / sum(rate(cortex_storegateway_thanos_cache_memcached_requests_total{%s,name="chunks-cache"}[$__interval]))' % [$.jobMatcher($._config.job_names.store_gateway), $.jobMatcher($._config.job_names.store_gateway)], 'chunks') + - { yaxes: $.yaxes('percentunit') }, - ) - ) - .addRowIf( - std.setMember('chunks', $._config.storage_engine) && - std.setMember('cassandra', $._config.chunk_index_backend + $._config.chunk_store_backend), - $.row('Cassandra') - .addPanel( - $.panel('QPS') + - $.qpsPanel('cortex_cassandra_request_duration_seconds_count{%s, operation="SELECT"}' % $.jobMatcher($._config.job_names.querier)) - ) - .addPanel( - $.panel('Latency') + - utils.latencyRecordingRulePanel('cortex_cassandra_request_duration_seconds', $.jobSelector($._config.job_names.querier) + [utils.selector.eq('operation', 'SELECT')]) - ) - ) - .addRowIf( - std.setMember('chunks', $._config.storage_engine) && - std.setMember('bigtable', $._config.chunk_index_backend + $._config.chunk_store_backend), - $.row('BigTable') - .addPanel( - $.panel('QPS') + - $.qpsPanel('cortex_bigtable_request_duration_seconds_count{%s, operation="/google.bigtable.v2.Bigtable/ReadRows"}' % $.jobMatcher($._config.job_names.querier)) - ) - .addPanel( - $.panel('Latency') + - utils.latencyRecordingRulePanel('cortex_bigtable_request_duration_seconds', $.jobSelector($._config.job_names.querier) + [utils.selector.eq('operation', '/google.bigtable.v2.Bigtable/ReadRows')]) - ), - ) - .addRowIf( - std.setMember('chunks', $._config.storage_engine) && - std.setMember('dynamodb', $._config.chunk_index_backend + $._config.chunk_store_backend), - $.row('DynamoDB') - .addPanel( - $.panel('QPS') + - $.qpsPanel('cortex_dynamo_request_duration_seconds_count{%s, operation="DynamoDB.QueryPages"}' % $.jobMatcher($._config.job_names.querier)) - ) - .addPanel( - $.panel('Latency') + - utils.latencyRecordingRulePanel('cortex_dynamo_request_duration_seconds', $.jobSelector($._config.job_names.querier) + [utils.selector.eq('operation', 'DynamoDB.QueryPages')]) - ), - ) - .addRowIf( - std.setMember('chunks', $._config.storage_engine) && - std.setMember('gcs', $._config.chunk_store_backend), - $.row('GCS') - .addPanel( - $.panel('QPS') + - $.qpsPanel('cortex_gcs_request_duration_seconds_count{%s, operation="GET"}' % $.jobMatcher($._config.job_names.querier)) - ) - .addPanel( - $.panel('Latency') + - utils.latencyRecordingRulePanel('cortex_gcs_request_duration_seconds', $.jobSelector($._config.job_names.querier) + [utils.selector.eq('operation', 'GET')]) - ) - ) - // Object store metrics for the store-gateway. - .addRowIf( - std.setMember('tsdb', $._config.storage_engine), - $.objectStorePanels1('Store-gateway - Blocks Object Store', 'store-gateway'), - ) - .addRowIf( - std.setMember('tsdb', $._config.storage_engine), - $.objectStorePanels2('', 'store-gateway'), - ) - // Object store metrics for the querier. - .addRowIf( - std.setMember('tsdb', $._config.storage_engine), - $.objectStorePanels1('Querier - Blocks Object Store', 'querier'), - ) - .addRowIf( - std.setMember('tsdb', $._config.storage_engine), - $.objectStorePanels2('', 'querier'), - ), -} diff --git a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards/ruler.libsonnet b/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards/ruler.libsonnet deleted file mode 100644 index ae7f7c524c40..000000000000 --- a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards/ruler.libsonnet +++ /dev/null @@ -1,44 +0,0 @@ -local utils = import 'mixin-utils/utils.libsonnet'; - -(import 'dashboard-utils.libsonnet') { - - 'ruler.json': - $.dashboard('Cortex / Ruler') - .addClusterSelectorTemplates() - .addRow( - $.row('Rule Evaluations') - .addPanel( - $.panel('EPS') + - $.queryPanel('sum(rate(cortex_prometheus_rule_evaluations_total{%s}[$__interval]))' % $.jobMatcher('ruler'), 'rules processed'), - ) - .addPanel( - $.panel('Latency') + - $.queryPanel( - ||| - sum (rate(cortex_prometheus_rule_evaluation_duration_seconds_sum{%s}[$__interval])) - / - sum (rate(cortex_prometheus_rule_evaluation_duration_seconds_count{%s}[$__interval])) - ||| % [$.jobMatcher('ruler'), $.jobMatcher('ruler')], - 'average' - ), - ) - ) - .addRow( - $.row('Group Evaluations') - .addPanel( - $.panel('Missed Iterations') + - $.queryPanel('sum(rate(cortex_prometheus_rule_group_iterations_missed_total{%s}[$__interval]))' % $.jobMatcher('ruler'), 'iterations missed'), - ) - .addPanel( - $.panel('Latency') + - $.queryPanel( - ||| - sum (rate(cortex_prometheus_rule_group_duration_seconds_sum{%s}[$__interval])) - / - sum (rate(cortex_prometheus_rule_group_duration_seconds_count{%s}[$__interval])) - ||| % [$.jobMatcher('ruler'), $.jobMatcher('ruler')], - 'average' - ), - ) - ), -} diff --git a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards/scaling.libsonnet b/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards/scaling.libsonnet deleted file mode 100644 index 4f37132e1549..000000000000 --- a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards/scaling.libsonnet +++ /dev/null @@ -1,111 +0,0 @@ -local utils = import 'mixin-utils/utils.libsonnet'; - -(import 'dashboard-utils.libsonnet') { - - 'cortex-scaling.json': - $.dashboard('Cortex / Scaling') - .addClusterSelectorTemplates() - .addRow( - $.row('Workload-based scaling') - .addPanel( - $.panel('Workload-based scaling') + { sort: { col: 1, desc: false } } + - $.tablePanel([ - ||| - sum by (cluster, namespace, deployment) ( - kube_deployment_spec_replicas{cluster=~"$cluster", namespace=~"$namespace", deployment=~"ingester|memcached"} - or - label_replace( - kube_statefulset_replicas{cluster=~"$cluster", namespace=~"$namespace", deployment=~"ingester|memcached"}, - "deployment", "$1", "statefulset", "(.*)" - ) - ) - |||, - ||| - quantile_over_time(0.99, sum by (cluster, namespace, deployment) (label_replace(rate(cortex_distributor_received_samples_total{cluster=~"$cluster", namespace=~"$namespace"}[1m]), "deployment", "ingester", "cluster", ".*"))[1h:]) - * 3 / 80e3 - |||, - ||| - label_replace( - sum by(cluster, namespace) ( - cortex_ingester_memory_series{cluster=~"$cluster", namespace=~"$namespace"} - ) / 1e+6, - "deployment", "ingester", "cluster", ".*" - ) - or - label_replace( - sum by (cluster, namespace) ( - 4 * cortex_ingester_memory_series{cluster=~"$cluster", namespace=~"$namespace", job=~".+/ingester"} - * - cortex_ingester_chunk_size_bytes_sum{cluster=~"$cluster", namespace=~"$namespace", job=~".+/ingester"} - / - cortex_ingester_chunk_size_bytes_count{cluster=~"$cluster", namespace=~"$namespace", job=~".+/ingester"} - ) - / - avg by (cluster, namespace) (memcached_limit_bytes{cluster=~"$cluster", namespace=~"$namespace", job=~".+/memcached"}), - "deployment", "memcached", "namespace", ".*" - ) - |||, - ], { - cluster: { alias: 'Cluster' }, - namespace: { alias: 'Namespace' }, - deployment: { alias: 'Deployment' }, - 'Value #A': { alias: 'Current Replicas', decimals: 0 }, - 'Value #B': { alias: 'Required Replicas, by ingestion rate', decimals: 0 }, - 'Value #C': { alias: 'Required Replicas, by active series', decimals: 0 }, - }) - ) - ) - .addRow( - ($.row('Resource-based scaling') + { height: '500px' }) - .addPanel( - $.panel('Resource-based scaling') + { sort: { col: 1, desc: false } } + - $.tablePanel([ - ||| - sum by (cluster, namespace, deployment) ( - kube_deployment_spec_replicas{cluster=~"$cluster", namespace=~"$namespace"} - or - label_replace( - kube_statefulset_replicas{cluster=~"$cluster", namespace=~"$namespace"}, - "deployment", "$1", "statefulset", "(.*)" - ) - ) - |||, - ||| - sum by (cluster, namespace, deployment) ( - kube_deployment_spec_replicas{cluster=~"$cluster", namespace=~"$namespace"} - or - label_replace( - kube_statefulset_replicas{cluster=~"$cluster", namespace=~"$namespace"}, - "deployment", "$1", "statefulset", "(.*)" - ) - ) - * - quantile_over_time(0.99, sum by (cluster, namespace, deployment) (label_replace(rate(container_cpu_usage_seconds_total{cluster=~"$cluster", namespace=~"$namespace"}[1m]), "deployment", "$1", "pod_name", "(.*)-(?:([0-9]+)|([a-z0-9]+)-([a-z0-9]+))"))[24h:]) - / - sum by (cluster, namespace, deployment) (label_replace(kube_pod_container_resource_requests_cpu_cores{cluster=~"$cluster", namespace=~"$namespace"}, "deployment", "$1", "pod", "(.*)-(?:([0-9]+)|([a-z0-9]+)-([a-z0-9]+))")) - |||, - ||| - sum by (cluster, namespace, deployment) ( - kube_deployment_spec_replicas{cluster=~"$cluster", namespace=~"$namespace"} - or - label_replace( - kube_statefulset_replicas{cluster=~"$cluster", namespace=~"$namespace"}, - "deployment", "$1", "statefulset", "(.*)" - ) - ) - * - quantile_over_time(0.99, sum by (cluster, namespace, deployment) (label_replace(container_memory_usage_bytes{cluster=~"$cluster", namespace=~"$namespace"}, "deployment", "$1", "pod_name", "(.*)-(?:([0-9]+)|([a-z0-9]+)-([a-z0-9]+))"))[24h:1m]) - / - sum by (cluster, namespace, deployment) (label_replace(kube_pod_container_resource_requests_memory_bytes{cluster=~"$cluster", namespace=~"$namespace"}, "deployment", "$1", "pod", "(.*)-(?:([0-9]+)|([a-z0-9]+)-([a-z0-9]+))")) - |||, - ], { - cluster: { alias: 'Cluster' }, - namespace: { alias: 'Namespace' }, - deployment: { alias: 'Deployment' }, - 'Value #A': { alias: 'Current Replicas', decimals: 0 }, - 'Value #B': { alias: 'Required Replicas, by CPU usage', decimals: 0 }, - 'Value #C': { alias: 'Required Replicas, by Memory usage', decimals: 0 }, - }) - ) - ), -} diff --git a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards/writes-resources.libsonnet b/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards/writes-resources.libsonnet deleted file mode 100644 index ccdc966f9e5f..000000000000 --- a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards/writes-resources.libsonnet +++ /dev/null @@ -1,59 +0,0 @@ -local utils = import 'mixin-utils/utils.libsonnet'; - -(import 'dashboard-utils.libsonnet') { - 'cortex-writes-resources.json': - $.dashboard('Cortex / Writes Resources') - .addClusterSelectorTemplates() - .addRow( - $.row('Gateway') - .addPanel( - $.containerCPUUsagePanel('CPU', 'cortex-gw'), - ) - .addPanel( - $.containerMemoryWorkingSetPanel('Memory (workingset)', 'cortex-gw'), - ) - .addPanel( - $.goHeapInUsePanel('Memory (go heap inuse)', 'cortex-gw'), - ) - ) - .addRow( - $.row('Distributor') - .addPanel( - $.containerCPUUsagePanel('CPU', 'distributor'), - ) - .addPanel( - $.containerMemoryWorkingSetPanel('Memory (workingset)', 'distributor'), - ) - .addPanel( - $.goHeapInUsePanel('Memory (go heap inuse)', 'distributor'), - ) - ) - .addRow( - $.row('Ingester') - .addPanel( - $.panel('In-memory series') + - $.queryPanel('sum by(instance) (cortex_ingester_memory_series{%s})' % $.jobMatcher($._config.job_names.ingester), '{{instance}}'), - ) - .addPanel( - $.containerCPUUsagePanel('CPU', 'ingester'), - ) - ) - .addRow( - $.row('') - .addPanel( - $.containerMemoryWorkingSetPanel('Memory (workingset)', 'ingester'), - ) - .addPanel( - $.goHeapInUsePanel('Memory (go heap inuse)', 'ingester'), - ) - ) + { - templating+: { - list: [ - // Do not allow to include all clusters/namespaces otherwise this dashboard - // risks to explode because it shows resources per pod. - l + (if (l.name == 'cluster' || l.name == 'namespace') then { includeAll: false } else {}) - for l in super.list - ], - }, - }, -} diff --git a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards/writes.libsonnet b/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards/writes.libsonnet deleted file mode 100644 index 4b7f0508d491..000000000000 --- a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/dashboards/writes.libsonnet +++ /dev/null @@ -1,167 +0,0 @@ -local utils = import 'mixin-utils/utils.libsonnet'; - -(import 'dashboard-utils.libsonnet') { - 'cortex-writes.json': - $.dashboard('Cortex / Writes') - .addClusterSelectorTemplates() - .addRow( - ($.row('Headlines') + - { - height: '100px', - showTitle: false, - }) - .addPanel( - $.panel('Samples / s') + - $.statPanel('sum(cluster_namespace_job:cortex_distributor_received_samples:rate5m{%s})' % $.jobMatcher($._config.job_names.distributor), format='reqps') - ) - .addPanel( - $.panel('Active Series') + - $.statPanel(||| - sum(cortex_ingester_memory_series{%(ingester)s} - / on(namespace) group_left - max by (namespace) (cortex_distributor_replication_factor{%(distributor)s})) - ||| % { - ingester: $.jobMatcher($._config.job_names.ingester), - distributor: $.jobMatcher($._config.job_names.distributor), - }, format='short') - ) - .addPanel( - $.panel('QPS') + - $.statPanel('sum(rate(cortex_request_duration_seconds_count{%s, route="api_prom_push"}[5m]))' % $.jobMatcher($._config.job_names.gateway), format='reqps') - ) - ) - .addRow( - $.row('Gateway') - .addPanel( - $.panel('QPS') + - $.qpsPanel('cortex_request_duration_seconds_count{%s, route="api_prom_push"}' % $.jobMatcher($._config.job_names.gateway)) - ) - .addPanel( - $.panel('Latency') + - utils.latencyRecordingRulePanel('cortex_request_duration_seconds', $.jobSelector($._config.job_names.gateway) + [utils.selector.eq('route', 'api_prom_push')]) - ) - ) - .addRow( - $.row('Distributor') - .addPanel( - $.panel('QPS') + - $.qpsPanel('cortex_request_duration_seconds_count{%s, route=~"/httpgrpc.*|api_prom_push"}' % $.jobMatcher($._config.job_names.distributor)) - ) - .addPanel( - $.panel('Latency') + - utils.latencyRecordingRulePanel('cortex_request_duration_seconds', $.jobSelector($._config.job_names.distributor) + [utils.selector.re('route', '/httpgrpc.*|api_prom_push')]) - ) - ) - .addRow( - $.row('KV Store (HA Dedupe)') - .addPanel( - $.panel('QPS') + - $.qpsPanel('cortex_kv_request_duration_seconds_count{%s}' % $.jobMatcher($._config.job_names.distributor)) - ) - .addPanel( - $.panel('Latency') + - utils.latencyRecordingRulePanel('cortex_kv_request_duration_seconds', $.jobSelector($._config.job_names.distributor)) - ) - ) - .addRow( - $.row('Ingester') - .addPanel( - $.panel('QPS') + - $.qpsPanel('cortex_request_duration_seconds_count{%s,route="/cortex.Ingester/Push"}' % $.jobMatcher($._config.job_names.ingester)) - ) - .addPanel( - $.panel('Latency') + - utils.latencyRecordingRulePanel('cortex_request_duration_seconds', $.jobSelector($._config.job_names.ingester) + [utils.selector.eq('route', '/cortex.Ingester/Push')]) - ) - ) - .addRow( - $.row('KV Store (Ring)') - .addPanel( - $.panel('QPS') + - $.qpsPanel('cortex_kv_request_duration_seconds_count{%s}' % $.jobMatcher($._config.job_names.ingester)) - ) - .addPanel( - $.panel('Latency') + - utils.latencyRecordingRulePanel('cortex_kv_request_duration_seconds', $.jobSelector($._config.job_names.ingester)) - ) - ) - .addRowIf( - std.setMember('chunks', $._config.storage_engine), - $.row('Memcached') - .addPanel( - $.panel('QPS') + - $.qpsPanel('cortex_memcache_request_duration_seconds_count{%s,method="Memcache.Put"}' % $.jobMatcher($._config.job_names.ingester)) - ) - .addPanel( - $.panel('Latency') + - utils.latencyRecordingRulePanel('cortex_memcache_request_duration_seconds', $.jobSelector($._config.job_names.ingester) + [utils.selector.eq('method', 'Memcache.Put')]) - ) - ) - .addRowIf( - std.setMember('chunks', $._config.storage_engine) && - std.setMember('cassandra', $._config.chunk_index_backend + $._config.chunk_store_backend), - $.row('Cassandra') - .addPanel( - $.panel('QPS') + - $.qpsPanel('cortex_cassandra_request_duration_seconds_count{%s, operation="INSERT"}' % $.jobMatcher($._config.job_names.ingester)) - ) - .addPanel( - $.panel('Latency') + - utils.latencyRecordingRulePanel('cortex_cassandra_request_duration_seconds', $.jobSelector($._config.job_names.ingester) + [utils.selector.eq('operation', 'INSERT')]) - ) - ) - .addRowIf( - std.setMember('chunks', $._config.storage_engine) && - std.setMember('bigtable', $._config.chunk_index_backend + $._config.chunk_store_backend), - $.row('BigTable') - .addPanel( - $.panel('QPS') + - $.qpsPanel('cortex_bigtable_request_duration_seconds_count{%s, operation="/google.bigtable.v2.Bigtable/MutateRows"}' % $.jobMatcher($._config.job_names.ingester)) - ) - .addPanel( - $.panel('Latency') + - utils.latencyRecordingRulePanel('cortex_bigtable_request_duration_seconds', $.jobSelector($._config.job_names.ingester) + [utils.selector.eq('operation', '/google.bigtable.v2.Bigtable/MutateRows')]) - ) - ) - .addRowIf( - std.setMember('chunks', $._config.storage_engine) && - std.setMember('dynamodb', $._config.chunk_index_backend + $._config.chunk_store_backend), - $.row('DynamoDB') - .addPanel( - $.panel('QPS') + - $.qpsPanel('cortex_dynamo_request_duration_seconds_count{%s, operation="DynamoDB.BatchWriteItem"}' % $.jobMatcher($._config.job_names.ingester)) - ) - .addPanel( - $.panel('Latency') + - utils.latencyRecordingRulePanel('cortex_dynamo_request_duration_seconds', $.jobSelector($._config.job_names.ingester) + [utils.selector.eq('operation', 'DynamoDB.BatchWriteItem')]) - ) - ) - .addRowIf( - std.setMember('chunks', $._config.storage_engine) && - std.setMember('gcs', $._config.chunk_store_backend), - $.row('GCS') - .addPanel( - $.panel('QPS') + - $.qpsPanel('cortex_gcs_request_duration_seconds_count{%s, operation="POST"}' % $.jobMatcher($._config.job_names.ingester)) - ) - .addPanel( - $.panel('Latency') + - utils.latencyRecordingRulePanel('cortex_gcs_request_duration_seconds', $.jobSelector($._config.job_names.ingester) + [utils.selector.eq('operation', 'POST')]) - ) - ) - .addRowIf( - std.setMember('tsdb', $._config.storage_engine), - $.row('Ingester - Blocks storage - Shipper') - .addPanel( - $.successFailurePanel( - 'Uploaded blocks / sec', - 'sum(rate(cortex_ingester_shipper_uploads_total{%s}[$__interval])) - sum(rate(cortex_ingester_shipper_upload_failures_total{%s}[$__interval]))' % [$.jobMatcher($._config.job_names.ingester), $.jobMatcher($._config.job_names.ingester)], - 'sum(rate(cortex_ingester_shipper_upload_failures_total{%s}[$__interval]))' % $.jobMatcher($._config.job_names.ingester), - ), - ) - .addPanel( - $.panel('Upload latency') + - $.latencyPanel('thanos_objstore_bucket_operation_duration_seconds', '{%s,component="ingester",operation="upload"}' % $.jobMatcher($._config.job_names.ingester)), - ) - ), -} diff --git a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/docs/playbooks.md b/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/docs/playbooks.md deleted file mode 100644 index bac54ebe9cd9..000000000000 --- a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/docs/playbooks.md +++ /dev/null @@ -1,127 +0,0 @@ -# Playbooks -This document contains playbooks, or at least a checklist of what to look for, for alerts in the cortex-mixin. - -# Alerts - -## CortexIngesterRestarts -First, check if the alert is for a single ingester or multiple. Even if the alert is only for one ingester, it's best to follow up by checking `kubectl get pods --namespace=` every few minutes, or looking at the query `rate(kube_pod_container_status_restarts_total{container="ingester"}[30m]) > 0` just until you're sure there isn't a larger issue causing multiple restarts. - -Next, check `kubectl get events`, with and without the addition of the `--namespace` flag, to look for node restarts or other related issues. Grep or something similar to filter the output can be useful here. The most common cause of this alert is a single cloud providers node restarting and causing the ingester on that node to be rescheduled somewhere else. - -In events you're looking for things like: -``` -57m Normal NodeControllerEviction Pod Marking for deletion Pod ingester-01 from Node cloud-provider-node-01 -37m Normal SuccessfulDelete ReplicaSet (combined from similar events): Deleted pod: ingester-01 -32m Normal NodeNotReady Node Node cloud-provider-node-01 status is now: NodeNotReady -28m Normal DeletingAllPods Node Node cloud-provider-node-01 event: Deleting all Pods from Node cloud-provider-node-01. -``` - -If nothing obvious from the above, check for increased load: -- If there is an increase in the number of active series and the memory provisioned is not enough, scale up the ingesters horizontally to have the same number of series as before per ingester. -- If we had an outage and once Cortex is back up, the incoming traffic increases. (or) The clients have their Prometheus remote-write lagging and starts to send samples at a higher rate (again, an increase in traffic but in terms of number of samples). Scale up the ingester horizontally in this case too. - -## CortexRequest Latency -First establish if the alert is for read or write latency. The alert should say. - -### Write Latency -Using the Cortex write dashboard, find the cluster which reported the high write latency and deduce where in the stack the latency is being introduced: - -distributor: It is quite normal for the distributor P99 latency to be 50-100ms, and for the ingesters to be ~5ms. If the distributor latency is higher than this, you may need to scale up the distributors. If there is a high error rate being introduced at the distributors (400s or 500s) this has been know to induce latency. - -ingesters: It is very unusual for ingester latency to be high, as they just write to memory. They probably needs scaling up, but it is worth investigating what is going on first. - -### Read Latency -Query performance is an known problem. When you get this alert, you need to work out if: (a) this is a operation issue / configuration (b) this is because of algorithms and inherently limited (c) this is a bug - -Using the Cortex read dashboard, find the cluster which reported the high read latency and deduce where in the stack the latency is being introduced. - -query_frontend: If there is a significant P99 or avg latency difference between the frontend and the querier, you can't scale them up - we rely on their being two frontend. Is this latency coming from the cache? Scale that up. What the CPU usage of the query frontend service? Do we need to increase the CPU requests and have it scheduled to a less busy box? Note QPS on the querier will be higher than on the frontend as it splits queries into multiple smaller ones. - -ingesters: Latency should be in the ~100ms - queries are in memory. If its more, check the CPU usage and consider scaling it up. NB scale ingesters slowly, 1-2 new replicas an hour. - -If you think its provisioning / scaling is the problem, consult the scaling dashboard. These are just recommendations - make reasonable adjustments. - -Right now most of the execution time will be spent in PromQL's innerEval. NB that the prepare (index and chunk fetch) are now interleaved with Eval, so you need to expand both to confirm if its flow execution of slow fetching. - -## CortexTransferFailed -This alert goes off when an ingester fails to find another node to transfer its data to when it was shutting down. If there is both a pod stuck terminating and one stuck joining, look at the kubernetes events. This may be due to scheduling problems caused by some combination of anti affinity rules/resource utilization. Adding a new node can help in these circumstances. You can see recent events associated with a resource via kubectl describe, ex: `kubectl -n describe pod ` - -## CortexIngesterUnhealthy -This alert goes off when an ingester is marked as unhealthy. Check the ring web page to see which is marked as unhealthy. You could then check the logs to see if there are any related to that ingester ex: `kubectl logs -f ingester-01 --namespace=prod`. A simple way to resolve this may be to click the "Forgot" button on the ring page, especially if the pod doesn't exist anymore. It might not exist anymore because it was on a node that got shut down, so you could check to see if there are any logs related to the node that pod is/was on, ex: `kubectl get events --namespace=prod | grep cloud-provider-node`. - -## CortexFlushStuck -@todo - -## CortexLoadBalancerErrors -@todo - -## CortexTableSyncFailure -@todo - -## CortexQuerierCapacityFull -@todo - -## CortexFrontendQueriesStuck -@todo - -## CortexProvisioningTooMuchMemory -@todo - -## MemcachedDown -@todo - -## CortexRulerFailedRingCheck - -This alert occurs when a ruler is unable to validate whether or not it should claim ownership over the evaluation of a rule group. The most likely cause is that one of the rule ring entries is unhealthy. If this is the case proceed to the ring admin http page and forget the unhealth ruler. The other possible cause would be an error returned the ring client. If this is the case look into debugging the ring based on the in-use backend implementation. - -## CortexIngesterHasNotShippedBlocks - -This alert fires when a Cortex ingester is not uploading any block to the long-term storage. An ingester is expected to upload a block to the storage every block range period (defaults to 2h) and if a longer time elapse since the last successful upload it means something is not working correctly. - -How to investigate: -- Ensure the ingester is receiving write-path traffic (samples to ingest) -- Look for any upload error in the ingester logs (ie. networking or authentication issues) - -## CortexIngesterHasNotShippedBlocksSinceStart - -Same as [`CortexIngesterHasNotShippedBlocks`](#CortexIngesterHasNotShippedBlocks). - -## CortexQuerierHasNotScanTheBucket - -This alert fires when a Cortex querier is not successfully scanning blocks in the storage (bucket). A querier is expected to periodically iterate the bucket to find new and deleted blocks (defaults to every 5m) and if it's not successfully synching the bucket since a long time, it may end up querying only a subset of blocks, thus leading to potentially partial results. - -How to investigate: -- Look for any scan error in the querier logs (ie. networking or rate limiting issues) - -## CortexStoreGatewayHasNotSyncTheBucket - -This alert fires when a Cortex store-gateway is not successfully scanning blocks in the storage (bucket). A store-gateway is expected to periodically iterate the bucket to find new and deleted blocks (defaults to every 5m) and if it's not successfully synching the bucket for a long time, it may end up querying only a subset of blocks, thus leading to potentially partial results. - -How to investigate: -- Look for any scan error in the store-gateway logs (ie. networking or rate limiting issues) - -## CortexCompactorHasNotSuccessfullyRun - -This alert fires when a Cortex compactor is not successfully completing a compaction run since a long time. - -How to investigate: -- Ensure the compactor is not crashing during compaction (ie. `OOMKilled`) -- Look for any error in the compactor logs - -## CortexCompactorHasNotSuccessfullyRunSinceStart - -Same as [`CortexCompactorHasNotSuccessfullyRun`](#CortexCompactorHasNotSuccessfullyRun). - -## CortexCompactorHasNotUploadedBlocks - -This alert fires when a Cortex compactor is not uploading any compacted blocks to the storage since a long time. - -How to investigate: -- If the alert `CortexCompactorHasNotSuccessfullyRun` or `CortexCompactorHasNotSuccessfullyRunSinceStart` have fired as well, then investigate that issue first -- If the alert `CortexIngesterHasNotShippedBlocks` or `CortexIngesterHasNotShippedBlocksSinceStart` have fired as well, then investigate that issue first -- Ensure ingesters are successfully shipping blocks to the storage -- Look for any error in the compactor logs - -## CortexCompactorHasNotUploadedBlocksSinceStart - -Same as [`CortexCompactorHasNotUploadedBlocks`](#CortexCompactorHasNotUploadedBlocks). diff --git a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/jsonnetfile.json b/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/jsonnetfile.json deleted file mode 100644 index 87e724d5ed1b..000000000000 --- a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/jsonnetfile.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "dependencies": [ - { - "name": "grafana-builder", - "source": { - "git": { - "remote": "https://github.com/grafana/jsonnet-libs", - "subdir": "grafana-builder" - } - }, - "version": "master" - }, - { - "name": "mixin-utils", - "source": { - "git": { - "remote": "https://github.com/grafana/jsonnet-libs", - "subdir": "mixin-utils" - } - }, - "version": "master" - } - ] -} diff --git a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/jsonnetfile.lock.json b/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/jsonnetfile.lock.json deleted file mode 100644 index fe50a404cb0f..000000000000 --- a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/jsonnetfile.lock.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "dependencies": [ - { - "name": "grafana-builder", - "source": { - "git": { - "remote": "https://github.com/grafana/jsonnet-libs", - "subdir": "grafana-builder" - } - }, - "version": "8f9d72b2e35b5f3cc1b7c2a8af9bbae7658804e2", - "sum": "ELsYwK+kGdzX1mee2Yy+/b2mdO4Y503BOCDkFzwmGbE=" - }, - { - "name": "mixin-utils", - "source": { - "git": { - "remote": "https://github.com/grafana/jsonnet-libs", - "subdir": "mixin-utils" - } - }, - "version": "8f9d72b2e35b5f3cc1b7c2a8af9bbae7658804e2", - "sum": "J1iExBloZLjVEvdzHVjvP9AVTqDOJSfFOtBoeQ7EhKk=" - } - ] -} diff --git a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/mixin.libsonnet b/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/mixin.libsonnet deleted file mode 100644 index ed281b5b664f..000000000000 --- a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/mixin.libsonnet +++ /dev/null @@ -1,4 +0,0 @@ -(import 'config.libsonnet') + -(import 'dashboards.libsonnet') + -(import 'alerts.libsonnet') + -(import 'recording_rules.libsonnet') diff --git a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/recording_rules.jsonnet b/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/recording_rules.jsonnet deleted file mode 100644 index dbe13f417b49..000000000000 --- a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/recording_rules.jsonnet +++ /dev/null @@ -1 +0,0 @@ -std.manifestYamlDoc((import 'mixin.libsonnet').prometheusRules) diff --git a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/recording_rules.libsonnet b/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/recording_rules.libsonnet deleted file mode 100644 index 73bdbcac8dcd..000000000000 --- a/example/k3d/vendor/github.com/grafana/cortex-jsonnet/cortex-mixin/recording_rules.libsonnet +++ /dev/null @@ -1,56 +0,0 @@ -local utils = import 'mixin-utils/utils.libsonnet'; - -{ - prometheusRules+:: { - groups+: [ - { - name: 'cortex_api', - rules: - utils.histogramRules('cortex_request_duration_seconds', ['cluster', 'job']) + - utils.histogramRules('cortex_request_duration_seconds', ['cluster', 'job', 'route']) + - utils.histogramRules('cortex_request_duration_seconds', ['cluster', 'namespace', 'job', 'route']), - }, - { - name: 'cortex_cache', - rules: - utils.histogramRules('cortex_memcache_request_duration_seconds', ['cluster', 'job', 'method']) + - utils.histogramRules('cortex_cache_request_duration_seconds', ['cluster', 'job']) + - utils.histogramRules('cortex_cache_request_duration_seconds', ['cluster', 'job', 'method']), - }, - { - name: 'cortex_storage', - rules: - utils.histogramRules('cortex_bigtable_request_duration_seconds', ['cluster', 'job', 'operation']) + - utils.histogramRules('cortex_cassandra_request_duration_seconds', ['cluster', 'job', 'operation']) + - utils.histogramRules('cortex_dynamo_request_duration_seconds', ['cluster', 'job', 'operation']) + - utils.histogramRules('cortex_chunk_store_index_lookups_per_query', ['cluster', 'job']) + - utils.histogramRules('cortex_chunk_store_series_pre_intersection_per_query', ['cluster', 'job']) + - utils.histogramRules('cortex_chunk_store_series_post_intersection_per_query', ['cluster', 'job']) + - utils.histogramRules('cortex_chunk_store_chunks_per_query', ['cluster', 'job']) + - utils.histogramRules('cortex_database_request_duration_seconds', ['cluster', 'job', 'method']) + - utils.histogramRules('cortex_gcs_request_duration_seconds', ['cluster', 'job', 'operation']) + - utils.histogramRules('cortex_kv_request_duration_seconds', ['cluster', 'job']), - }, - { - name: 'cortex_queries', - rules: - utils.histogramRules('cortex_query_frontend_retries', ['cluster', 'job']) + - utils.histogramRules('cortex_query_frontend_queue_duration_seconds', ['cluster', 'job']) + - utils.histogramRules('cortex_ingester_queried_series', ['cluster', 'job']) + - utils.histogramRules('cortex_ingester_queried_chunks', ['cluster', 'job']) + - utils.histogramRules('cortex_ingester_queried_samples', ['cluster', 'job']), - }, - { - name: 'cortex_received_samples', - rules: [ - { - record: 'cluster_namespace_job:cortex_distributor_received_samples:rate5m', - expr: ||| - sum by (cluster, namespace, job) (rate(cortex_distributor_received_samples_total[5m])) - |||, - }, - ], - }, - ], - }, -} diff --git a/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/alert_condition.libsonnet b/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/alert_condition.libsonnet deleted file mode 100644 index 163d08282e35..000000000000 --- a/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/alert_condition.libsonnet +++ /dev/null @@ -1,47 +0,0 @@ -{ - /** - * Returns a new condition of alert of graph panel. - * Currently the only condition type that exists is a Query condition - * that allows to specify a query letter, time range and an aggregation function. - * - * @name alertCondition.new - * - * @param evaluatorParams Value of threshold - * @param evaluatorType Type of threshold - * @param operatorType Operator between conditions - * @param queryRefId The letter defines what query to execute from the Metrics tab - * @param queryTimeStart Begging of time range - * @param queryTimeEnd End of time range - * @param reducerParams Params of an aggregation function - * @param reducerType Name of an aggregation function - * - * @return A json that represents a condition of alert - */ - new( - evaluatorParams=[], - evaluatorType='gt', - operatorType='and', - queryRefId='A', - queryTimeEnd='now', - queryTimeStart='5m', - reducerParams=[], - reducerType='avg', - ):: - { - evaluator: { - params: if std.type(evaluatorParams) == 'array' then evaluatorParams else [evaluatorParams], - type: evaluatorType, - }, - operator: { - type: operatorType, - }, - query: { - params: [queryRefId, queryTimeStart, queryTimeEnd], - }, - reducer: { - params: if std.type(reducerParams) == 'array' then reducerParams else [reducerParams], - type: reducerType, - }, - type: 'query', - }, -} diff --git a/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/alertlist.libsonnet b/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/alertlist.libsonnet deleted file mode 100644 index 4ae5ab322918..000000000000 --- a/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/alertlist.libsonnet +++ /dev/null @@ -1,30 +0,0 @@ -{ - /** - * @name alertlist.new - */ - new( - title='', - span=null, - show='current', - limit=10, - sortOrder=1, - stateFilter=[], - onlyAlertsOnDashboard=true, - transparent=null, - description=null, - datasource=null, - ):: - { - [if transparent != null then 'transparent']: transparent, - title: title, - [if span != null then 'span']: span, - type: 'alertlist', - show: show, - limit: limit, - sortOrder: sortOrder, - [if show != 'changes' then 'stateFilter']: stateFilter, - onlyAlertsOnDashboard: onlyAlertsOnDashboard, - [if description != null then 'description']: description, - datasource: datasource, - }, -} diff --git a/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/annotation.libsonnet b/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/annotation.libsonnet deleted file mode 100644 index 955b029cb044..000000000000 --- a/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/annotation.libsonnet +++ /dev/null @@ -1,40 +0,0 @@ -{ - default:: - { - builtIn: 1, - datasource: '-- Grafana --', - enable: true, - hide: true, - iconColor: 'rgba(0, 211, 255, 1)', - name: 'Annotations & Alerts', - type: 'dashboard', - }, - - /** - * @name annotation.datasource - */ - - datasource( - name, - datasource, - expr=null, - enable=true, - hide=false, - iconColor='rgba(255, 96, 96, 1)', - tags=[], - type='tags', - builtIn=null, - ):: - { - datasource: datasource, - enable: enable, - [if expr != null then 'expr']: expr, - hide: hide, - iconColor: iconColor, - name: name, - showIn: 0, - tags: tags, - type: type, - [if builtIn != null then 'builtIn']: builtIn, - }, -} diff --git a/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/cloudwatch.libsonnet b/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/cloudwatch.libsonnet deleted file mode 100644 index ee06f6fa0349..000000000000 --- a/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/cloudwatch.libsonnet +++ /dev/null @@ -1,41 +0,0 @@ -{ - /** - * Return a CloudWatch Target - * - * @name cloudwatch.target - * - * @param region - * @param namespace - * @param metric - * @param datasource - * @param statistic - * @param alias - * @param highResolution - * @param period - * @param dimensions - - * @return Panel target - */ - - target( - region, - namespace, - metric, - datasource=null, - statistic='Average', - alias=null, - highResolution=false, - period='1m', - dimensions={} - ):: { - region: region, - namespace: namespace, - metricName: metric, - [if datasource != null then 'datasource']: datasource, - statistics: [statistic], - [if alias != null then 'alias']: alias, - highResolution: highResolution, - period: period, - dimensions: dimensions, - }, -} diff --git a/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/dashboard.libsonnet b/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/dashboard.libsonnet deleted file mode 100644 index 18e60eb7e22b..000000000000 --- a/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/dashboard.libsonnet +++ /dev/null @@ -1,150 +0,0 @@ -local timepickerlib = import 'timepicker.libsonnet'; - -{ - /** - * @name dashboard.new - */ - new( - title, - editable=false, - style='dark', - tags=[], - time_from='now-6h', - time_to='now', - timezone='browser', - refresh='', - timepicker=timepickerlib.new(), - graphTooltip='default', - hideControls=false, - schemaVersion=14, - uid='', - description=null, - ):: { - local it = self, - _annotations:: [], - [if uid != '' then 'uid']: uid, - editable: editable, - [if description != null then 'description']: description, - gnetId: null, - graphTooltip: - if graphTooltip == 'shared_tooltip' then 2 - else if graphTooltip == 'shared_crosshair' then 1 - else if graphTooltip == 'default' then 0 - else graphTooltip, - hideControls: hideControls, - id: null, - links: [], - panels:: [], - refresh: refresh, - rows: [], - schemaVersion: schemaVersion, - style: style, - tags: tags, - time: { - from: time_from, - to: time_to, - }, - timezone: timezone, - timepicker: timepicker, - title: title, - version: 0, - addAnnotations(annotations):: self { - _annotations+:: annotations, - }, - addAnnotation(a):: self.addAnnotations([a]), - addTemplates(templates):: self { - templates+: templates, - }, - addTemplate(t):: self.addTemplates([t]), - templates:: [], - annotations: { list: it._annotations }, - templating: { list: it.templates }, - _nextPanel:: 2, - addRow(row):: - self { - // automatically number panels in added rows. - // https://github.com/kausalco/public/blob/master/klumps/grafana.libsonnet - local n = std.length(row.panels), - local nextPanel = super._nextPanel, - local panels = std.makeArray(n, function(i) - row.panels[i] { id: nextPanel + i }), - - _nextPanel: nextPanel + n, - rows+: [row { panels: panels }], - }, - addPanels(newpanels):: - self { - // automatically number panels in added rows. - // https://github.com/kausalco/public/blob/master/klumps/grafana.libsonnet - local n = std.foldl(function(numOfPanels, p) - (if 'panels' in p then - numOfPanels + 1 + std.length(p.panels) - else - numOfPanels + 1), newpanels, 0), - local nextPanel = super._nextPanel, - local _panels = std.makeArray( - std.length(newpanels), function(i) - newpanels[i] { - id: nextPanel + ( - if i == 0 then - 0 - else - if 'panels' in _panels[i - 1] then - (_panels[i - 1].id - nextPanel) + 1 + std.length(_panels[i - 1].panels) - else - (_panels[i - 1].id - nextPanel) + 1 - - ), - [if 'panels' in newpanels[i] then 'panels']: std.makeArray( - std.length(newpanels[i].panels), function(j) - newpanels[i].panels[j] { - id: 1 + j + - nextPanel + ( - if i == 0 then - 0 - else - if 'panels' in _panels[i - 1] then - (_panels[i - 1].id - nextPanel) + 1 + std.length(_panels[i - 1].panels) - else - (_panels[i - 1].id - nextPanel) + 1 - - ), - } - ), - } - ), - - _nextPanel: nextPanel + n, - panels+::: _panels, - }, - addPanel(panel, gridPos):: self.addPanels([panel { gridPos: gridPos }]), - addRows(rows):: std.foldl(function(d, row) d.addRow(row), rows, self), - addLink(link):: self { - links+: [link], - }, - required:: [], - __requires: it.required, - addRequired(type, name, id, version):: self { - required+: [{ type: type, name: name, id: id, version: version }], - }, - inputs:: [], - __inputs: it.inputs, - addInput( - name, - label, - type, - pluginId, - pluginName, - description='', - ):: self { - inputs+: [{ - name: name, - label: label, - type: type, - pluginId: pluginId, - pluginName: pluginName, - description: description, - }], - }, - }, -} diff --git a/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/dashlist.libsonnet b/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/dashlist.libsonnet deleted file mode 100644 index 31c8f0616877..000000000000 --- a/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/dashlist.libsonnet +++ /dev/null @@ -1,41 +0,0 @@ -{ - /** - * Returns a new dashlist panel that can be added in a row. - * It requires the dashlist panel plugin in grafana, which is built-in. - * - * @name dashlist.new - * - * @param title The title of the dashlist panel. - * @param description Description of the panel - * @param query Query to search by - * @param tags Tag(s) to search by - * @param recent Displays recently viewed dashboards - * @param search Description of the panel - * @param starred Displays starred dashboards - * @param headings Chosen list selection(starred, recently Viewed, search) is shown as a heading - * @param limit Set maximum items in a list - * @return A json that represents a dashlist panel - */ - new( - title, - description=null, - query=null, - tags=[], - recent=true, - search=false, - starred=false, - headings=true, - limit=10, - ):: { - type: 'dashlist', - title: title, - query: if query != null then query else '', - tags: tags, - recent: recent, - search: search, - starred: starred, - headings: headings, - limit: limit, - [if description != null then 'description']: description, - }, -} diff --git a/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/elasticsearch.libsonnet b/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/elasticsearch.libsonnet deleted file mode 100644 index f6861f864499..000000000000 --- a/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/elasticsearch.libsonnet +++ /dev/null @@ -1,41 +0,0 @@ -{ - /** - * @name elasticsearch.target - */ - target( - query, - timeField, - id=null, - datasource=null, - metrics=[{ - field: 'value', - id: null, - type: 'percentiles', - settings: { - percents: [ - '90', - ], - }, - }], - bucketAggs=[{ - field: 'timestamp', - id: null, - type: 'date_histogram', - settings: { - interval: '1s', - min_doc_count: 0, - trimEdges: 0, - }, - }], - alias=null, - ):: { - [if datasource != null then 'datasource']: datasource, - query: query, - id: id, - timeField: timeField, - bucketAggs: bucketAggs, - metrics: metrics, - alias: alias, - // TODO: generate bucket ids - }, -} diff --git a/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/gauge.libsonnet b/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/gauge.libsonnet deleted file mode 100644 index 686d82369045..000000000000 --- a/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/gauge.libsonnet +++ /dev/null @@ -1,39 +0,0 @@ -{ - /** - * @name gauge.new - */ - new( - title, - datasource=null, - calc='mean', - time_from=null, - span=null, - description='', - height=null, - transparent=null, - ):: - { - [if description != '' then 'description']: description, - [if height != null then 'height']: height, - [if transparent != null then 'transparent']: transparent, - [if time_from != null then 'timeFrom']: time_from, - [if span != null then 'span']: span, - title: title, - type: 'gauge', - datasource: datasource, - options: { - fieldOptions: { - calcs: [ - calc, - ], - }, - }, - _nextTarget:: 0, - addTarget(target):: self { - local nextTarget = super._nextTarget, - _nextTarget: nextTarget + 1, - targets+: [target { refId: std.char(std.codepoint('A') + nextTarget) }], - }, - }, - -} diff --git a/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/grafana.libsonnet b/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/grafana.libsonnet deleted file mode 100644 index e595ef83d11c..000000000000 --- a/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/grafana.libsonnet +++ /dev/null @@ -1,27 +0,0 @@ -{ - alertlist:: import 'alertlist.libsonnet', - dashboard:: import 'dashboard.libsonnet', - template:: import 'template.libsonnet', - text:: import 'text.libsonnet', - timepicker:: import 'timepicker.libsonnet', - row:: import 'row.libsonnet', - link:: import 'link.libsonnet', - annotation:: import 'annotation.libsonnet', - graphPanel:: import 'graph_panel.libsonnet', - logPanel:: import 'log_panel.libsonnet', - tablePanel:: import 'table_panel.libsonnet', - singlestat:: import 'singlestat.libsonnet', - pieChartPanel:: import 'pie_chart_panel.libsonnet', - influxdb:: import 'influxdb.libsonnet', - prometheus:: import 'prometheus.libsonnet', - loki:: import 'loki.libsonnet', - sql:: import 'sql.libsonnet', - graphite:: import 'graphite.libsonnet', - alertCondition:: import 'alert_condition.libsonnet', - cloudwatch:: import 'cloudwatch.libsonnet', - elasticsearch:: import 'elasticsearch.libsonnet', - heatmapPanel:: import 'heatmap_panel.libsonnet', - dashlist:: import 'dashlist.libsonnet', - pluginlist:: import 'pluginlist.libsonnet', - gauge:: import 'gauge.libsonnet', -} diff --git a/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/graph_panel.libsonnet b/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/graph_panel.libsonnet deleted file mode 100644 index f1d67c9e4579..000000000000 --- a/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/graph_panel.libsonnet +++ /dev/null @@ -1,279 +0,0 @@ -{ - /** - * Returns a new graph panel that can be added in a row. - * It requires the graph panel plugin in grafana, which is built-in. - * - * @name graphPanel.new - * - * @param title The title of the graph panel. - * @param span Width of the panel - * @param datasource Datasource - * @param fill Fill, integer from 0 to 10 - * @param linewidth Line Width, integer from 0 to 10 - * @param decimals Override automatic decimal precision for legend and tooltip. If null, not added to the json output. - * @param decimals1Y Override automatic decimal precision for the first Y axis. If null, use decimals parameter. - * @param decimals2Y Override automatic decimal precision for the second Y axis. If null, use decimals parameter. - * @param min_span Min span - * @param format Unit of the Y axes - * @param formatY1 Unit of the first Y axis - * @param formatY2 Unit of the second Y axis - * @param min Min of the Y axes - * @param max Max of the Y axes - * @param labelY1 Label of the first Y axis - * @param labelY2 Label of the second Y axis - * @param x_axis_mode X axis mode, one of [time, series, histogram] - * @param x_axis_values Chosen value of series, one of [avg, min, max, total, count] - * @param x_axis_buckets restricts the x axis to this amount of buckets - * @param x_axis_min restricts the x axis to display from this value if supplied - * @param x_axis_max restricts the x axis to display up to this value if supplied - * @param lines Display lines, boolean - * @param points Display points, boolean - * @param pointradius Radius of the points, allowed values are 0.5 or [1 ... 10] with step 1 - * @param bars Display bars, boolean - * @param staircase Display line as staircase, boolean - * @param dashes Display line as dashes - * @param stack Stack values - * @param repeat Variable used to repeat the graph panel - * @param legend_show Show legend - * @param legend_values Show values in legend - * @param legend_min Show min in legend - * @param legend_max Show max in legend - * @param legend_current Show current in legend - * @param legend_total Show total in legend - * @param legend_avg Show average in legend - * @param legend_alignAsTable Show legend as table - * @param legend_rightSide Show legend to the right - * @param legend_sideWidth Legend width - * @param legend_sort Sort order of legend - * @param legend_sortDesc Sort legend descending - * @param aliasColors Define color mappings for graphs - * @param thresholds Configuration of graph thresholds - * @param logBase1Y Value of logarithm base of the first Y axis - * @param logBase2Y Value of logarithm base of the second Y axis - * @param transparent Boolean (default: false) If set to true the panel will be transparent - * @param value_type Type of tooltip value - * @param shared_tooltip Boolean Allow to group or spit tooltips on mouseover within a chart - * @param percentage Boolean (defaut: false) show as percentages - * @return A json that represents a graph panel - */ - new( - title, - span=null, - fill=1, - linewidth=1, - decimals=null, - decimalsY1=null, - decimalsY2=null, - description=null, - min_span=null, - format='short', - formatY1=null, - formatY2=null, - min=null, - max=null, - labelY1=null, - labelY2=null, - x_axis_mode='time', - x_axis_values='total', - x_axis_buckets=null, - x_axis_min=null, - x_axis_max=null, - lines=true, - datasource=null, - points=false, - pointradius=5, - bars=false, - staircase=false, - height=null, - nullPointMode='null', - dashes=false, - stack=false, - repeat=null, - repeatDirection=null, - sort=0, - show_xaxis=true, - legend_show=true, - legend_values=false, - legend_min=false, - legend_max=false, - legend_current=false, - legend_total=false, - legend_avg=false, - legend_alignAsTable=false, - legend_rightSide=false, - legend_sideWidth=null, - legend_hideEmpty=null, - legend_hideZero=null, - legend_sort=null, - legend_sortDesc=null, - aliasColors={}, - thresholds=[], - links=[], - logBase1Y=1, - logBase2Y=1, - transparent=false, - value_type='individual', - shared_tooltip=true, - percentage=false, - time_from=null, - time_shift=null, - ):: { - title: title, - [if span != null then 'span']: span, - [if min_span != null then 'minSpan']: min_span, - [if decimals != null then 'decimals']: decimals, - type: 'graph', - datasource: datasource, - targets: [ - ], - [if description != null then 'description']: description, - [if height != null then 'height']: height, - renderer: 'flot', - yaxes: [ - self.yaxe( - if formatY1 != null then formatY1 else format, - min, - max, - decimals=(if decimalsY1 != null then decimalsY1 else decimals), - logBase=logBase1Y, - label=labelY1 - ), - self.yaxe( - if formatY2 != null then formatY2 else format, - min, - max, - decimals=(if decimalsY2 != null then decimalsY2 else decimals), - logBase=logBase2Y, - label=labelY2 - ), - ], - xaxis: { - show: show_xaxis, - mode: x_axis_mode, - name: null, - values: if x_axis_mode == 'series' then [x_axis_values] else [], - buckets: if x_axis_mode == 'histogram' then x_axis_buckets else null, - [if x_axis_min != null then 'min']: x_axis_min, - [if x_axis_max != null then 'max']: x_axis_max, - }, - lines: lines, - fill: fill, - linewidth: linewidth, - dashes: dashes, - dashLength: 10, - spaceLength: 10, - points: points, - pointradius: pointradius, - bars: bars, - stack: stack, - percentage: percentage, - legend: { - show: legend_show, - values: legend_values, - min: legend_min, - max: legend_max, - current: legend_current, - total: legend_total, - alignAsTable: legend_alignAsTable, - rightSide: legend_rightSide, - sideWidth: legend_sideWidth, - avg: legend_avg, - [if legend_hideEmpty != null then 'hideEmpty']: legend_hideEmpty, - [if legend_hideZero != null then 'hideZero']: legend_hideZero, - [if legend_sort != null then 'sort']: legend_sort, - [if legend_sortDesc != null then 'sortDesc']: legend_sortDesc, - }, - nullPointMode: nullPointMode, - steppedLine: staircase, - tooltip: { - value_type: value_type, - shared: shared_tooltip, - sort: if sort == 'decreasing' then 2 else if sort == 'increasing' then 1 else sort, - }, - timeFrom: time_from, - timeShift: time_shift, - [if transparent == true then 'transparent']: transparent, - aliasColors: aliasColors, - repeat: repeat, - [if repeatDirection != null then 'repeatDirection']: repeatDirection, - seriesOverrides: [], - thresholds: thresholds, - links: links, - yaxe( - format='short', - min=null, - max=null, - label=null, - show=true, - logBase=1, - decimals=null, - ):: { - label: label, - show: show, - logBase: logBase, - min: min, - max: max, - format: format, - [if decimals != null then 'decimals']: decimals, - }, - _nextTarget:: 0, - addTarget(target):: self { - // automatically ref id in added targets. - // https://github.com/kausalco/public/blob/master/klumps/grafana.libsonnet - local nextTarget = super._nextTarget, - _nextTarget: nextTarget + 1, - targets+: [target { refId: std.char(std.codepoint('A') + nextTarget) }], - }, - addTargets(targets):: std.foldl(function(p, t) p.addTarget(t), targets, self), - addSeriesOverride(override):: self { - seriesOverrides+: [override], - }, - resetYaxes():: self { - yaxes: [], - }, - addYaxis( - format='short', - min=null, - max=null, - label=null, - show=true, - logBase=1, - decimals=null, - ):: self { - yaxes+: [self.yaxe(format, min, max, label, show, logBase, decimals)], - }, - addAlert( - name, - executionErrorState='alerting', - forDuration='5m', - frequency='60s', - handler=1, - message='', - noDataState='no_data', - notifications=[], - alertRuleTags={}, - ):: self { - local it = self, - _conditions:: [], - alert: { - name: name, - conditions: it._conditions, - executionErrorState: executionErrorState, - 'for': forDuration, - frequency: frequency, - handler: handler, - noDataState: noDataState, - notifications: notifications, - message: message, - alertRuleTags: alertRuleTags, - }, - addCondition(condition):: self { - _conditions+: [condition], - }, - addConditions(conditions):: std.foldl(function(p, c) p.addCondition(c), conditions, it), - }, - addLink(link):: self { - links+: [link], - }, - }, -} diff --git a/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/graphite.libsonnet b/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/graphite.libsonnet deleted file mode 100644 index afa463bdedba..000000000000 --- a/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/graphite.libsonnet +++ /dev/null @@ -1,29 +0,0 @@ -{ - /** - * Return an Graphite Target - * - * @name graphite.target - * - * @param target Graphite Query. Nested queries are possible by adding the query reference (refId). - * @param targetFull Expanding the @target. Used in nested queries. - * @param hide Disable query on graph. - * @param textEditor Enable raw query mode. - * @param datasource Datasource. - - * @return Panel target - */ - target( - target, - targetFull=null, - hide=false, - textEditor=false, - datasource=null, - ):: { - target: target, - hide: hide, - textEditor: textEditor, - - [if targetFull != null then 'targetFull']: targetFull, - [if datasource != null then 'datasource']: datasource, - }, -} diff --git a/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/heatmap_panel.libsonnet b/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/heatmap_panel.libsonnet deleted file mode 100644 index 998be6e59e59..000000000000 --- a/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/heatmap_panel.libsonnet +++ /dev/null @@ -1,144 +0,0 @@ -{ - /** - * Returns a heatmap panel. - * Requires the heatmap panel plugin in Grafana, which is built-in. - * - * @name heatmapPanel.new - * - * @param title The title of the heatmap panel - * @param datasource Datasource - * @param min_span Min span - * @param span Width of the panel - * @param cards_cardPadding How much padding to put between bucket cards - * @param cards_cardRound How much rounding should be applied to the bucket card shape - * @param color_cardColor Hex value of color used when color_colorScheme is 'opacity' - * @param color_colorScale How to scale the color range, 'linear' or 'sqrt' - * @param color_colorScheme TODO: document - * @param color_exponent TODO: document - * @param color_max The value for the end of the color range - * @param color_min The value for the beginning of the color range - * @param color_mode How to display difference in frequency with color, default 'opacity' - * @param dataFormat How to format the data, default is 'timeseries' - * @param highlightCards TODO: document - * @param hideZeroBuckets Whether or not to hide empty buckets, default is false - * @param legend_show Show legend - * @param minSpan Minimum span of the panel when repeated on a template variable - * @param repeat Variable used to repeat the heatmap panel - * @param repeatDirection Which direction to repeat the panel, 'h' for horizontal and 'v' for vertically - * @param tooltipDecimals The number of decimal places to display in the tooltip - * @param tooltip_show Whether or not to display a tooltip when hovering over the heatmap - * @param tooltip_showHistogram Whether or not to display a histogram in the tooltip - * @param xAxis_show Whether or not to show the X axis, default true - * @param xBucketNumber Number of buckets for the X axis - * @param xBucketSize Size of X axis buckets. Number or interval(10s, 15h, etc.) Has priority over xBucketNumber - * @param yAxis_decimals Override automatic decimal precision for the Y axis - * @param yAxis_format Unit of the Y axis - * @param yAxis_logBase Only if dataFormat is 'timeseries' - * @param yAxis_min Only if dataFormat is 'timeseries', min of the Y axis - * @param yAxis_max Only if dataFormat is 'timeseries', max of the Y axis - * @param yAxis_show Wheter or not to show the Y axis - * @param yAxis_splitFactor TODO: document - * @param yBucketBound Which bound ('lower' or 'upper') of the bucket to use, default 'auto' - * @param yBucketNumber Number of buckets for the Y axis - * @param yBucketSize Size of Y axis buckets. Has priority over yBucketNumber - */ - new( - title, - datasource=null, - description=null, - cards_cardPadding=null, - cards_cardRound=null, - color_cardColor='#b4ff00', - color_colorScale='sqrt', - color_colorScheme='interpolateOranges', - color_exponent=0.5, - color_max=null, - color_min=null, - color_mode='spectrum', - dataFormat='timeseries', - highlightCards=true, - hideZeroBuckets=false, - legend_show=false, - minSpan=null, - span=null, - repeat=null, - repeatDirection=null, - tooltipDecimals=null, - tooltip_show=true, - tooltip_showHistogram=false, - xAxis_show=true, - xBucketNumber=null, - xBucketSize=null, - yAxis_decimals=null, - yAxis_format='short', - yAxis_logBase=1, - yAxis_min=null, - yAxis_max=null, - yAxis_show=true, - yAxis_splitFactor=null, - yBucketBound='auto', - yBucketNumber=null, - yBucketSize=null, - - ):: { - title: title, - type: 'heatmap', - [if description != null then 'description']: description, - datasource: datasource, - cards: { - cardPadding: cards_cardPadding, - cardRound: cards_cardRound, - }, - color: { - mode: color_mode, - cardColor: color_cardColor, - colorScale: color_colorScale, - exponent: color_exponent, - [if color_mode == 'spectrum' then 'colorScheme']: color_colorScheme, - [if color_max != null then 'max']: color_max, - [if color_min != null then 'min']: color_min, - }, - [if dataFormat != null then 'dataFormat']: dataFormat, - heatmap: {}, - hideZeroBuckets: hideZeroBuckets, - highlightCards: highlightCards, - legend: { - show: legend_show, - }, - [if minSpan != null then 'minSpan']: minSpan, - [if span != null then 'span']: span, - [if repeat != null then 'repeat']: repeat, - [if repeatDirection != null then 'repeatDirection']: repeatDirection, - tooltip: { - show: tooltip_show, - showHistogram: tooltip_showHistogram, - }, - [if tooltipDecimals != null then 'tooltipDecimals']: tooltipDecimals, - xAxis: { - show: xAxis_show, - }, - xBucketNumber: if dataFormat == 'timeseries' && xBucketSize != null then xBucketNumber else null, - xBucketSize: if dataFormat == 'timeseries' && xBucketSize != null then xBucketSize else null, - yAxis: { - decimals: yAxis_decimals, - [if dataFormat == 'timeseries' then 'logBase']: yAxis_logBase, - format: yAxis_format, - [if dataFormat == 'timeseries' then 'max']: yAxis_max, - [if dataFormat == 'timeseries' then 'min']: yAxis_min, - show: yAxis_show, - splitFactor: yAxis_splitFactor, - }, - yBucketBound: yBucketBound, - [if dataFormat == 'timeseries' then 'yBucketNumber']: yBucketNumber, - [if dataFormat == 'timeseries' then 'yBucketSize']: yBucketSize, - - _nextTarget:: 0, - addTarget(target):: self { - local nextTarget = super._nextTarget, - _nextTarget: nextTarget + 1, - targets+: [target { refId: std.char(std.codepoint('A') + nextTarget) }], - }, - addTargets(targets):: std.foldl(function(p, t) p.addTarget(t), targets, self), - }, - -} diff --git a/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/influxdb.libsonnet b/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/influxdb.libsonnet deleted file mode 100644 index 618862390b0e..000000000000 --- a/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/influxdb.libsonnet +++ /dev/null @@ -1,101 +0,0 @@ -{ - /** - * Return an InfluxDB Target - * - * @name influxdb.target - * - * @param query Raw InfluxQL statement - * - * @param alias 'Alias By' pattern - * @param datasource Datasource - * - * @param rawQuery Enable/disable raw query mode - * - * @param policy Tagged query 'From' policy - * @param measurement Tagged query 'From' measurement - * @param group_time 'Group by' time condition (if set to null, do not groups by time) - * @param group_tags 'Group by' tags list - * @param fill 'Group by' missing values fill mode (works only with 'Group by time()') - * - * @param resultFormat Format results as 'Time series' or 'Table' - * - * @return Panel target - */ - target( - query=null, - - alias=null, - datasource=null, - - rawQuery=null, - - policy='default', - measurement=null, - - group_time='$__interval', - group_tags=[], - fill='none', - - resultFormat='time_series', - ):: { - local it = self, - - [if alias != null then 'alias']: alias, - [if datasource != null then 'datasource']: datasource, - - [if query != null then 'query']: query, - [if rawQuery != null then 'rawQuery']: rawQuery, - [if rawQuery == null && query != null then 'rawQuery']: true, - - policy: policy, - [if measurement != null then 'measurement']: measurement, - tags: [], - select: [], - groupBy: - if group_time != null then - [{ type: 'time', params: [group_time] }] + - [{ type: 'tag', params: [tag_name] } for tag_name in group_tags] + - [{ type: 'fill', params: [fill] }] - else - [{ type: 'tag', params: [tag_name] } for tag_name in group_tags], - - resultFormat: resultFormat, - - where(key, operator, value, condition=null):: self { - /* - * Adds query tag condition ('Where' section) - */ - tags: - if std.length(it.tags) == 0 then - [{ key: key, operator: operator, value: value }] - else - it.tags + [{ - key: key, - operator: operator, - value: value, - condition: if condition == null then 'AND' else condition, - }], - }, - - selectField(value):: self { - /* - * Adds InfluxDB selection ('field(value)' part of 'Select' statement) - */ - select+: [[{ params: [value], type: 'field' }]], - }, - - addConverter(type, params=[]):: self { - /* - * Appends converter (aggregation, selector, etc.) to last added selection - */ - local len = std.length(it.select), - select: - if len == 1 then - [it.select[0] + [{ params: params, type: type }]] - else if len > 1 then - it.select[0:(len - 1)] + [it.select[len - 1] + [{ params: params, type: type }]] - else - [], - }, - }, -} diff --git a/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/link.libsonnet b/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/link.libsonnet deleted file mode 100644 index 1a9546db4fe3..000000000000 --- a/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/link.libsonnet +++ /dev/null @@ -1,27 +0,0 @@ -{ - /** - * @name link.dashboards - */ - dashboards( - title, - tags, - asDropdown=true, - includeVars=false, - keepTime=false, - icon='external link', - url='', - targetBlank=false, - type='dashboards', - ):: - { - asDropdown: asDropdown, - icon: icon, - includeVars: includeVars, - keepTime: keepTime, - tags: tags, - title: title, - type: type, - url: url, - targetBlank: targetBlank, - }, -} diff --git a/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/log_panel.libsonnet b/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/log_panel.libsonnet deleted file mode 100644 index be90a0de919b..000000000000 --- a/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/log_panel.libsonnet +++ /dev/null @@ -1,54 +0,0 @@ -{ - /** - * Returns a new log panel that can be added in a row. - * It requires the log panel plugin in grafana, which is built-in. - * - * @name logPanel.new - * - * @param title The title of the log panel. - * @param span Width of the panel - * @param datasource Datasource - * @showLabels boolean to show or hide labels - * @showTime boolean to show or hide time for each line - * @wrapLogMessage true to wrap log line to the next line - * @sortOrder sort log by time (can be Descending or Ascending ) - * @return A json that represents a log panel - */ - new( - title='', - datasource=null, - time_from=null, - time_shift=null, - showLabels=false, - showTime=true, - sortOrder='Descending', - wrapLogMessage=true, - span=12, - height=null, - ):: { - [if height != null then 'height']: height, - span: span, - datasource: datasource, - options: { - showLabels: showLabels, - showTime: showTime, - sortOrder: sortOrder, - wrapLogMessage: wrapLogMessage, - }, - targets: [ - ], - _nextTarget:: 0, - addTarget(target):: self { - // automatically ref id in added targets. - // https://github.com/kausalco/public/blob/master/klumps/grafana.libsonnet - local nextTarget = super._nextTarget, - _nextTarget: nextTarget + 1, - targets+: [target { refId: std.char(std.codepoint('A') + nextTarget) }], - }, - addTargets(targets):: std.foldl(function(p, t) p.addTarget(t), targets, self), - timeFrom: time_from, - timeShift: time_shift, - title: title, - type: 'logs', - }, -} diff --git a/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/loki.libsonnet b/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/loki.libsonnet deleted file mode 100644 index e95bb263addb..000000000000 --- a/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/loki.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - /** - * @name loki.target - */ - target( - expr, - hide=null, - ):: { - [if hide != null then 'hide']: hide, - expr: expr, - }, -} diff --git a/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/pie_chart_panel.libsonnet b/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/pie_chart_panel.libsonnet deleted file mode 100644 index faa2f1a0f588..000000000000 --- a/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/pie_chart_panel.libsonnet +++ /dev/null @@ -1,56 +0,0 @@ -{ - /** - * Returns a new pie chart panel that can be added in a row. - * It requires the pie chart panel plugin in grafana, which needs to be explicitly installed. - * - * @name pieChartPanel.new - * - * @param title The title of the pie chart panel. - * @param description Description of the panel - * @param span Width of the panel - * @param min_span Min span - * @param datasource Datasource - * @param aliasColors Define color mappings - * @param pieType Type of pie chart (one of pie or donut) - * @return A json that represents a pie chart panel - */ - new( - title, - description='', - span=null, - min_span=null, - datasource=null, - height=null, - aliasColors={}, - pieType='pie', - valueName='current', - showLegend=true, - showLegendPercentage=true, - legendType='Right side', - ):: { - type: 'grafana-piechart-panel', - [if description != null then 'description']: description, - pieType: pieType, - title: title, - aliasColors: aliasColors, - [if span != null then 'span']: span, - [if min_span != null then 'minSpan']: min_span, - [if height != null then 'height']: height, - valueName: valueName, - datasource: datasource, - legend: { - show: showLegend, - values: true, - percentage: showLegendPercentage, - }, - legendType: legendType, - targets: [ - ], - _nextTarget:: 0, - addTarget(target):: self { - local nextTarget = super._nextTarget, - _nextTarget: nextTarget + 1, - targets+: [target { refId: std.char(std.codepoint('A') + nextTarget) }], - }, - }, -} diff --git a/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/pluginlist.libsonnet b/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/pluginlist.libsonnet deleted file mode 100644 index 45d4131b7235..000000000000 --- a/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/pluginlist.libsonnet +++ /dev/null @@ -1,23 +0,0 @@ -{ - /** - * Returns a new pluginlist panel that can be added in a row. - * It requires the pluginlist panel plugin in grafana, which is built-in. - * - * @name pluginlist.new - * - * @param title The title of the pluginlist panel. - * @param description Description of the panel - * @param limit Set maximum items in a list - * @return A json that represents a pluginlist panel - */ - new( - title, - description=null, - limit=null, - ):: { - type: 'pluginlist', - title: title, - [if limit != null then 'limit']: limit, - [if description != null then 'description']: description, - }, -} diff --git a/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/prometheus.libsonnet b/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/prometheus.libsonnet deleted file mode 100644 index 5cb1c7bae95b..000000000000 --- a/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/prometheus.libsonnet +++ /dev/null @@ -1,24 +0,0 @@ -{ - /** - * @name prometheus.target - */ - target( - expr, - format='time_series', - intervalFactor=2, - legendFormat='', - datasource=null, - interval=null, - instant=null, - hide=null, - ):: { - [if hide != null then 'hide']: hide, - [if datasource != null then 'datasource']: datasource, - expr: expr, - format: format, - intervalFactor: intervalFactor, - legendFormat: legendFormat, - [if interval != null then 'interval']: interval, - [if instant != null then 'instant']: instant, - }, -} diff --git a/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/row.libsonnet b/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/row.libsonnet deleted file mode 100644 index d7cfe42b72cc..000000000000 --- a/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/row.libsonnet +++ /dev/null @@ -1,35 +0,0 @@ -{ - /** - * @name row.new - */ - new( - title='Dashboard Row', - height=null, - collapse=false, - repeat=null, - showTitle=null, - titleSize='h6' - ):: { - collapse: collapse, - collapsed: collapse, - [if height != null then 'height']: height, - panels: [], - repeat: repeat, - repeatIteration: null, - repeatRowId: null, - showTitle: - if showTitle != null then - showTitle - else - title != 'Dashboard Row', - title: title, - type: 'row', - titleSize: titleSize, - addPanels(panels):: self { - panels+: panels, - }, - addPanel(panel, gridPos={}):: self { - panels+: [panel { gridPos: gridPos }], - }, - }, -} diff --git a/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/singlestat.libsonnet b/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/singlestat.libsonnet deleted file mode 100644 index e74904b025fa..000000000000 --- a/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/singlestat.libsonnet +++ /dev/null @@ -1,136 +0,0 @@ -{ - /** - * @name singlestat.new - */ - new( - title, - format='none', - description='', - interval=null, - height=null, - datasource=null, - span=null, - min_span=null, - decimals=null, - valueName='avg', - valueFontSize='80%', - prefixFontSize='50%', - postfixFontSize='50%', - mappingType=1, - repeat=null, - repeatDirection=null, - prefix='', - postfix='', - colors=[ - '#299c46', - 'rgba(237, 129, 40, 0.89)', - '#d44a3a', - ], - colorBackground=false, - colorValue=false, - thresholds='', - valueMaps=[ - { - value: 'null', - op: '=', - text: 'N/A', - }, - ], - rangeMaps=[ - { - from: 'null', - to: 'null', - text: 'N/A', - }, - ], - transparent=null, - sparklineFillColor='rgba(31, 118, 189, 0.18)', - sparklineFull=false, - sparklineLineColor='rgb(31, 120, 193)', - sparklineShow=false, - gaugeShow=false, - gaugeMinValue=0, - gaugeMaxValue=100, - gaugeThresholdMarkers=true, - gaugeThresholdLabels=false, - timeFrom=null, - links=[], - tableColumn='', - maxPerRow=null, - ):: - { - [if height != null then 'height']: height, - [if description != '' then 'description']: description, - [if repeat != null then 'repeat']: repeat, - [if repeatDirection != null then 'repeatDirection']: repeatDirection, - [if transparent != null then 'transparent']: transparent, - [if min_span != null then 'minSpan']: min_span, - title: title, - [if span != null then 'span']: span, - type: 'singlestat', - datasource: datasource, - targets: [ - ], - links: links, - [if decimals != null then 'decimals']: decimals, - maxDataPoints: 100, - interval: interval, - cacheTimeout: null, - format: format, - prefix: prefix, - postfix: postfix, - nullText: null, - valueMaps: valueMaps, - [if maxPerRow != null then 'maxPerRow']: maxPerRow, - mappingTypes: [ - { - name: 'value to text', - value: 1, - }, - { - name: 'range to text', - value: 2, - }, - ], - rangeMaps: rangeMaps, - mappingType: - if mappingType == 'value' - then - 1 - else if mappingType == 'range' - then - 2 - else - mappingType, - nullPointMode: 'connected', - valueName: valueName, - prefixFontSize: prefixFontSize, - valueFontSize: valueFontSize, - postfixFontSize: postfixFontSize, - thresholds: thresholds, - [if timeFrom != null then 'timeFrom']: timeFrom, - colorBackground: colorBackground, - colorValue: colorValue, - colors: colors, - gauge: { - show: gaugeShow, - minValue: gaugeMinValue, - maxValue: gaugeMaxValue, - thresholdMarkers: gaugeThresholdMarkers, - thresholdLabels: gaugeThresholdLabels, - }, - sparkline: { - fillColor: sparklineFillColor, - full: sparklineFull, - lineColor: sparklineLineColor, - show: sparklineShow, - }, - tableColumn: tableColumn, - _nextTarget:: 0, - addTarget(target):: self { - local nextTarget = super._nextTarget, - _nextTarget: nextTarget + 1, - targets+: [target { refId: std.char(std.codepoint('A') + nextTarget) }], - }, - }, -} diff --git a/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/sql.libsonnet b/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/sql.libsonnet deleted file mode 100644 index 2aaa3dd765f0..000000000000 --- a/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/sql.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - /** - * @name sql.target - */ - target( - rawSql, - datasource=null, - format='time_series', - ):: { - [if datasource != null then 'datasource']: datasource, - format: format, - rawSql: rawSql, - }, -} diff --git a/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/table_panel.libsonnet b/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/table_panel.libsonnet deleted file mode 100644 index f1de6368c416..000000000000 --- a/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/table_panel.libsonnet +++ /dev/null @@ -1,73 +0,0 @@ -{ - /** - * Returns a new table panel that can be added in a row. - * It requires the table panel plugin in grafana, which is built-in. - * - * @name table.new - * - * @param title The title of the graph panel. - * @param span Width of the panel - * @param height Height of the panel - * @param description Description of the panel - * @param datasource Datasource - * @param min_span Min span - * @param styles Styles for the panel - * @param columns Columns for the panel - * @param sort Sorting instruction for the panel - * @param transform allow table manipulation to present data as desired - * @param transparent Boolean (default: false) If set to true the panel will be transparent - * @return A json that represents a table panel - */ - new( - title, - description=null, - span=null, - min_span=null, - height=null, - datasource=null, - styles=[], - transform=null, - transparent=false, - columns=[], - sort=null, - time_from=null, - time_shift=null, - ):: { - type: 'table', - title: title, - [if span != null then 'span']: span, - [if min_span != null then 'minSpan']: min_span, - [if height != null then 'height']: height, - datasource: datasource, - targets: [ - ], - styles: styles, - columns: columns, - timeFrom: time_from, - timeShift: time_shift, - [if sort != null then 'sort']: sort, - [if description != null then 'description']: description, - [if transform != null then 'transform']: transform, - [if transparent == true then 'transparent']: transparent, - _nextTarget:: 0, - addTarget(target):: self { - local nextTarget = super._nextTarget, - _nextTarget: nextTarget + 1, - targets+: [target { refId: std.char(std.codepoint('A') + nextTarget) }], - }, - addTargets(targets):: std.foldl(function(p, t) p.addTarget(t), targets, self), - addColumn(field, style):: self { - local style_ = style { pattern: field }, - local column_ = { text: field, value: field }, - styles+: [style_], - columns+: [column_], - }, - hideColumn(field):: self { - styles+: [{ - alias: field, - pattern: field, - type: 'hidden', - }], - }, - }, -} diff --git a/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/template.libsonnet b/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/template.libsonnet deleted file mode 100644 index e7657d3fb037..000000000000 --- a/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/template.libsonnet +++ /dev/null @@ -1,164 +0,0 @@ -{ - /** - * @name template.new - */ - new( - name, - datasource, - query, - label=null, - allValues=null, - tagValuesQuery='', - current=null, - hide='', - regex='', - refresh='never', - includeAll=false, - multi=false, - sort=0, - ):: - { - allValue: allValues, - current: $.current(current), - datasource: datasource, - includeAll: includeAll, - hide: $.hide(hide), - label: label, - multi: multi, - name: name, - options: [], - query: query, - refresh: $.refresh(refresh), - regex: regex, - sort: sort, - tagValuesQuery: tagValuesQuery, - tags: [], - tagsQuery: '', - type: 'query', - useTags: false, - }, - /** - * @name template.interval - */ - interval( - name, - query, - current, - hide='', - label=null, - auto_count=300, - auto_min='10s', - ):: - { - current: $.current(current), - hide: $.hide(hide), - label: label, - name: name, - query: std.join(',', std.filter($.filterAuto, std.split(query, ','))), - refresh: 2, - type: 'interval', - auto: std.count(std.split(query, ','), 'auto') > 0, - auto_count: auto_count, - auto_min: auto_min, - }, - hide(hide):: - if hide == '' then 0 else if hide == 'label' then 1 else 2, - current(current):: { - [if current != null then 'text']: current, - [if current != null then 'value']: if current == 'auto' then - '$__auto_interval' - else if current == 'all' then - '$__all' - else - current, - }, - /** - * @name template.datasource - */ - datasource( - name, - query, - current, - hide='', - label=null, - regex='', - refresh='load', - ):: { - current: $.current(current), - hide: $.hide(hide), - label: label, - name: name, - options: [], - query: query, - refresh: $.refresh(refresh), - regex: regex, - type: 'datasource', - }, - refresh(refresh):: if refresh == 'never' - then - 0 - else if refresh == 'load' - then - 1 - else if refresh == 'time' - then - 2 - else - refresh, - filterAuto(str):: str != 'auto', - /** - * @name template.custom - */ - custom( - name, - query, - current, - refresh='never', - label='', - valuelabels={}, - multi=false, - allValues=null, - includeAll=false, - hide='', - ):: - { - allValue: allValues, - current: { - value: current, - text: if current in valuelabels then valuelabels[current] else current, - }, - options: std.map( - function(i) - { - text: if i in valuelabels then valuelabels[i] else i, - value: i, - }, std.split(query, ',') - ), - hide: $.hide(hide), - includeAll: includeAll, - label: label, - refresh: $.refresh(refresh), - multi: multi, - name: name, - query: query, - type: 'custom', - }, - /** - * @name template.text - */ - text( - name, - label='' - ):: - { - current: { - selected: false, - text: '', - value: '', - }, - name: name, - label: label, - query: '', - type: 'textbox', - }, -} diff --git a/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/text.libsonnet b/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/text.libsonnet deleted file mode 100644 index 25c4deb84d95..000000000000 --- a/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/text.libsonnet +++ /dev/null @@ -1,24 +0,0 @@ -{ - /** - * @name text.new - */ - new( - title='', - span=null, - mode='markdown', - content='', - transparent=null, - description=null, - datasource=null, - ):: - { - [if transparent != null then 'transparent']: transparent, - title: title, - [if span != null then 'span']: span, - type: 'text', - mode: mode, - content: content, - [if description != null then 'description']: description, - datasource: datasource, - }, -} diff --git a/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/timepicker.libsonnet b/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/timepicker.libsonnet deleted file mode 100644 index b7f92b605d82..000000000000 --- a/example/k3d/vendor/github.com/grafana/grafonnet-lib/grafonnet/timepicker.libsonnet +++ /dev/null @@ -1,33 +0,0 @@ -{ - /** - * @name timepicker.new - */ - new( - refresh_intervals=[ - '5s', - '10s', - '30s', - '1m', - '5m', - '15m', - '30m', - '1h', - '2h', - '1d', - ], - time_options=[ - '5m', - '15m', - '1h', - '6h', - '12h', - '24h', - '2d', - '7d', - '30d', - ], - ):: { - refresh_intervals: refresh_intervals, - time_options: time_options, - }, -} diff --git a/example/k3d/vendor/github.com/grafana/jsonnet-libs/grafana-builder/grafana.libsonnet b/example/k3d/vendor/github.com/grafana/jsonnet-libs/grafana-builder/grafana.libsonnet deleted file mode 100644 index eca9cbacbcbd..000000000000 --- a/example/k3d/vendor/github.com/grafana/jsonnet-libs/grafana-builder/grafana.libsonnet +++ /dev/null @@ -1,418 +0,0 @@ -{ - dashboard(title, uid=''):: { - // Stuff that isn't materialised. - _nextPanel:: 1, - addRow(row):: self { - // automatically number panels in added rows. - local n = std.length(row.panels), - local nextPanel = super._nextPanel, - local panels = std.makeArray(n, function(i) - row.panels[i] { id: nextPanel + i }), - - _nextPanel: nextPanel + n, - rows+: [row { panels: panels }], - }, - - addTemplate(name, metric_name, label_name, hide=0):: self { - templating+: { - list+: [{ - allValue: null, - current: { - text: 'prod', - value: 'prod', - }, - datasource: '$datasource', - hide: hide, - includeAll: false, - label: name, - multi: false, - name: name, - options: [], - query: 'label_values(%s, %s)' % [metric_name, label_name], - refresh: 1, - regex: '', - sort: 2, - tagValuesQuery: '', - tags: [], - tagsQuery: '', - type: 'query', - useTags: false, - }], - }, - }, - - addMultiTemplate(name, metric_name, label_name, hide=0):: self { - templating+: { - list+: [{ - allValue: null, - current: { - selected: true, - text: 'All', - value: '$__all', - }, - datasource: '$datasource', - hide: hide, - includeAll: true, - label: name, - multi: true, - name: name, - options: [], - query: 'label_values(%s, %s)' % [metric_name, label_name], - refresh: 1, - regex: '', - sort: 2, - tagValuesQuery: '', - tags: [], - tagsQuery: '', - type: 'query', - useTags: false, - }], - }, - }, - - // Stuff that is materialised. - uid: uid, - annotations: { - list: [], - }, - hideControls: false, - links: [], - rows: [], - schemaVersion: 14, - style: 'dark', - tags: [], - editable: true, - gnetId: null, - graphTooltip: 0, - templating: { - list: [ - { - current: { - text: 'default', - value: 'default', - }, - hide: 0, - label: null, - name: 'datasource', - options: [], - query: 'prometheus', - refresh: 1, - regex: '', - type: 'datasource', - }, - ], - }, - time: { - from: 'now-1h', - to: 'now', - }, - refresh: '10s', - timepicker: { - refresh_intervals: [ - '5s', - '10s', - '30s', - '1m', - '5m', - '15m', - '30m', - '1h', - '2h', - '1d', - ], - time_options: [ - '5m', - '15m', - '1h', - '6h', - '12h', - '24h', - '2d', - '7d', - '30d', - ], - }, - timezone: 'utc', - title: title, - version: 0, - }, - - row(title):: { - _panels:: [], - addPanel(panel):: self { - _panels+: [panel], - }, - - panels: - // Automatically distribute panels within a row. - local n = std.length(self._panels); - [ - p { span: std.floor(12 / n) } - for p in self._panels - ], - - collapse: false, - height: '250px', - repeat: null, - repeatIteration: null, - repeatRowId: null, - showTitle: true, - title: title, - titleSize: 'h6', - }, - - panel(title):: { - aliasColors: {}, - bars: false, - dashLength: 10, - dashes: false, - datasource: '$datasource', - fill: 1, - legend: { - avg: false, - current: false, - max: false, - min: false, - show: true, - total: false, - values: false, - }, - lines: true, - linewidth: 1, - links: [], - nullPointMode: 'null as zero', - percentage: false, - pointradius: 5, - points: false, - renderer: 'flot', - seriesOverrides: [], - spaceLength: 10, - span: 6, - stack: false, - steppedLine: false, - targets: [], - thresholds: [], - timeFrom: null, - timeShift: null, - title: title, - tooltip: { - shared: true, - sort: 0, - value_type: 'individual', - }, - type: 'graph', - xaxis: { - buckets: null, - mode: 'time', - name: null, - show: true, - values: [], - }, - yaxes: $.yaxes('short'), - }, - - queryPanel(queries, legends, legendLink=null):: { - - local qs = - if std.type(queries) == 'string' - then [queries] - else queries, - local ls = - if std.type(legends) == 'string' - then [legends] - else legends, - - local qsandls = if std.length(ls) == std.length(qs) - then std.makeArray(std.length(qs), function(x) { q: qs[x], l: ls[x] }) - else error 'length of queries is not equal to length of legends', - - targets+: [ - { - legendLink: legendLink, - expr: ql.q, - format: 'time_series', - intervalFactor: 2, - legendFormat: ql.l, - step: 10, - } - for ql in qsandls - ], - }, - - statPanel(query, format='percentunit'):: { - type: 'singlestat', - thresholds: '70,80', - format: format, - targets: [ - { - expr: query, - format: 'time_series', - instant: true, - intervalFactor: 2, - refId: 'A', - }, - ], - }, - - tablePanel(queries, labelStyles):: { - local qs = - if std.type(queries) == 'string' - then [queries] - else queries, - - local style(labelStyle) = - if std.type(labelStyle) == 'string' - then { - alias: labelStyle, - colorMode: null, - colors: [], - dateFormat: 'YYYY-MM-DD HH:mm:ss', - decimals: 2, - thresholds: [], - type: 'string', - unit: 'short', - } - else { - alias: labelStyle.alias, - colorMode: null, - colors: [], - dateFormat: 'YYYY-MM-DD HH:mm:ss', - decimals: if std.objectHas(labelStyle, 'decimals') then labelStyle.decimals else 2, - thresholds: [], - type: if std.objectHas(labelStyle, 'type') then labelStyle.type else 'number', - unit: if std.objectHas(labelStyle, 'unit') then labelStyle.unit else 'short', - link: std.objectHas(labelStyle, 'link'), - linkTooltip: if std.objectHas(labelStyle, 'linkTooltip') then labelStyle.linkTooltip else 'Drill down', - linkUrl: if std.objectHas(labelStyle, 'link') then labelStyle.link else '', - }, - - _styles:: { - // By default hide time. - Time: { - alias: 'Time', - dateFormat: 'YYYY-MM-DD HH:mm:ss', - type: 'hidden', - }, - } + { - [label]: style(labelStyles[label]) - for label in std.objectFields(labelStyles) - }, - - styles: [ - self._styles[pattern] { pattern: pattern } - for pattern in std.objectFields(self._styles) - ] + [style('') + { pattern: '/.*/' }], - - transform: 'table', - type: 'table', - targets: [ - { - expr: qs[i], - format: 'table', - instant: true, - intervalFactor: 2, - legendFormat: '', - step: 10, - refId: std.char(65 + i), - } - for i in std.range(0, std.length(qs) - 1) - ], - }, - - stack:: { - stack: true, - fill: 10, - linewidth: 0, - }, - - yaxes(args):: - local format = if std.type(args) == 'string' then args else null; - local options = if std.type(args) == 'object' then args else {}; - [ - { - format: format, - label: null, - logBase: 1, - max: null, - min: 0, - show: true, - } + options, - { - format: 'short', - label: null, - logBase: 1, - max: null, - min: null, - show: false, - }, - ], - - qpsPanel(selector):: { - aliasColors: { - '1xx': '#EAB839', - '2xx': '#7EB26D', - '3xx': '#6ED0E0', - '4xx': '#EF843C', - '5xx': '#E24D42', - success: '#7EB26D', - 'error': '#E24D42', - }, - targets: [ - { - expr: 'sum by (status) (label_replace(label_replace(rate(' + selector + '[$__interval]),' - + ' "status", "${1}xx", "status_code", "([0-9]).."),' - + ' "status", "${1}", "status_code", "([a-z]+)"))', - format: 'time_series', - intervalFactor: 2, - legendFormat: '{{status}}', - refId: 'A', - step: 10, - }, - ], - } + $.stack, - - latencyPanel(metricName, selector, multiplier='1e3'):: { - nullPointMode: 'null as zero', - targets: [ - { - expr: 'histogram_quantile(0.99, sum(rate(%s_bucket%s[$__interval])) by (le)) * %s' % [metricName, selector, multiplier], - format: 'time_series', - intervalFactor: 2, - legendFormat: '99th Percentile', - refId: 'A', - step: 10, - }, - { - expr: 'histogram_quantile(0.50, sum(rate(%s_bucket%s[$__interval])) by (le)) * %s' % [metricName, selector, multiplier], - format: 'time_series', - intervalFactor: 2, - legendFormat: '50th Percentile', - refId: 'B', - step: 10, - }, - { - expr: 'sum(rate(%s_sum%s[$__interval])) * %s / sum(rate(%s_count%s[$__interval]))' % [metricName, selector, multiplier, metricName, selector], - format: 'time_series', - intervalFactor: 2, - legendFormat: 'Average', - refId: 'C', - step: 10, - }, - ], - yaxes: $.yaxes('ms'), - }, - - selector:: { - eq(label, value):: { label: label, op: '=', value: value }, - neq(label, value):: { label: label, op: '!=', value: value }, - re(label, value):: { label: label, op: '=~', value: value }, - nre(label, value):: { label: label, op: '!~', value: value }, - }, - - toPrometheusSelector(selector):: - local pairs = [ - '%(label)s%(op)s"%(value)s"' % matcher - for matcher in selector - ]; - '{%s}' % std.join(', ', pairs), -} diff --git a/example/k3d/vendor/github.com/grafana/jsonnet-libs/ksonnet-util/kausal.libsonnet b/example/k3d/vendor/github.com/grafana/jsonnet-libs/ksonnet-util/kausal.libsonnet deleted file mode 100755 index 00a46585dda6..000000000000 --- a/example/k3d/vendor/github.com/grafana/jsonnet-libs/ksonnet-util/kausal.libsonnet +++ /dev/null @@ -1,459 +0,0 @@ -// Override defaults paramters for objects in the ksonnet libs here. -local k = import 'k.libsonnet'; - -k { - _config+:: { - enable_rbac: true, - enable_pod_priorities: false, - namespace: error 'Must define a namespace', - }, - - core+: { - v1+: { - configMap+: { - new(name):: - super.new(name, {}), - withData(data):: - if (data == {}) then {} - else super.withData(data), - withDataMixin(data):: - if (data == {}) then {} - else super.withDataMixin(data), - }, - - // Expose containerPort type. - containerPort:: $.core.v1.container.portsType { - // Force all ports to have names. - new(name, port):: - super.newNamed(name=name, containerPort=port), - - // Shortcut constructor for UDP ports. - newUDP(name, port):: - super.newNamed(name=name, containerPort=port) + - super.withProtocol('UDP'), - }, - - // Expose volumes type. - volume:: $.core.v1.pod.mixin.spec.volumesType { - // Make items parameter optional from fromConfigMap - fromConfigMap(name, configMapName, configMapItems=[]):: - { - configMap+: - if configMapItems == [] then { items:: null } - else {}, - } - + super.fromConfigMap(name, configMapName, configMapItems), - - // Shortcut constructor for secret volumes. - fromSecret(name, secretName):: - super.withName(name) + - super.mixin.secret.withSecretName(secretName), - - // Rename emptyDir to claimName - fromPersistentVolumeClaim(name='', claimName=''):: super.fromPersistentVolumeClaim(name=name, emptyDir=claimName), - }, - - volumeMount:: $.core.v1.container.volumeMountsType { - // Override new, such that it doesn't always set readOnly: false. - new(name, mountPath, readOnly=false):: - {} + self.withName(name) + self.withMountPath(mountPath) + - if readOnly - then self.withReadOnly(readOnly) - else {}, - }, - - persistentVolumeClaim+:: { - new():: {}, - }, - - container:: $.apps.v1.deployment.mixin.spec.template.spec.containersType { - new(name, image):: - super.new(name, image) + - super.withImagePullPolicy('IfNotPresent'), - - withEnvMixin(es):: - // if an envvar has an empty value ("") we want to remove that property - // because k8s will remove that and then it would always - // show up as a difference. - local removeEmptyValue(obj) = - if std.objectHas(obj, 'value') && std.length(obj.value) == 0 then - { - [k]: obj[k] - for k in std.objectFields(obj) - if k != 'value' - } - else - obj; - super.withEnvMixin([ - removeEmptyValue(envvar) - for envvar in es - ]), - - withEnvMap(es):: - self.withEnvMixin([ - $.core.v1.container.envType.new(k, es[k]) - for k in std.objectFields(es) - ]), - }, - - toleration:: $.apps.v1.deployment.mixin.spec.template.spec.tolerationsType, - - servicePort:: $.core.v1.service.mixin.spec.portsType, - }, - }, - - batch+: { - v1beta1+: { - cronJob+: { - new(name='', schedule='', containers=[]):: - super.new() + - ( - if name != '' then - super.mixin.metadata.withName(name) + - // set name label on pod - super.mixin.spec.jobTemplate.spec.template.metadata.withLabels({ name: name }) - else - {} - ) + - ( - if schedule != '' then - super.mixin.spec.withSchedule(schedule) - else - {} - ) + - super.mixin.spec.jobTemplate.spec.template.spec.withContainers(containers), - }, - }, - }, - - local appsExtentions = { - daemonSet+: { - new(name, containers, podLabels={}):: - local labels = podLabels { name: name }; - - super.new() + - super.mixin.metadata.withName(name) + - super.mixin.spec.template.metadata.withLabels(labels) + - super.mixin.spec.template.spec.withContainers(containers) + - - // Can't think of a reason we wouldn't want a DaemonSet to run on - // every node. - super.mixin.spec.template.spec.withTolerations([ - $.core.v1.toleration.new() + - $.core.v1.toleration.withOperator('Exists') + - $.core.v1.toleration.withEffect('NoSchedule'), - ]) + - - // We want to specify a minReadySeconds on every deamonset, so we get some - // very basic canarying, for instance, with bad arguments. - super.mixin.spec.withMinReadySeconds(10) + - super.mixin.spec.updateStrategy.withType('RollingUpdate') + - - // apps.v1 requires an explicit selector: - super.mixin.spec.selector.withMatchLabels(labels), - }, - - deployment+: { - new(name, replicas, containers, podLabels={}):: - local labels = podLabels { name: name }; - - super.new(name, replicas, containers, labels) + - - // We want to specify a minReadySeconds on every deployment, so we get some - // very basic canarying, for instance, with bad arguments. - super.mixin.spec.withMinReadySeconds(10) + - - // We want to add a sensible default for the number of old deployments - // handing around. - super.mixin.spec.withRevisionHistoryLimit(10) + - - // apps.v1 requires an explicit selector: - super.mixin.spec.selector.withMatchLabels(labels), - }, - - statefulSet+: { - new(name, replicas, containers, volumeClaims, podLabels={}):: - local labels = podLabels { name: name }; - - super.new(name, replicas, containers, volumeClaims, labels) + - super.mixin.spec.updateStrategy.withType('RollingUpdate') + - - // apps.v1 requires an explicit selector: - super.mixin.spec.selector.withMatchLabels(labels) + - - // remove volumeClaimTemplates if empty (otherwise it will create a diff all the time) - (if std.length(volumeClaims) == 0 then { - spec+: { volumeClaimTemplates:: {} }, - } else {}), - }, - }, - - extensions+: { - v1beta1+: appsExtentions, - }, - - apps+: { - v1beta1+: appsExtentions, - v1+: appsExtentions, - }, - - rbac+: { - v1beta1+: { - // Shortcut to access the hidden types. - policyRule:: $.rbac.v1beta1.clusterRole.rulesType, - subject:: $.rbac.v1beta1.clusterRoleBinding.subjectsType, - }, - }, - - util+:: { - // mapToFlags converts a map to a set of golang-style command line flags. - mapToFlags(map, prefix='-'): [ - '%s%s=%s' % [prefix, key, map[key]] - for key in std.objectFields(map) - if map[key] != null - ], - - // serviceFor create service for a given deployment. - serviceFor(deployment, ignored_labels=[], nameFormat='%(container)s-%(port)s'):: - local container = $.core.v1.container; - local service = $.core.v1.service; - local servicePort = service.mixin.spec.portsType; - local ports = [ - servicePort.newNamed( - name=(nameFormat % { container: c.name, port: port.name }), - port=port.containerPort, - targetPort=port.containerPort - ) + - if std.objectHas(port, 'protocol') - then servicePort.withProtocol(port.protocol) - else {} - for c in deployment.spec.template.spec.containers - for port in (c + container.withPortsMixin([])).ports - ]; - local labels = { - [x]: deployment.spec.template.metadata.labels[x] - for x in std.objectFields(deployment.spec.template.metadata.labels) - if std.count(ignored_labels, x) == 0 - }; - - service.new( - deployment.metadata.name, // name - labels, // selector - ports, - ) + - service.mixin.metadata.withLabels({ name: deployment.metadata.name }), - - // rbac creates a service account, role and role binding with the given - // name and rules. - rbac(name, rules):: - if $._config.enable_rbac - then { - local clusterRole = $.rbac.v1beta1.clusterRole, - local clusterRoleBinding = $.rbac.v1beta1.clusterRoleBinding, - local subject = $.rbac.v1beta1.subject, - local serviceAccount = $.core.v1.serviceAccount, - - service_account: - serviceAccount.new(name), - - cluster_role: - clusterRole.new() + - clusterRole.mixin.metadata.withName(name) + - clusterRole.withRules(rules), - - cluster_role_binding: - clusterRoleBinding.new() + - clusterRoleBinding.mixin.metadata.withName(name) + - clusterRoleBinding.mixin.roleRef.withApiGroup('rbac.authorization.k8s.io') + - clusterRoleBinding.mixin.roleRef.withKind('ClusterRole') + - clusterRoleBinding.mixin.roleRef.withName(name) + - clusterRoleBinding.withSubjects([ - subject.new() + - subject.withKind('ServiceAccount') + - subject.withName(name) + - subject.withNamespace($._config.namespace), - ]), - } - else {}, - - namespacedRBAC(name, rules):: - if $._config.enable_rbac - then { - local role = $.rbac.v1beta1.role, - local roleBinding = $.rbac.v1beta1.roleBinding, - local subject = $.rbac.v1beta1.subject, - local serviceAccount = $.core.v1.serviceAccount, - - service_account: - serviceAccount.new(name) + - serviceAccount.mixin.metadata.withNamespace($._config.namespace), - - role: - role.new() + - role.mixin.metadata.withName(name) + - role.mixin.metadata.withNamespace($._config.namespace) + - role.withRules(rules), - - cluster_role_binding: - roleBinding.new() + - roleBinding.mixin.metadata.withName(name) + - roleBinding.mixin.metadata.withNamespace($._config.namespace) + - roleBinding.mixin.roleRef.withApiGroup('rbac.authorization.k8s.io') + - roleBinding.mixin.roleRef.withKind('Role') + - roleBinding.mixin.roleRef.withName(name) + - roleBinding.withSubjects([ - subject.new() + - subject.withKind('ServiceAccount') + - subject.withName(name) + - subject.withNamespace($._config.namespace), - ]), - } - else {}, - - // VolumeMount helper functions can be augmented with mixins. - // For example, passing "volumeMount.withSubPath(subpath)" will result in - // a subpath mixin. - configVolumeMount(name, path, volumeMountMixin={}):: - local container = $.core.v1.container, - deployment = $.apps.v1.deployment, - volumeMount = $.core.v1.volumeMount, - volume = $.core.v1.volume, - addMount(c) = c + container.withVolumeMountsMixin( - volumeMount.new(name, path) + - volumeMountMixin, - ); - - deployment.mapContainers(addMount) + - deployment.mixin.spec.template.spec.withVolumesMixin([ - volume.fromConfigMap(name, name), - ]), - - // configMapVolumeMount adds a configMap to deployment-like objects. - // It will also add an annotation hash to ensure the pods are re-deployed - // when the config map changes. - configMapVolumeMount(configMap, path, volumeMountMixin={}):: - local name = configMap.metadata.name, - hash = std.md5(std.toString(configMap)), - container = $.core.v1.container, - deployment = $.apps.v1.deployment, - volumeMount = $.core.v1.volumeMount, - volume = $.core.v1.volume, - addMount(c) = c + container.withVolumeMountsMixin( - volumeMount.new(name, path) + - volumeMountMixin, - ); - - deployment.mapContainers(addMount) + - deployment.mixin.spec.template.spec.withVolumesMixin([ - volume.fromConfigMap(name, name), - ]) + - deployment.mixin.spec.template.metadata.withAnnotationsMixin({ - ['%s-hash' % name]: hash, - }), - - hostVolumeMount(name, hostPath, path, readOnly=false, volumeMountMixin={}):: - local container = $.core.v1.container, - deployment = $.apps.v1.deployment, - volumeMount = $.core.v1.volumeMount, - volume = $.core.v1.volume, - addMount(c) = c + container.withVolumeMountsMixin( - volumeMount.new(name, path, readOnly=readOnly) + - volumeMountMixin, - ); - - deployment.mapContainers(addMount) + - deployment.mixin.spec.template.spec.withVolumesMixin([ - volume.fromHostPath(name, hostPath), - ]), - - secretVolumeMount(name, path, defaultMode=256, volumeMountMixin={}):: - local container = $.core.v1.container, - deployment = $.apps.v1.deployment, - volumeMount = $.core.v1.volumeMount, - volume = $.core.v1.volume, - addMount(c) = c + container.withVolumeMountsMixin( - volumeMount.new(name, path) + - volumeMountMixin, - ); - - deployment.mapContainers(addMount) + - deployment.mixin.spec.template.spec.withVolumesMixin([ - volume.fromSecret(name, secretName=name) + - volume.mixin.secret.withDefaultMode(defaultMode), - ]), - - emptyVolumeMount(name, path, volumeMountMixin={}, volumeMixin={}):: - local container = $.core.v1.container, - deployment = $.apps.v1.deployment, - volumeMount = $.core.v1.volumeMount, - volume = $.core.v1.volume, - addMount(c) = c + container.withVolumeMountsMixin( - volumeMount.new(name, path) + - volumeMountMixin, - ); - - deployment.mapContainers(addMount) + - deployment.mixin.spec.template.spec.withVolumesMixin([ - volume.fromEmptyDir(name) + volumeMixin, - ]), - - manifestYaml(value):: ( - local f = std.native('manifestYamlFromJson'); - f(std.toString(value)) - ), - - resourcesRequests(cpu, memory):: - $.core.v1.container.mixin.resources.withRequests( - (if cpu != null - then { cpu: cpu } - else {}) + - (if memory != null - then { memory: memory } - else {}) - ), - - resourcesLimits(cpu, memory):: - $.core.v1.container.mixin.resources.withLimits( - (if cpu != null - then { cpu: cpu } - else {}) + - (if memory != null - then { memory: memory } - else {}) - ), - - antiAffinity: - { - local deployment = $.apps.v1.deployment, - local podAntiAffinity = deployment.mixin.spec.template.spec.affinity.podAntiAffinity, - local name = super.spec.template.metadata.labels.name, - - spec+: podAntiAffinity.withRequiredDuringSchedulingIgnoredDuringExecution([ - podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecutionType.new() + - podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecutionType.mixin.labelSelector.withMatchLabels({ name: name }) + - podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecutionType.withTopologyKey('kubernetes.io/hostname'), - ]).spec, - }, - - antiAffinityStatefulSet: - { - local statefulSet = $.apps.v1.statefulSet, - local podAntiAffinity = statefulSet.mixin.spec.template.spec.affinity.podAntiAffinity, - local name = super.spec.template.metadata.labels.name, - - spec+: podAntiAffinity.withRequiredDuringSchedulingIgnoredDuringExecution([ - podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecutionType.new() + - podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecutionType.mixin.labelSelector.withMatchLabels({ name: name }) + - podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecutionType.withTopologyKey('kubernetes.io/hostname'), - ]).spec, - }, - - // Add a priority to the pods in a deployment (or deployment-like objects - // such as a statefulset) iff _config.enable_pod_priorities is set to true. - podPriority(p): - local deployment = $.apps.v1.deployment; - if $._config.enable_pod_priorities - then deployment.mixin.spec.template.spec.withPriorityClassName(p) - else {}, - }, -} diff --git a/example/k3d/vendor/github.com/grafana/jsonnet-libs/mixin-utils/utils.libsonnet b/example/k3d/vendor/github.com/grafana/jsonnet-libs/mixin-utils/utils.libsonnet deleted file mode 100644 index 685148e43aad..000000000000 --- a/example/k3d/vendor/github.com/grafana/jsonnet-libs/mixin-utils/utils.libsonnet +++ /dev/null @@ -1,121 +0,0 @@ -local g = import 'grafana-builder/grafana.libsonnet'; - -{ - histogramRules(metric, labels):: - local vars = { - metric: metric, - labels_underscore: std.join('_', labels), - labels_comma: std.join(', ', labels), - }; - [ - { - record: '%(labels_underscore)s:%(metric)s:99quantile' % vars, - expr: 'histogram_quantile(0.99, sum(rate(%(metric)s_bucket[1m])) by (le, %(labels_comma)s))' % vars, - }, - { - record: '%(labels_underscore)s:%(metric)s:50quantile' % vars, - expr: 'histogram_quantile(0.50, sum(rate(%(metric)s_bucket[1m])) by (le, %(labels_comma)s))' % vars, - }, - { - record: '%(labels_underscore)s:%(metric)s:avg' % vars, - expr: 'sum(rate(%(metric)s_sum[1m])) by (%(labels_comma)s) / sum(rate(%(metric)s_count[1m])) by (%(labels_comma)s)' % vars, - }, - { - record: '%(labels_underscore)s:%(metric)s_bucket:sum_rate' % vars, - expr: 'sum(rate(%(metric)s_bucket[1m])) by (le, %(labels_comma)s)' % vars, - }, - { - record: '%(labels_underscore)s:%(metric)s_sum:sum_rate' % vars, - expr: 'sum(rate(%(metric)s_sum[1m])) by (%(labels_comma)s)' % vars, - }, - { - record: '%(labels_underscore)s:%(metric)s_count:sum_rate' % vars, - expr: 'sum(rate(%(metric)s_count[1m])) by (%(labels_comma)s)' % vars, - }, - ], - - - // latencyRecordingRulePanel - build a latency panel for a recording rule. - // - metric: the base metric name (middle part of recording rule name) - // - selectors: list of selectors which will be added to first part of - // recording rule name, and to the query selector itself. - // - extra_selectors (optional): list of selectors which will be added to the - // query selector, but not to the beginnig of the recording rule name. - // Useful for external labels. - // - multiplier (optional): assumes results are in seconds, will multiply - // by 1e3 to get ms. Can be turned off. - // - sum_by (optional): additional labels to use in the sum by clause, will also be used in the legend - latencyRecordingRulePanel(metric, selectors, extra_selectors=[], multiplier='1e3', sum_by=[]):: - local labels = std.join('_', [matcher.label for matcher in selectors]); - local selectorStr = $.toPrometheusSelector(selectors + extra_selectors); - local sb = ['le']; - local legend = std.join('', ['{{ %(lb)s }} ' % lb for lb in sum_by]); - local sumBy = if std.length(sum_by) > 0 then ' by (%(lbls)s) ' % { lbls: std.join(',', sum_by) } else ''; - local sumByHisto = std.join(',', sb + sum_by); - { - nullPointMode: 'null as zero', - yaxes: g.yaxes('ms'), - targets: [ - { - expr: 'histogram_quantile(0.99, sum by (%(sumBy)s) (%(labels)s:%(metric)s_bucket:sum_rate%(selector)s)) * %(multiplier)s' % { - labels: labels, - metric: metric, - selector: selectorStr, - multiplier: multiplier, - sumBy: sumByHisto, - }, - format: 'time_series', - intervalFactor: 2, - legendFormat: '%(legend)s99th Percentile' % legend, - refId: 'A', - step: 10, - }, - { - expr: 'histogram_quantile(0.50, sum by (%(sumBy)s) (%(labels)s:%(metric)s_bucket:sum_rate%(selector)s)) * %(multiplier)s' % { - labels: labels, - metric: metric, - selector: selectorStr, - multiplier: multiplier, - sumBy: sumByHisto, - }, - format: 'time_series', - intervalFactor: 2, - legendFormat: '%(legend)s50th Percentile' % legend, - refId: 'B', - step: 10, - }, - { - expr: '%(multiplier)s * sum(%(labels)s:%(metric)s_sum:sum_rate%(selector)s)%(sumBy)s / sum(%(labels)s:%(metric)s_count:sum_rate%(selector)s)%(sumBy)s' % { - labels: labels, - metric: metric, - selector: selectorStr, - multiplier: multiplier, - sumBy: sumBy, - }, - format: 'time_series', - intervalFactor: 2, - legendFormat: '%(legend)sAverage' % legend, - refId: 'C', - step: 10, - }, - ], - }, - - selector:: { - eq(label, value):: { label: label, op: '=', value: value }, - neq(label, value):: { label: label, op: '!=', value: value }, - re(label, value):: { label: label, op: '=~', value: value }, - nre(label, value):: { label: label, op: '!~', value: value }, - - // Use with latencyRecordingRulePanel to get the label in the metric name - // but not in the selector. - noop(label):: { label: label, op: 'nop' }, - }, - - toPrometheusSelector(selector):: - local pairs = [ - '%(label)s%(op)s"%(value)s"' % matcher - for matcher in std.filter(function(matcher) matcher.op != 'nop', selector) - ]; - '{%s}' % std.join(', ', pairs), -} diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_custom/apps.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_custom/apps.libsonnet deleted file mode 100644 index b560f8673a77..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_custom/apps.libsonnet +++ /dev/null @@ -1,53 +0,0 @@ -local d = import 'doc-util/main.libsonnet'; - -local patch = { - deployment+: { - '#new'+: d.func.withArgs([ - d.arg('name', d.T.string), - d.arg('replicas', d.T.int, 1), - d.arg('containers', d.T.array), - d.arg('podLabels', d.T.object, { app: 'name' }), - ]), - new( - name, - replicas=1, - containers=error 'containers unset', - podLabels={ app: 'name' }, // <- This is weird, but ksonnet did it - ):: super.new(name) - + super.spec.withReplicas(replicas) - + super.spec.template.spec.withContainers(containers) - + super.spec.template.metadata.withLabels(podLabels), - }, - - statefulSet+: { - '#new'+: d.func.withArgs([ - d.arg('name', d.T.string), - d.arg('replicas', d.T.int, 1), - d.arg('containers', d.T.array), - d.arg('volumeClaims', d.T.array, []), - d.arg('podLabels', d.T.object, { app: 'name' }), - ]), - new( - name, - replicas=1, - containers=error 'containers unset', - volumeClaims=[], - podLabels={ app: 'name' }, // <- This is weird, but ksonnet did it - ):: super.new(name) - + super.spec.withReplicas(replicas) - + super.spec.template.spec.withContainers(containers) - + super.spec.template.metadata.withLabels(podLabels) - + super.spec.withVolumeClaimTemplates(volumeClaims), - }, -}; - -{ - extensions+: { // old, remove asap - v1beta1+: patch, - }, - apps+: { - v1+: patch, - v1beta1+: patch, - v1beta2+: patch, - }, -} diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_custom/core.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_custom/core.libsonnet deleted file mode 100644 index c51a4da870e3..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_custom/core.libsonnet +++ /dev/null @@ -1,151 +0,0 @@ -local d = import 'doc-util/main.libsonnet'; - -{ - core+: { - v1+: { - configMap+: { - local withData(data) = if data != {} then super.withData(data) else {}, - withData:: withData, - - '#new': d.fn('new creates a new `ConfigMap` of given `name` and `data`', [d.arg('name', d.T.string), d.arg('data', d.T.object)]), - new(name, data):: - super.new(name) - + super.metadata.withName(name) - + withData(data), - }, - - container+: { - '#new': d.fn('new returns a new `container` of given `name` and `image`', [d.arg('name', d.T.string), d.arg('image', d.T.string)]), - new(name, image):: super.withName(name) + super.withImage(image), - }, - - containerPort+: { - // using a local here to re-use new, because it is lexically scoped, - // while `self` is not - local new(containerPort) = super.withContainerPort(containerPort), - '#new': d.fn('new returns a new `containerPort`', [d.arg('containerPort', d.T.int)]), - new:: new, - '#newNamed': d.fn('newNamed works like `new`, but also sets the `name`', [d.arg('containerPort', d.T.int), d.arg('name', d.T.string)]), - newNamed(containerPort, name):: new(containerPort) + super.withName(name), - }, - - envVar+: { - '#new': d.fn('new returns a new `envVar` of given `name` and `value`', [d.arg('name', d.T.string), d.arg('value', d.T.string)]), - new(name, value):: super.withName(name) + super.withValue(value), - - '#fromSecretRef': d.fn('fromSecretRef creates a `envVar` from a secret reference', [ - d.arg('name', d.T.string), - d.arg('secretRefName', d.T.string), - d.arg('secretRefKey', d.T.string), - ]), - fromSecretRef(name, secretRefName, secretRefKey):: - super.withName(name) - + super.valueFrom.secretKeyRef.withName(secretRefName) - + super.valueFrom.secretKeyRef.withKey(secretRefKey), - - '#fromFieldPath': d.fn('fromFieldPath creates a `envVar` from a field path', [ - d.arg('name', d.T.string), - d.arg('fieldPath', d.T.string), - ]), - fromFieldPath(name, fieldPath):: - super.withName(name) - + super.valueFrom.fieldRef.withFieldPath(fieldPath), - }, - - keyToPath+:: { - '#new': d.fn('new creates a new `keyToPath`', [d.arg('key', d.T.string), d.arg('path', d.T.string)]), - new(key, path):: super.withKey(key) + super.withPath(path), - }, - - secret+:: { - '#new'+: d.func.withArgs([ - d.arg('name', d.T.string), - d.arg('data', d.T.object), - d.arg('type', d.T.string, 'Opaque'), - ]), - new(name, data, type='Opaque'):: - super.new(name) - + super.withData(data) - + super.withType(type), - }, - - service+:: { - '#new'+: d.func.withArgs([ - d.arg('name', d.T.string), - d.arg('selector', d.T.object), - d.arg('ports', d.T.array), - ]), - new(name, selector, ports):: - super.new(name) - + super.spec.withSelector(selector) - + super.spec.withPorts(ports), - }, - - servicePort+:: { - local new(port, targetPort) = super.withPort(port) + super.withTargetPort(targetPort), - '#new': d.fn('new returns a new `servicePort`', [ - d.arg('port', d.T.int), - d.arg('targetPort', d.T.any), - ]), - new:: new, - - '#newNamed': d.fn('newNamed works like `new`, but also sets the `name`', [ - d.arg('name', d.T.string), - d.arg('port', d.T.int), - d.arg('targetPort', d.T.any), - ]), - newNamed(name, port, targetPort):: - new(port, targetPort) + super.withName(name), - }, - - volume+:: { - '#fromConfigMap': d.fn('Creates a new volume from a `ConfigMap`', [ - d.arg('name', d.T.string), - d.arg('configMapName', d.T.string), - d.arg('configMapItems', d.T.array), - ]), - fromConfigMap(name, configMapName, configMapItems):: - super.withName(name) - + super.configMap.withName(configMapName) + super.configMap.withItems(configMapItems), - - '#fromEmptyDir': d.fn('Creates a new volume of type `emptyDir`', [ - d.arg('name', d.T.string), - d.arg('emptyDir', d.T.object, {}), - ]), - fromEmptyDir(name, emptyDir={}):: - super.withName(name) + { emptyDir: emptyDir }, - - '#fromPersistentVolumeClaim': d.fn('Creates a new volume using a `PersistentVolumeClaim`.\n\n**Note**: `emptyDir` should be `claimName`, but this is inherited from `ksonnet-lib`', [ - d.arg('name', d.T.string), - d.arg('emptyDir', d.T.string), - ]), - fromPersistentVolumeClaim(name, emptyDir):: // <- emptyDir should be claimName, but ksonnet - super.withName(name) + super.persistentVolumeClaim.withClaimName(emptyDir), - - '#fromHostPath': d.fn('Creates a new volume using a `hostPath`', [ - d.arg('name', d.T.string), - d.arg('hostPath', d.T.string), - ]), - fromHostPath(name, hostPath):: - super.withName(name) + super.hostPath.withPath(hostPath), - - '#fromSecret': d.fn('Creates a new volume from a `Secret`', [ - d.arg('name', d.T.string), - d.arg('secretName', d.T.string), - ]), - fromSecret(name, secretName):: - super.withName(name) + super.secret.withSecretName(secretName), - }, - - volumeMount+:: { - '#new': d.fn('new creates a new `volumeMount`', [ - d.arg('name', d.T.string), - d.arg('mountPath', d.T.string), - d.arg('readOnly', d.T.bool), - ]), - new(name, mountPath, readOnly):: - super.withName(name) + super.withMountPath(mountPath) + super.withReadOnly(readOnly), - }, - }, - }, -} diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_custom/mapContainers.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_custom/mapContainers.libsonnet deleted file mode 100644 index 79205950b808..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_custom/mapContainers.libsonnet +++ /dev/null @@ -1,56 +0,0 @@ -local d = import 'doc-util/main.libsonnet'; - -local fn = { - mapContainers(f):: { - local podContainers = super.spec.template.spec.containers, - spec+: { - template+: { - spec+: { - containers: std.map(f, podContainers), - }, - }, - }, - }, - mapContainersWithName(names, f):: - local nameSet = if std.type(names) == 'array' then std.set(names) else std.set([names]); - local inNameSet(name) = std.length(std.setInter(nameSet, std.set([name]))) > 0; - - self.mapContainers(function(c) if std.objectHas(c, 'name') && inNameSet(c.name) then f(c) else c), -}; - -local patch = { - '#mapContainers': d.fn( - ||| - `mapContainers` applies the function f to each container. - It works exactly as `std.map`, but on the containers of this object. - - **Signature of `f`**: - ```ts - f(container: Object) Object - ``` - |||, - [d.arg('f', d.T.func)] - ), - mapContainers(f):: fn.mapContainers(f), - - '#mapContainersWithName': d.fn('', [d.arg('names', d.T.array), d.arg('f', d.T.func)]), - mapContainersWithName(names, f):: fn.mapContainersWithName(names, f), -}; - -{ - core+: { v1+: { - pod+: patch, - podTemplate+: patch, - replicationController+: patch, - } }, - batch+: { v1+: { - cronJob+: patch, - job+: patch, - } }, - apps+: { v1+: { - daemonSet+: patch, - deployment+: patch, - replicaSet+: patch, - statefulSet+: patch, - } }, -} diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_custom/types.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_custom/types.libsonnet deleted file mode 100644 index edbb546abf99..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_custom/types.libsonnet +++ /dev/null @@ -1,34 +0,0 @@ -// importing it here, to avoid receiving patches from extensions like kausal -// like `self` would do -local k = import '../main.libsonnet'; - -{ - core+: { v1+: { - container+: { - envType: k.core.v1.envVar, - portsType: k.core.v1.containerPort, - volumeMountsType: k.core.v1.volumeMount, - }, - pod+: { - spec+: { - volumesType: k.core.v1.volume, - }, - }, - service+: { - spec+: { - portsType: k.core.v1.servicePort, - }, - }, - } }, - apps+: { v1+: { - deployment+: { - spec+: { - template+: { - spec+: { - containersType: k.core.v1.container, - }, - }, - }, - }, - } }, -} diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/admissionregistration/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/admissionregistration/main.libsonnet deleted file mode 100644 index 56d35ccc1770..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/admissionregistration/main.libsonnet +++ /dev/null @@ -1,5 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='admissionregistration', url='', help=''), - v1beta1: (import 'v1beta1/main.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/admissionregistration/v1beta1/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/admissionregistration/v1beta1/main.libsonnet deleted file mode 100644 index ce8b76eda5a5..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/admissionregistration/v1beta1/main.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1beta1', url='', help=''), - mutatingWebhookConfiguration: (import 'mutatingWebhookConfiguration.libsonnet'), - ruleWithOperations: (import 'ruleWithOperations.libsonnet'), - serviceReference: (import 'serviceReference.libsonnet'), - validatingWebhookConfiguration: (import 'validatingWebhookConfiguration.libsonnet'), - webhook: (import 'webhook.libsonnet'), - webhookClientConfig: (import 'webhookClientConfig.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/admissionregistration/v1beta1/mutatingWebhookConfiguration.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/admissionregistration/v1beta1/mutatingWebhookConfiguration.libsonnet deleted file mode 100644 index e603ef899ded..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/admissionregistration/v1beta1/mutatingWebhookConfiguration.libsonnet +++ /dev/null @@ -1,97 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='mutatingWebhookConfiguration', url='', help='MutatingWebhookConfiguration describes the configuration of and admission webhook that accept or reject and may change the object.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Mutatingwebhookconfiguration', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'admissionregistration.k8s.io/v1beta1', - kind: 'MutatingWebhookConfiguration' - } + self.metadata.withName(name=name), - '#withWebhooks':: d.fn(help='Webhooks is a list of webhooks and the affected resources and operations.', args=[d.arg(name='webhooks', type=d.T.array)]), - withWebhooks(webhooks): { webhooks: if std.isArray(v=webhooks) then webhooks else [webhooks] }, - '#withWebhooksMixin':: d.fn(help='Webhooks is a list of webhooks and the affected resources and operations.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='webhooks', type=d.T.array)]), - withWebhooksMixin(webhooks): { webhooks+: if std.isArray(v=webhooks) then webhooks else [webhooks] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/admissionregistration/v1beta1/ruleWithOperations.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/admissionregistration/v1beta1/ruleWithOperations.libsonnet deleted file mode 100644 index b1bcb3525b20..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/admissionregistration/v1beta1/ruleWithOperations.libsonnet +++ /dev/null @@ -1,24 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='ruleWithOperations', url='', help='RuleWithOperations is a tuple of Operations and Resources. It is recommended to make sure that all the tuple expansions are valid.'), - '#withApiGroups':: d.fn(help="APIGroups is the API groups the resources belong to. '*' is all groups. If '*' is present, the length of the slice must be one. Required.", args=[d.arg(name='apiGroups', type=d.T.array)]), - withApiGroups(apiGroups): { apiGroups: if std.isArray(v=apiGroups) then apiGroups else [apiGroups] }, - '#withApiGroupsMixin':: d.fn(help="APIGroups is the API groups the resources belong to. '*' is all groups. If '*' is present, the length of the slice must be one. Required.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='apiGroups', type=d.T.array)]), - withApiGroupsMixin(apiGroups): { apiGroups+: if std.isArray(v=apiGroups) then apiGroups else [apiGroups] }, - '#withApiVersions':: d.fn(help="APIVersions is the API versions the resources belong to. '*' is all versions. If '*' is present, the length of the slice must be one. Required.", args=[d.arg(name='apiVersions', type=d.T.array)]), - withApiVersions(apiVersions): { apiVersions: if std.isArray(v=apiVersions) then apiVersions else [apiVersions] }, - '#withApiVersionsMixin':: d.fn(help="APIVersions is the API versions the resources belong to. '*' is all versions. If '*' is present, the length of the slice must be one. Required.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='apiVersions', type=d.T.array)]), - withApiVersionsMixin(apiVersions): { apiVersions+: if std.isArray(v=apiVersions) then apiVersions else [apiVersions] }, - '#withOperations':: d.fn(help="Operations is the operations the admission hook cares about - CREATE, UPDATE, or * for all operations. If '*' is present, the length of the slice must be one. Required.", args=[d.arg(name='operations', type=d.T.array)]), - withOperations(operations): { operations: if std.isArray(v=operations) then operations else [operations] }, - '#withOperationsMixin':: d.fn(help="Operations is the operations the admission hook cares about - CREATE, UPDATE, or * for all operations. If '*' is present, the length of the slice must be one. Required.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='operations', type=d.T.array)]), - withOperationsMixin(operations): { operations+: if std.isArray(v=operations) then operations else [operations] }, - '#withResources':: d.fn(help="Resources is a list of resources this rule applies to.\n\nFor example: 'pods' means pods. 'pods/log' means the log subresource of pods. '*' means all resources, but not subresources. 'pods/*' means all subresources of pods. '*/scale' means all scale subresources. '*/*' means all resources and their subresources.\n\nIf wildcard is present, the validation rule will ensure resources do not overlap with each other.\n\nDepending on the enclosing object, subresources might not be allowed. Required.", args=[d.arg(name='resources', type=d.T.array)]), - withResources(resources): { resources: if std.isArray(v=resources) then resources else [resources] }, - '#withResourcesMixin':: d.fn(help="Resources is a list of resources this rule applies to.\n\nFor example: 'pods' means pods. 'pods/log' means the log subresource of pods. '*' means all resources, but not subresources. 'pods/*' means all subresources of pods. '*/scale' means all scale subresources. '*/*' means all resources and their subresources.\n\nIf wildcard is present, the validation rule will ensure resources do not overlap with each other.\n\nDepending on the enclosing object, subresources might not be allowed. Required.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='resources', type=d.T.array)]), - withResourcesMixin(resources): { resources+: if std.isArray(v=resources) then resources else [resources] }, - '#withScope':: d.fn(help='scope specifies the scope of this rule. Valid values are "Cluster", "Namespaced", and "*" "Cluster" means that only cluster-scoped resources will match this rule. Namespace API objects are cluster-scoped. "Namespaced" means that only namespaced resources will match this rule. "*" means that there are no scope restrictions. Subresources match the scope of their parent resource. Default is "*".', args=[d.arg(name='scope', type=d.T.string)]), - withScope(scope): { scope: scope }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/admissionregistration/v1beta1/serviceReference.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/admissionregistration/v1beta1/serviceReference.libsonnet deleted file mode 100644 index 6e7ca9523d89..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/admissionregistration/v1beta1/serviceReference.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='serviceReference', url='', help='ServiceReference holds a reference to Service.legacy.k8s.io'), - '#withName':: d.fn(help='`name` is the name of the service. Required', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withNamespace':: d.fn(help='`namespace` is the namespace of the service. Required', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { namespace: namespace }, - '#withPath':: d.fn(help='`path` is an optional URL path which will be sent in any request to this service.', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { path: path }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/admissionregistration/v1beta1/validatingWebhookConfiguration.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/admissionregistration/v1beta1/validatingWebhookConfiguration.libsonnet deleted file mode 100644 index 08a1e7765834..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/admissionregistration/v1beta1/validatingWebhookConfiguration.libsonnet +++ /dev/null @@ -1,97 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='validatingWebhookConfiguration', url='', help='ValidatingWebhookConfiguration describes the configuration of and admission webhook that accept or reject and object without changing it.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Validatingwebhookconfiguration', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'admissionregistration.k8s.io/v1beta1', - kind: 'ValidatingWebhookConfiguration' - } + self.metadata.withName(name=name), - '#withWebhooks':: d.fn(help='Webhooks is a list of webhooks and the affected resources and operations.', args=[d.arg(name='webhooks', type=d.T.array)]), - withWebhooks(webhooks): { webhooks: if std.isArray(v=webhooks) then webhooks else [webhooks] }, - '#withWebhooksMixin':: d.fn(help='Webhooks is a list of webhooks and the affected resources and operations.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='webhooks', type=d.T.array)]), - withWebhooksMixin(webhooks): { webhooks+: if std.isArray(v=webhooks) then webhooks else [webhooks] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/admissionregistration/v1beta1/webhook.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/admissionregistration/v1beta1/webhook.libsonnet deleted file mode 100644 index 3487760dec9d..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/admissionregistration/v1beta1/webhook.libsonnet +++ /dev/null @@ -1,49 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='webhook', url='', help='Webhook describes an admission webhook and the resources and operations it applies to.'), - '#clientConfig':: d.obj(help='WebhookClientConfig contains the information to make a TLS connection with the webhook'), - clientConfig: { - '#service':: d.obj(help='ServiceReference holds a reference to Service.legacy.k8s.io'), - service: { - '#withName':: d.fn(help='`name` is the name of the service. Required', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { clientConfig+: { service+: { name: name } } }, - '#withNamespace':: d.fn(help='`namespace` is the namespace of the service. Required', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { clientConfig+: { service+: { namespace: namespace } } }, - '#withPath':: d.fn(help='`path` is an optional URL path which will be sent in any request to this service.', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { clientConfig+: { service+: { path: path } } } - }, - '#withCaBundle':: d.fn(help="`caBundle` is a PEM encoded CA bundle which will be used to validate the webhook's server certificate. If unspecified, system trust roots on the apiserver are used.", args=[d.arg(name='caBundle', type=d.T.string)]), - withCaBundle(caBundle): { clientConfig+: { caBundle: caBundle } }, - '#withUrl':: d.fn(help='`url` gives the location of the webhook, in standard URL form (`scheme://host:port/path`). Exactly one of `url` or `service` must be specified.\n\nThe `host` should not refer to a service running in the cluster; use the `service` field instead. The host might be resolved via external DNS in some apiservers (e.g., `kube-apiserver` cannot resolve in-cluster DNS as that would be a layering violation). `host` may also be an IP address.\n\nPlease note that using `localhost` or `127.0.0.1` as a `host` is risky unless you take great care to run this webhook on all hosts which run an apiserver which might need to make calls to this webhook. Such installs are likely to be non-portable, i.e., not easy to turn up in a new cluster.\n\nThe scheme must be "https"; the URL must begin with "https://".\n\nA path is optional, and if present may be any string permissible in a URL. You may use the path to pass an arbitrary string to the webhook, for example, a cluster identifier.\n\nAttempting to use a user or basic auth e.g. "user:password@" is not allowed. Fragments ("#...") and query parameters ("?...") are not allowed, either.', args=[d.arg(name='url', type=d.T.string)]), - withUrl(url): { clientConfig+: { url: url } } - }, - '#namespaceSelector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - namespaceSelector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { namespaceSelector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { namespaceSelector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { namespaceSelector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { namespaceSelector+: { matchLabels+: matchLabels } } - }, - '#withAdmissionReviewVersions':: d.fn(help="AdmissionReviewVersions is an ordered list of preferred `AdmissionReview` versions the Webhook expects. API server will try to use first version in the list which it supports. If none of the versions specified in this list supported by API server, validation will fail for this object. If a persisted webhook configuration specifies allowed versions and does not include any versions known to the API Server, calls to the webhook will fail and be subject to the failure policy. Default to `['v1beta1']`.", args=[d.arg(name='admissionReviewVersions', type=d.T.array)]), - withAdmissionReviewVersions(admissionReviewVersions): { admissionReviewVersions: if std.isArray(v=admissionReviewVersions) then admissionReviewVersions else [admissionReviewVersions] }, - '#withAdmissionReviewVersionsMixin':: d.fn(help="AdmissionReviewVersions is an ordered list of preferred `AdmissionReview` versions the Webhook expects. API server will try to use first version in the list which it supports. If none of the versions specified in this list supported by API server, validation will fail for this object. If a persisted webhook configuration specifies allowed versions and does not include any versions known to the API Server, calls to the webhook will fail and be subject to the failure policy. Default to `['v1beta1']`.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='admissionReviewVersions', type=d.T.array)]), - withAdmissionReviewVersionsMixin(admissionReviewVersions): { admissionReviewVersions+: if std.isArray(v=admissionReviewVersions) then admissionReviewVersions else [admissionReviewVersions] }, - '#withFailurePolicy':: d.fn(help='FailurePolicy defines how unrecognized errors from the admission endpoint are handled - allowed values are Ignore or Fail. Defaults to Ignore.', args=[d.arg(name='failurePolicy', type=d.T.string)]), - withFailurePolicy(failurePolicy): { failurePolicy: failurePolicy }, - '#withName':: d.fn(help='The name of the admission webhook. Name should be fully qualified, e.g., imagepolicy.kubernetes.io, where "imagepolicy" is the name of the webhook, and kubernetes.io is the name of the organization. Required.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withRules':: d.fn(help='Rules describes what operations on what resources/subresources the webhook cares about. The webhook cares about an operation if it matches _any_ Rule. However, in order to prevent ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks from putting the cluster in a state which cannot be recovered from without completely disabling the plugin, ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks are never called on admission requests for ValidatingWebhookConfiguration and MutatingWebhookConfiguration objects.', args=[d.arg(name='rules', type=d.T.array)]), - withRules(rules): { rules: if std.isArray(v=rules) then rules else [rules] }, - '#withRulesMixin':: d.fn(help='Rules describes what operations on what resources/subresources the webhook cares about. The webhook cares about an operation if it matches _any_ Rule. However, in order to prevent ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks from putting the cluster in a state which cannot be recovered from without completely disabling the plugin, ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks are never called on admission requests for ValidatingWebhookConfiguration and MutatingWebhookConfiguration objects.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='rules', type=d.T.array)]), - withRulesMixin(rules): { rules+: if std.isArray(v=rules) then rules else [rules] }, - '#withSideEffects':: d.fn(help='SideEffects states whether this webhookk has side effects. Acceptable values are: Unknown, None, Some, NoneOnDryRun Webhooks with side effects MUST implement a reconciliation system, since a request may be rejected by a future step in the admission change and the side effects therefore need to be undone. Requests with the dryRun attribute will be auto-rejected if they match a webhook with sideEffects == Unknown or Some. Defaults to Unknown.', args=[d.arg(name='sideEffects', type=d.T.string)]), - withSideEffects(sideEffects): { sideEffects: sideEffects }, - '#withTimeoutSeconds':: d.fn(help='TimeoutSeconds specifies the timeout for this webhook. After the timeout passes, the webhook call will be ignored or the API call will fail based on the failure policy. The timeout value must be between 1 and 30 seconds. Default to 30 seconds.', args=[d.arg(name='timeoutSeconds', type=d.T.integer)]), - withTimeoutSeconds(timeoutSeconds): { timeoutSeconds: timeoutSeconds }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/admissionregistration/v1beta1/webhookClientConfig.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/admissionregistration/v1beta1/webhookClientConfig.libsonnet deleted file mode 100644 index 31c9346490e6..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/admissionregistration/v1beta1/webhookClientConfig.libsonnet +++ /dev/null @@ -1,19 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='webhookClientConfig', url='', help='WebhookClientConfig contains the information to make a TLS connection with the webhook'), - '#service':: d.obj(help='ServiceReference holds a reference to Service.legacy.k8s.io'), - service: { - '#withName':: d.fn(help='`name` is the name of the service. Required', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { service+: { name: name } }, - '#withNamespace':: d.fn(help='`namespace` is the namespace of the service. Required', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { service+: { namespace: namespace } }, - '#withPath':: d.fn(help='`path` is an optional URL path which will be sent in any request to this service.', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { service+: { path: path } } - }, - '#withCaBundle':: d.fn(help="`caBundle` is a PEM encoded CA bundle which will be used to validate the webhook's server certificate. If unspecified, system trust roots on the apiserver are used.", args=[d.arg(name='caBundle', type=d.T.string)]), - withCaBundle(caBundle): { caBundle: caBundle }, - '#withUrl':: d.fn(help='`url` gives the location of the webhook, in standard URL form (`scheme://host:port/path`). Exactly one of `url` or `service` must be specified.\n\nThe `host` should not refer to a service running in the cluster; use the `service` field instead. The host might be resolved via external DNS in some apiservers (e.g., `kube-apiserver` cannot resolve in-cluster DNS as that would be a layering violation). `host` may also be an IP address.\n\nPlease note that using `localhost` or `127.0.0.1` as a `host` is risky unless you take great care to run this webhook on all hosts which run an apiserver which might need to make calls to this webhook. Such installs are likely to be non-portable, i.e., not easy to turn up in a new cluster.\n\nThe scheme must be "https"; the URL must begin with "https://".\n\nA path is optional, and if present may be any string permissible in a URL. You may use the path to pass an arbitrary string to the webhook, for example, a cluster identifier.\n\nAttempting to use a user or basic auth e.g. "user:password@" is not allowed. Fragments ("#...") and query parameters ("?...") are not allowed, either.', args=[d.arg(name='url', type=d.T.string)]), - withUrl(url): { url: url }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/main.libsonnet deleted file mode 100644 index 39b1226390d9..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/main.libsonnet +++ /dev/null @@ -1,7 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='apps', url='', help=''), - v1: (import 'v1/main.libsonnet'), - v1beta1: (import 'v1beta1/main.libsonnet'), - v1beta2: (import 'v1beta2/main.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/controllerRevision.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/controllerRevision.libsonnet deleted file mode 100644 index f4b26738a6c0..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/controllerRevision.libsonnet +++ /dev/null @@ -1,100 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='controllerRevision', url='', help='ControllerRevision implements an immutable snapshot of state data. Clients are responsible for serializing and deserializing the objects that contain their internal state. Once a ControllerRevision has been successfully created, it can not be updated. The API Server will fail validation of all requests that attempt to mutate the Data field. ControllerRevisions may, however, be deleted. Note that, due to its use by both the DaemonSet and StatefulSet controllers for update and rollback, this object is beta. However, it may be subject to name and representation changes in future releases, and clients should not depend on its stability. It is primarily for internal use by controllers.'), - '#data':: d.obj(help="RawExtension is used to hold extensions in external versions.\n\nTo use this, make a field which has RawExtension as its type in your external, versioned struct, and Object in your internal struct. You also need to register your various plugin types.\n\n// Internal package: type MyAPIObject struct {\n runtime.TypeMeta `json:',inline'`\n MyPlugin runtime.Object `json:'myPlugin'`\n} type PluginA struct {\n AOption string `json:'aOption'`\n}\n\n// External package: type MyAPIObject struct {\n runtime.TypeMeta `json:',inline'`\n MyPlugin runtime.RawExtension `json:'myPlugin'`\n} type PluginA struct {\n AOption string `json:'aOption'`\n}\n\n// On the wire, the JSON will look something like this: {\n 'kind':'MyAPIObject',\n 'apiVersion':'v1',\n 'myPlugin': {\n 'kind':'PluginA',\n 'aOption':'foo',\n },\n}\n\nSo what happens? Decode first uses json or yaml to unmarshal the serialized data into your external MyAPIObject. That causes the raw JSON to be stored, but not unpacked. The next step is to copy (using pkg/conversion) into the internal struct. The runtime package's DefaultScheme has conversion functions installed which will unpack the JSON stored in RawExtension, turning it into the correct object type, and storing it in the Object. (TODO: In the case where the object is of an unknown type, a runtime.Unknown object will be created and stored.)"), - data: { - '#withRaw':: d.fn(help='Raw is the underlying serialization of this object.', args=[d.arg(name='raw', type=d.T.string)]), - withRaw(raw): { data+: { raw: raw } } - }, - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Controllerrevision', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'apps/v1', - kind: 'ControllerRevision' - } + self.metadata.withName(name=name), - '#withRevision':: d.fn(help='Revision indicates the revision of the state represented by Data.', args=[d.arg(name='revision', type=d.T.integer)]), - withRevision(revision): { revision: revision }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/daemonSet.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/daemonSet.libsonnet deleted file mode 100644 index 37c1662141bc..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/daemonSet.libsonnet +++ /dev/null @@ -1,363 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='daemonSet', url='', help='DaemonSet represents the configuration of a daemon set.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Daemonset', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'apps/v1', - kind: 'DaemonSet' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='DaemonSetSpec is the specification of a daemon set.'), - spec: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { spec+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { spec+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { spec+: { selector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { spec+: { selector+: { matchLabels+: matchLabels } } } - }, - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { group: group } } } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { name: name } } } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { spec+: { template+: { metadata+: { initializers+: { result+: { code: code } } } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { template+: { metadata+: { initializers+: { result+: { kind: kind } } } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { spec+: { template+: { metadata+: { initializers+: { result+: { message: message } } } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { spec+: { template+: { metadata+: { initializers+: { result+: { metadata: metadata } } } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { spec+: { template+: { metadata+: { initializers+: { result+: { reason: reason } } } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { spec+: { template+: { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { spec+: { template+: { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { spec+: { template+: { metadata+: { annotations: annotations } } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { spec+: { template+: { metadata+: { annotations+: annotations } } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { spec+: { template+: { metadata+: { clusterName: clusterName } } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { spec+: { template+: { metadata+: { creationTimestamp: creationTimestamp } } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { spec+: { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { spec+: { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { spec+: { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { spec+: { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { spec+: { template+: { metadata+: { generateName: generateName } } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { spec+: { template+: { metadata+: { generation: generation } } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { spec+: { template+: { metadata+: { labels: labels } } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { spec+: { template+: { metadata+: { labels+: labels } } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { spec+: { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { spec+: { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { template+: { metadata+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { template+: { metadata+: { namespace: namespace } } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { spec+: { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { spec+: { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { spec+: { template+: { metadata+: { resourceVersion: resourceVersion } } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { spec+: { template+: { metadata+: { selfLink: selfLink } } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { template+: { metadata+: { uid: uid } } } } - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } } - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } - } - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { spec+: { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { spec+: { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { spec+: { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { spec+: { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { spec+: { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { spec+: { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } } } - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } } } - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { spec+: { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { spec+: { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { spec+: { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { spec+: { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { spec+: { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { spec+: { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { spec+: { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { spec+: { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } } - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { spec+: { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { spec+: { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { spec+: { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { spec+: { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { spec+: { template+: { spec+: { dnsPolicy: dnsPolicy } } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { spec+: { template+: { spec+: { enableServiceLinks: enableServiceLinks } } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { spec+: { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { spec+: { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { spec+: { template+: { spec+: { hostIPC: hostIPC } } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { spec+: { template+: { spec+: { hostNetwork: hostNetwork } } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { spec+: { template+: { spec+: { hostPID: hostPID } } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { spec+: { template+: { spec+: { hostname: hostname } } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { spec+: { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { spec+: { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { spec+: { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { spec+: { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { spec+: { template+: { spec+: { nodeName: nodeName } } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { spec+: { template+: { spec+: { nodeSelector: nodeSelector } } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { spec+: { template+: { spec+: { nodeSelector+: nodeSelector } } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { spec+: { template+: { spec+: { priority: priority } } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { spec+: { template+: { spec+: { priorityClassName: priorityClassName } } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { spec+: { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { spec+: { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { spec+: { template+: { spec+: { restartPolicy: restartPolicy } } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is an alpha feature and may change in the future.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { spec+: { template+: { spec+: { runtimeClassName: runtimeClassName } } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { spec+: { template+: { spec+: { schedulerName: schedulerName } } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { spec+: { template+: { spec+: { serviceAccount: serviceAccount } } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { spec+: { template+: { spec+: { serviceAccountName: serviceAccountName } } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false. This field is beta-level and may be disabled with the PodShareProcessNamespace feature.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { spec+: { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { spec+: { template+: { spec+: { subdomain: subdomain } } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { spec+: { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { spec+: { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { spec+: { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { spec+: { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { spec+: { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } } } - } - }, - '#updateStrategy':: d.obj(help='DaemonSetUpdateStrategy is a struct used to control the update strategy for a DaemonSet.'), - updateStrategy: { - '#rollingUpdate':: d.obj(help='Spec to control the desired behavior of daemon set rolling update.'), - rollingUpdate: { - '#withMaxUnavailable':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxUnavailable', type=d.T.string)]), - withMaxUnavailable(maxUnavailable): { spec+: { updateStrategy+: { rollingUpdate+: { maxUnavailable: maxUnavailable } } } } - }, - '#withType':: d.fn(help='Type of daemon set update. Can be "RollingUpdate" or "OnDelete". Default is RollingUpdate.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { updateStrategy+: { type: type } } } - }, - '#withMinReadySeconds':: d.fn(help='The minimum number of seconds for which a newly created DaemonSet pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready).', args=[d.arg(name='minReadySeconds', type=d.T.integer)]), - withMinReadySeconds(minReadySeconds): { spec+: { minReadySeconds: minReadySeconds } }, - '#withRevisionHistoryLimit':: d.fn(help='The number of old history to retain to allow rollback. This is a pointer to distinguish between explicit zero and not specified. Defaults to 10.', args=[d.arg(name='revisionHistoryLimit', type=d.T.integer)]), - withRevisionHistoryLimit(revisionHistoryLimit): { spec+: { revisionHistoryLimit: revisionHistoryLimit } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/daemonSetCondition.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/daemonSetCondition.libsonnet deleted file mode 100644 index b00356552154..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/daemonSetCondition.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='daemonSetCondition', url='', help='DaemonSetCondition describes the state of a DaemonSet at a certain point.'), - '#withLastTransitionTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastTransitionTime', type=d.T.string)]), - withLastTransitionTime(lastTransitionTime): { lastTransitionTime: lastTransitionTime }, - '#withMessage':: d.fn(help='A human readable message indicating details about the transition.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withReason':: d.fn(help="The reason for the condition's last transition.", args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#withType':: d.fn(help='Type of DaemonSet condition.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/daemonSetSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/daemonSetSpec.libsonnet deleted file mode 100644 index aed3797e64bb..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/daemonSetSpec.libsonnet +++ /dev/null @@ -1,273 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='daemonSetSpec', url='', help='DaemonSetSpec is the specification of a daemon set.'), - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { selector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { selector+: { matchLabels+: matchLabels } } - }, - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { template+: { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { template+: { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { template+: { metadata+: { initializers+: { result+: { details+: { group: group } } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { template+: { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { template+: { metadata+: { initializers+: { result+: { details+: { name: name } } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { template+: { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { template+: { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { template+: { metadata+: { initializers+: { result+: { code: code } } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { template+: { metadata+: { initializers+: { result+: { kind: kind } } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { template+: { metadata+: { initializers+: { result+: { message: message } } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { template+: { metadata+: { initializers+: { result+: { metadata: metadata } } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { template+: { metadata+: { initializers+: { result+: { reason: reason } } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { template+: { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { template+: { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { template+: { metadata+: { annotations: annotations } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { template+: { metadata+: { annotations+: annotations } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { template+: { metadata+: { clusterName: clusterName } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { template+: { metadata+: { creationTimestamp: creationTimestamp } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { template+: { metadata+: { generateName: generateName } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { template+: { metadata+: { generation: generation } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { template+: { metadata+: { labels: labels } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { template+: { metadata+: { labels+: labels } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { template+: { metadata+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { template+: { metadata+: { namespace: namespace } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { template+: { metadata+: { resourceVersion: resourceVersion } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { template+: { metadata+: { selfLink: selfLink } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { template+: { metadata+: { uid: uid } } } - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } - } - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } } - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } } - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { template+: { spec+: { dnsPolicy: dnsPolicy } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { template+: { spec+: { enableServiceLinks: enableServiceLinks } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { template+: { spec+: { hostIPC: hostIPC } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { template+: { spec+: { hostNetwork: hostNetwork } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { template+: { spec+: { hostPID: hostPID } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { template+: { spec+: { hostname: hostname } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { template+: { spec+: { nodeName: nodeName } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { template+: { spec+: { nodeSelector: nodeSelector } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { template+: { spec+: { nodeSelector+: nodeSelector } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { template+: { spec+: { priority: priority } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { template+: { spec+: { priorityClassName: priorityClassName } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { template+: { spec+: { restartPolicy: restartPolicy } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is an alpha feature and may change in the future.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { template+: { spec+: { runtimeClassName: runtimeClassName } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { template+: { spec+: { schedulerName: schedulerName } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { template+: { spec+: { serviceAccount: serviceAccount } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { template+: { spec+: { serviceAccountName: serviceAccountName } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false. This field is beta-level and may be disabled with the PodShareProcessNamespace feature.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { template+: { spec+: { subdomain: subdomain } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } } - } - }, - '#updateStrategy':: d.obj(help='DaemonSetUpdateStrategy is a struct used to control the update strategy for a DaemonSet.'), - updateStrategy: { - '#rollingUpdate':: d.obj(help='Spec to control the desired behavior of daemon set rolling update.'), - rollingUpdate: { - '#withMaxUnavailable':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxUnavailable', type=d.T.string)]), - withMaxUnavailable(maxUnavailable): { updateStrategy+: { rollingUpdate+: { maxUnavailable: maxUnavailable } } } - }, - '#withType':: d.fn(help='Type of daemon set update. Can be "RollingUpdate" or "OnDelete". Default is RollingUpdate.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { updateStrategy+: { type: type } } - }, - '#withMinReadySeconds':: d.fn(help='The minimum number of seconds for which a newly created DaemonSet pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready).', args=[d.arg(name='minReadySeconds', type=d.T.integer)]), - withMinReadySeconds(minReadySeconds): { minReadySeconds: minReadySeconds }, - '#withRevisionHistoryLimit':: d.fn(help='The number of old history to retain to allow rollback. This is a pointer to distinguish between explicit zero and not specified. Defaults to 10.', args=[d.arg(name='revisionHistoryLimit', type=d.T.integer)]), - withRevisionHistoryLimit(revisionHistoryLimit): { revisionHistoryLimit: revisionHistoryLimit }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/daemonSetStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/daemonSetStatus.libsonnet deleted file mode 100644 index 75fee2193203..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/daemonSetStatus.libsonnet +++ /dev/null @@ -1,28 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='daemonSetStatus', url='', help='DaemonSetStatus represents the current status of a daemon set.'), - '#withCollisionCount':: d.fn(help='Count of hash collisions for the DaemonSet. The DaemonSet controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ControllerRevision.', args=[d.arg(name='collisionCount', type=d.T.integer)]), - withCollisionCount(collisionCount): { collisionCount: collisionCount }, - '#withConditions':: d.fn(help="Represents the latest available observations of a DaemonSet's current state.", args=[d.arg(name='conditions', type=d.T.array)]), - withConditions(conditions): { conditions: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withConditionsMixin':: d.fn(help="Represents the latest available observations of a DaemonSet's current state.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='conditions', type=d.T.array)]), - withConditionsMixin(conditions): { conditions+: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withCurrentNumberScheduled':: d.fn(help='The number of nodes that are running at least 1 daemon pod and are supposed to run the daemon pod. More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/', args=[d.arg(name='currentNumberScheduled', type=d.T.integer)]), - withCurrentNumberScheduled(currentNumberScheduled): { currentNumberScheduled: currentNumberScheduled }, - '#withDesiredNumberScheduled':: d.fn(help='The total number of nodes that should be running the daemon pod (including nodes correctly running the daemon pod). More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/', args=[d.arg(name='desiredNumberScheduled', type=d.T.integer)]), - withDesiredNumberScheduled(desiredNumberScheduled): { desiredNumberScheduled: desiredNumberScheduled }, - '#withNumberAvailable':: d.fn(help='The number of nodes that should be running the daemon pod and have one or more of the daemon pod running and available (ready for at least spec.minReadySeconds)', args=[d.arg(name='numberAvailable', type=d.T.integer)]), - withNumberAvailable(numberAvailable): { numberAvailable: numberAvailable }, - '#withNumberMisscheduled':: d.fn(help='The number of nodes that are running the daemon pod, but are not supposed to run the daemon pod. More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/', args=[d.arg(name='numberMisscheduled', type=d.T.integer)]), - withNumberMisscheduled(numberMisscheduled): { numberMisscheduled: numberMisscheduled }, - '#withNumberReady':: d.fn(help='The number of nodes that should be running the daemon pod and have one or more of the daemon pod running and ready.', args=[d.arg(name='numberReady', type=d.T.integer)]), - withNumberReady(numberReady): { numberReady: numberReady }, - '#withNumberUnavailable':: d.fn(help='The number of nodes that should be running the daemon pod and have none of the daemon pod running and available (ready for at least spec.minReadySeconds)', args=[d.arg(name='numberUnavailable', type=d.T.integer)]), - withNumberUnavailable(numberUnavailable): { numberUnavailable: numberUnavailable }, - '#withObservedGeneration':: d.fn(help='The most recent generation observed by the daemon set controller.', args=[d.arg(name='observedGeneration', type=d.T.integer)]), - withObservedGeneration(observedGeneration): { observedGeneration: observedGeneration }, - '#withUpdatedNumberScheduled':: d.fn(help='The total number of nodes that are running updated daemon pod', args=[d.arg(name='updatedNumberScheduled', type=d.T.integer)]), - withUpdatedNumberScheduled(updatedNumberScheduled): { updatedNumberScheduled: updatedNumberScheduled }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/daemonSetUpdateStrategy.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/daemonSetUpdateStrategy.libsonnet deleted file mode 100644 index a863ce564084..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/daemonSetUpdateStrategy.libsonnet +++ /dev/null @@ -1,13 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='daemonSetUpdateStrategy', url='', help='DaemonSetUpdateStrategy is a struct used to control the update strategy for a DaemonSet.'), - '#rollingUpdate':: d.obj(help='Spec to control the desired behavior of daemon set rolling update.'), - rollingUpdate: { - '#withMaxUnavailable':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxUnavailable', type=d.T.string)]), - withMaxUnavailable(maxUnavailable): { rollingUpdate+: { maxUnavailable: maxUnavailable } } - }, - '#withType':: d.fn(help='Type of daemon set update. Can be "RollingUpdate" or "OnDelete". Default is RollingUpdate.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/deployment.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/deployment.libsonnet deleted file mode 100644 index 7f74b70df689..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/deployment.libsonnet +++ /dev/null @@ -1,371 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='deployment', url='', help='Deployment enables declarative updates for Pods and ReplicaSets.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Deployment', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'apps/v1', - kind: 'Deployment' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='DeploymentSpec is the specification of the desired behavior of the Deployment.'), - spec: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { spec+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { spec+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { spec+: { selector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { spec+: { selector+: { matchLabels+: matchLabels } } } - }, - '#strategy':: d.obj(help='DeploymentStrategy describes how to replace existing pods with new ones.'), - strategy: { - '#rollingUpdate':: d.obj(help='Spec to control the desired behavior of rolling update.'), - rollingUpdate: { - '#withMaxSurge':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxSurge', type=d.T.string)]), - withMaxSurge(maxSurge): { spec+: { strategy+: { rollingUpdate+: { maxSurge: maxSurge } } } }, - '#withMaxUnavailable':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxUnavailable', type=d.T.string)]), - withMaxUnavailable(maxUnavailable): { spec+: { strategy+: { rollingUpdate+: { maxUnavailable: maxUnavailable } } } } - }, - '#withType':: d.fn(help='Type of deployment. Can be "Recreate" or "RollingUpdate". Default is RollingUpdate.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { strategy+: { type: type } } } - }, - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { group: group } } } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { name: name } } } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { spec+: { template+: { metadata+: { initializers+: { result+: { code: code } } } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { template+: { metadata+: { initializers+: { result+: { kind: kind } } } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { spec+: { template+: { metadata+: { initializers+: { result+: { message: message } } } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { spec+: { template+: { metadata+: { initializers+: { result+: { metadata: metadata } } } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { spec+: { template+: { metadata+: { initializers+: { result+: { reason: reason } } } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { spec+: { template+: { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { spec+: { template+: { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { spec+: { template+: { metadata+: { annotations: annotations } } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { spec+: { template+: { metadata+: { annotations+: annotations } } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { spec+: { template+: { metadata+: { clusterName: clusterName } } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { spec+: { template+: { metadata+: { creationTimestamp: creationTimestamp } } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { spec+: { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { spec+: { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { spec+: { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { spec+: { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { spec+: { template+: { metadata+: { generateName: generateName } } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { spec+: { template+: { metadata+: { generation: generation } } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { spec+: { template+: { metadata+: { labels: labels } } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { spec+: { template+: { metadata+: { labels+: labels } } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { spec+: { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { spec+: { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { template+: { metadata+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { template+: { metadata+: { namespace: namespace } } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { spec+: { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { spec+: { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { spec+: { template+: { metadata+: { resourceVersion: resourceVersion } } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { spec+: { template+: { metadata+: { selfLink: selfLink } } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { template+: { metadata+: { uid: uid } } } } - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } } - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } - } - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { spec+: { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { spec+: { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { spec+: { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { spec+: { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { spec+: { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { spec+: { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } } } - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } } } - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { spec+: { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { spec+: { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { spec+: { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { spec+: { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { spec+: { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { spec+: { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { spec+: { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { spec+: { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } } - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { spec+: { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { spec+: { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { spec+: { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { spec+: { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { spec+: { template+: { spec+: { dnsPolicy: dnsPolicy } } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { spec+: { template+: { spec+: { enableServiceLinks: enableServiceLinks } } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { spec+: { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { spec+: { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { spec+: { template+: { spec+: { hostIPC: hostIPC } } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { spec+: { template+: { spec+: { hostNetwork: hostNetwork } } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { spec+: { template+: { spec+: { hostPID: hostPID } } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { spec+: { template+: { spec+: { hostname: hostname } } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { spec+: { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { spec+: { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { spec+: { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { spec+: { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { spec+: { template+: { spec+: { nodeName: nodeName } } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { spec+: { template+: { spec+: { nodeSelector: nodeSelector } } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { spec+: { template+: { spec+: { nodeSelector+: nodeSelector } } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { spec+: { template+: { spec+: { priority: priority } } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { spec+: { template+: { spec+: { priorityClassName: priorityClassName } } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { spec+: { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { spec+: { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { spec+: { template+: { spec+: { restartPolicy: restartPolicy } } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is an alpha feature and may change in the future.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { spec+: { template+: { spec+: { runtimeClassName: runtimeClassName } } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { spec+: { template+: { spec+: { schedulerName: schedulerName } } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { spec+: { template+: { spec+: { serviceAccount: serviceAccount } } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { spec+: { template+: { spec+: { serviceAccountName: serviceAccountName } } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false. This field is beta-level and may be disabled with the PodShareProcessNamespace feature.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { spec+: { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { spec+: { template+: { spec+: { subdomain: subdomain } } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { spec+: { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { spec+: { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { spec+: { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { spec+: { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { spec+: { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } } } - } - }, - '#withMinReadySeconds':: d.fn(help='Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)', args=[d.arg(name='minReadySeconds', type=d.T.integer)]), - withMinReadySeconds(minReadySeconds): { spec+: { minReadySeconds: minReadySeconds } }, - '#withPaused':: d.fn(help='Indicates that the deployment is paused.', args=[d.arg(name='paused', type=d.T.boolean)]), - withPaused(paused): { spec+: { paused: paused } }, - '#withProgressDeadlineSeconds':: d.fn(help='The maximum time in seconds for a deployment to make progress before it is considered to be failed. The deployment controller will continue to process failed deployments and a condition with a ProgressDeadlineExceeded reason will be surfaced in the deployment status. Note that progress will not be estimated during the time a deployment is paused. Defaults to 600s.', args=[d.arg(name='progressDeadlineSeconds', type=d.T.integer)]), - withProgressDeadlineSeconds(progressDeadlineSeconds): { spec+: { progressDeadlineSeconds: progressDeadlineSeconds } }, - '#withReplicas':: d.fn(help='Number of desired pods. This is a pointer to distinguish between explicit zero and not specified. Defaults to 1.', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { spec+: { replicas: replicas } }, - '#withRevisionHistoryLimit':: d.fn(help='The number of old ReplicaSets to retain to allow rollback. This is a pointer to distinguish between explicit zero and not specified. Defaults to 10.', args=[d.arg(name='revisionHistoryLimit', type=d.T.integer)]), - withRevisionHistoryLimit(revisionHistoryLimit): { spec+: { revisionHistoryLimit: revisionHistoryLimit } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/deploymentCondition.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/deploymentCondition.libsonnet deleted file mode 100644 index f4716c97d4c6..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/deploymentCondition.libsonnet +++ /dev/null @@ -1,16 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='deploymentCondition', url='', help='DeploymentCondition describes the state of a deployment at a certain point.'), - '#withLastTransitionTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastTransitionTime', type=d.T.string)]), - withLastTransitionTime(lastTransitionTime): { lastTransitionTime: lastTransitionTime }, - '#withLastUpdateTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastUpdateTime', type=d.T.string)]), - withLastUpdateTime(lastUpdateTime): { lastUpdateTime: lastUpdateTime }, - '#withMessage':: d.fn(help='A human readable message indicating details about the transition.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withReason':: d.fn(help="The reason for the condition's last transition.", args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#withType':: d.fn(help='Type of deployment condition.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/deploymentSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/deploymentSpec.libsonnet deleted file mode 100644 index 4fd57b7f7f0d..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/deploymentSpec.libsonnet +++ /dev/null @@ -1,281 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='deploymentSpec', url='', help='DeploymentSpec is the specification of the desired behavior of the Deployment.'), - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { selector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { selector+: { matchLabels+: matchLabels } } - }, - '#strategy':: d.obj(help='DeploymentStrategy describes how to replace existing pods with new ones.'), - strategy: { - '#rollingUpdate':: d.obj(help='Spec to control the desired behavior of rolling update.'), - rollingUpdate: { - '#withMaxSurge':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxSurge', type=d.T.string)]), - withMaxSurge(maxSurge): { strategy+: { rollingUpdate+: { maxSurge: maxSurge } } }, - '#withMaxUnavailable':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxUnavailable', type=d.T.string)]), - withMaxUnavailable(maxUnavailable): { strategy+: { rollingUpdate+: { maxUnavailable: maxUnavailable } } } - }, - '#withType':: d.fn(help='Type of deployment. Can be "Recreate" or "RollingUpdate". Default is RollingUpdate.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { strategy+: { type: type } } - }, - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { template+: { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { template+: { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { template+: { metadata+: { initializers+: { result+: { details+: { group: group } } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { template+: { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { template+: { metadata+: { initializers+: { result+: { details+: { name: name } } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { template+: { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { template+: { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { template+: { metadata+: { initializers+: { result+: { code: code } } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { template+: { metadata+: { initializers+: { result+: { kind: kind } } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { template+: { metadata+: { initializers+: { result+: { message: message } } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { template+: { metadata+: { initializers+: { result+: { metadata: metadata } } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { template+: { metadata+: { initializers+: { result+: { reason: reason } } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { template+: { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { template+: { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { template+: { metadata+: { annotations: annotations } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { template+: { metadata+: { annotations+: annotations } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { template+: { metadata+: { clusterName: clusterName } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { template+: { metadata+: { creationTimestamp: creationTimestamp } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { template+: { metadata+: { generateName: generateName } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { template+: { metadata+: { generation: generation } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { template+: { metadata+: { labels: labels } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { template+: { metadata+: { labels+: labels } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { template+: { metadata+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { template+: { metadata+: { namespace: namespace } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { template+: { metadata+: { resourceVersion: resourceVersion } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { template+: { metadata+: { selfLink: selfLink } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { template+: { metadata+: { uid: uid } } } - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } - } - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } } - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } } - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { template+: { spec+: { dnsPolicy: dnsPolicy } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { template+: { spec+: { enableServiceLinks: enableServiceLinks } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { template+: { spec+: { hostIPC: hostIPC } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { template+: { spec+: { hostNetwork: hostNetwork } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { template+: { spec+: { hostPID: hostPID } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { template+: { spec+: { hostname: hostname } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { template+: { spec+: { nodeName: nodeName } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { template+: { spec+: { nodeSelector: nodeSelector } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { template+: { spec+: { nodeSelector+: nodeSelector } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { template+: { spec+: { priority: priority } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { template+: { spec+: { priorityClassName: priorityClassName } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { template+: { spec+: { restartPolicy: restartPolicy } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is an alpha feature and may change in the future.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { template+: { spec+: { runtimeClassName: runtimeClassName } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { template+: { spec+: { schedulerName: schedulerName } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { template+: { spec+: { serviceAccount: serviceAccount } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { template+: { spec+: { serviceAccountName: serviceAccountName } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false. This field is beta-level and may be disabled with the PodShareProcessNamespace feature.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { template+: { spec+: { subdomain: subdomain } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } } - } - }, - '#withMinReadySeconds':: d.fn(help='Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)', args=[d.arg(name='minReadySeconds', type=d.T.integer)]), - withMinReadySeconds(minReadySeconds): { minReadySeconds: minReadySeconds }, - '#withPaused':: d.fn(help='Indicates that the deployment is paused.', args=[d.arg(name='paused', type=d.T.boolean)]), - withPaused(paused): { paused: paused }, - '#withProgressDeadlineSeconds':: d.fn(help='The maximum time in seconds for a deployment to make progress before it is considered to be failed. The deployment controller will continue to process failed deployments and a condition with a ProgressDeadlineExceeded reason will be surfaced in the deployment status. Note that progress will not be estimated during the time a deployment is paused. Defaults to 600s.', args=[d.arg(name='progressDeadlineSeconds', type=d.T.integer)]), - withProgressDeadlineSeconds(progressDeadlineSeconds): { progressDeadlineSeconds: progressDeadlineSeconds }, - '#withReplicas':: d.fn(help='Number of desired pods. This is a pointer to distinguish between explicit zero and not specified. Defaults to 1.', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { replicas: replicas }, - '#withRevisionHistoryLimit':: d.fn(help='The number of old ReplicaSets to retain to allow rollback. This is a pointer to distinguish between explicit zero and not specified. Defaults to 10.', args=[d.arg(name='revisionHistoryLimit', type=d.T.integer)]), - withRevisionHistoryLimit(revisionHistoryLimit): { revisionHistoryLimit: revisionHistoryLimit }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/deploymentStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/deploymentStatus.libsonnet deleted file mode 100644 index 6d01c63020f4..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/deploymentStatus.libsonnet +++ /dev/null @@ -1,24 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='deploymentStatus', url='', help='DeploymentStatus is the most recently observed status of the Deployment.'), - '#withAvailableReplicas':: d.fn(help='Total number of available pods (ready for at least minReadySeconds) targeted by this deployment.', args=[d.arg(name='availableReplicas', type=d.T.integer)]), - withAvailableReplicas(availableReplicas): { availableReplicas: availableReplicas }, - '#withCollisionCount':: d.fn(help='Count of hash collisions for the Deployment. The Deployment controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ReplicaSet.', args=[d.arg(name='collisionCount', type=d.T.integer)]), - withCollisionCount(collisionCount): { collisionCount: collisionCount }, - '#withConditions':: d.fn(help="Represents the latest available observations of a deployment's current state.", args=[d.arg(name='conditions', type=d.T.array)]), - withConditions(conditions): { conditions: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withConditionsMixin':: d.fn(help="Represents the latest available observations of a deployment's current state.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='conditions', type=d.T.array)]), - withConditionsMixin(conditions): { conditions+: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withObservedGeneration':: d.fn(help='The generation observed by the deployment controller.', args=[d.arg(name='observedGeneration', type=d.T.integer)]), - withObservedGeneration(observedGeneration): { observedGeneration: observedGeneration }, - '#withReadyReplicas':: d.fn(help='Total number of ready pods targeted by this deployment.', args=[d.arg(name='readyReplicas', type=d.T.integer)]), - withReadyReplicas(readyReplicas): { readyReplicas: readyReplicas }, - '#withReplicas':: d.fn(help='Total number of non-terminated pods targeted by this deployment (their labels match the selector).', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { replicas: replicas }, - '#withUnavailableReplicas':: d.fn(help='Total number of unavailable pods targeted by this deployment. This is the total number of pods that are still required for the deployment to have 100% available capacity. They may either be pods that are running but not yet available or pods that still have not been created.', args=[d.arg(name='unavailableReplicas', type=d.T.integer)]), - withUnavailableReplicas(unavailableReplicas): { unavailableReplicas: unavailableReplicas }, - '#withUpdatedReplicas':: d.fn(help='Total number of non-terminated pods targeted by this deployment that have the desired template spec.', args=[d.arg(name='updatedReplicas', type=d.T.integer)]), - withUpdatedReplicas(updatedReplicas): { updatedReplicas: updatedReplicas }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/deploymentStrategy.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/deploymentStrategy.libsonnet deleted file mode 100644 index 36f6460da406..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/deploymentStrategy.libsonnet +++ /dev/null @@ -1,15 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='deploymentStrategy', url='', help='DeploymentStrategy describes how to replace existing pods with new ones.'), - '#rollingUpdate':: d.obj(help='Spec to control the desired behavior of rolling update.'), - rollingUpdate: { - '#withMaxSurge':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxSurge', type=d.T.string)]), - withMaxSurge(maxSurge): { rollingUpdate+: { maxSurge: maxSurge } }, - '#withMaxUnavailable':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxUnavailable', type=d.T.string)]), - withMaxUnavailable(maxUnavailable): { rollingUpdate+: { maxUnavailable: maxUnavailable } } - }, - '#withType':: d.fn(help='Type of deployment. Can be "Recreate" or "RollingUpdate". Default is RollingUpdate.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/main.libsonnet deleted file mode 100644 index 50a56921d361..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/main.libsonnet +++ /dev/null @@ -1,27 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1', url='', help=''), - controllerRevision: (import 'controllerRevision.libsonnet'), - daemonSet: (import 'daemonSet.libsonnet'), - daemonSetCondition: (import 'daemonSetCondition.libsonnet'), - daemonSetSpec: (import 'daemonSetSpec.libsonnet'), - daemonSetStatus: (import 'daemonSetStatus.libsonnet'), - daemonSetUpdateStrategy: (import 'daemonSetUpdateStrategy.libsonnet'), - deployment: (import 'deployment.libsonnet'), - deploymentCondition: (import 'deploymentCondition.libsonnet'), - deploymentSpec: (import 'deploymentSpec.libsonnet'), - deploymentStatus: (import 'deploymentStatus.libsonnet'), - deploymentStrategy: (import 'deploymentStrategy.libsonnet'), - replicaSet: (import 'replicaSet.libsonnet'), - replicaSetCondition: (import 'replicaSetCondition.libsonnet'), - replicaSetSpec: (import 'replicaSetSpec.libsonnet'), - replicaSetStatus: (import 'replicaSetStatus.libsonnet'), - rollingUpdateDaemonSet: (import 'rollingUpdateDaemonSet.libsonnet'), - rollingUpdateDeployment: (import 'rollingUpdateDeployment.libsonnet'), - rollingUpdateStatefulSetStrategy: (import 'rollingUpdateStatefulSetStrategy.libsonnet'), - statefulSet: (import 'statefulSet.libsonnet'), - statefulSetCondition: (import 'statefulSetCondition.libsonnet'), - statefulSetSpec: (import 'statefulSetSpec.libsonnet'), - statefulSetStatus: (import 'statefulSetStatus.libsonnet'), - statefulSetUpdateStrategy: (import 'statefulSetUpdateStrategy.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/replicaSet.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/replicaSet.libsonnet deleted file mode 100644 index aef7acea8a24..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/replicaSet.libsonnet +++ /dev/null @@ -1,353 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='replicaSet', url='', help='ReplicaSet ensures that a specified number of pod replicas are running at any given time.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Replicaset', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'apps/v1', - kind: 'ReplicaSet' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='ReplicaSetSpec is the specification of a ReplicaSet.'), - spec: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { spec+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { spec+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { spec+: { selector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { spec+: { selector+: { matchLabels+: matchLabels } } } - }, - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { group: group } } } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { name: name } } } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { spec+: { template+: { metadata+: { initializers+: { result+: { code: code } } } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { template+: { metadata+: { initializers+: { result+: { kind: kind } } } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { spec+: { template+: { metadata+: { initializers+: { result+: { message: message } } } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { spec+: { template+: { metadata+: { initializers+: { result+: { metadata: metadata } } } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { spec+: { template+: { metadata+: { initializers+: { result+: { reason: reason } } } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { spec+: { template+: { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { spec+: { template+: { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { spec+: { template+: { metadata+: { annotations: annotations } } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { spec+: { template+: { metadata+: { annotations+: annotations } } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { spec+: { template+: { metadata+: { clusterName: clusterName } } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { spec+: { template+: { metadata+: { creationTimestamp: creationTimestamp } } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { spec+: { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { spec+: { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { spec+: { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { spec+: { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { spec+: { template+: { metadata+: { generateName: generateName } } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { spec+: { template+: { metadata+: { generation: generation } } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { spec+: { template+: { metadata+: { labels: labels } } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { spec+: { template+: { metadata+: { labels+: labels } } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { spec+: { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { spec+: { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { template+: { metadata+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { template+: { metadata+: { namespace: namespace } } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { spec+: { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { spec+: { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { spec+: { template+: { metadata+: { resourceVersion: resourceVersion } } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { spec+: { template+: { metadata+: { selfLink: selfLink } } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { template+: { metadata+: { uid: uid } } } } - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } } - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } - } - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { spec+: { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { spec+: { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { spec+: { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { spec+: { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { spec+: { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { spec+: { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } } } - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } } } - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { spec+: { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { spec+: { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { spec+: { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { spec+: { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { spec+: { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { spec+: { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { spec+: { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { spec+: { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } } - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { spec+: { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { spec+: { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { spec+: { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { spec+: { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { spec+: { template+: { spec+: { dnsPolicy: dnsPolicy } } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { spec+: { template+: { spec+: { enableServiceLinks: enableServiceLinks } } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { spec+: { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { spec+: { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { spec+: { template+: { spec+: { hostIPC: hostIPC } } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { spec+: { template+: { spec+: { hostNetwork: hostNetwork } } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { spec+: { template+: { spec+: { hostPID: hostPID } } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { spec+: { template+: { spec+: { hostname: hostname } } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { spec+: { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { spec+: { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { spec+: { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { spec+: { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { spec+: { template+: { spec+: { nodeName: nodeName } } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { spec+: { template+: { spec+: { nodeSelector: nodeSelector } } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { spec+: { template+: { spec+: { nodeSelector+: nodeSelector } } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { spec+: { template+: { spec+: { priority: priority } } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { spec+: { template+: { spec+: { priorityClassName: priorityClassName } } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { spec+: { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { spec+: { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { spec+: { template+: { spec+: { restartPolicy: restartPolicy } } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is an alpha feature and may change in the future.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { spec+: { template+: { spec+: { runtimeClassName: runtimeClassName } } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { spec+: { template+: { spec+: { schedulerName: schedulerName } } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { spec+: { template+: { spec+: { serviceAccount: serviceAccount } } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { spec+: { template+: { spec+: { serviceAccountName: serviceAccountName } } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false. This field is beta-level and may be disabled with the PodShareProcessNamespace feature.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { spec+: { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { spec+: { template+: { spec+: { subdomain: subdomain } } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { spec+: { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { spec+: { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { spec+: { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { spec+: { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { spec+: { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } } } - } - }, - '#withMinReadySeconds':: d.fn(help='Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)', args=[d.arg(name='minReadySeconds', type=d.T.integer)]), - withMinReadySeconds(minReadySeconds): { spec+: { minReadySeconds: minReadySeconds } }, - '#withReplicas':: d.fn(help='Replicas is the number of desired replicas. This is a pointer to distinguish between explicit zero and unspecified. Defaults to 1. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { spec+: { replicas: replicas } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/replicaSetCondition.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/replicaSetCondition.libsonnet deleted file mode 100644 index 581bbfa9c69b..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/replicaSetCondition.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='replicaSetCondition', url='', help='ReplicaSetCondition describes the state of a replica set at a certain point.'), - '#withLastTransitionTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastTransitionTime', type=d.T.string)]), - withLastTransitionTime(lastTransitionTime): { lastTransitionTime: lastTransitionTime }, - '#withMessage':: d.fn(help='A human readable message indicating details about the transition.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withReason':: d.fn(help="The reason for the condition's last transition.", args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#withType':: d.fn(help='Type of replica set condition.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/replicaSetSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/replicaSetSpec.libsonnet deleted file mode 100644 index 933b7ffbd53a..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/replicaSetSpec.libsonnet +++ /dev/null @@ -1,263 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='replicaSetSpec', url='', help='ReplicaSetSpec is the specification of a ReplicaSet.'), - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { selector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { selector+: { matchLabels+: matchLabels } } - }, - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { template+: { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { template+: { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { template+: { metadata+: { initializers+: { result+: { details+: { group: group } } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { template+: { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { template+: { metadata+: { initializers+: { result+: { details+: { name: name } } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { template+: { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { template+: { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { template+: { metadata+: { initializers+: { result+: { code: code } } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { template+: { metadata+: { initializers+: { result+: { kind: kind } } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { template+: { metadata+: { initializers+: { result+: { message: message } } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { template+: { metadata+: { initializers+: { result+: { metadata: metadata } } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { template+: { metadata+: { initializers+: { result+: { reason: reason } } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { template+: { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { template+: { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { template+: { metadata+: { annotations: annotations } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { template+: { metadata+: { annotations+: annotations } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { template+: { metadata+: { clusterName: clusterName } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { template+: { metadata+: { creationTimestamp: creationTimestamp } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { template+: { metadata+: { generateName: generateName } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { template+: { metadata+: { generation: generation } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { template+: { metadata+: { labels: labels } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { template+: { metadata+: { labels+: labels } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { template+: { metadata+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { template+: { metadata+: { namespace: namespace } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { template+: { metadata+: { resourceVersion: resourceVersion } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { template+: { metadata+: { selfLink: selfLink } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { template+: { metadata+: { uid: uid } } } - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } - } - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } } - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } } - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { template+: { spec+: { dnsPolicy: dnsPolicy } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { template+: { spec+: { enableServiceLinks: enableServiceLinks } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { template+: { spec+: { hostIPC: hostIPC } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { template+: { spec+: { hostNetwork: hostNetwork } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { template+: { spec+: { hostPID: hostPID } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { template+: { spec+: { hostname: hostname } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { template+: { spec+: { nodeName: nodeName } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { template+: { spec+: { nodeSelector: nodeSelector } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { template+: { spec+: { nodeSelector+: nodeSelector } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { template+: { spec+: { priority: priority } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { template+: { spec+: { priorityClassName: priorityClassName } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { template+: { spec+: { restartPolicy: restartPolicy } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is an alpha feature and may change in the future.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { template+: { spec+: { runtimeClassName: runtimeClassName } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { template+: { spec+: { schedulerName: schedulerName } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { template+: { spec+: { serviceAccount: serviceAccount } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { template+: { spec+: { serviceAccountName: serviceAccountName } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false. This field is beta-level and may be disabled with the PodShareProcessNamespace feature.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { template+: { spec+: { subdomain: subdomain } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } } - } - }, - '#withMinReadySeconds':: d.fn(help='Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)', args=[d.arg(name='minReadySeconds', type=d.T.integer)]), - withMinReadySeconds(minReadySeconds): { minReadySeconds: minReadySeconds }, - '#withReplicas':: d.fn(help='Replicas is the number of desired replicas. This is a pointer to distinguish between explicit zero and unspecified. Defaults to 1. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { replicas: replicas }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/replicaSetStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/replicaSetStatus.libsonnet deleted file mode 100644 index e959f877d008..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/replicaSetStatus.libsonnet +++ /dev/null @@ -1,20 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='replicaSetStatus', url='', help='ReplicaSetStatus represents the current status of a ReplicaSet.'), - '#withAvailableReplicas':: d.fn(help='The number of available replicas (ready for at least minReadySeconds) for this replica set.', args=[d.arg(name='availableReplicas', type=d.T.integer)]), - withAvailableReplicas(availableReplicas): { availableReplicas: availableReplicas }, - '#withConditions':: d.fn(help="Represents the latest available observations of a replica set's current state.", args=[d.arg(name='conditions', type=d.T.array)]), - withConditions(conditions): { conditions: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withConditionsMixin':: d.fn(help="Represents the latest available observations of a replica set's current state.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='conditions', type=d.T.array)]), - withConditionsMixin(conditions): { conditions+: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withFullyLabeledReplicas':: d.fn(help='The number of pods that have labels matching the labels of the pod template of the replicaset.', args=[d.arg(name='fullyLabeledReplicas', type=d.T.integer)]), - withFullyLabeledReplicas(fullyLabeledReplicas): { fullyLabeledReplicas: fullyLabeledReplicas }, - '#withObservedGeneration':: d.fn(help='ObservedGeneration reflects the generation of the most recently observed ReplicaSet.', args=[d.arg(name='observedGeneration', type=d.T.integer)]), - withObservedGeneration(observedGeneration): { observedGeneration: observedGeneration }, - '#withReadyReplicas':: d.fn(help='The number of ready replicas for this replica set.', args=[d.arg(name='readyReplicas', type=d.T.integer)]), - withReadyReplicas(readyReplicas): { readyReplicas: readyReplicas }, - '#withReplicas':: d.fn(help='Replicas is the most recently oberved number of replicas. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { replicas: replicas }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/rollingUpdateDaemonSet.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/rollingUpdateDaemonSet.libsonnet deleted file mode 100644 index 9d349cef4825..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/rollingUpdateDaemonSet.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='rollingUpdateDaemonSet', url='', help='Spec to control the desired behavior of daemon set rolling update.'), - '#withMaxUnavailable':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxUnavailable', type=d.T.string)]), - withMaxUnavailable(maxUnavailable): { maxUnavailable: maxUnavailable }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/rollingUpdateDeployment.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/rollingUpdateDeployment.libsonnet deleted file mode 100644 index cd8cadb0f964..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/rollingUpdateDeployment.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='rollingUpdateDeployment', url='', help='Spec to control the desired behavior of rolling update.'), - '#withMaxSurge':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxSurge', type=d.T.string)]), - withMaxSurge(maxSurge): { maxSurge: maxSurge }, - '#withMaxUnavailable':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxUnavailable', type=d.T.string)]), - withMaxUnavailable(maxUnavailable): { maxUnavailable: maxUnavailable }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/rollingUpdateStatefulSetStrategy.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/rollingUpdateStatefulSetStrategy.libsonnet deleted file mode 100644 index 96ffd4b79e6f..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/rollingUpdateStatefulSetStrategy.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='rollingUpdateStatefulSetStrategy', url='', help='RollingUpdateStatefulSetStrategy is used to communicate parameter for RollingUpdateStatefulSetStrategyType.'), - '#withPartition':: d.fn(help='Partition indicates the ordinal at which the StatefulSet should be partitioned. Default value is 0.', args=[d.arg(name='partition', type=d.T.integer)]), - withPartition(partition): { partition: partition }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/statefulSet.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/statefulSet.libsonnet deleted file mode 100644 index bdead2dd0774..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/statefulSet.libsonnet +++ /dev/null @@ -1,371 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='statefulSet', url='', help='StatefulSet represents a set of pods with consistent identities. Identities are defined as:\n - Network: A single stable DNS and hostname.\n - Storage: As many VolumeClaims as requested.\nThe StatefulSet guarantees that a given network identity will always map to the same storage identity.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Statefulset', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'apps/v1', - kind: 'StatefulSet' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='A StatefulSetSpec is the specification of a StatefulSet.'), - spec: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { spec+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { spec+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { spec+: { selector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { spec+: { selector+: { matchLabels+: matchLabels } } } - }, - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { group: group } } } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { name: name } } } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { spec+: { template+: { metadata+: { initializers+: { result+: { code: code } } } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { template+: { metadata+: { initializers+: { result+: { kind: kind } } } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { spec+: { template+: { metadata+: { initializers+: { result+: { message: message } } } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { spec+: { template+: { metadata+: { initializers+: { result+: { metadata: metadata } } } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { spec+: { template+: { metadata+: { initializers+: { result+: { reason: reason } } } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { spec+: { template+: { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { spec+: { template+: { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { spec+: { template+: { metadata+: { annotations: annotations } } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { spec+: { template+: { metadata+: { annotations+: annotations } } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { spec+: { template+: { metadata+: { clusterName: clusterName } } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { spec+: { template+: { metadata+: { creationTimestamp: creationTimestamp } } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { spec+: { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { spec+: { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { spec+: { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { spec+: { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { spec+: { template+: { metadata+: { generateName: generateName } } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { spec+: { template+: { metadata+: { generation: generation } } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { spec+: { template+: { metadata+: { labels: labels } } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { spec+: { template+: { metadata+: { labels+: labels } } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { spec+: { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { spec+: { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { template+: { metadata+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { template+: { metadata+: { namespace: namespace } } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { spec+: { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { spec+: { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { spec+: { template+: { metadata+: { resourceVersion: resourceVersion } } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { spec+: { template+: { metadata+: { selfLink: selfLink } } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { template+: { metadata+: { uid: uid } } } } - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } } - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } - } - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { spec+: { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { spec+: { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { spec+: { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { spec+: { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { spec+: { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { spec+: { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } } } - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } } } - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { spec+: { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { spec+: { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { spec+: { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { spec+: { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { spec+: { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { spec+: { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { spec+: { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { spec+: { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } } - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { spec+: { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { spec+: { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { spec+: { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { spec+: { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { spec+: { template+: { spec+: { dnsPolicy: dnsPolicy } } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { spec+: { template+: { spec+: { enableServiceLinks: enableServiceLinks } } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { spec+: { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { spec+: { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { spec+: { template+: { spec+: { hostIPC: hostIPC } } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { spec+: { template+: { spec+: { hostNetwork: hostNetwork } } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { spec+: { template+: { spec+: { hostPID: hostPID } } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { spec+: { template+: { spec+: { hostname: hostname } } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { spec+: { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { spec+: { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { spec+: { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { spec+: { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { spec+: { template+: { spec+: { nodeName: nodeName } } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { spec+: { template+: { spec+: { nodeSelector: nodeSelector } } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { spec+: { template+: { spec+: { nodeSelector+: nodeSelector } } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { spec+: { template+: { spec+: { priority: priority } } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { spec+: { template+: { spec+: { priorityClassName: priorityClassName } } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { spec+: { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { spec+: { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { spec+: { template+: { spec+: { restartPolicy: restartPolicy } } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is an alpha feature and may change in the future.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { spec+: { template+: { spec+: { runtimeClassName: runtimeClassName } } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { spec+: { template+: { spec+: { schedulerName: schedulerName } } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { spec+: { template+: { spec+: { serviceAccount: serviceAccount } } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { spec+: { template+: { spec+: { serviceAccountName: serviceAccountName } } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false. This field is beta-level and may be disabled with the PodShareProcessNamespace feature.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { spec+: { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { spec+: { template+: { spec+: { subdomain: subdomain } } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { spec+: { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { spec+: { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { spec+: { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { spec+: { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { spec+: { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } } } - } - }, - '#updateStrategy':: d.obj(help='StatefulSetUpdateStrategy indicates the strategy that the StatefulSet controller will use to perform updates. It includes any additional parameters necessary to perform the update for the indicated strategy.'), - updateStrategy: { - '#rollingUpdate':: d.obj(help='RollingUpdateStatefulSetStrategy is used to communicate parameter for RollingUpdateStatefulSetStrategyType.'), - rollingUpdate: { - '#withPartition':: d.fn(help='Partition indicates the ordinal at which the StatefulSet should be partitioned. Default value is 0.', args=[d.arg(name='partition', type=d.T.integer)]), - withPartition(partition): { spec+: { updateStrategy+: { rollingUpdate+: { partition: partition } } } } - }, - '#withType':: d.fn(help='Type indicates the type of the StatefulSetUpdateStrategy. Default is RollingUpdate.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { updateStrategy+: { type: type } } } - }, - '#withPodManagementPolicy':: d.fn(help='podManagementPolicy controls how pods are created during initial scale up, when replacing pods on nodes, or when scaling down. The default policy is `OrderedReady`, where pods are created in increasing order (pod-0, then pod-1, etc) and the controller will wait until each pod is ready before continuing. When scaling down, the pods are removed in the opposite order. The alternative policy is `Parallel` which will create pods in parallel to match the desired scale without waiting, and on scale down will delete all pods at once.', args=[d.arg(name='podManagementPolicy', type=d.T.string)]), - withPodManagementPolicy(podManagementPolicy): { spec+: { podManagementPolicy: podManagementPolicy } }, - '#withReplicas':: d.fn(help='replicas is the desired number of replicas of the given Template. These are replicas in the sense that they are instantiations of the same Template, but individual replicas also have a consistent identity. If unspecified, defaults to 1.', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { spec+: { replicas: replicas } }, - '#withRevisionHistoryLimit':: d.fn(help="revisionHistoryLimit is the maximum number of revisions that will be maintained in the StatefulSet's revision history. The revision history consists of all revisions not represented by a currently applied StatefulSetSpec version. The default value is 10.", args=[d.arg(name='revisionHistoryLimit', type=d.T.integer)]), - withRevisionHistoryLimit(revisionHistoryLimit): { spec+: { revisionHistoryLimit: revisionHistoryLimit } }, - '#withServiceName':: d.fn(help='serviceName is the name of the service that governs this StatefulSet. This service must exist before the StatefulSet, and is responsible for the network identity of the set. Pods get DNS/hostnames that follow the pattern: pod-specific-string.serviceName.default.svc.cluster.local where "pod-specific-string" is managed by the StatefulSet controller.', args=[d.arg(name='serviceName', type=d.T.string)]), - withServiceName(serviceName): { spec+: { serviceName: serviceName } }, - '#withVolumeClaimTemplates':: d.fn(help='volumeClaimTemplates is a list of claims that pods are allowed to reference. The StatefulSet controller is responsible for mapping network identities to claims in a way that maintains the identity of a pod. Every claim in this list must have at least one matching (by name) volumeMount in one container in the template. A claim in this list takes precedence over any volumes in the template, with the same name.', args=[d.arg(name='volumeClaimTemplates', type=d.T.array)]), - withVolumeClaimTemplates(volumeClaimTemplates): { spec+: { volumeClaimTemplates: if std.isArray(v=volumeClaimTemplates) then volumeClaimTemplates else [volumeClaimTemplates] } }, - '#withVolumeClaimTemplatesMixin':: d.fn(help='volumeClaimTemplates is a list of claims that pods are allowed to reference. The StatefulSet controller is responsible for mapping network identities to claims in a way that maintains the identity of a pod. Every claim in this list must have at least one matching (by name) volumeMount in one container in the template. A claim in this list takes precedence over any volumes in the template, with the same name.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumeClaimTemplates', type=d.T.array)]), - withVolumeClaimTemplatesMixin(volumeClaimTemplates): { spec+: { volumeClaimTemplates+: if std.isArray(v=volumeClaimTemplates) then volumeClaimTemplates else [volumeClaimTemplates] } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/statefulSetCondition.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/statefulSetCondition.libsonnet deleted file mode 100644 index 9b2c006cfd07..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/statefulSetCondition.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='statefulSetCondition', url='', help='StatefulSetCondition describes the state of a statefulset at a certain point.'), - '#withLastTransitionTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastTransitionTime', type=d.T.string)]), - withLastTransitionTime(lastTransitionTime): { lastTransitionTime: lastTransitionTime }, - '#withMessage':: d.fn(help='A human readable message indicating details about the transition.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withReason':: d.fn(help="The reason for the condition's last transition.", args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#withType':: d.fn(help='Type of statefulset condition.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/statefulSetSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/statefulSetSpec.libsonnet deleted file mode 100644 index e3de9dc19fd0..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/statefulSetSpec.libsonnet +++ /dev/null @@ -1,281 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='statefulSetSpec', url='', help='A StatefulSetSpec is the specification of a StatefulSet.'), - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { selector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { selector+: { matchLabels+: matchLabels } } - }, - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { template+: { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { template+: { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { template+: { metadata+: { initializers+: { result+: { details+: { group: group } } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { template+: { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { template+: { metadata+: { initializers+: { result+: { details+: { name: name } } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { template+: { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { template+: { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { template+: { metadata+: { initializers+: { result+: { code: code } } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { template+: { metadata+: { initializers+: { result+: { kind: kind } } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { template+: { metadata+: { initializers+: { result+: { message: message } } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { template+: { metadata+: { initializers+: { result+: { metadata: metadata } } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { template+: { metadata+: { initializers+: { result+: { reason: reason } } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { template+: { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { template+: { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { template+: { metadata+: { annotations: annotations } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { template+: { metadata+: { annotations+: annotations } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { template+: { metadata+: { clusterName: clusterName } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { template+: { metadata+: { creationTimestamp: creationTimestamp } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { template+: { metadata+: { generateName: generateName } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { template+: { metadata+: { generation: generation } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { template+: { metadata+: { labels: labels } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { template+: { metadata+: { labels+: labels } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { template+: { metadata+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { template+: { metadata+: { namespace: namespace } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { template+: { metadata+: { resourceVersion: resourceVersion } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { template+: { metadata+: { selfLink: selfLink } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { template+: { metadata+: { uid: uid } } } - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } - } - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } } - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } } - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { template+: { spec+: { dnsPolicy: dnsPolicy } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { template+: { spec+: { enableServiceLinks: enableServiceLinks } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { template+: { spec+: { hostIPC: hostIPC } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { template+: { spec+: { hostNetwork: hostNetwork } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { template+: { spec+: { hostPID: hostPID } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { template+: { spec+: { hostname: hostname } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { template+: { spec+: { nodeName: nodeName } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { template+: { spec+: { nodeSelector: nodeSelector } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { template+: { spec+: { nodeSelector+: nodeSelector } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { template+: { spec+: { priority: priority } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { template+: { spec+: { priorityClassName: priorityClassName } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { template+: { spec+: { restartPolicy: restartPolicy } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is an alpha feature and may change in the future.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { template+: { spec+: { runtimeClassName: runtimeClassName } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { template+: { spec+: { schedulerName: schedulerName } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { template+: { spec+: { serviceAccount: serviceAccount } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { template+: { spec+: { serviceAccountName: serviceAccountName } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false. This field is beta-level and may be disabled with the PodShareProcessNamespace feature.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { template+: { spec+: { subdomain: subdomain } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } } - } - }, - '#updateStrategy':: d.obj(help='StatefulSetUpdateStrategy indicates the strategy that the StatefulSet controller will use to perform updates. It includes any additional parameters necessary to perform the update for the indicated strategy.'), - updateStrategy: { - '#rollingUpdate':: d.obj(help='RollingUpdateStatefulSetStrategy is used to communicate parameter for RollingUpdateStatefulSetStrategyType.'), - rollingUpdate: { - '#withPartition':: d.fn(help='Partition indicates the ordinal at which the StatefulSet should be partitioned. Default value is 0.', args=[d.arg(name='partition', type=d.T.integer)]), - withPartition(partition): { updateStrategy+: { rollingUpdate+: { partition: partition } } } - }, - '#withType':: d.fn(help='Type indicates the type of the StatefulSetUpdateStrategy. Default is RollingUpdate.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { updateStrategy+: { type: type } } - }, - '#withPodManagementPolicy':: d.fn(help='podManagementPolicy controls how pods are created during initial scale up, when replacing pods on nodes, or when scaling down. The default policy is `OrderedReady`, where pods are created in increasing order (pod-0, then pod-1, etc) and the controller will wait until each pod is ready before continuing. When scaling down, the pods are removed in the opposite order. The alternative policy is `Parallel` which will create pods in parallel to match the desired scale without waiting, and on scale down will delete all pods at once.', args=[d.arg(name='podManagementPolicy', type=d.T.string)]), - withPodManagementPolicy(podManagementPolicy): { podManagementPolicy: podManagementPolicy }, - '#withReplicas':: d.fn(help='replicas is the desired number of replicas of the given Template. These are replicas in the sense that they are instantiations of the same Template, but individual replicas also have a consistent identity. If unspecified, defaults to 1.', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { replicas: replicas }, - '#withRevisionHistoryLimit':: d.fn(help="revisionHistoryLimit is the maximum number of revisions that will be maintained in the StatefulSet's revision history. The revision history consists of all revisions not represented by a currently applied StatefulSetSpec version. The default value is 10.", args=[d.arg(name='revisionHistoryLimit', type=d.T.integer)]), - withRevisionHistoryLimit(revisionHistoryLimit): { revisionHistoryLimit: revisionHistoryLimit }, - '#withServiceName':: d.fn(help='serviceName is the name of the service that governs this StatefulSet. This service must exist before the StatefulSet, and is responsible for the network identity of the set. Pods get DNS/hostnames that follow the pattern: pod-specific-string.serviceName.default.svc.cluster.local where "pod-specific-string" is managed by the StatefulSet controller.', args=[d.arg(name='serviceName', type=d.T.string)]), - withServiceName(serviceName): { serviceName: serviceName }, - '#withVolumeClaimTemplates':: d.fn(help='volumeClaimTemplates is a list of claims that pods are allowed to reference. The StatefulSet controller is responsible for mapping network identities to claims in a way that maintains the identity of a pod. Every claim in this list must have at least one matching (by name) volumeMount in one container in the template. A claim in this list takes precedence over any volumes in the template, with the same name.', args=[d.arg(name='volumeClaimTemplates', type=d.T.array)]), - withVolumeClaimTemplates(volumeClaimTemplates): { volumeClaimTemplates: if std.isArray(v=volumeClaimTemplates) then volumeClaimTemplates else [volumeClaimTemplates] }, - '#withVolumeClaimTemplatesMixin':: d.fn(help='volumeClaimTemplates is a list of claims that pods are allowed to reference. The StatefulSet controller is responsible for mapping network identities to claims in a way that maintains the identity of a pod. Every claim in this list must have at least one matching (by name) volumeMount in one container in the template. A claim in this list takes precedence over any volumes in the template, with the same name.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumeClaimTemplates', type=d.T.array)]), - withVolumeClaimTemplatesMixin(volumeClaimTemplates): { volumeClaimTemplates+: if std.isArray(v=volumeClaimTemplates) then volumeClaimTemplates else [volumeClaimTemplates] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/statefulSetStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/statefulSetStatus.libsonnet deleted file mode 100644 index 59ac7f222991..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/statefulSetStatus.libsonnet +++ /dev/null @@ -1,26 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='statefulSetStatus', url='', help='StatefulSetStatus represents the current state of a StatefulSet.'), - '#withCollisionCount':: d.fn(help='collisionCount is the count of hash collisions for the StatefulSet. The StatefulSet controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ControllerRevision.', args=[d.arg(name='collisionCount', type=d.T.integer)]), - withCollisionCount(collisionCount): { collisionCount: collisionCount }, - '#withConditions':: d.fn(help="Represents the latest available observations of a statefulset's current state.", args=[d.arg(name='conditions', type=d.T.array)]), - withConditions(conditions): { conditions: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withConditionsMixin':: d.fn(help="Represents the latest available observations of a statefulset's current state.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='conditions', type=d.T.array)]), - withConditionsMixin(conditions): { conditions+: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withCurrentReplicas':: d.fn(help='currentReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version indicated by currentRevision.', args=[d.arg(name='currentReplicas', type=d.T.integer)]), - withCurrentReplicas(currentReplicas): { currentReplicas: currentReplicas }, - '#withCurrentRevision':: d.fn(help='currentRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [0,currentReplicas).', args=[d.arg(name='currentRevision', type=d.T.string)]), - withCurrentRevision(currentRevision): { currentRevision: currentRevision }, - '#withObservedGeneration':: d.fn(help="observedGeneration is the most recent generation observed for this StatefulSet. It corresponds to the StatefulSet's generation, which is updated on mutation by the API Server.", args=[d.arg(name='observedGeneration', type=d.T.integer)]), - withObservedGeneration(observedGeneration): { observedGeneration: observedGeneration }, - '#withReadyReplicas':: d.fn(help='readyReplicas is the number of Pods created by the StatefulSet controller that have a Ready Condition.', args=[d.arg(name='readyReplicas', type=d.T.integer)]), - withReadyReplicas(readyReplicas): { readyReplicas: readyReplicas }, - '#withReplicas':: d.fn(help='replicas is the number of Pods created by the StatefulSet controller.', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { replicas: replicas }, - '#withUpdateRevision':: d.fn(help='updateRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [replicas-updatedReplicas,replicas)', args=[d.arg(name='updateRevision', type=d.T.string)]), - withUpdateRevision(updateRevision): { updateRevision: updateRevision }, - '#withUpdatedReplicas':: d.fn(help='updatedReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version indicated by updateRevision.', args=[d.arg(name='updatedReplicas', type=d.T.integer)]), - withUpdatedReplicas(updatedReplicas): { updatedReplicas: updatedReplicas }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/statefulSetUpdateStrategy.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/statefulSetUpdateStrategy.libsonnet deleted file mode 100644 index 72eeb791534a..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1/statefulSetUpdateStrategy.libsonnet +++ /dev/null @@ -1,13 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='statefulSetUpdateStrategy', url='', help='StatefulSetUpdateStrategy indicates the strategy that the StatefulSet controller will use to perform updates. It includes any additional parameters necessary to perform the update for the indicated strategy.'), - '#rollingUpdate':: d.obj(help='RollingUpdateStatefulSetStrategy is used to communicate parameter for RollingUpdateStatefulSetStrategyType.'), - rollingUpdate: { - '#withPartition':: d.fn(help='Partition indicates the ordinal at which the StatefulSet should be partitioned. Default value is 0.', args=[d.arg(name='partition', type=d.T.integer)]), - withPartition(partition): { rollingUpdate+: { partition: partition } } - }, - '#withType':: d.fn(help='Type indicates the type of the StatefulSetUpdateStrategy. Default is RollingUpdate.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/controllerRevision.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/controllerRevision.libsonnet deleted file mode 100644 index 839414d4e200..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/controllerRevision.libsonnet +++ /dev/null @@ -1,100 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='controllerRevision', url='', help='DEPRECATED - This group version of ControllerRevision is deprecated by apps/v1beta2/ControllerRevision. See the release notes for more information. ControllerRevision implements an immutable snapshot of state data. Clients are responsible for serializing and deserializing the objects that contain their internal state. Once a ControllerRevision has been successfully created, it can not be updated. The API Server will fail validation of all requests that attempt to mutate the Data field. ControllerRevisions may, however, be deleted. Note that, due to its use by both the DaemonSet and StatefulSet controllers for update and rollback, this object is beta. However, it may be subject to name and representation changes in future releases, and clients should not depend on its stability. It is primarily for internal use by controllers.'), - '#data':: d.obj(help="RawExtension is used to hold extensions in external versions.\n\nTo use this, make a field which has RawExtension as its type in your external, versioned struct, and Object in your internal struct. You also need to register your various plugin types.\n\n// Internal package: type MyAPIObject struct {\n runtime.TypeMeta `json:',inline'`\n MyPlugin runtime.Object `json:'myPlugin'`\n} type PluginA struct {\n AOption string `json:'aOption'`\n}\n\n// External package: type MyAPIObject struct {\n runtime.TypeMeta `json:',inline'`\n MyPlugin runtime.RawExtension `json:'myPlugin'`\n} type PluginA struct {\n AOption string `json:'aOption'`\n}\n\n// On the wire, the JSON will look something like this: {\n 'kind':'MyAPIObject',\n 'apiVersion':'v1',\n 'myPlugin': {\n 'kind':'PluginA',\n 'aOption':'foo',\n },\n}\n\nSo what happens? Decode first uses json or yaml to unmarshal the serialized data into your external MyAPIObject. That causes the raw JSON to be stored, but not unpacked. The next step is to copy (using pkg/conversion) into the internal struct. The runtime package's DefaultScheme has conversion functions installed which will unpack the JSON stored in RawExtension, turning it into the correct object type, and storing it in the Object. (TODO: In the case where the object is of an unknown type, a runtime.Unknown object will be created and stored.)"), - data: { - '#withRaw':: d.fn(help='Raw is the underlying serialization of this object.', args=[d.arg(name='raw', type=d.T.string)]), - withRaw(raw): { data+: { raw: raw } } - }, - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Controllerrevision', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'apps/v1beta1', - kind: 'ControllerRevision' - } + self.metadata.withName(name=name), - '#withRevision':: d.fn(help='Revision indicates the revision of the state represented by Data.', args=[d.arg(name='revision', type=d.T.integer)]), - withRevision(revision): { revision: revision }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/deployment.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/deployment.libsonnet deleted file mode 100644 index 3f2833a1a20e..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/deployment.libsonnet +++ /dev/null @@ -1,376 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='deployment', url='', help='DEPRECATED - This group version of Deployment is deprecated by apps/v1beta2/Deployment. See the release notes for more information. Deployment enables declarative updates for Pods and ReplicaSets.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Deployment', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'apps/v1beta1', - kind: 'Deployment' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='DeploymentSpec is the specification of the desired behavior of the Deployment.'), - spec: { - '#rollbackTo':: d.obj(help='DEPRECATED.'), - rollbackTo: { - '#withRevision':: d.fn(help='The revision to rollback to. If set to 0, rollback to the last revision.', args=[d.arg(name='revision', type=d.T.integer)]), - withRevision(revision): { spec+: { rollbackTo+: { revision: revision } } } - }, - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { spec+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { spec+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { spec+: { selector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { spec+: { selector+: { matchLabels+: matchLabels } } } - }, - '#strategy':: d.obj(help='DeploymentStrategy describes how to replace existing pods with new ones.'), - strategy: { - '#rollingUpdate':: d.obj(help='Spec to control the desired behavior of rolling update.'), - rollingUpdate: { - '#withMaxSurge':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxSurge', type=d.T.string)]), - withMaxSurge(maxSurge): { spec+: { strategy+: { rollingUpdate+: { maxSurge: maxSurge } } } }, - '#withMaxUnavailable':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxUnavailable', type=d.T.string)]), - withMaxUnavailable(maxUnavailable): { spec+: { strategy+: { rollingUpdate+: { maxUnavailable: maxUnavailable } } } } - }, - '#withType':: d.fn(help='Type of deployment. Can be "Recreate" or "RollingUpdate". Default is RollingUpdate.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { strategy+: { type: type } } } - }, - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { group: group } } } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { name: name } } } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { spec+: { template+: { metadata+: { initializers+: { result+: { code: code } } } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { template+: { metadata+: { initializers+: { result+: { kind: kind } } } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { spec+: { template+: { metadata+: { initializers+: { result+: { message: message } } } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { spec+: { template+: { metadata+: { initializers+: { result+: { metadata: metadata } } } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { spec+: { template+: { metadata+: { initializers+: { result+: { reason: reason } } } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { spec+: { template+: { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { spec+: { template+: { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { spec+: { template+: { metadata+: { annotations: annotations } } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { spec+: { template+: { metadata+: { annotations+: annotations } } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { spec+: { template+: { metadata+: { clusterName: clusterName } } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { spec+: { template+: { metadata+: { creationTimestamp: creationTimestamp } } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { spec+: { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { spec+: { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { spec+: { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { spec+: { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { spec+: { template+: { metadata+: { generateName: generateName } } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { spec+: { template+: { metadata+: { generation: generation } } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { spec+: { template+: { metadata+: { labels: labels } } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { spec+: { template+: { metadata+: { labels+: labels } } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { spec+: { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { spec+: { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { template+: { metadata+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { template+: { metadata+: { namespace: namespace } } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { spec+: { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { spec+: { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { spec+: { template+: { metadata+: { resourceVersion: resourceVersion } } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { spec+: { template+: { metadata+: { selfLink: selfLink } } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { template+: { metadata+: { uid: uid } } } } - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } } - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } - } - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { spec+: { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { spec+: { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { spec+: { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { spec+: { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { spec+: { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { spec+: { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } } } - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } } } - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { spec+: { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { spec+: { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { spec+: { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { spec+: { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { spec+: { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { spec+: { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { spec+: { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { spec+: { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } } - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { spec+: { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { spec+: { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { spec+: { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { spec+: { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { spec+: { template+: { spec+: { dnsPolicy: dnsPolicy } } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { spec+: { template+: { spec+: { enableServiceLinks: enableServiceLinks } } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { spec+: { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { spec+: { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { spec+: { template+: { spec+: { hostIPC: hostIPC } } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { spec+: { template+: { spec+: { hostNetwork: hostNetwork } } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { spec+: { template+: { spec+: { hostPID: hostPID } } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { spec+: { template+: { spec+: { hostname: hostname } } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { spec+: { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { spec+: { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { spec+: { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { spec+: { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { spec+: { template+: { spec+: { nodeName: nodeName } } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { spec+: { template+: { spec+: { nodeSelector: nodeSelector } } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { spec+: { template+: { spec+: { nodeSelector+: nodeSelector } } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { spec+: { template+: { spec+: { priority: priority } } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { spec+: { template+: { spec+: { priorityClassName: priorityClassName } } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { spec+: { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { spec+: { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { spec+: { template+: { spec+: { restartPolicy: restartPolicy } } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is an alpha feature and may change in the future.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { spec+: { template+: { spec+: { runtimeClassName: runtimeClassName } } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { spec+: { template+: { spec+: { schedulerName: schedulerName } } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { spec+: { template+: { spec+: { serviceAccount: serviceAccount } } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { spec+: { template+: { spec+: { serviceAccountName: serviceAccountName } } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false. This field is beta-level and may be disabled with the PodShareProcessNamespace feature.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { spec+: { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { spec+: { template+: { spec+: { subdomain: subdomain } } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { spec+: { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { spec+: { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { spec+: { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { spec+: { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { spec+: { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } } } - } - }, - '#withMinReadySeconds':: d.fn(help='Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)', args=[d.arg(name='minReadySeconds', type=d.T.integer)]), - withMinReadySeconds(minReadySeconds): { spec+: { minReadySeconds: minReadySeconds } }, - '#withPaused':: d.fn(help='Indicates that the deployment is paused.', args=[d.arg(name='paused', type=d.T.boolean)]), - withPaused(paused): { spec+: { paused: paused } }, - '#withProgressDeadlineSeconds':: d.fn(help='The maximum time in seconds for a deployment to make progress before it is considered to be failed. The deployment controller will continue to process failed deployments and a condition with a ProgressDeadlineExceeded reason will be surfaced in the deployment status. Note that progress will not be estimated during the time a deployment is paused. Defaults to 600s.', args=[d.arg(name='progressDeadlineSeconds', type=d.T.integer)]), - withProgressDeadlineSeconds(progressDeadlineSeconds): { spec+: { progressDeadlineSeconds: progressDeadlineSeconds } }, - '#withReplicas':: d.fn(help='Number of desired pods. This is a pointer to distinguish between explicit zero and not specified. Defaults to 1.', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { spec+: { replicas: replicas } }, - '#withRevisionHistoryLimit':: d.fn(help='The number of old ReplicaSets to retain to allow rollback. This is a pointer to distinguish between explicit zero and not specified. Defaults to 2.', args=[d.arg(name='revisionHistoryLimit', type=d.T.integer)]), - withRevisionHistoryLimit(revisionHistoryLimit): { spec+: { revisionHistoryLimit: revisionHistoryLimit } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/deploymentCondition.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/deploymentCondition.libsonnet deleted file mode 100644 index f4716c97d4c6..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/deploymentCondition.libsonnet +++ /dev/null @@ -1,16 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='deploymentCondition', url='', help='DeploymentCondition describes the state of a deployment at a certain point.'), - '#withLastTransitionTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastTransitionTime', type=d.T.string)]), - withLastTransitionTime(lastTransitionTime): { lastTransitionTime: lastTransitionTime }, - '#withLastUpdateTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastUpdateTime', type=d.T.string)]), - withLastUpdateTime(lastUpdateTime): { lastUpdateTime: lastUpdateTime }, - '#withMessage':: d.fn(help='A human readable message indicating details about the transition.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withReason':: d.fn(help="The reason for the condition's last transition.", args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#withType':: d.fn(help='Type of deployment condition.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/deploymentRollback.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/deploymentRollback.libsonnet deleted file mode 100644 index 951718f90db4..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/deploymentRollback.libsonnet +++ /dev/null @@ -1,22 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='deploymentRollback', url='', help='DEPRECATED. DeploymentRollback stores the information required to rollback a deployment.'), - '#new':: d.fn(help='new returns an instance of Deploymentrollback', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'apps/v1beta1', - kind: 'DeploymentRollback' - } + self.metadata.withName(name=name), - '#rollbackTo':: d.obj(help='DEPRECATED.'), - rollbackTo: { - '#withRevision':: d.fn(help='The revision to rollback to. If set to 0, rollback to the last revision.', args=[d.arg(name='revision', type=d.T.integer)]), - withRevision(revision): { rollbackTo+: { revision: revision } } - }, - '#withName':: d.fn(help='Required: This must match the Name of a deployment.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withUpdatedAnnotations':: d.fn(help='The annotations to be updated to a deployment', args=[d.arg(name='updatedAnnotations', type=d.T.object)]), - withUpdatedAnnotations(updatedAnnotations): { updatedAnnotations: updatedAnnotations }, - '#withUpdatedAnnotationsMixin':: d.fn(help='The annotations to be updated to a deployment\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='updatedAnnotations', type=d.T.object)]), - withUpdatedAnnotationsMixin(updatedAnnotations): { updatedAnnotations+: updatedAnnotations }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/deploymentSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/deploymentSpec.libsonnet deleted file mode 100644 index b75679cf1d19..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/deploymentSpec.libsonnet +++ /dev/null @@ -1,286 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='deploymentSpec', url='', help='DeploymentSpec is the specification of the desired behavior of the Deployment.'), - '#rollbackTo':: d.obj(help='DEPRECATED.'), - rollbackTo: { - '#withRevision':: d.fn(help='The revision to rollback to. If set to 0, rollback to the last revision.', args=[d.arg(name='revision', type=d.T.integer)]), - withRevision(revision): { rollbackTo+: { revision: revision } } - }, - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { selector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { selector+: { matchLabels+: matchLabels } } - }, - '#strategy':: d.obj(help='DeploymentStrategy describes how to replace existing pods with new ones.'), - strategy: { - '#rollingUpdate':: d.obj(help='Spec to control the desired behavior of rolling update.'), - rollingUpdate: { - '#withMaxSurge':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxSurge', type=d.T.string)]), - withMaxSurge(maxSurge): { strategy+: { rollingUpdate+: { maxSurge: maxSurge } } }, - '#withMaxUnavailable':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxUnavailable', type=d.T.string)]), - withMaxUnavailable(maxUnavailable): { strategy+: { rollingUpdate+: { maxUnavailable: maxUnavailable } } } - }, - '#withType':: d.fn(help='Type of deployment. Can be "Recreate" or "RollingUpdate". Default is RollingUpdate.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { strategy+: { type: type } } - }, - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { template+: { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { template+: { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { template+: { metadata+: { initializers+: { result+: { details+: { group: group } } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { template+: { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { template+: { metadata+: { initializers+: { result+: { details+: { name: name } } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { template+: { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { template+: { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { template+: { metadata+: { initializers+: { result+: { code: code } } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { template+: { metadata+: { initializers+: { result+: { kind: kind } } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { template+: { metadata+: { initializers+: { result+: { message: message } } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { template+: { metadata+: { initializers+: { result+: { metadata: metadata } } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { template+: { metadata+: { initializers+: { result+: { reason: reason } } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { template+: { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { template+: { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { template+: { metadata+: { annotations: annotations } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { template+: { metadata+: { annotations+: annotations } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { template+: { metadata+: { clusterName: clusterName } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { template+: { metadata+: { creationTimestamp: creationTimestamp } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { template+: { metadata+: { generateName: generateName } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { template+: { metadata+: { generation: generation } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { template+: { metadata+: { labels: labels } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { template+: { metadata+: { labels+: labels } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { template+: { metadata+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { template+: { metadata+: { namespace: namespace } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { template+: { metadata+: { resourceVersion: resourceVersion } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { template+: { metadata+: { selfLink: selfLink } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { template+: { metadata+: { uid: uid } } } - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } - } - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } } - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } } - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { template+: { spec+: { dnsPolicy: dnsPolicy } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { template+: { spec+: { enableServiceLinks: enableServiceLinks } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { template+: { spec+: { hostIPC: hostIPC } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { template+: { spec+: { hostNetwork: hostNetwork } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { template+: { spec+: { hostPID: hostPID } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { template+: { spec+: { hostname: hostname } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { template+: { spec+: { nodeName: nodeName } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { template+: { spec+: { nodeSelector: nodeSelector } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { template+: { spec+: { nodeSelector+: nodeSelector } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { template+: { spec+: { priority: priority } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { template+: { spec+: { priorityClassName: priorityClassName } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { template+: { spec+: { restartPolicy: restartPolicy } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is an alpha feature and may change in the future.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { template+: { spec+: { runtimeClassName: runtimeClassName } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { template+: { spec+: { schedulerName: schedulerName } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { template+: { spec+: { serviceAccount: serviceAccount } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { template+: { spec+: { serviceAccountName: serviceAccountName } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false. This field is beta-level and may be disabled with the PodShareProcessNamespace feature.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { template+: { spec+: { subdomain: subdomain } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } } - } - }, - '#withMinReadySeconds':: d.fn(help='Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)', args=[d.arg(name='minReadySeconds', type=d.T.integer)]), - withMinReadySeconds(minReadySeconds): { minReadySeconds: minReadySeconds }, - '#withPaused':: d.fn(help='Indicates that the deployment is paused.', args=[d.arg(name='paused', type=d.T.boolean)]), - withPaused(paused): { paused: paused }, - '#withProgressDeadlineSeconds':: d.fn(help='The maximum time in seconds for a deployment to make progress before it is considered to be failed. The deployment controller will continue to process failed deployments and a condition with a ProgressDeadlineExceeded reason will be surfaced in the deployment status. Note that progress will not be estimated during the time a deployment is paused. Defaults to 600s.', args=[d.arg(name='progressDeadlineSeconds', type=d.T.integer)]), - withProgressDeadlineSeconds(progressDeadlineSeconds): { progressDeadlineSeconds: progressDeadlineSeconds }, - '#withReplicas':: d.fn(help='Number of desired pods. This is a pointer to distinguish between explicit zero and not specified. Defaults to 1.', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { replicas: replicas }, - '#withRevisionHistoryLimit':: d.fn(help='The number of old ReplicaSets to retain to allow rollback. This is a pointer to distinguish between explicit zero and not specified. Defaults to 2.', args=[d.arg(name='revisionHistoryLimit', type=d.T.integer)]), - withRevisionHistoryLimit(revisionHistoryLimit): { revisionHistoryLimit: revisionHistoryLimit }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/deploymentStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/deploymentStatus.libsonnet deleted file mode 100644 index 6d01c63020f4..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/deploymentStatus.libsonnet +++ /dev/null @@ -1,24 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='deploymentStatus', url='', help='DeploymentStatus is the most recently observed status of the Deployment.'), - '#withAvailableReplicas':: d.fn(help='Total number of available pods (ready for at least minReadySeconds) targeted by this deployment.', args=[d.arg(name='availableReplicas', type=d.T.integer)]), - withAvailableReplicas(availableReplicas): { availableReplicas: availableReplicas }, - '#withCollisionCount':: d.fn(help='Count of hash collisions for the Deployment. The Deployment controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ReplicaSet.', args=[d.arg(name='collisionCount', type=d.T.integer)]), - withCollisionCount(collisionCount): { collisionCount: collisionCount }, - '#withConditions':: d.fn(help="Represents the latest available observations of a deployment's current state.", args=[d.arg(name='conditions', type=d.T.array)]), - withConditions(conditions): { conditions: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withConditionsMixin':: d.fn(help="Represents the latest available observations of a deployment's current state.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='conditions', type=d.T.array)]), - withConditionsMixin(conditions): { conditions+: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withObservedGeneration':: d.fn(help='The generation observed by the deployment controller.', args=[d.arg(name='observedGeneration', type=d.T.integer)]), - withObservedGeneration(observedGeneration): { observedGeneration: observedGeneration }, - '#withReadyReplicas':: d.fn(help='Total number of ready pods targeted by this deployment.', args=[d.arg(name='readyReplicas', type=d.T.integer)]), - withReadyReplicas(readyReplicas): { readyReplicas: readyReplicas }, - '#withReplicas':: d.fn(help='Total number of non-terminated pods targeted by this deployment (their labels match the selector).', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { replicas: replicas }, - '#withUnavailableReplicas':: d.fn(help='Total number of unavailable pods targeted by this deployment. This is the total number of pods that are still required for the deployment to have 100% available capacity. They may either be pods that are running but not yet available or pods that still have not been created.', args=[d.arg(name='unavailableReplicas', type=d.T.integer)]), - withUnavailableReplicas(unavailableReplicas): { unavailableReplicas: unavailableReplicas }, - '#withUpdatedReplicas':: d.fn(help='Total number of non-terminated pods targeted by this deployment that have the desired template spec.', args=[d.arg(name='updatedReplicas', type=d.T.integer)]), - withUpdatedReplicas(updatedReplicas): { updatedReplicas: updatedReplicas }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/deploymentStrategy.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/deploymentStrategy.libsonnet deleted file mode 100644 index 36f6460da406..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/deploymentStrategy.libsonnet +++ /dev/null @@ -1,15 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='deploymentStrategy', url='', help='DeploymentStrategy describes how to replace existing pods with new ones.'), - '#rollingUpdate':: d.obj(help='Spec to control the desired behavior of rolling update.'), - rollingUpdate: { - '#withMaxSurge':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxSurge', type=d.T.string)]), - withMaxSurge(maxSurge): { rollingUpdate+: { maxSurge: maxSurge } }, - '#withMaxUnavailable':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxUnavailable', type=d.T.string)]), - withMaxUnavailable(maxUnavailable): { rollingUpdate+: { maxUnavailable: maxUnavailable } } - }, - '#withType':: d.fn(help='Type of deployment. Can be "Recreate" or "RollingUpdate". Default is RollingUpdate.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/main.libsonnet deleted file mode 100644 index 1c5dfec54f02..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/main.libsonnet +++ /dev/null @@ -1,22 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1beta1', url='', help=''), - controllerRevision: (import 'controllerRevision.libsonnet'), - deployment: (import 'deployment.libsonnet'), - deploymentCondition: (import 'deploymentCondition.libsonnet'), - deploymentRollback: (import 'deploymentRollback.libsonnet'), - deploymentSpec: (import 'deploymentSpec.libsonnet'), - deploymentStatus: (import 'deploymentStatus.libsonnet'), - deploymentStrategy: (import 'deploymentStrategy.libsonnet'), - rollbackConfig: (import 'rollbackConfig.libsonnet'), - rollingUpdateDeployment: (import 'rollingUpdateDeployment.libsonnet'), - rollingUpdateStatefulSetStrategy: (import 'rollingUpdateStatefulSetStrategy.libsonnet'), - scale: (import 'scale.libsonnet'), - scaleSpec: (import 'scaleSpec.libsonnet'), - scaleStatus: (import 'scaleStatus.libsonnet'), - statefulSet: (import 'statefulSet.libsonnet'), - statefulSetCondition: (import 'statefulSetCondition.libsonnet'), - statefulSetSpec: (import 'statefulSetSpec.libsonnet'), - statefulSetStatus: (import 'statefulSetStatus.libsonnet'), - statefulSetUpdateStrategy: (import 'statefulSetUpdateStrategy.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/rollbackConfig.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/rollbackConfig.libsonnet deleted file mode 100644 index c4e6018de696..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/rollbackConfig.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='rollbackConfig', url='', help='DEPRECATED.'), - '#withRevision':: d.fn(help='The revision to rollback to. If set to 0, rollback to the last revision.', args=[d.arg(name='revision', type=d.T.integer)]), - withRevision(revision): { revision: revision }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/rollingUpdateDeployment.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/rollingUpdateDeployment.libsonnet deleted file mode 100644 index cd8cadb0f964..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/rollingUpdateDeployment.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='rollingUpdateDeployment', url='', help='Spec to control the desired behavior of rolling update.'), - '#withMaxSurge':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxSurge', type=d.T.string)]), - withMaxSurge(maxSurge): { maxSurge: maxSurge }, - '#withMaxUnavailable':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxUnavailable', type=d.T.string)]), - withMaxUnavailable(maxUnavailable): { maxUnavailable: maxUnavailable }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/rollingUpdateStatefulSetStrategy.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/rollingUpdateStatefulSetStrategy.libsonnet deleted file mode 100644 index 1f3214d2416f..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/rollingUpdateStatefulSetStrategy.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='rollingUpdateStatefulSetStrategy', url='', help='RollingUpdateStatefulSetStrategy is used to communicate parameter for RollingUpdateStatefulSetStrategyType.'), - '#withPartition':: d.fn(help='Partition indicates the ordinal at which the StatefulSet should be partitioned.', args=[d.arg(name='partition', type=d.T.integer)]), - withPartition(partition): { partition: partition }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/scale.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/scale.libsonnet deleted file mode 100644 index 9ef69e23d806..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/scale.libsonnet +++ /dev/null @@ -1,98 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='scale', url='', help='Scale represents a scaling request for a resource.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Scale', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'apps/v1beta1', - kind: 'Scale' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='ScaleSpec describes the attributes of a scale subresource'), - spec: { - '#withReplicas':: d.fn(help='desired number of instances for the scaled object.', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { spec+: { replicas: replicas } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/scaleSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/scaleSpec.libsonnet deleted file mode 100644 index 6c3d939c208e..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/scaleSpec.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='scaleSpec', url='', help='ScaleSpec describes the attributes of a scale subresource'), - '#withReplicas':: d.fn(help='desired number of instances for the scaled object.', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { replicas: replicas }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/scaleStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/scaleStatus.libsonnet deleted file mode 100644 index 15d560a582b5..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/scaleStatus.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='scaleStatus', url='', help='ScaleStatus represents the current status of a scale subresource.'), - '#withReplicas':: d.fn(help='actual number of observed instances of the scaled object.', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { replicas: replicas }, - '#withSelector':: d.fn(help='label query over pods that should match the replicas count. More info: http://kubernetes.io/docs/user-guide/labels#label-selectors', args=[d.arg(name='selector', type=d.T.object)]), - withSelector(selector): { selector: selector }, - '#withSelectorMixin':: d.fn(help='label query over pods that should match the replicas count. More info: http://kubernetes.io/docs/user-guide/labels#label-selectors\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='selector', type=d.T.object)]), - withSelectorMixin(selector): { selector+: selector }, - '#withTargetSelector':: d.fn(help='label selector for pods that should match the replicas count. This is a serializated version of both map-based and more expressive set-based selectors. This is done to avoid introspection in the clients. The string will be in the same format as the query-param syntax. If the target type only supports map-based selectors, both this field and map-based selector field are populated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors', args=[d.arg(name='targetSelector', type=d.T.string)]), - withTargetSelector(targetSelector): { targetSelector: targetSelector }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/statefulSet.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/statefulSet.libsonnet deleted file mode 100644 index cd63f0382ade..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/statefulSet.libsonnet +++ /dev/null @@ -1,371 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='statefulSet', url='', help='DEPRECATED - This group version of StatefulSet is deprecated by apps/v1beta2/StatefulSet. See the release notes for more information. StatefulSet represents a set of pods with consistent identities. Identities are defined as:\n - Network: A single stable DNS and hostname.\n - Storage: As many VolumeClaims as requested.\nThe StatefulSet guarantees that a given network identity will always map to the same storage identity.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Statefulset', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'apps/v1beta1', - kind: 'StatefulSet' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='A StatefulSetSpec is the specification of a StatefulSet.'), - spec: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { spec+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { spec+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { spec+: { selector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { spec+: { selector+: { matchLabels+: matchLabels } } } - }, - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { group: group } } } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { name: name } } } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { spec+: { template+: { metadata+: { initializers+: { result+: { code: code } } } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { template+: { metadata+: { initializers+: { result+: { kind: kind } } } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { spec+: { template+: { metadata+: { initializers+: { result+: { message: message } } } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { spec+: { template+: { metadata+: { initializers+: { result+: { metadata: metadata } } } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { spec+: { template+: { metadata+: { initializers+: { result+: { reason: reason } } } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { spec+: { template+: { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { spec+: { template+: { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { spec+: { template+: { metadata+: { annotations: annotations } } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { spec+: { template+: { metadata+: { annotations+: annotations } } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { spec+: { template+: { metadata+: { clusterName: clusterName } } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { spec+: { template+: { metadata+: { creationTimestamp: creationTimestamp } } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { spec+: { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { spec+: { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { spec+: { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { spec+: { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { spec+: { template+: { metadata+: { generateName: generateName } } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { spec+: { template+: { metadata+: { generation: generation } } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { spec+: { template+: { metadata+: { labels: labels } } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { spec+: { template+: { metadata+: { labels+: labels } } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { spec+: { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { spec+: { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { template+: { metadata+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { template+: { metadata+: { namespace: namespace } } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { spec+: { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { spec+: { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { spec+: { template+: { metadata+: { resourceVersion: resourceVersion } } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { spec+: { template+: { metadata+: { selfLink: selfLink } } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { template+: { metadata+: { uid: uid } } } } - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } } - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } - } - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { spec+: { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { spec+: { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { spec+: { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { spec+: { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { spec+: { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { spec+: { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } } } - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } } } - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { spec+: { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { spec+: { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { spec+: { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { spec+: { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { spec+: { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { spec+: { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { spec+: { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { spec+: { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } } - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { spec+: { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { spec+: { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { spec+: { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { spec+: { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { spec+: { template+: { spec+: { dnsPolicy: dnsPolicy } } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { spec+: { template+: { spec+: { enableServiceLinks: enableServiceLinks } } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { spec+: { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { spec+: { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { spec+: { template+: { spec+: { hostIPC: hostIPC } } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { spec+: { template+: { spec+: { hostNetwork: hostNetwork } } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { spec+: { template+: { spec+: { hostPID: hostPID } } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { spec+: { template+: { spec+: { hostname: hostname } } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { spec+: { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { spec+: { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { spec+: { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { spec+: { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { spec+: { template+: { spec+: { nodeName: nodeName } } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { spec+: { template+: { spec+: { nodeSelector: nodeSelector } } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { spec+: { template+: { spec+: { nodeSelector+: nodeSelector } } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { spec+: { template+: { spec+: { priority: priority } } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { spec+: { template+: { spec+: { priorityClassName: priorityClassName } } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { spec+: { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { spec+: { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { spec+: { template+: { spec+: { restartPolicy: restartPolicy } } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is an alpha feature and may change in the future.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { spec+: { template+: { spec+: { runtimeClassName: runtimeClassName } } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { spec+: { template+: { spec+: { schedulerName: schedulerName } } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { spec+: { template+: { spec+: { serviceAccount: serviceAccount } } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { spec+: { template+: { spec+: { serviceAccountName: serviceAccountName } } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false. This field is beta-level and may be disabled with the PodShareProcessNamespace feature.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { spec+: { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { spec+: { template+: { spec+: { subdomain: subdomain } } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { spec+: { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { spec+: { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { spec+: { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { spec+: { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { spec+: { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } } } - } - }, - '#updateStrategy':: d.obj(help='StatefulSetUpdateStrategy indicates the strategy that the StatefulSet controller will use to perform updates. It includes any additional parameters necessary to perform the update for the indicated strategy.'), - updateStrategy: { - '#rollingUpdate':: d.obj(help='RollingUpdateStatefulSetStrategy is used to communicate parameter for RollingUpdateStatefulSetStrategyType.'), - rollingUpdate: { - '#withPartition':: d.fn(help='Partition indicates the ordinal at which the StatefulSet should be partitioned.', args=[d.arg(name='partition', type=d.T.integer)]), - withPartition(partition): { spec+: { updateStrategy+: { rollingUpdate+: { partition: partition } } } } - }, - '#withType':: d.fn(help='Type indicates the type of the StatefulSetUpdateStrategy.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { updateStrategy+: { type: type } } } - }, - '#withPodManagementPolicy':: d.fn(help='podManagementPolicy controls how pods are created during initial scale up, when replacing pods on nodes, or when scaling down. The default policy is `OrderedReady`, where pods are created in increasing order (pod-0, then pod-1, etc) and the controller will wait until each pod is ready before continuing. When scaling down, the pods are removed in the opposite order. The alternative policy is `Parallel` which will create pods in parallel to match the desired scale without waiting, and on scale down will delete all pods at once.', args=[d.arg(name='podManagementPolicy', type=d.T.string)]), - withPodManagementPolicy(podManagementPolicy): { spec+: { podManagementPolicy: podManagementPolicy } }, - '#withReplicas':: d.fn(help='replicas is the desired number of replicas of the given Template. These are replicas in the sense that they are instantiations of the same Template, but individual replicas also have a consistent identity. If unspecified, defaults to 1.', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { spec+: { replicas: replicas } }, - '#withRevisionHistoryLimit':: d.fn(help="revisionHistoryLimit is the maximum number of revisions that will be maintained in the StatefulSet's revision history. The revision history consists of all revisions not represented by a currently applied StatefulSetSpec version. The default value is 10.", args=[d.arg(name='revisionHistoryLimit', type=d.T.integer)]), - withRevisionHistoryLimit(revisionHistoryLimit): { spec+: { revisionHistoryLimit: revisionHistoryLimit } }, - '#withServiceName':: d.fn(help='serviceName is the name of the service that governs this StatefulSet. This service must exist before the StatefulSet, and is responsible for the network identity of the set. Pods get DNS/hostnames that follow the pattern: pod-specific-string.serviceName.default.svc.cluster.local where "pod-specific-string" is managed by the StatefulSet controller.', args=[d.arg(name='serviceName', type=d.T.string)]), - withServiceName(serviceName): { spec+: { serviceName: serviceName } }, - '#withVolumeClaimTemplates':: d.fn(help='volumeClaimTemplates is a list of claims that pods are allowed to reference. The StatefulSet controller is responsible for mapping network identities to claims in a way that maintains the identity of a pod. Every claim in this list must have at least one matching (by name) volumeMount in one container in the template. A claim in this list takes precedence over any volumes in the template, with the same name.', args=[d.arg(name='volumeClaimTemplates', type=d.T.array)]), - withVolumeClaimTemplates(volumeClaimTemplates): { spec+: { volumeClaimTemplates: if std.isArray(v=volumeClaimTemplates) then volumeClaimTemplates else [volumeClaimTemplates] } }, - '#withVolumeClaimTemplatesMixin':: d.fn(help='volumeClaimTemplates is a list of claims that pods are allowed to reference. The StatefulSet controller is responsible for mapping network identities to claims in a way that maintains the identity of a pod. Every claim in this list must have at least one matching (by name) volumeMount in one container in the template. A claim in this list takes precedence over any volumes in the template, with the same name.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumeClaimTemplates', type=d.T.array)]), - withVolumeClaimTemplatesMixin(volumeClaimTemplates): { spec+: { volumeClaimTemplates+: if std.isArray(v=volumeClaimTemplates) then volumeClaimTemplates else [volumeClaimTemplates] } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/statefulSetCondition.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/statefulSetCondition.libsonnet deleted file mode 100644 index 9b2c006cfd07..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/statefulSetCondition.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='statefulSetCondition', url='', help='StatefulSetCondition describes the state of a statefulset at a certain point.'), - '#withLastTransitionTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastTransitionTime', type=d.T.string)]), - withLastTransitionTime(lastTransitionTime): { lastTransitionTime: lastTransitionTime }, - '#withMessage':: d.fn(help='A human readable message indicating details about the transition.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withReason':: d.fn(help="The reason for the condition's last transition.", args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#withType':: d.fn(help='Type of statefulset condition.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/statefulSetSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/statefulSetSpec.libsonnet deleted file mode 100644 index ee76f78d75fe..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/statefulSetSpec.libsonnet +++ /dev/null @@ -1,281 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='statefulSetSpec', url='', help='A StatefulSetSpec is the specification of a StatefulSet.'), - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { selector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { selector+: { matchLabels+: matchLabels } } - }, - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { template+: { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { template+: { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { template+: { metadata+: { initializers+: { result+: { details+: { group: group } } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { template+: { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { template+: { metadata+: { initializers+: { result+: { details+: { name: name } } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { template+: { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { template+: { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { template+: { metadata+: { initializers+: { result+: { code: code } } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { template+: { metadata+: { initializers+: { result+: { kind: kind } } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { template+: { metadata+: { initializers+: { result+: { message: message } } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { template+: { metadata+: { initializers+: { result+: { metadata: metadata } } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { template+: { metadata+: { initializers+: { result+: { reason: reason } } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { template+: { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { template+: { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { template+: { metadata+: { annotations: annotations } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { template+: { metadata+: { annotations+: annotations } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { template+: { metadata+: { clusterName: clusterName } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { template+: { metadata+: { creationTimestamp: creationTimestamp } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { template+: { metadata+: { generateName: generateName } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { template+: { metadata+: { generation: generation } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { template+: { metadata+: { labels: labels } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { template+: { metadata+: { labels+: labels } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { template+: { metadata+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { template+: { metadata+: { namespace: namespace } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { template+: { metadata+: { resourceVersion: resourceVersion } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { template+: { metadata+: { selfLink: selfLink } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { template+: { metadata+: { uid: uid } } } - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } - } - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } } - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } } - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { template+: { spec+: { dnsPolicy: dnsPolicy } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { template+: { spec+: { enableServiceLinks: enableServiceLinks } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { template+: { spec+: { hostIPC: hostIPC } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { template+: { spec+: { hostNetwork: hostNetwork } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { template+: { spec+: { hostPID: hostPID } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { template+: { spec+: { hostname: hostname } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { template+: { spec+: { nodeName: nodeName } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { template+: { spec+: { nodeSelector: nodeSelector } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { template+: { spec+: { nodeSelector+: nodeSelector } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { template+: { spec+: { priority: priority } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { template+: { spec+: { priorityClassName: priorityClassName } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { template+: { spec+: { restartPolicy: restartPolicy } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is an alpha feature and may change in the future.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { template+: { spec+: { runtimeClassName: runtimeClassName } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { template+: { spec+: { schedulerName: schedulerName } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { template+: { spec+: { serviceAccount: serviceAccount } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { template+: { spec+: { serviceAccountName: serviceAccountName } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false. This field is beta-level and may be disabled with the PodShareProcessNamespace feature.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { template+: { spec+: { subdomain: subdomain } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } } - } - }, - '#updateStrategy':: d.obj(help='StatefulSetUpdateStrategy indicates the strategy that the StatefulSet controller will use to perform updates. It includes any additional parameters necessary to perform the update for the indicated strategy.'), - updateStrategy: { - '#rollingUpdate':: d.obj(help='RollingUpdateStatefulSetStrategy is used to communicate parameter for RollingUpdateStatefulSetStrategyType.'), - rollingUpdate: { - '#withPartition':: d.fn(help='Partition indicates the ordinal at which the StatefulSet should be partitioned.', args=[d.arg(name='partition', type=d.T.integer)]), - withPartition(partition): { updateStrategy+: { rollingUpdate+: { partition: partition } } } - }, - '#withType':: d.fn(help='Type indicates the type of the StatefulSetUpdateStrategy.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { updateStrategy+: { type: type } } - }, - '#withPodManagementPolicy':: d.fn(help='podManagementPolicy controls how pods are created during initial scale up, when replacing pods on nodes, or when scaling down. The default policy is `OrderedReady`, where pods are created in increasing order (pod-0, then pod-1, etc) and the controller will wait until each pod is ready before continuing. When scaling down, the pods are removed in the opposite order. The alternative policy is `Parallel` which will create pods in parallel to match the desired scale without waiting, and on scale down will delete all pods at once.', args=[d.arg(name='podManagementPolicy', type=d.T.string)]), - withPodManagementPolicy(podManagementPolicy): { podManagementPolicy: podManagementPolicy }, - '#withReplicas':: d.fn(help='replicas is the desired number of replicas of the given Template. These are replicas in the sense that they are instantiations of the same Template, but individual replicas also have a consistent identity. If unspecified, defaults to 1.', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { replicas: replicas }, - '#withRevisionHistoryLimit':: d.fn(help="revisionHistoryLimit is the maximum number of revisions that will be maintained in the StatefulSet's revision history. The revision history consists of all revisions not represented by a currently applied StatefulSetSpec version. The default value is 10.", args=[d.arg(name='revisionHistoryLimit', type=d.T.integer)]), - withRevisionHistoryLimit(revisionHistoryLimit): { revisionHistoryLimit: revisionHistoryLimit }, - '#withServiceName':: d.fn(help='serviceName is the name of the service that governs this StatefulSet. This service must exist before the StatefulSet, and is responsible for the network identity of the set. Pods get DNS/hostnames that follow the pattern: pod-specific-string.serviceName.default.svc.cluster.local where "pod-specific-string" is managed by the StatefulSet controller.', args=[d.arg(name='serviceName', type=d.T.string)]), - withServiceName(serviceName): { serviceName: serviceName }, - '#withVolumeClaimTemplates':: d.fn(help='volumeClaimTemplates is a list of claims that pods are allowed to reference. The StatefulSet controller is responsible for mapping network identities to claims in a way that maintains the identity of a pod. Every claim in this list must have at least one matching (by name) volumeMount in one container in the template. A claim in this list takes precedence over any volumes in the template, with the same name.', args=[d.arg(name='volumeClaimTemplates', type=d.T.array)]), - withVolumeClaimTemplates(volumeClaimTemplates): { volumeClaimTemplates: if std.isArray(v=volumeClaimTemplates) then volumeClaimTemplates else [volumeClaimTemplates] }, - '#withVolumeClaimTemplatesMixin':: d.fn(help='volumeClaimTemplates is a list of claims that pods are allowed to reference. The StatefulSet controller is responsible for mapping network identities to claims in a way that maintains the identity of a pod. Every claim in this list must have at least one matching (by name) volumeMount in one container in the template. A claim in this list takes precedence over any volumes in the template, with the same name.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumeClaimTemplates', type=d.T.array)]), - withVolumeClaimTemplatesMixin(volumeClaimTemplates): { volumeClaimTemplates+: if std.isArray(v=volumeClaimTemplates) then volumeClaimTemplates else [volumeClaimTemplates] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/statefulSetStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/statefulSetStatus.libsonnet deleted file mode 100644 index 59ac7f222991..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/statefulSetStatus.libsonnet +++ /dev/null @@ -1,26 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='statefulSetStatus', url='', help='StatefulSetStatus represents the current state of a StatefulSet.'), - '#withCollisionCount':: d.fn(help='collisionCount is the count of hash collisions for the StatefulSet. The StatefulSet controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ControllerRevision.', args=[d.arg(name='collisionCount', type=d.T.integer)]), - withCollisionCount(collisionCount): { collisionCount: collisionCount }, - '#withConditions':: d.fn(help="Represents the latest available observations of a statefulset's current state.", args=[d.arg(name='conditions', type=d.T.array)]), - withConditions(conditions): { conditions: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withConditionsMixin':: d.fn(help="Represents the latest available observations of a statefulset's current state.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='conditions', type=d.T.array)]), - withConditionsMixin(conditions): { conditions+: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withCurrentReplicas':: d.fn(help='currentReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version indicated by currentRevision.', args=[d.arg(name='currentReplicas', type=d.T.integer)]), - withCurrentReplicas(currentReplicas): { currentReplicas: currentReplicas }, - '#withCurrentRevision':: d.fn(help='currentRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [0,currentReplicas).', args=[d.arg(name='currentRevision', type=d.T.string)]), - withCurrentRevision(currentRevision): { currentRevision: currentRevision }, - '#withObservedGeneration':: d.fn(help="observedGeneration is the most recent generation observed for this StatefulSet. It corresponds to the StatefulSet's generation, which is updated on mutation by the API Server.", args=[d.arg(name='observedGeneration', type=d.T.integer)]), - withObservedGeneration(observedGeneration): { observedGeneration: observedGeneration }, - '#withReadyReplicas':: d.fn(help='readyReplicas is the number of Pods created by the StatefulSet controller that have a Ready Condition.', args=[d.arg(name='readyReplicas', type=d.T.integer)]), - withReadyReplicas(readyReplicas): { readyReplicas: readyReplicas }, - '#withReplicas':: d.fn(help='replicas is the number of Pods created by the StatefulSet controller.', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { replicas: replicas }, - '#withUpdateRevision':: d.fn(help='updateRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [replicas-updatedReplicas,replicas)', args=[d.arg(name='updateRevision', type=d.T.string)]), - withUpdateRevision(updateRevision): { updateRevision: updateRevision }, - '#withUpdatedReplicas':: d.fn(help='updatedReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version indicated by updateRevision.', args=[d.arg(name='updatedReplicas', type=d.T.integer)]), - withUpdatedReplicas(updatedReplicas): { updatedReplicas: updatedReplicas }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/statefulSetUpdateStrategy.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/statefulSetUpdateStrategy.libsonnet deleted file mode 100644 index 8fa747c3b104..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta1/statefulSetUpdateStrategy.libsonnet +++ /dev/null @@ -1,13 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='statefulSetUpdateStrategy', url='', help='StatefulSetUpdateStrategy indicates the strategy that the StatefulSet controller will use to perform updates. It includes any additional parameters necessary to perform the update for the indicated strategy.'), - '#rollingUpdate':: d.obj(help='RollingUpdateStatefulSetStrategy is used to communicate parameter for RollingUpdateStatefulSetStrategyType.'), - rollingUpdate: { - '#withPartition':: d.fn(help='Partition indicates the ordinal at which the StatefulSet should be partitioned.', args=[d.arg(name='partition', type=d.T.integer)]), - withPartition(partition): { rollingUpdate+: { partition: partition } } - }, - '#withType':: d.fn(help='Type indicates the type of the StatefulSetUpdateStrategy.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/controllerRevision.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/controllerRevision.libsonnet deleted file mode 100644 index 24b054d6a7a8..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/controllerRevision.libsonnet +++ /dev/null @@ -1,100 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='controllerRevision', url='', help='DEPRECATED - This group version of ControllerRevision is deprecated by apps/v1/ControllerRevision. See the release notes for more information. ControllerRevision implements an immutable snapshot of state data. Clients are responsible for serializing and deserializing the objects that contain their internal state. Once a ControllerRevision has been successfully created, it can not be updated. The API Server will fail validation of all requests that attempt to mutate the Data field. ControllerRevisions may, however, be deleted. Note that, due to its use by both the DaemonSet and StatefulSet controllers for update and rollback, this object is beta. However, it may be subject to name and representation changes in future releases, and clients should not depend on its stability. It is primarily for internal use by controllers.'), - '#data':: d.obj(help="RawExtension is used to hold extensions in external versions.\n\nTo use this, make a field which has RawExtension as its type in your external, versioned struct, and Object in your internal struct. You also need to register your various plugin types.\n\n// Internal package: type MyAPIObject struct {\n runtime.TypeMeta `json:',inline'`\n MyPlugin runtime.Object `json:'myPlugin'`\n} type PluginA struct {\n AOption string `json:'aOption'`\n}\n\n// External package: type MyAPIObject struct {\n runtime.TypeMeta `json:',inline'`\n MyPlugin runtime.RawExtension `json:'myPlugin'`\n} type PluginA struct {\n AOption string `json:'aOption'`\n}\n\n// On the wire, the JSON will look something like this: {\n 'kind':'MyAPIObject',\n 'apiVersion':'v1',\n 'myPlugin': {\n 'kind':'PluginA',\n 'aOption':'foo',\n },\n}\n\nSo what happens? Decode first uses json or yaml to unmarshal the serialized data into your external MyAPIObject. That causes the raw JSON to be stored, but not unpacked. The next step is to copy (using pkg/conversion) into the internal struct. The runtime package's DefaultScheme has conversion functions installed which will unpack the JSON stored in RawExtension, turning it into the correct object type, and storing it in the Object. (TODO: In the case where the object is of an unknown type, a runtime.Unknown object will be created and stored.)"), - data: { - '#withRaw':: d.fn(help='Raw is the underlying serialization of this object.', args=[d.arg(name='raw', type=d.T.string)]), - withRaw(raw): { data+: { raw: raw } } - }, - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Controllerrevision', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'apps/v1beta2', - kind: 'ControllerRevision' - } + self.metadata.withName(name=name), - '#withRevision':: d.fn(help='Revision indicates the revision of the state represented by Data.', args=[d.arg(name='revision', type=d.T.integer)]), - withRevision(revision): { revision: revision }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/daemonSet.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/daemonSet.libsonnet deleted file mode 100644 index 34d43d7eb8be..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/daemonSet.libsonnet +++ /dev/null @@ -1,363 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='daemonSet', url='', help='DEPRECATED - This group version of DaemonSet is deprecated by apps/v1/DaemonSet. See the release notes for more information. DaemonSet represents the configuration of a daemon set.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Daemonset', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'apps/v1beta2', - kind: 'DaemonSet' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='DaemonSetSpec is the specification of a daemon set.'), - spec: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { spec+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { spec+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { spec+: { selector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { spec+: { selector+: { matchLabels+: matchLabels } } } - }, - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { group: group } } } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { name: name } } } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { spec+: { template+: { metadata+: { initializers+: { result+: { code: code } } } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { template+: { metadata+: { initializers+: { result+: { kind: kind } } } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { spec+: { template+: { metadata+: { initializers+: { result+: { message: message } } } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { spec+: { template+: { metadata+: { initializers+: { result+: { metadata: metadata } } } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { spec+: { template+: { metadata+: { initializers+: { result+: { reason: reason } } } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { spec+: { template+: { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { spec+: { template+: { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { spec+: { template+: { metadata+: { annotations: annotations } } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { spec+: { template+: { metadata+: { annotations+: annotations } } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { spec+: { template+: { metadata+: { clusterName: clusterName } } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { spec+: { template+: { metadata+: { creationTimestamp: creationTimestamp } } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { spec+: { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { spec+: { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { spec+: { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { spec+: { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { spec+: { template+: { metadata+: { generateName: generateName } } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { spec+: { template+: { metadata+: { generation: generation } } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { spec+: { template+: { metadata+: { labels: labels } } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { spec+: { template+: { metadata+: { labels+: labels } } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { spec+: { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { spec+: { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { template+: { metadata+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { template+: { metadata+: { namespace: namespace } } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { spec+: { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { spec+: { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { spec+: { template+: { metadata+: { resourceVersion: resourceVersion } } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { spec+: { template+: { metadata+: { selfLink: selfLink } } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { template+: { metadata+: { uid: uid } } } } - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } } - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } - } - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { spec+: { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { spec+: { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { spec+: { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { spec+: { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { spec+: { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { spec+: { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } } } - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } } } - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { spec+: { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { spec+: { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { spec+: { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { spec+: { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { spec+: { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { spec+: { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { spec+: { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { spec+: { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } } - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { spec+: { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { spec+: { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { spec+: { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { spec+: { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { spec+: { template+: { spec+: { dnsPolicy: dnsPolicy } } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { spec+: { template+: { spec+: { enableServiceLinks: enableServiceLinks } } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { spec+: { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { spec+: { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { spec+: { template+: { spec+: { hostIPC: hostIPC } } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { spec+: { template+: { spec+: { hostNetwork: hostNetwork } } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { spec+: { template+: { spec+: { hostPID: hostPID } } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { spec+: { template+: { spec+: { hostname: hostname } } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { spec+: { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { spec+: { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { spec+: { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { spec+: { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { spec+: { template+: { spec+: { nodeName: nodeName } } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { spec+: { template+: { spec+: { nodeSelector: nodeSelector } } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { spec+: { template+: { spec+: { nodeSelector+: nodeSelector } } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { spec+: { template+: { spec+: { priority: priority } } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { spec+: { template+: { spec+: { priorityClassName: priorityClassName } } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { spec+: { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { spec+: { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { spec+: { template+: { spec+: { restartPolicy: restartPolicy } } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is an alpha feature and may change in the future.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { spec+: { template+: { spec+: { runtimeClassName: runtimeClassName } } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { spec+: { template+: { spec+: { schedulerName: schedulerName } } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { spec+: { template+: { spec+: { serviceAccount: serviceAccount } } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { spec+: { template+: { spec+: { serviceAccountName: serviceAccountName } } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false. This field is beta-level and may be disabled with the PodShareProcessNamespace feature.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { spec+: { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { spec+: { template+: { spec+: { subdomain: subdomain } } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { spec+: { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { spec+: { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { spec+: { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { spec+: { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { spec+: { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } } } - } - }, - '#updateStrategy':: d.obj(help='DaemonSetUpdateStrategy is a struct used to control the update strategy for a DaemonSet.'), - updateStrategy: { - '#rollingUpdate':: d.obj(help='Spec to control the desired behavior of daemon set rolling update.'), - rollingUpdate: { - '#withMaxUnavailable':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxUnavailable', type=d.T.string)]), - withMaxUnavailable(maxUnavailable): { spec+: { updateStrategy+: { rollingUpdate+: { maxUnavailable: maxUnavailable } } } } - }, - '#withType':: d.fn(help='Type of daemon set update. Can be "RollingUpdate" or "OnDelete". Default is RollingUpdate.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { updateStrategy+: { type: type } } } - }, - '#withMinReadySeconds':: d.fn(help='The minimum number of seconds for which a newly created DaemonSet pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready).', args=[d.arg(name='minReadySeconds', type=d.T.integer)]), - withMinReadySeconds(minReadySeconds): { spec+: { minReadySeconds: minReadySeconds } }, - '#withRevisionHistoryLimit':: d.fn(help='The number of old history to retain to allow rollback. This is a pointer to distinguish between explicit zero and not specified. Defaults to 10.', args=[d.arg(name='revisionHistoryLimit', type=d.T.integer)]), - withRevisionHistoryLimit(revisionHistoryLimit): { spec+: { revisionHistoryLimit: revisionHistoryLimit } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/daemonSetCondition.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/daemonSetCondition.libsonnet deleted file mode 100644 index b00356552154..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/daemonSetCondition.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='daemonSetCondition', url='', help='DaemonSetCondition describes the state of a DaemonSet at a certain point.'), - '#withLastTransitionTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastTransitionTime', type=d.T.string)]), - withLastTransitionTime(lastTransitionTime): { lastTransitionTime: lastTransitionTime }, - '#withMessage':: d.fn(help='A human readable message indicating details about the transition.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withReason':: d.fn(help="The reason for the condition's last transition.", args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#withType':: d.fn(help='Type of DaemonSet condition.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/daemonSetSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/daemonSetSpec.libsonnet deleted file mode 100644 index aed3797e64bb..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/daemonSetSpec.libsonnet +++ /dev/null @@ -1,273 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='daemonSetSpec', url='', help='DaemonSetSpec is the specification of a daemon set.'), - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { selector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { selector+: { matchLabels+: matchLabels } } - }, - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { template+: { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { template+: { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { template+: { metadata+: { initializers+: { result+: { details+: { group: group } } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { template+: { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { template+: { metadata+: { initializers+: { result+: { details+: { name: name } } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { template+: { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { template+: { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { template+: { metadata+: { initializers+: { result+: { code: code } } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { template+: { metadata+: { initializers+: { result+: { kind: kind } } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { template+: { metadata+: { initializers+: { result+: { message: message } } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { template+: { metadata+: { initializers+: { result+: { metadata: metadata } } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { template+: { metadata+: { initializers+: { result+: { reason: reason } } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { template+: { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { template+: { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { template+: { metadata+: { annotations: annotations } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { template+: { metadata+: { annotations+: annotations } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { template+: { metadata+: { clusterName: clusterName } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { template+: { metadata+: { creationTimestamp: creationTimestamp } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { template+: { metadata+: { generateName: generateName } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { template+: { metadata+: { generation: generation } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { template+: { metadata+: { labels: labels } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { template+: { metadata+: { labels+: labels } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { template+: { metadata+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { template+: { metadata+: { namespace: namespace } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { template+: { metadata+: { resourceVersion: resourceVersion } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { template+: { metadata+: { selfLink: selfLink } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { template+: { metadata+: { uid: uid } } } - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } - } - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } } - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } } - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { template+: { spec+: { dnsPolicy: dnsPolicy } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { template+: { spec+: { enableServiceLinks: enableServiceLinks } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { template+: { spec+: { hostIPC: hostIPC } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { template+: { spec+: { hostNetwork: hostNetwork } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { template+: { spec+: { hostPID: hostPID } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { template+: { spec+: { hostname: hostname } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { template+: { spec+: { nodeName: nodeName } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { template+: { spec+: { nodeSelector: nodeSelector } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { template+: { spec+: { nodeSelector+: nodeSelector } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { template+: { spec+: { priority: priority } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { template+: { spec+: { priorityClassName: priorityClassName } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { template+: { spec+: { restartPolicy: restartPolicy } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is an alpha feature and may change in the future.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { template+: { spec+: { runtimeClassName: runtimeClassName } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { template+: { spec+: { schedulerName: schedulerName } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { template+: { spec+: { serviceAccount: serviceAccount } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { template+: { spec+: { serviceAccountName: serviceAccountName } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false. This field is beta-level and may be disabled with the PodShareProcessNamespace feature.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { template+: { spec+: { subdomain: subdomain } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } } - } - }, - '#updateStrategy':: d.obj(help='DaemonSetUpdateStrategy is a struct used to control the update strategy for a DaemonSet.'), - updateStrategy: { - '#rollingUpdate':: d.obj(help='Spec to control the desired behavior of daemon set rolling update.'), - rollingUpdate: { - '#withMaxUnavailable':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxUnavailable', type=d.T.string)]), - withMaxUnavailable(maxUnavailable): { updateStrategy+: { rollingUpdate+: { maxUnavailable: maxUnavailable } } } - }, - '#withType':: d.fn(help='Type of daemon set update. Can be "RollingUpdate" or "OnDelete". Default is RollingUpdate.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { updateStrategy+: { type: type } } - }, - '#withMinReadySeconds':: d.fn(help='The minimum number of seconds for which a newly created DaemonSet pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready).', args=[d.arg(name='minReadySeconds', type=d.T.integer)]), - withMinReadySeconds(minReadySeconds): { minReadySeconds: minReadySeconds }, - '#withRevisionHistoryLimit':: d.fn(help='The number of old history to retain to allow rollback. This is a pointer to distinguish between explicit zero and not specified. Defaults to 10.', args=[d.arg(name='revisionHistoryLimit', type=d.T.integer)]), - withRevisionHistoryLimit(revisionHistoryLimit): { revisionHistoryLimit: revisionHistoryLimit }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/daemonSetStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/daemonSetStatus.libsonnet deleted file mode 100644 index 75fee2193203..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/daemonSetStatus.libsonnet +++ /dev/null @@ -1,28 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='daemonSetStatus', url='', help='DaemonSetStatus represents the current status of a daemon set.'), - '#withCollisionCount':: d.fn(help='Count of hash collisions for the DaemonSet. The DaemonSet controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ControllerRevision.', args=[d.arg(name='collisionCount', type=d.T.integer)]), - withCollisionCount(collisionCount): { collisionCount: collisionCount }, - '#withConditions':: d.fn(help="Represents the latest available observations of a DaemonSet's current state.", args=[d.arg(name='conditions', type=d.T.array)]), - withConditions(conditions): { conditions: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withConditionsMixin':: d.fn(help="Represents the latest available observations of a DaemonSet's current state.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='conditions', type=d.T.array)]), - withConditionsMixin(conditions): { conditions+: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withCurrentNumberScheduled':: d.fn(help='The number of nodes that are running at least 1 daemon pod and are supposed to run the daemon pod. More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/', args=[d.arg(name='currentNumberScheduled', type=d.T.integer)]), - withCurrentNumberScheduled(currentNumberScheduled): { currentNumberScheduled: currentNumberScheduled }, - '#withDesiredNumberScheduled':: d.fn(help='The total number of nodes that should be running the daemon pod (including nodes correctly running the daemon pod). More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/', args=[d.arg(name='desiredNumberScheduled', type=d.T.integer)]), - withDesiredNumberScheduled(desiredNumberScheduled): { desiredNumberScheduled: desiredNumberScheduled }, - '#withNumberAvailable':: d.fn(help='The number of nodes that should be running the daemon pod and have one or more of the daemon pod running and available (ready for at least spec.minReadySeconds)', args=[d.arg(name='numberAvailable', type=d.T.integer)]), - withNumberAvailable(numberAvailable): { numberAvailable: numberAvailable }, - '#withNumberMisscheduled':: d.fn(help='The number of nodes that are running the daemon pod, but are not supposed to run the daemon pod. More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/', args=[d.arg(name='numberMisscheduled', type=d.T.integer)]), - withNumberMisscheduled(numberMisscheduled): { numberMisscheduled: numberMisscheduled }, - '#withNumberReady':: d.fn(help='The number of nodes that should be running the daemon pod and have one or more of the daemon pod running and ready.', args=[d.arg(name='numberReady', type=d.T.integer)]), - withNumberReady(numberReady): { numberReady: numberReady }, - '#withNumberUnavailable':: d.fn(help='The number of nodes that should be running the daemon pod and have none of the daemon pod running and available (ready for at least spec.minReadySeconds)', args=[d.arg(name='numberUnavailable', type=d.T.integer)]), - withNumberUnavailable(numberUnavailable): { numberUnavailable: numberUnavailable }, - '#withObservedGeneration':: d.fn(help='The most recent generation observed by the daemon set controller.', args=[d.arg(name='observedGeneration', type=d.T.integer)]), - withObservedGeneration(observedGeneration): { observedGeneration: observedGeneration }, - '#withUpdatedNumberScheduled':: d.fn(help='The total number of nodes that are running updated daemon pod', args=[d.arg(name='updatedNumberScheduled', type=d.T.integer)]), - withUpdatedNumberScheduled(updatedNumberScheduled): { updatedNumberScheduled: updatedNumberScheduled }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/daemonSetUpdateStrategy.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/daemonSetUpdateStrategy.libsonnet deleted file mode 100644 index a863ce564084..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/daemonSetUpdateStrategy.libsonnet +++ /dev/null @@ -1,13 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='daemonSetUpdateStrategy', url='', help='DaemonSetUpdateStrategy is a struct used to control the update strategy for a DaemonSet.'), - '#rollingUpdate':: d.obj(help='Spec to control the desired behavior of daemon set rolling update.'), - rollingUpdate: { - '#withMaxUnavailable':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxUnavailable', type=d.T.string)]), - withMaxUnavailable(maxUnavailable): { rollingUpdate+: { maxUnavailable: maxUnavailable } } - }, - '#withType':: d.fn(help='Type of daemon set update. Can be "RollingUpdate" or "OnDelete". Default is RollingUpdate.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/deployment.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/deployment.libsonnet deleted file mode 100644 index e1c05c7670d5..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/deployment.libsonnet +++ /dev/null @@ -1,371 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='deployment', url='', help='DEPRECATED - This group version of Deployment is deprecated by apps/v1/Deployment. See the release notes for more information. Deployment enables declarative updates for Pods and ReplicaSets.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Deployment', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'apps/v1beta2', - kind: 'Deployment' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='DeploymentSpec is the specification of the desired behavior of the Deployment.'), - spec: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { spec+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { spec+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { spec+: { selector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { spec+: { selector+: { matchLabels+: matchLabels } } } - }, - '#strategy':: d.obj(help='DeploymentStrategy describes how to replace existing pods with new ones.'), - strategy: { - '#rollingUpdate':: d.obj(help='Spec to control the desired behavior of rolling update.'), - rollingUpdate: { - '#withMaxSurge':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxSurge', type=d.T.string)]), - withMaxSurge(maxSurge): { spec+: { strategy+: { rollingUpdate+: { maxSurge: maxSurge } } } }, - '#withMaxUnavailable':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxUnavailable', type=d.T.string)]), - withMaxUnavailable(maxUnavailable): { spec+: { strategy+: { rollingUpdate+: { maxUnavailable: maxUnavailable } } } } - }, - '#withType':: d.fn(help='Type of deployment. Can be "Recreate" or "RollingUpdate". Default is RollingUpdate.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { strategy+: { type: type } } } - }, - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { group: group } } } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { name: name } } } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { spec+: { template+: { metadata+: { initializers+: { result+: { code: code } } } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { template+: { metadata+: { initializers+: { result+: { kind: kind } } } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { spec+: { template+: { metadata+: { initializers+: { result+: { message: message } } } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { spec+: { template+: { metadata+: { initializers+: { result+: { metadata: metadata } } } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { spec+: { template+: { metadata+: { initializers+: { result+: { reason: reason } } } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { spec+: { template+: { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { spec+: { template+: { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { spec+: { template+: { metadata+: { annotations: annotations } } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { spec+: { template+: { metadata+: { annotations+: annotations } } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { spec+: { template+: { metadata+: { clusterName: clusterName } } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { spec+: { template+: { metadata+: { creationTimestamp: creationTimestamp } } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { spec+: { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { spec+: { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { spec+: { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { spec+: { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { spec+: { template+: { metadata+: { generateName: generateName } } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { spec+: { template+: { metadata+: { generation: generation } } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { spec+: { template+: { metadata+: { labels: labels } } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { spec+: { template+: { metadata+: { labels+: labels } } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { spec+: { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { spec+: { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { template+: { metadata+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { template+: { metadata+: { namespace: namespace } } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { spec+: { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { spec+: { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { spec+: { template+: { metadata+: { resourceVersion: resourceVersion } } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { spec+: { template+: { metadata+: { selfLink: selfLink } } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { template+: { metadata+: { uid: uid } } } } - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } } - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } - } - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { spec+: { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { spec+: { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { spec+: { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { spec+: { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { spec+: { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { spec+: { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } } } - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } } } - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { spec+: { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { spec+: { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { spec+: { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { spec+: { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { spec+: { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { spec+: { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { spec+: { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { spec+: { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } } - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { spec+: { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { spec+: { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { spec+: { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { spec+: { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { spec+: { template+: { spec+: { dnsPolicy: dnsPolicy } } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { spec+: { template+: { spec+: { enableServiceLinks: enableServiceLinks } } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { spec+: { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { spec+: { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { spec+: { template+: { spec+: { hostIPC: hostIPC } } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { spec+: { template+: { spec+: { hostNetwork: hostNetwork } } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { spec+: { template+: { spec+: { hostPID: hostPID } } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { spec+: { template+: { spec+: { hostname: hostname } } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { spec+: { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { spec+: { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { spec+: { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { spec+: { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { spec+: { template+: { spec+: { nodeName: nodeName } } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { spec+: { template+: { spec+: { nodeSelector: nodeSelector } } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { spec+: { template+: { spec+: { nodeSelector+: nodeSelector } } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { spec+: { template+: { spec+: { priority: priority } } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { spec+: { template+: { spec+: { priorityClassName: priorityClassName } } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { spec+: { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { spec+: { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { spec+: { template+: { spec+: { restartPolicy: restartPolicy } } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is an alpha feature and may change in the future.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { spec+: { template+: { spec+: { runtimeClassName: runtimeClassName } } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { spec+: { template+: { spec+: { schedulerName: schedulerName } } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { spec+: { template+: { spec+: { serviceAccount: serviceAccount } } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { spec+: { template+: { spec+: { serviceAccountName: serviceAccountName } } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false. This field is beta-level and may be disabled with the PodShareProcessNamespace feature.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { spec+: { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { spec+: { template+: { spec+: { subdomain: subdomain } } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { spec+: { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { spec+: { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { spec+: { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { spec+: { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { spec+: { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } } } - } - }, - '#withMinReadySeconds':: d.fn(help='Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)', args=[d.arg(name='minReadySeconds', type=d.T.integer)]), - withMinReadySeconds(minReadySeconds): { spec+: { minReadySeconds: minReadySeconds } }, - '#withPaused':: d.fn(help='Indicates that the deployment is paused.', args=[d.arg(name='paused', type=d.T.boolean)]), - withPaused(paused): { spec+: { paused: paused } }, - '#withProgressDeadlineSeconds':: d.fn(help='The maximum time in seconds for a deployment to make progress before it is considered to be failed. The deployment controller will continue to process failed deployments and a condition with a ProgressDeadlineExceeded reason will be surfaced in the deployment status. Note that progress will not be estimated during the time a deployment is paused. Defaults to 600s.', args=[d.arg(name='progressDeadlineSeconds', type=d.T.integer)]), - withProgressDeadlineSeconds(progressDeadlineSeconds): { spec+: { progressDeadlineSeconds: progressDeadlineSeconds } }, - '#withReplicas':: d.fn(help='Number of desired pods. This is a pointer to distinguish between explicit zero and not specified. Defaults to 1.', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { spec+: { replicas: replicas } }, - '#withRevisionHistoryLimit':: d.fn(help='The number of old ReplicaSets to retain to allow rollback. This is a pointer to distinguish between explicit zero and not specified. Defaults to 10.', args=[d.arg(name='revisionHistoryLimit', type=d.T.integer)]), - withRevisionHistoryLimit(revisionHistoryLimit): { spec+: { revisionHistoryLimit: revisionHistoryLimit } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/deploymentCondition.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/deploymentCondition.libsonnet deleted file mode 100644 index f4716c97d4c6..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/deploymentCondition.libsonnet +++ /dev/null @@ -1,16 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='deploymentCondition', url='', help='DeploymentCondition describes the state of a deployment at a certain point.'), - '#withLastTransitionTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastTransitionTime', type=d.T.string)]), - withLastTransitionTime(lastTransitionTime): { lastTransitionTime: lastTransitionTime }, - '#withLastUpdateTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastUpdateTime', type=d.T.string)]), - withLastUpdateTime(lastUpdateTime): { lastUpdateTime: lastUpdateTime }, - '#withMessage':: d.fn(help='A human readable message indicating details about the transition.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withReason':: d.fn(help="The reason for the condition's last transition.", args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#withType':: d.fn(help='Type of deployment condition.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/deploymentSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/deploymentSpec.libsonnet deleted file mode 100644 index 4fd57b7f7f0d..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/deploymentSpec.libsonnet +++ /dev/null @@ -1,281 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='deploymentSpec', url='', help='DeploymentSpec is the specification of the desired behavior of the Deployment.'), - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { selector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { selector+: { matchLabels+: matchLabels } } - }, - '#strategy':: d.obj(help='DeploymentStrategy describes how to replace existing pods with new ones.'), - strategy: { - '#rollingUpdate':: d.obj(help='Spec to control the desired behavior of rolling update.'), - rollingUpdate: { - '#withMaxSurge':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxSurge', type=d.T.string)]), - withMaxSurge(maxSurge): { strategy+: { rollingUpdate+: { maxSurge: maxSurge } } }, - '#withMaxUnavailable':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxUnavailable', type=d.T.string)]), - withMaxUnavailable(maxUnavailable): { strategy+: { rollingUpdate+: { maxUnavailable: maxUnavailable } } } - }, - '#withType':: d.fn(help='Type of deployment. Can be "Recreate" or "RollingUpdate". Default is RollingUpdate.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { strategy+: { type: type } } - }, - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { template+: { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { template+: { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { template+: { metadata+: { initializers+: { result+: { details+: { group: group } } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { template+: { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { template+: { metadata+: { initializers+: { result+: { details+: { name: name } } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { template+: { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { template+: { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { template+: { metadata+: { initializers+: { result+: { code: code } } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { template+: { metadata+: { initializers+: { result+: { kind: kind } } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { template+: { metadata+: { initializers+: { result+: { message: message } } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { template+: { metadata+: { initializers+: { result+: { metadata: metadata } } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { template+: { metadata+: { initializers+: { result+: { reason: reason } } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { template+: { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { template+: { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { template+: { metadata+: { annotations: annotations } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { template+: { metadata+: { annotations+: annotations } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { template+: { metadata+: { clusterName: clusterName } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { template+: { metadata+: { creationTimestamp: creationTimestamp } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { template+: { metadata+: { generateName: generateName } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { template+: { metadata+: { generation: generation } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { template+: { metadata+: { labels: labels } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { template+: { metadata+: { labels+: labels } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { template+: { metadata+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { template+: { metadata+: { namespace: namespace } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { template+: { metadata+: { resourceVersion: resourceVersion } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { template+: { metadata+: { selfLink: selfLink } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { template+: { metadata+: { uid: uid } } } - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } - } - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } } - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } } - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { template+: { spec+: { dnsPolicy: dnsPolicy } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { template+: { spec+: { enableServiceLinks: enableServiceLinks } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { template+: { spec+: { hostIPC: hostIPC } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { template+: { spec+: { hostNetwork: hostNetwork } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { template+: { spec+: { hostPID: hostPID } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { template+: { spec+: { hostname: hostname } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { template+: { spec+: { nodeName: nodeName } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { template+: { spec+: { nodeSelector: nodeSelector } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { template+: { spec+: { nodeSelector+: nodeSelector } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { template+: { spec+: { priority: priority } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { template+: { spec+: { priorityClassName: priorityClassName } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { template+: { spec+: { restartPolicy: restartPolicy } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is an alpha feature and may change in the future.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { template+: { spec+: { runtimeClassName: runtimeClassName } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { template+: { spec+: { schedulerName: schedulerName } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { template+: { spec+: { serviceAccount: serviceAccount } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { template+: { spec+: { serviceAccountName: serviceAccountName } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false. This field is beta-level and may be disabled with the PodShareProcessNamespace feature.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { template+: { spec+: { subdomain: subdomain } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } } - } - }, - '#withMinReadySeconds':: d.fn(help='Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)', args=[d.arg(name='minReadySeconds', type=d.T.integer)]), - withMinReadySeconds(minReadySeconds): { minReadySeconds: minReadySeconds }, - '#withPaused':: d.fn(help='Indicates that the deployment is paused.', args=[d.arg(name='paused', type=d.T.boolean)]), - withPaused(paused): { paused: paused }, - '#withProgressDeadlineSeconds':: d.fn(help='The maximum time in seconds for a deployment to make progress before it is considered to be failed. The deployment controller will continue to process failed deployments and a condition with a ProgressDeadlineExceeded reason will be surfaced in the deployment status. Note that progress will not be estimated during the time a deployment is paused. Defaults to 600s.', args=[d.arg(name='progressDeadlineSeconds', type=d.T.integer)]), - withProgressDeadlineSeconds(progressDeadlineSeconds): { progressDeadlineSeconds: progressDeadlineSeconds }, - '#withReplicas':: d.fn(help='Number of desired pods. This is a pointer to distinguish between explicit zero and not specified. Defaults to 1.', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { replicas: replicas }, - '#withRevisionHistoryLimit':: d.fn(help='The number of old ReplicaSets to retain to allow rollback. This is a pointer to distinguish between explicit zero and not specified. Defaults to 10.', args=[d.arg(name='revisionHistoryLimit', type=d.T.integer)]), - withRevisionHistoryLimit(revisionHistoryLimit): { revisionHistoryLimit: revisionHistoryLimit }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/deploymentStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/deploymentStatus.libsonnet deleted file mode 100644 index 6d01c63020f4..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/deploymentStatus.libsonnet +++ /dev/null @@ -1,24 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='deploymentStatus', url='', help='DeploymentStatus is the most recently observed status of the Deployment.'), - '#withAvailableReplicas':: d.fn(help='Total number of available pods (ready for at least minReadySeconds) targeted by this deployment.', args=[d.arg(name='availableReplicas', type=d.T.integer)]), - withAvailableReplicas(availableReplicas): { availableReplicas: availableReplicas }, - '#withCollisionCount':: d.fn(help='Count of hash collisions for the Deployment. The Deployment controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ReplicaSet.', args=[d.arg(name='collisionCount', type=d.T.integer)]), - withCollisionCount(collisionCount): { collisionCount: collisionCount }, - '#withConditions':: d.fn(help="Represents the latest available observations of a deployment's current state.", args=[d.arg(name='conditions', type=d.T.array)]), - withConditions(conditions): { conditions: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withConditionsMixin':: d.fn(help="Represents the latest available observations of a deployment's current state.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='conditions', type=d.T.array)]), - withConditionsMixin(conditions): { conditions+: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withObservedGeneration':: d.fn(help='The generation observed by the deployment controller.', args=[d.arg(name='observedGeneration', type=d.T.integer)]), - withObservedGeneration(observedGeneration): { observedGeneration: observedGeneration }, - '#withReadyReplicas':: d.fn(help='Total number of ready pods targeted by this deployment.', args=[d.arg(name='readyReplicas', type=d.T.integer)]), - withReadyReplicas(readyReplicas): { readyReplicas: readyReplicas }, - '#withReplicas':: d.fn(help='Total number of non-terminated pods targeted by this deployment (their labels match the selector).', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { replicas: replicas }, - '#withUnavailableReplicas':: d.fn(help='Total number of unavailable pods targeted by this deployment. This is the total number of pods that are still required for the deployment to have 100% available capacity. They may either be pods that are running but not yet available or pods that still have not been created.', args=[d.arg(name='unavailableReplicas', type=d.T.integer)]), - withUnavailableReplicas(unavailableReplicas): { unavailableReplicas: unavailableReplicas }, - '#withUpdatedReplicas':: d.fn(help='Total number of non-terminated pods targeted by this deployment that have the desired template spec.', args=[d.arg(name='updatedReplicas', type=d.T.integer)]), - withUpdatedReplicas(updatedReplicas): { updatedReplicas: updatedReplicas }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/deploymentStrategy.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/deploymentStrategy.libsonnet deleted file mode 100644 index 36f6460da406..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/deploymentStrategy.libsonnet +++ /dev/null @@ -1,15 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='deploymentStrategy', url='', help='DeploymentStrategy describes how to replace existing pods with new ones.'), - '#rollingUpdate':: d.obj(help='Spec to control the desired behavior of rolling update.'), - rollingUpdate: { - '#withMaxSurge':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxSurge', type=d.T.string)]), - withMaxSurge(maxSurge): { rollingUpdate+: { maxSurge: maxSurge } }, - '#withMaxUnavailable':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxUnavailable', type=d.T.string)]), - withMaxUnavailable(maxUnavailable): { rollingUpdate+: { maxUnavailable: maxUnavailable } } - }, - '#withType':: d.fn(help='Type of deployment. Can be "Recreate" or "RollingUpdate". Default is RollingUpdate.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/main.libsonnet deleted file mode 100644 index 74803a6f5e83..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/main.libsonnet +++ /dev/null @@ -1,30 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1beta2', url='', help=''), - controllerRevision: (import 'controllerRevision.libsonnet'), - daemonSet: (import 'daemonSet.libsonnet'), - daemonSetCondition: (import 'daemonSetCondition.libsonnet'), - daemonSetSpec: (import 'daemonSetSpec.libsonnet'), - daemonSetStatus: (import 'daemonSetStatus.libsonnet'), - daemonSetUpdateStrategy: (import 'daemonSetUpdateStrategy.libsonnet'), - deployment: (import 'deployment.libsonnet'), - deploymentCondition: (import 'deploymentCondition.libsonnet'), - deploymentSpec: (import 'deploymentSpec.libsonnet'), - deploymentStatus: (import 'deploymentStatus.libsonnet'), - deploymentStrategy: (import 'deploymentStrategy.libsonnet'), - replicaSet: (import 'replicaSet.libsonnet'), - replicaSetCondition: (import 'replicaSetCondition.libsonnet'), - replicaSetSpec: (import 'replicaSetSpec.libsonnet'), - replicaSetStatus: (import 'replicaSetStatus.libsonnet'), - rollingUpdateDaemonSet: (import 'rollingUpdateDaemonSet.libsonnet'), - rollingUpdateDeployment: (import 'rollingUpdateDeployment.libsonnet'), - rollingUpdateStatefulSetStrategy: (import 'rollingUpdateStatefulSetStrategy.libsonnet'), - scale: (import 'scale.libsonnet'), - scaleSpec: (import 'scaleSpec.libsonnet'), - scaleStatus: (import 'scaleStatus.libsonnet'), - statefulSet: (import 'statefulSet.libsonnet'), - statefulSetCondition: (import 'statefulSetCondition.libsonnet'), - statefulSetSpec: (import 'statefulSetSpec.libsonnet'), - statefulSetStatus: (import 'statefulSetStatus.libsonnet'), - statefulSetUpdateStrategy: (import 'statefulSetUpdateStrategy.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/replicaSet.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/replicaSet.libsonnet deleted file mode 100644 index 1b7fa2bb0f0a..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/replicaSet.libsonnet +++ /dev/null @@ -1,353 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='replicaSet', url='', help='DEPRECATED - This group version of ReplicaSet is deprecated by apps/v1/ReplicaSet. See the release notes for more information. ReplicaSet ensures that a specified number of pod replicas are running at any given time.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Replicaset', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'apps/v1beta2', - kind: 'ReplicaSet' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='ReplicaSetSpec is the specification of a ReplicaSet.'), - spec: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { spec+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { spec+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { spec+: { selector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { spec+: { selector+: { matchLabels+: matchLabels } } } - }, - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { group: group } } } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { name: name } } } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { spec+: { template+: { metadata+: { initializers+: { result+: { code: code } } } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { template+: { metadata+: { initializers+: { result+: { kind: kind } } } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { spec+: { template+: { metadata+: { initializers+: { result+: { message: message } } } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { spec+: { template+: { metadata+: { initializers+: { result+: { metadata: metadata } } } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { spec+: { template+: { metadata+: { initializers+: { result+: { reason: reason } } } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { spec+: { template+: { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { spec+: { template+: { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { spec+: { template+: { metadata+: { annotations: annotations } } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { spec+: { template+: { metadata+: { annotations+: annotations } } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { spec+: { template+: { metadata+: { clusterName: clusterName } } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { spec+: { template+: { metadata+: { creationTimestamp: creationTimestamp } } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { spec+: { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { spec+: { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { spec+: { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { spec+: { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { spec+: { template+: { metadata+: { generateName: generateName } } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { spec+: { template+: { metadata+: { generation: generation } } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { spec+: { template+: { metadata+: { labels: labels } } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { spec+: { template+: { metadata+: { labels+: labels } } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { spec+: { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { spec+: { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { template+: { metadata+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { template+: { metadata+: { namespace: namespace } } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { spec+: { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { spec+: { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { spec+: { template+: { metadata+: { resourceVersion: resourceVersion } } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { spec+: { template+: { metadata+: { selfLink: selfLink } } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { template+: { metadata+: { uid: uid } } } } - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } } - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } - } - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { spec+: { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { spec+: { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { spec+: { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { spec+: { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { spec+: { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { spec+: { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } } } - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } } } - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { spec+: { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { spec+: { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { spec+: { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { spec+: { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { spec+: { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { spec+: { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { spec+: { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { spec+: { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } } - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { spec+: { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { spec+: { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { spec+: { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { spec+: { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { spec+: { template+: { spec+: { dnsPolicy: dnsPolicy } } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { spec+: { template+: { spec+: { enableServiceLinks: enableServiceLinks } } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { spec+: { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { spec+: { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { spec+: { template+: { spec+: { hostIPC: hostIPC } } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { spec+: { template+: { spec+: { hostNetwork: hostNetwork } } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { spec+: { template+: { spec+: { hostPID: hostPID } } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { spec+: { template+: { spec+: { hostname: hostname } } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { spec+: { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { spec+: { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { spec+: { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { spec+: { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { spec+: { template+: { spec+: { nodeName: nodeName } } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { spec+: { template+: { spec+: { nodeSelector: nodeSelector } } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { spec+: { template+: { spec+: { nodeSelector+: nodeSelector } } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { spec+: { template+: { spec+: { priority: priority } } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { spec+: { template+: { spec+: { priorityClassName: priorityClassName } } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { spec+: { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { spec+: { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { spec+: { template+: { spec+: { restartPolicy: restartPolicy } } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is an alpha feature and may change in the future.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { spec+: { template+: { spec+: { runtimeClassName: runtimeClassName } } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { spec+: { template+: { spec+: { schedulerName: schedulerName } } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { spec+: { template+: { spec+: { serviceAccount: serviceAccount } } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { spec+: { template+: { spec+: { serviceAccountName: serviceAccountName } } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false. This field is beta-level and may be disabled with the PodShareProcessNamespace feature.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { spec+: { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { spec+: { template+: { spec+: { subdomain: subdomain } } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { spec+: { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { spec+: { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { spec+: { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { spec+: { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { spec+: { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } } } - } - }, - '#withMinReadySeconds':: d.fn(help='Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)', args=[d.arg(name='minReadySeconds', type=d.T.integer)]), - withMinReadySeconds(minReadySeconds): { spec+: { minReadySeconds: minReadySeconds } }, - '#withReplicas':: d.fn(help='Replicas is the number of desired replicas. This is a pointer to distinguish between explicit zero and unspecified. Defaults to 1. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { spec+: { replicas: replicas } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/replicaSetCondition.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/replicaSetCondition.libsonnet deleted file mode 100644 index 581bbfa9c69b..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/replicaSetCondition.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='replicaSetCondition', url='', help='ReplicaSetCondition describes the state of a replica set at a certain point.'), - '#withLastTransitionTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastTransitionTime', type=d.T.string)]), - withLastTransitionTime(lastTransitionTime): { lastTransitionTime: lastTransitionTime }, - '#withMessage':: d.fn(help='A human readable message indicating details about the transition.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withReason':: d.fn(help="The reason for the condition's last transition.", args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#withType':: d.fn(help='Type of replica set condition.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/replicaSetSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/replicaSetSpec.libsonnet deleted file mode 100644 index 933b7ffbd53a..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/replicaSetSpec.libsonnet +++ /dev/null @@ -1,263 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='replicaSetSpec', url='', help='ReplicaSetSpec is the specification of a ReplicaSet.'), - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { selector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { selector+: { matchLabels+: matchLabels } } - }, - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { template+: { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { template+: { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { template+: { metadata+: { initializers+: { result+: { details+: { group: group } } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { template+: { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { template+: { metadata+: { initializers+: { result+: { details+: { name: name } } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { template+: { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { template+: { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { template+: { metadata+: { initializers+: { result+: { code: code } } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { template+: { metadata+: { initializers+: { result+: { kind: kind } } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { template+: { metadata+: { initializers+: { result+: { message: message } } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { template+: { metadata+: { initializers+: { result+: { metadata: metadata } } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { template+: { metadata+: { initializers+: { result+: { reason: reason } } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { template+: { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { template+: { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { template+: { metadata+: { annotations: annotations } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { template+: { metadata+: { annotations+: annotations } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { template+: { metadata+: { clusterName: clusterName } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { template+: { metadata+: { creationTimestamp: creationTimestamp } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { template+: { metadata+: { generateName: generateName } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { template+: { metadata+: { generation: generation } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { template+: { metadata+: { labels: labels } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { template+: { metadata+: { labels+: labels } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { template+: { metadata+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { template+: { metadata+: { namespace: namespace } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { template+: { metadata+: { resourceVersion: resourceVersion } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { template+: { metadata+: { selfLink: selfLink } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { template+: { metadata+: { uid: uid } } } - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } - } - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } } - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } } - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { template+: { spec+: { dnsPolicy: dnsPolicy } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { template+: { spec+: { enableServiceLinks: enableServiceLinks } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { template+: { spec+: { hostIPC: hostIPC } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { template+: { spec+: { hostNetwork: hostNetwork } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { template+: { spec+: { hostPID: hostPID } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { template+: { spec+: { hostname: hostname } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { template+: { spec+: { nodeName: nodeName } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { template+: { spec+: { nodeSelector: nodeSelector } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { template+: { spec+: { nodeSelector+: nodeSelector } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { template+: { spec+: { priority: priority } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { template+: { spec+: { priorityClassName: priorityClassName } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { template+: { spec+: { restartPolicy: restartPolicy } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is an alpha feature and may change in the future.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { template+: { spec+: { runtimeClassName: runtimeClassName } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { template+: { spec+: { schedulerName: schedulerName } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { template+: { spec+: { serviceAccount: serviceAccount } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { template+: { spec+: { serviceAccountName: serviceAccountName } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false. This field is beta-level and may be disabled with the PodShareProcessNamespace feature.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { template+: { spec+: { subdomain: subdomain } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } } - } - }, - '#withMinReadySeconds':: d.fn(help='Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)', args=[d.arg(name='minReadySeconds', type=d.T.integer)]), - withMinReadySeconds(minReadySeconds): { minReadySeconds: minReadySeconds }, - '#withReplicas':: d.fn(help='Replicas is the number of desired replicas. This is a pointer to distinguish between explicit zero and unspecified. Defaults to 1. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { replicas: replicas }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/replicaSetStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/replicaSetStatus.libsonnet deleted file mode 100644 index e959f877d008..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/replicaSetStatus.libsonnet +++ /dev/null @@ -1,20 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='replicaSetStatus', url='', help='ReplicaSetStatus represents the current status of a ReplicaSet.'), - '#withAvailableReplicas':: d.fn(help='The number of available replicas (ready for at least minReadySeconds) for this replica set.', args=[d.arg(name='availableReplicas', type=d.T.integer)]), - withAvailableReplicas(availableReplicas): { availableReplicas: availableReplicas }, - '#withConditions':: d.fn(help="Represents the latest available observations of a replica set's current state.", args=[d.arg(name='conditions', type=d.T.array)]), - withConditions(conditions): { conditions: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withConditionsMixin':: d.fn(help="Represents the latest available observations of a replica set's current state.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='conditions', type=d.T.array)]), - withConditionsMixin(conditions): { conditions+: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withFullyLabeledReplicas':: d.fn(help='The number of pods that have labels matching the labels of the pod template of the replicaset.', args=[d.arg(name='fullyLabeledReplicas', type=d.T.integer)]), - withFullyLabeledReplicas(fullyLabeledReplicas): { fullyLabeledReplicas: fullyLabeledReplicas }, - '#withObservedGeneration':: d.fn(help='ObservedGeneration reflects the generation of the most recently observed ReplicaSet.', args=[d.arg(name='observedGeneration', type=d.T.integer)]), - withObservedGeneration(observedGeneration): { observedGeneration: observedGeneration }, - '#withReadyReplicas':: d.fn(help='The number of ready replicas for this replica set.', args=[d.arg(name='readyReplicas', type=d.T.integer)]), - withReadyReplicas(readyReplicas): { readyReplicas: readyReplicas }, - '#withReplicas':: d.fn(help='Replicas is the most recently oberved number of replicas. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { replicas: replicas }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/rollingUpdateDaemonSet.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/rollingUpdateDaemonSet.libsonnet deleted file mode 100644 index 9d349cef4825..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/rollingUpdateDaemonSet.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='rollingUpdateDaemonSet', url='', help='Spec to control the desired behavior of daemon set rolling update.'), - '#withMaxUnavailable':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxUnavailable', type=d.T.string)]), - withMaxUnavailable(maxUnavailable): { maxUnavailable: maxUnavailable }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/rollingUpdateDeployment.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/rollingUpdateDeployment.libsonnet deleted file mode 100644 index cd8cadb0f964..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/rollingUpdateDeployment.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='rollingUpdateDeployment', url='', help='Spec to control the desired behavior of rolling update.'), - '#withMaxSurge':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxSurge', type=d.T.string)]), - withMaxSurge(maxSurge): { maxSurge: maxSurge }, - '#withMaxUnavailable':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxUnavailable', type=d.T.string)]), - withMaxUnavailable(maxUnavailable): { maxUnavailable: maxUnavailable }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/rollingUpdateStatefulSetStrategy.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/rollingUpdateStatefulSetStrategy.libsonnet deleted file mode 100644 index 96ffd4b79e6f..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/rollingUpdateStatefulSetStrategy.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='rollingUpdateStatefulSetStrategy', url='', help='RollingUpdateStatefulSetStrategy is used to communicate parameter for RollingUpdateStatefulSetStrategyType.'), - '#withPartition':: d.fn(help='Partition indicates the ordinal at which the StatefulSet should be partitioned. Default value is 0.', args=[d.arg(name='partition', type=d.T.integer)]), - withPartition(partition): { partition: partition }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/scale.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/scale.libsonnet deleted file mode 100644 index c4297b1ac48b..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/scale.libsonnet +++ /dev/null @@ -1,98 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='scale', url='', help='Scale represents a scaling request for a resource.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Scale', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'apps/v1beta2', - kind: 'Scale' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='ScaleSpec describes the attributes of a scale subresource'), - spec: { - '#withReplicas':: d.fn(help='desired number of instances for the scaled object.', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { spec+: { replicas: replicas } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/scaleSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/scaleSpec.libsonnet deleted file mode 100644 index 6c3d939c208e..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/scaleSpec.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='scaleSpec', url='', help='ScaleSpec describes the attributes of a scale subresource'), - '#withReplicas':: d.fn(help='desired number of instances for the scaled object.', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { replicas: replicas }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/scaleStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/scaleStatus.libsonnet deleted file mode 100644 index 15d560a582b5..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/scaleStatus.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='scaleStatus', url='', help='ScaleStatus represents the current status of a scale subresource.'), - '#withReplicas':: d.fn(help='actual number of observed instances of the scaled object.', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { replicas: replicas }, - '#withSelector':: d.fn(help='label query over pods that should match the replicas count. More info: http://kubernetes.io/docs/user-guide/labels#label-selectors', args=[d.arg(name='selector', type=d.T.object)]), - withSelector(selector): { selector: selector }, - '#withSelectorMixin':: d.fn(help='label query over pods that should match the replicas count. More info: http://kubernetes.io/docs/user-guide/labels#label-selectors\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='selector', type=d.T.object)]), - withSelectorMixin(selector): { selector+: selector }, - '#withTargetSelector':: d.fn(help='label selector for pods that should match the replicas count. This is a serializated version of both map-based and more expressive set-based selectors. This is done to avoid introspection in the clients. The string will be in the same format as the query-param syntax. If the target type only supports map-based selectors, both this field and map-based selector field are populated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors', args=[d.arg(name='targetSelector', type=d.T.string)]), - withTargetSelector(targetSelector): { targetSelector: targetSelector }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/statefulSet.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/statefulSet.libsonnet deleted file mode 100644 index f18b4dc7f83e..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/statefulSet.libsonnet +++ /dev/null @@ -1,371 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='statefulSet', url='', help='DEPRECATED - This group version of StatefulSet is deprecated by apps/v1/StatefulSet. See the release notes for more information. StatefulSet represents a set of pods with consistent identities. Identities are defined as:\n - Network: A single stable DNS and hostname.\n - Storage: As many VolumeClaims as requested.\nThe StatefulSet guarantees that a given network identity will always map to the same storage identity.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Statefulset', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'apps/v1beta2', - kind: 'StatefulSet' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='A StatefulSetSpec is the specification of a StatefulSet.'), - spec: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { spec+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { spec+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { spec+: { selector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { spec+: { selector+: { matchLabels+: matchLabels } } } - }, - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { group: group } } } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { name: name } } } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { spec+: { template+: { metadata+: { initializers+: { result+: { code: code } } } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { template+: { metadata+: { initializers+: { result+: { kind: kind } } } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { spec+: { template+: { metadata+: { initializers+: { result+: { message: message } } } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { spec+: { template+: { metadata+: { initializers+: { result+: { metadata: metadata } } } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { spec+: { template+: { metadata+: { initializers+: { result+: { reason: reason } } } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { spec+: { template+: { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { spec+: { template+: { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { spec+: { template+: { metadata+: { annotations: annotations } } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { spec+: { template+: { metadata+: { annotations+: annotations } } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { spec+: { template+: { metadata+: { clusterName: clusterName } } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { spec+: { template+: { metadata+: { creationTimestamp: creationTimestamp } } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { spec+: { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { spec+: { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { spec+: { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { spec+: { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { spec+: { template+: { metadata+: { generateName: generateName } } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { spec+: { template+: { metadata+: { generation: generation } } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { spec+: { template+: { metadata+: { labels: labels } } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { spec+: { template+: { metadata+: { labels+: labels } } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { spec+: { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { spec+: { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { template+: { metadata+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { template+: { metadata+: { namespace: namespace } } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { spec+: { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { spec+: { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { spec+: { template+: { metadata+: { resourceVersion: resourceVersion } } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { spec+: { template+: { metadata+: { selfLink: selfLink } } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { template+: { metadata+: { uid: uid } } } } - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } } - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } - } - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { spec+: { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { spec+: { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { spec+: { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { spec+: { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { spec+: { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { spec+: { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } } } - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } } } - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { spec+: { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { spec+: { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { spec+: { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { spec+: { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { spec+: { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { spec+: { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { spec+: { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { spec+: { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } } - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { spec+: { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { spec+: { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { spec+: { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { spec+: { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { spec+: { template+: { spec+: { dnsPolicy: dnsPolicy } } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { spec+: { template+: { spec+: { enableServiceLinks: enableServiceLinks } } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { spec+: { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { spec+: { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { spec+: { template+: { spec+: { hostIPC: hostIPC } } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { spec+: { template+: { spec+: { hostNetwork: hostNetwork } } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { spec+: { template+: { spec+: { hostPID: hostPID } } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { spec+: { template+: { spec+: { hostname: hostname } } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { spec+: { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { spec+: { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { spec+: { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { spec+: { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { spec+: { template+: { spec+: { nodeName: nodeName } } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { spec+: { template+: { spec+: { nodeSelector: nodeSelector } } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { spec+: { template+: { spec+: { nodeSelector+: nodeSelector } } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { spec+: { template+: { spec+: { priority: priority } } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { spec+: { template+: { spec+: { priorityClassName: priorityClassName } } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { spec+: { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { spec+: { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { spec+: { template+: { spec+: { restartPolicy: restartPolicy } } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is an alpha feature and may change in the future.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { spec+: { template+: { spec+: { runtimeClassName: runtimeClassName } } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { spec+: { template+: { spec+: { schedulerName: schedulerName } } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { spec+: { template+: { spec+: { serviceAccount: serviceAccount } } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { spec+: { template+: { spec+: { serviceAccountName: serviceAccountName } } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false. This field is beta-level and may be disabled with the PodShareProcessNamespace feature.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { spec+: { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { spec+: { template+: { spec+: { subdomain: subdomain } } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { spec+: { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { spec+: { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { spec+: { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { spec+: { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { spec+: { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } } } - } - }, - '#updateStrategy':: d.obj(help='StatefulSetUpdateStrategy indicates the strategy that the StatefulSet controller will use to perform updates. It includes any additional parameters necessary to perform the update for the indicated strategy.'), - updateStrategy: { - '#rollingUpdate':: d.obj(help='RollingUpdateStatefulSetStrategy is used to communicate parameter for RollingUpdateStatefulSetStrategyType.'), - rollingUpdate: { - '#withPartition':: d.fn(help='Partition indicates the ordinal at which the StatefulSet should be partitioned. Default value is 0.', args=[d.arg(name='partition', type=d.T.integer)]), - withPartition(partition): { spec+: { updateStrategy+: { rollingUpdate+: { partition: partition } } } } - }, - '#withType':: d.fn(help='Type indicates the type of the StatefulSetUpdateStrategy. Default is RollingUpdate.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { updateStrategy+: { type: type } } } - }, - '#withPodManagementPolicy':: d.fn(help='podManagementPolicy controls how pods are created during initial scale up, when replacing pods on nodes, or when scaling down. The default policy is `OrderedReady`, where pods are created in increasing order (pod-0, then pod-1, etc) and the controller will wait until each pod is ready before continuing. When scaling down, the pods are removed in the opposite order. The alternative policy is `Parallel` which will create pods in parallel to match the desired scale without waiting, and on scale down will delete all pods at once.', args=[d.arg(name='podManagementPolicy', type=d.T.string)]), - withPodManagementPolicy(podManagementPolicy): { spec+: { podManagementPolicy: podManagementPolicy } }, - '#withReplicas':: d.fn(help='replicas is the desired number of replicas of the given Template. These are replicas in the sense that they are instantiations of the same Template, but individual replicas also have a consistent identity. If unspecified, defaults to 1.', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { spec+: { replicas: replicas } }, - '#withRevisionHistoryLimit':: d.fn(help="revisionHistoryLimit is the maximum number of revisions that will be maintained in the StatefulSet's revision history. The revision history consists of all revisions not represented by a currently applied StatefulSetSpec version. The default value is 10.", args=[d.arg(name='revisionHistoryLimit', type=d.T.integer)]), - withRevisionHistoryLimit(revisionHistoryLimit): { spec+: { revisionHistoryLimit: revisionHistoryLimit } }, - '#withServiceName':: d.fn(help='serviceName is the name of the service that governs this StatefulSet. This service must exist before the StatefulSet, and is responsible for the network identity of the set. Pods get DNS/hostnames that follow the pattern: pod-specific-string.serviceName.default.svc.cluster.local where "pod-specific-string" is managed by the StatefulSet controller.', args=[d.arg(name='serviceName', type=d.T.string)]), - withServiceName(serviceName): { spec+: { serviceName: serviceName } }, - '#withVolumeClaimTemplates':: d.fn(help='volumeClaimTemplates is a list of claims that pods are allowed to reference. The StatefulSet controller is responsible for mapping network identities to claims in a way that maintains the identity of a pod. Every claim in this list must have at least one matching (by name) volumeMount in one container in the template. A claim in this list takes precedence over any volumes in the template, with the same name.', args=[d.arg(name='volumeClaimTemplates', type=d.T.array)]), - withVolumeClaimTemplates(volumeClaimTemplates): { spec+: { volumeClaimTemplates: if std.isArray(v=volumeClaimTemplates) then volumeClaimTemplates else [volumeClaimTemplates] } }, - '#withVolumeClaimTemplatesMixin':: d.fn(help='volumeClaimTemplates is a list of claims that pods are allowed to reference. The StatefulSet controller is responsible for mapping network identities to claims in a way that maintains the identity of a pod. Every claim in this list must have at least one matching (by name) volumeMount in one container in the template. A claim in this list takes precedence over any volumes in the template, with the same name.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumeClaimTemplates', type=d.T.array)]), - withVolumeClaimTemplatesMixin(volumeClaimTemplates): { spec+: { volumeClaimTemplates+: if std.isArray(v=volumeClaimTemplates) then volumeClaimTemplates else [volumeClaimTemplates] } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/statefulSetCondition.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/statefulSetCondition.libsonnet deleted file mode 100644 index 9b2c006cfd07..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/statefulSetCondition.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='statefulSetCondition', url='', help='StatefulSetCondition describes the state of a statefulset at a certain point.'), - '#withLastTransitionTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastTransitionTime', type=d.T.string)]), - withLastTransitionTime(lastTransitionTime): { lastTransitionTime: lastTransitionTime }, - '#withMessage':: d.fn(help='A human readable message indicating details about the transition.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withReason':: d.fn(help="The reason for the condition's last transition.", args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#withType':: d.fn(help='Type of statefulset condition.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/statefulSetSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/statefulSetSpec.libsonnet deleted file mode 100644 index e3de9dc19fd0..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/statefulSetSpec.libsonnet +++ /dev/null @@ -1,281 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='statefulSetSpec', url='', help='A StatefulSetSpec is the specification of a StatefulSet.'), - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { selector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { selector+: { matchLabels+: matchLabels } } - }, - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { template+: { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { template+: { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { template+: { metadata+: { initializers+: { result+: { details+: { group: group } } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { template+: { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { template+: { metadata+: { initializers+: { result+: { details+: { name: name } } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { template+: { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { template+: { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { template+: { metadata+: { initializers+: { result+: { code: code } } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { template+: { metadata+: { initializers+: { result+: { kind: kind } } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { template+: { metadata+: { initializers+: { result+: { message: message } } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { template+: { metadata+: { initializers+: { result+: { metadata: metadata } } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { template+: { metadata+: { initializers+: { result+: { reason: reason } } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { template+: { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { template+: { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { template+: { metadata+: { annotations: annotations } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { template+: { metadata+: { annotations+: annotations } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { template+: { metadata+: { clusterName: clusterName } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { template+: { metadata+: { creationTimestamp: creationTimestamp } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { template+: { metadata+: { generateName: generateName } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { template+: { metadata+: { generation: generation } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { template+: { metadata+: { labels: labels } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { template+: { metadata+: { labels+: labels } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { template+: { metadata+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { template+: { metadata+: { namespace: namespace } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { template+: { metadata+: { resourceVersion: resourceVersion } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { template+: { metadata+: { selfLink: selfLink } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { template+: { metadata+: { uid: uid } } } - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } - } - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } } - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } } - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { template+: { spec+: { dnsPolicy: dnsPolicy } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { template+: { spec+: { enableServiceLinks: enableServiceLinks } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { template+: { spec+: { hostIPC: hostIPC } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { template+: { spec+: { hostNetwork: hostNetwork } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { template+: { spec+: { hostPID: hostPID } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { template+: { spec+: { hostname: hostname } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { template+: { spec+: { nodeName: nodeName } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { template+: { spec+: { nodeSelector: nodeSelector } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { template+: { spec+: { nodeSelector+: nodeSelector } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { template+: { spec+: { priority: priority } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { template+: { spec+: { priorityClassName: priorityClassName } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { template+: { spec+: { restartPolicy: restartPolicy } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is an alpha feature and may change in the future.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { template+: { spec+: { runtimeClassName: runtimeClassName } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { template+: { spec+: { schedulerName: schedulerName } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { template+: { spec+: { serviceAccount: serviceAccount } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { template+: { spec+: { serviceAccountName: serviceAccountName } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false. This field is beta-level and may be disabled with the PodShareProcessNamespace feature.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { template+: { spec+: { subdomain: subdomain } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } } - } - }, - '#updateStrategy':: d.obj(help='StatefulSetUpdateStrategy indicates the strategy that the StatefulSet controller will use to perform updates. It includes any additional parameters necessary to perform the update for the indicated strategy.'), - updateStrategy: { - '#rollingUpdate':: d.obj(help='RollingUpdateStatefulSetStrategy is used to communicate parameter for RollingUpdateStatefulSetStrategyType.'), - rollingUpdate: { - '#withPartition':: d.fn(help='Partition indicates the ordinal at which the StatefulSet should be partitioned. Default value is 0.', args=[d.arg(name='partition', type=d.T.integer)]), - withPartition(partition): { updateStrategy+: { rollingUpdate+: { partition: partition } } } - }, - '#withType':: d.fn(help='Type indicates the type of the StatefulSetUpdateStrategy. Default is RollingUpdate.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { updateStrategy+: { type: type } } - }, - '#withPodManagementPolicy':: d.fn(help='podManagementPolicy controls how pods are created during initial scale up, when replacing pods on nodes, or when scaling down. The default policy is `OrderedReady`, where pods are created in increasing order (pod-0, then pod-1, etc) and the controller will wait until each pod is ready before continuing. When scaling down, the pods are removed in the opposite order. The alternative policy is `Parallel` which will create pods in parallel to match the desired scale without waiting, and on scale down will delete all pods at once.', args=[d.arg(name='podManagementPolicy', type=d.T.string)]), - withPodManagementPolicy(podManagementPolicy): { podManagementPolicy: podManagementPolicy }, - '#withReplicas':: d.fn(help='replicas is the desired number of replicas of the given Template. These are replicas in the sense that they are instantiations of the same Template, but individual replicas also have a consistent identity. If unspecified, defaults to 1.', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { replicas: replicas }, - '#withRevisionHistoryLimit':: d.fn(help="revisionHistoryLimit is the maximum number of revisions that will be maintained in the StatefulSet's revision history. The revision history consists of all revisions not represented by a currently applied StatefulSetSpec version. The default value is 10.", args=[d.arg(name='revisionHistoryLimit', type=d.T.integer)]), - withRevisionHistoryLimit(revisionHistoryLimit): { revisionHistoryLimit: revisionHistoryLimit }, - '#withServiceName':: d.fn(help='serviceName is the name of the service that governs this StatefulSet. This service must exist before the StatefulSet, and is responsible for the network identity of the set. Pods get DNS/hostnames that follow the pattern: pod-specific-string.serviceName.default.svc.cluster.local where "pod-specific-string" is managed by the StatefulSet controller.', args=[d.arg(name='serviceName', type=d.T.string)]), - withServiceName(serviceName): { serviceName: serviceName }, - '#withVolumeClaimTemplates':: d.fn(help='volumeClaimTemplates is a list of claims that pods are allowed to reference. The StatefulSet controller is responsible for mapping network identities to claims in a way that maintains the identity of a pod. Every claim in this list must have at least one matching (by name) volumeMount in one container in the template. A claim in this list takes precedence over any volumes in the template, with the same name.', args=[d.arg(name='volumeClaimTemplates', type=d.T.array)]), - withVolumeClaimTemplates(volumeClaimTemplates): { volumeClaimTemplates: if std.isArray(v=volumeClaimTemplates) then volumeClaimTemplates else [volumeClaimTemplates] }, - '#withVolumeClaimTemplatesMixin':: d.fn(help='volumeClaimTemplates is a list of claims that pods are allowed to reference. The StatefulSet controller is responsible for mapping network identities to claims in a way that maintains the identity of a pod. Every claim in this list must have at least one matching (by name) volumeMount in one container in the template. A claim in this list takes precedence over any volumes in the template, with the same name.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumeClaimTemplates', type=d.T.array)]), - withVolumeClaimTemplatesMixin(volumeClaimTemplates): { volumeClaimTemplates+: if std.isArray(v=volumeClaimTemplates) then volumeClaimTemplates else [volumeClaimTemplates] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/statefulSetStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/statefulSetStatus.libsonnet deleted file mode 100644 index 59ac7f222991..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/statefulSetStatus.libsonnet +++ /dev/null @@ -1,26 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='statefulSetStatus', url='', help='StatefulSetStatus represents the current state of a StatefulSet.'), - '#withCollisionCount':: d.fn(help='collisionCount is the count of hash collisions for the StatefulSet. The StatefulSet controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ControllerRevision.', args=[d.arg(name='collisionCount', type=d.T.integer)]), - withCollisionCount(collisionCount): { collisionCount: collisionCount }, - '#withConditions':: d.fn(help="Represents the latest available observations of a statefulset's current state.", args=[d.arg(name='conditions', type=d.T.array)]), - withConditions(conditions): { conditions: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withConditionsMixin':: d.fn(help="Represents the latest available observations of a statefulset's current state.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='conditions', type=d.T.array)]), - withConditionsMixin(conditions): { conditions+: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withCurrentReplicas':: d.fn(help='currentReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version indicated by currentRevision.', args=[d.arg(name='currentReplicas', type=d.T.integer)]), - withCurrentReplicas(currentReplicas): { currentReplicas: currentReplicas }, - '#withCurrentRevision':: d.fn(help='currentRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [0,currentReplicas).', args=[d.arg(name='currentRevision', type=d.T.string)]), - withCurrentRevision(currentRevision): { currentRevision: currentRevision }, - '#withObservedGeneration':: d.fn(help="observedGeneration is the most recent generation observed for this StatefulSet. It corresponds to the StatefulSet's generation, which is updated on mutation by the API Server.", args=[d.arg(name='observedGeneration', type=d.T.integer)]), - withObservedGeneration(observedGeneration): { observedGeneration: observedGeneration }, - '#withReadyReplicas':: d.fn(help='readyReplicas is the number of Pods created by the StatefulSet controller that have a Ready Condition.', args=[d.arg(name='readyReplicas', type=d.T.integer)]), - withReadyReplicas(readyReplicas): { readyReplicas: readyReplicas }, - '#withReplicas':: d.fn(help='replicas is the number of Pods created by the StatefulSet controller.', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { replicas: replicas }, - '#withUpdateRevision':: d.fn(help='updateRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [replicas-updatedReplicas,replicas)', args=[d.arg(name='updateRevision', type=d.T.string)]), - withUpdateRevision(updateRevision): { updateRevision: updateRevision }, - '#withUpdatedReplicas':: d.fn(help='updatedReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version indicated by updateRevision.', args=[d.arg(name='updatedReplicas', type=d.T.integer)]), - withUpdatedReplicas(updatedReplicas): { updatedReplicas: updatedReplicas }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/statefulSetUpdateStrategy.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/statefulSetUpdateStrategy.libsonnet deleted file mode 100644 index 72eeb791534a..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/apps/v1beta2/statefulSetUpdateStrategy.libsonnet +++ /dev/null @@ -1,13 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='statefulSetUpdateStrategy', url='', help='StatefulSetUpdateStrategy indicates the strategy that the StatefulSet controller will use to perform updates. It includes any additional parameters necessary to perform the update for the indicated strategy.'), - '#rollingUpdate':: d.obj(help='RollingUpdateStatefulSetStrategy is used to communicate parameter for RollingUpdateStatefulSetStrategyType.'), - rollingUpdate: { - '#withPartition':: d.fn(help='Partition indicates the ordinal at which the StatefulSet should be partitioned. Default value is 0.', args=[d.arg(name='partition', type=d.T.integer)]), - withPartition(partition): { rollingUpdate+: { partition: partition } } - }, - '#withType':: d.fn(help='Type indicates the type of the StatefulSetUpdateStrategy. Default is RollingUpdate.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/auditregistration/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/auditregistration/main.libsonnet deleted file mode 100644 index 3e8c941ea2d0..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/auditregistration/main.libsonnet +++ /dev/null @@ -1,5 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='auditregistration', url='', help=''), - v1alpha1: (import 'v1alpha1/main.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/auditregistration/v1alpha1/auditSink.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/auditregistration/v1alpha1/auditSink.libsonnet deleted file mode 100644 index a326f5562535..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/auditregistration/v1alpha1/auditSink.libsonnet +++ /dev/null @@ -1,131 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='auditSink', url='', help='AuditSink represents a cluster level audit sink'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Auditsink', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'auditregistration.k8s.io/v1alpha1', - kind: 'AuditSink' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='AuditSinkSpec holds the spec for the audit sink'), - spec: { - '#policy':: d.obj(help='Policy defines the configuration of how audit events are logged'), - policy: { - '#withLevel':: d.fn(help='The Level that all requests are recorded at. available options: None, Metadata, Request, RequestResponse required', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { spec+: { policy+: { level: level } } }, - '#withStages':: d.fn(help='Stages is a list of stages for which events are created.', args=[d.arg(name='stages', type=d.T.array)]), - withStages(stages): { spec+: { policy+: { stages: if std.isArray(v=stages) then stages else [stages] } } }, - '#withStagesMixin':: d.fn(help='Stages is a list of stages for which events are created.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='stages', type=d.T.array)]), - withStagesMixin(stages): { spec+: { policy+: { stages+: if std.isArray(v=stages) then stages else [stages] } } } - }, - '#webhook':: d.obj(help='Webhook holds the configuration of the webhook'), - webhook: { - '#clientConfig':: d.obj(help='WebhookClientConfig contains the information to make a connection with the webhook'), - clientConfig: { - '#service':: d.obj(help='ServiceReference holds a reference to Service.legacy.k8s.io'), - service: { - '#withName':: d.fn(help='`name` is the name of the service. Required', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { webhook+: { clientConfig+: { service+: { name: name } } } } }, - '#withNamespace':: d.fn(help='`namespace` is the namespace of the service. Required', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { webhook+: { clientConfig+: { service+: { namespace: namespace } } } } }, - '#withPath':: d.fn(help='`path` is an optional URL path which will be sent in any request to this service.', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { spec+: { webhook+: { clientConfig+: { service+: { path: path } } } } } - }, - '#withCaBundle':: d.fn(help="`caBundle` is a PEM encoded CA bundle which will be used to validate the webhook's server certificate. If unspecified, system trust roots on the apiserver are used.", args=[d.arg(name='caBundle', type=d.T.string)]), - withCaBundle(caBundle): { spec+: { webhook+: { clientConfig+: { caBundle: caBundle } } } }, - '#withUrl':: d.fn(help='`url` gives the location of the webhook, in standard URL form (`scheme://host:port/path`). Exactly one of `url` or `service` must be specified.\n\nThe `host` should not refer to a service running in the cluster; use the `service` field instead. The host might be resolved via external DNS in some apiservers (e.g., `kube-apiserver` cannot resolve in-cluster DNS as that would be a layering violation). `host` may also be an IP address.\n\nPlease note that using `localhost` or `127.0.0.1` as a `host` is risky unless you take great care to run this webhook on all hosts which run an apiserver which might need to make calls to this webhook. Such installs are likely to be non-portable, i.e., not easy to turn up in a new cluster.\n\nThe scheme must be "https"; the URL must begin with "https://".\n\nA path is optional, and if present may be any string permissible in a URL. You may use the path to pass an arbitrary string to the webhook, for example, a cluster identifier.\n\nAttempting to use a user or basic auth e.g. "user:password@" is not allowed. Fragments ("#...") and query parameters ("?...") are not allowed, either.', args=[d.arg(name='url', type=d.T.string)]), - withUrl(url): { spec+: { webhook+: { clientConfig+: { url: url } } } } - }, - '#throttle':: d.obj(help='WebhookThrottleConfig holds the configuration for throttling events'), - throttle: { - '#withBurst':: d.fn(help='ThrottleBurst is the maximum number of events sent at the same moment default 15 QPS', args=[d.arg(name='burst', type=d.T.integer)]), - withBurst(burst): { spec+: { webhook+: { throttle+: { burst: burst } } } }, - '#withQps':: d.fn(help='ThrottleQPS maximum number of batches per second default 10 QPS', args=[d.arg(name='qps', type=d.T.integer)]), - withQps(qps): { spec+: { webhook+: { throttle+: { qps: qps } } } } - } - } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/auditregistration/v1alpha1/auditSinkSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/auditregistration/v1alpha1/auditSinkSpec.libsonnet deleted file mode 100644 index dc6ddecc9806..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/auditregistration/v1alpha1/auditSinkSpec.libsonnet +++ /dev/null @@ -1,41 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='auditSinkSpec', url='', help='AuditSinkSpec holds the spec for the audit sink'), - '#policy':: d.obj(help='Policy defines the configuration of how audit events are logged'), - policy: { - '#withLevel':: d.fn(help='The Level that all requests are recorded at. available options: None, Metadata, Request, RequestResponse required', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { policy+: { level: level } }, - '#withStages':: d.fn(help='Stages is a list of stages for which events are created.', args=[d.arg(name='stages', type=d.T.array)]), - withStages(stages): { policy+: { stages: if std.isArray(v=stages) then stages else [stages] } }, - '#withStagesMixin':: d.fn(help='Stages is a list of stages for which events are created.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='stages', type=d.T.array)]), - withStagesMixin(stages): { policy+: { stages+: if std.isArray(v=stages) then stages else [stages] } } - }, - '#webhook':: d.obj(help='Webhook holds the configuration of the webhook'), - webhook: { - '#clientConfig':: d.obj(help='WebhookClientConfig contains the information to make a connection with the webhook'), - clientConfig: { - '#service':: d.obj(help='ServiceReference holds a reference to Service.legacy.k8s.io'), - service: { - '#withName':: d.fn(help='`name` is the name of the service. Required', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { webhook+: { clientConfig+: { service+: { name: name } } } }, - '#withNamespace':: d.fn(help='`namespace` is the namespace of the service. Required', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { webhook+: { clientConfig+: { service+: { namespace: namespace } } } }, - '#withPath':: d.fn(help='`path` is an optional URL path which will be sent in any request to this service.', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { webhook+: { clientConfig+: { service+: { path: path } } } } - }, - '#withCaBundle':: d.fn(help="`caBundle` is a PEM encoded CA bundle which will be used to validate the webhook's server certificate. If unspecified, system trust roots on the apiserver are used.", args=[d.arg(name='caBundle', type=d.T.string)]), - withCaBundle(caBundle): { webhook+: { clientConfig+: { caBundle: caBundle } } }, - '#withUrl':: d.fn(help='`url` gives the location of the webhook, in standard URL form (`scheme://host:port/path`). Exactly one of `url` or `service` must be specified.\n\nThe `host` should not refer to a service running in the cluster; use the `service` field instead. The host might be resolved via external DNS in some apiservers (e.g., `kube-apiserver` cannot resolve in-cluster DNS as that would be a layering violation). `host` may also be an IP address.\n\nPlease note that using `localhost` or `127.0.0.1` as a `host` is risky unless you take great care to run this webhook on all hosts which run an apiserver which might need to make calls to this webhook. Such installs are likely to be non-portable, i.e., not easy to turn up in a new cluster.\n\nThe scheme must be "https"; the URL must begin with "https://".\n\nA path is optional, and if present may be any string permissible in a URL. You may use the path to pass an arbitrary string to the webhook, for example, a cluster identifier.\n\nAttempting to use a user or basic auth e.g. "user:password@" is not allowed. Fragments ("#...") and query parameters ("?...") are not allowed, either.', args=[d.arg(name='url', type=d.T.string)]), - withUrl(url): { webhook+: { clientConfig+: { url: url } } } - }, - '#throttle':: d.obj(help='WebhookThrottleConfig holds the configuration for throttling events'), - throttle: { - '#withBurst':: d.fn(help='ThrottleBurst is the maximum number of events sent at the same moment default 15 QPS', args=[d.arg(name='burst', type=d.T.integer)]), - withBurst(burst): { webhook+: { throttle+: { burst: burst } } }, - '#withQps':: d.fn(help='ThrottleQPS maximum number of batches per second default 10 QPS', args=[d.arg(name='qps', type=d.T.integer)]), - withQps(qps): { webhook+: { throttle+: { qps: qps } } } - } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/auditregistration/v1alpha1/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/auditregistration/v1alpha1/main.libsonnet deleted file mode 100644 index 18a207cdc56f..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/auditregistration/v1alpha1/main.libsonnet +++ /dev/null @@ -1,11 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1alpha1', url='', help=''), - auditSink: (import 'auditSink.libsonnet'), - auditSinkSpec: (import 'auditSinkSpec.libsonnet'), - policy: (import 'policy.libsonnet'), - serviceReference: (import 'serviceReference.libsonnet'), - webhook: (import 'webhook.libsonnet'), - webhookClientConfig: (import 'webhookClientConfig.libsonnet'), - webhookThrottleConfig: (import 'webhookThrottleConfig.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/auditregistration/v1alpha1/policy.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/auditregistration/v1alpha1/policy.libsonnet deleted file mode 100644 index c75a16c9832b..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/auditregistration/v1alpha1/policy.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='policy', url='', help='Policy defines the configuration of how audit events are logged'), - '#withLevel':: d.fn(help='The Level that all requests are recorded at. available options: None, Metadata, Request, RequestResponse required', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { level: level }, - '#withStages':: d.fn(help='Stages is a list of stages for which events are created.', args=[d.arg(name='stages', type=d.T.array)]), - withStages(stages): { stages: if std.isArray(v=stages) then stages else [stages] }, - '#withStagesMixin':: d.fn(help='Stages is a list of stages for which events are created.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='stages', type=d.T.array)]), - withStagesMixin(stages): { stages+: if std.isArray(v=stages) then stages else [stages] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/auditregistration/v1alpha1/serviceReference.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/auditregistration/v1alpha1/serviceReference.libsonnet deleted file mode 100644 index 6e7ca9523d89..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/auditregistration/v1alpha1/serviceReference.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='serviceReference', url='', help='ServiceReference holds a reference to Service.legacy.k8s.io'), - '#withName':: d.fn(help='`name` is the name of the service. Required', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withNamespace':: d.fn(help='`namespace` is the namespace of the service. Required', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { namespace: namespace }, - '#withPath':: d.fn(help='`path` is an optional URL path which will be sent in any request to this service.', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { path: path }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/auditregistration/v1alpha1/webhook.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/auditregistration/v1alpha1/webhook.libsonnet deleted file mode 100644 index 8aed669ea641..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/auditregistration/v1alpha1/webhook.libsonnet +++ /dev/null @@ -1,29 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='webhook', url='', help='Webhook holds the configuration of the webhook'), - '#clientConfig':: d.obj(help='WebhookClientConfig contains the information to make a connection with the webhook'), - clientConfig: { - '#service':: d.obj(help='ServiceReference holds a reference to Service.legacy.k8s.io'), - service: { - '#withName':: d.fn(help='`name` is the name of the service. Required', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { clientConfig+: { service+: { name: name } } }, - '#withNamespace':: d.fn(help='`namespace` is the namespace of the service. Required', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { clientConfig+: { service+: { namespace: namespace } } }, - '#withPath':: d.fn(help='`path` is an optional URL path which will be sent in any request to this service.', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { clientConfig+: { service+: { path: path } } } - }, - '#withCaBundle':: d.fn(help="`caBundle` is a PEM encoded CA bundle which will be used to validate the webhook's server certificate. If unspecified, system trust roots on the apiserver are used.", args=[d.arg(name='caBundle', type=d.T.string)]), - withCaBundle(caBundle): { clientConfig+: { caBundle: caBundle } }, - '#withUrl':: d.fn(help='`url` gives the location of the webhook, in standard URL form (`scheme://host:port/path`). Exactly one of `url` or `service` must be specified.\n\nThe `host` should not refer to a service running in the cluster; use the `service` field instead. The host might be resolved via external DNS in some apiservers (e.g., `kube-apiserver` cannot resolve in-cluster DNS as that would be a layering violation). `host` may also be an IP address.\n\nPlease note that using `localhost` or `127.0.0.1` as a `host` is risky unless you take great care to run this webhook on all hosts which run an apiserver which might need to make calls to this webhook. Such installs are likely to be non-portable, i.e., not easy to turn up in a new cluster.\n\nThe scheme must be "https"; the URL must begin with "https://".\n\nA path is optional, and if present may be any string permissible in a URL. You may use the path to pass an arbitrary string to the webhook, for example, a cluster identifier.\n\nAttempting to use a user or basic auth e.g. "user:password@" is not allowed. Fragments ("#...") and query parameters ("?...") are not allowed, either.', args=[d.arg(name='url', type=d.T.string)]), - withUrl(url): { clientConfig+: { url: url } } - }, - '#throttle':: d.obj(help='WebhookThrottleConfig holds the configuration for throttling events'), - throttle: { - '#withBurst':: d.fn(help='ThrottleBurst is the maximum number of events sent at the same moment default 15 QPS', args=[d.arg(name='burst', type=d.T.integer)]), - withBurst(burst): { throttle+: { burst: burst } }, - '#withQps':: d.fn(help='ThrottleQPS maximum number of batches per second default 10 QPS', args=[d.arg(name='qps', type=d.T.integer)]), - withQps(qps): { throttle+: { qps: qps } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/auditregistration/v1alpha1/webhookClientConfig.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/auditregistration/v1alpha1/webhookClientConfig.libsonnet deleted file mode 100644 index cc99498396f5..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/auditregistration/v1alpha1/webhookClientConfig.libsonnet +++ /dev/null @@ -1,19 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='webhookClientConfig', url='', help='WebhookClientConfig contains the information to make a connection with the webhook'), - '#service':: d.obj(help='ServiceReference holds a reference to Service.legacy.k8s.io'), - service: { - '#withName':: d.fn(help='`name` is the name of the service. Required', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { service+: { name: name } }, - '#withNamespace':: d.fn(help='`namespace` is the namespace of the service. Required', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { service+: { namespace: namespace } }, - '#withPath':: d.fn(help='`path` is an optional URL path which will be sent in any request to this service.', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { service+: { path: path } } - }, - '#withCaBundle':: d.fn(help="`caBundle` is a PEM encoded CA bundle which will be used to validate the webhook's server certificate. If unspecified, system trust roots on the apiserver are used.", args=[d.arg(name='caBundle', type=d.T.string)]), - withCaBundle(caBundle): { caBundle: caBundle }, - '#withUrl':: d.fn(help='`url` gives the location of the webhook, in standard URL form (`scheme://host:port/path`). Exactly one of `url` or `service` must be specified.\n\nThe `host` should not refer to a service running in the cluster; use the `service` field instead. The host might be resolved via external DNS in some apiservers (e.g., `kube-apiserver` cannot resolve in-cluster DNS as that would be a layering violation). `host` may also be an IP address.\n\nPlease note that using `localhost` or `127.0.0.1` as a `host` is risky unless you take great care to run this webhook on all hosts which run an apiserver which might need to make calls to this webhook. Such installs are likely to be non-portable, i.e., not easy to turn up in a new cluster.\n\nThe scheme must be "https"; the URL must begin with "https://".\n\nA path is optional, and if present may be any string permissible in a URL. You may use the path to pass an arbitrary string to the webhook, for example, a cluster identifier.\n\nAttempting to use a user or basic auth e.g. "user:password@" is not allowed. Fragments ("#...") and query parameters ("?...") are not allowed, either.', args=[d.arg(name='url', type=d.T.string)]), - withUrl(url): { url: url }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/auditregistration/v1alpha1/webhookThrottleConfig.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/auditregistration/v1alpha1/webhookThrottleConfig.libsonnet deleted file mode 100644 index ff1d1d82fb78..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/auditregistration/v1alpha1/webhookThrottleConfig.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='webhookThrottleConfig', url='', help='WebhookThrottleConfig holds the configuration for throttling events'), - '#withBurst':: d.fn(help='ThrottleBurst is the maximum number of events sent at the same moment default 15 QPS', args=[d.arg(name='burst', type=d.T.integer)]), - withBurst(burst): { burst: burst }, - '#withQps':: d.fn(help='ThrottleQPS maximum number of batches per second default 10 QPS', args=[d.arg(name='qps', type=d.T.integer)]), - withQps(qps): { qps: qps }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authentication/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authentication/main.libsonnet deleted file mode 100644 index c79eb907df88..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authentication/main.libsonnet +++ /dev/null @@ -1,6 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='authentication', url='', help=''), - v1: (import 'v1/main.libsonnet'), - v1beta1: (import 'v1beta1/main.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authentication/v1/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authentication/v1/main.libsonnet deleted file mode 100644 index ee86fa99e14f..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authentication/v1/main.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1', url='', help=''), - tokenReview: (import 'tokenReview.libsonnet'), - tokenReviewSpec: (import 'tokenReviewSpec.libsonnet'), - tokenReviewStatus: (import 'tokenReviewStatus.libsonnet'), - userInfo: (import 'userInfo.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authentication/v1/tokenReview.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authentication/v1/tokenReview.libsonnet deleted file mode 100644 index 34c44dda2a84..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authentication/v1/tokenReview.libsonnet +++ /dev/null @@ -1,102 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='tokenReview', url='', help='TokenReview attempts to authenticate a token to a known user. Note: TokenReview requests may be cached by the webhook token authenticator plugin in the kube-apiserver.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Tokenreview', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'authentication.k8s.io/v1', - kind: 'TokenReview' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='TokenReviewSpec is a description of the token authentication request.'), - spec: { - '#withAudiences':: d.fn(help='Audiences is a list of the identifiers that the resource server presented with the token identifies as. Audience-aware token authenticators will verify that the token was intended for at least one of the audiences in this list. If no audiences are provided, the audience will default to the audience of the Kubernetes apiserver.', args=[d.arg(name='audiences', type=d.T.array)]), - withAudiences(audiences): { spec+: { audiences: if std.isArray(v=audiences) then audiences else [audiences] } }, - '#withAudiencesMixin':: d.fn(help='Audiences is a list of the identifiers that the resource server presented with the token identifies as. Audience-aware token authenticators will verify that the token was intended for at least one of the audiences in this list. If no audiences are provided, the audience will default to the audience of the Kubernetes apiserver.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='audiences', type=d.T.array)]), - withAudiencesMixin(audiences): { spec+: { audiences+: if std.isArray(v=audiences) then audiences else [audiences] } }, - '#withToken':: d.fn(help='Token is the opaque bearer token.', args=[d.arg(name='token', type=d.T.string)]), - withToken(token): { spec+: { token: token } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authentication/v1/tokenReviewSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authentication/v1/tokenReviewSpec.libsonnet deleted file mode 100644 index 907e56c7f4bb..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authentication/v1/tokenReviewSpec.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='tokenReviewSpec', url='', help='TokenReviewSpec is a description of the token authentication request.'), - '#withAudiences':: d.fn(help='Audiences is a list of the identifiers that the resource server presented with the token identifies as. Audience-aware token authenticators will verify that the token was intended for at least one of the audiences in this list. If no audiences are provided, the audience will default to the audience of the Kubernetes apiserver.', args=[d.arg(name='audiences', type=d.T.array)]), - withAudiences(audiences): { audiences: if std.isArray(v=audiences) then audiences else [audiences] }, - '#withAudiencesMixin':: d.fn(help='Audiences is a list of the identifiers that the resource server presented with the token identifies as. Audience-aware token authenticators will verify that the token was intended for at least one of the audiences in this list. If no audiences are provided, the audience will default to the audience of the Kubernetes apiserver.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='audiences', type=d.T.array)]), - withAudiencesMixin(audiences): { audiences+: if std.isArray(v=audiences) then audiences else [audiences] }, - '#withToken':: d.fn(help='Token is the opaque bearer token.', args=[d.arg(name='token', type=d.T.string)]), - withToken(token): { token: token }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authentication/v1/tokenReviewStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authentication/v1/tokenReviewStatus.libsonnet deleted file mode 100644 index 778f041a1e68..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authentication/v1/tokenReviewStatus.libsonnet +++ /dev/null @@ -1,29 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='tokenReviewStatus', url='', help='TokenReviewStatus is the result of the token authentication request.'), - '#user':: d.obj(help='UserInfo holds the information about the user needed to implement the user.Info interface.'), - user: { - '#withExtra':: d.fn(help='Any additional information provided by the authenticator.', args=[d.arg(name='extra', type=d.T.object)]), - withExtra(extra): { user+: { extra: extra } }, - '#withExtraMixin':: d.fn(help='Any additional information provided by the authenticator.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='extra', type=d.T.object)]), - withExtraMixin(extra): { user+: { extra+: extra } }, - '#withGroups':: d.fn(help='The names of groups this user is a part of.', args=[d.arg(name='groups', type=d.T.array)]), - withGroups(groups): { user+: { groups: if std.isArray(v=groups) then groups else [groups] } }, - '#withGroupsMixin':: d.fn(help='The names of groups this user is a part of.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='groups', type=d.T.array)]), - withGroupsMixin(groups): { user+: { groups+: if std.isArray(v=groups) then groups else [groups] } }, - '#withUid':: d.fn(help='A unique value that identifies this user across time. If this user is deleted and another user by the same name is added, they will have different UIDs.', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { user+: { uid: uid } }, - '#withUsername':: d.fn(help='The name that uniquely identifies this user among all active users.', args=[d.arg(name='username', type=d.T.string)]), - withUsername(username): { user+: { username: username } } - }, - '#withAudiences':: d.fn(help="Audiences are audience identifiers chosen by the authenticator that are compatible with both the TokenReview and token. An identifier is any identifier in the intersection of the TokenReviewSpec audiences and the token's audiences. A client of the TokenReview API that sets the spec.audiences field should validate that a compatible audience identifier is returned in the status.audiences field to ensure that the TokenReview server is audience aware. If a TokenReview returns an empty status.audience field where status.authenticated is 'true', the token is valid against the audience of the Kubernetes API server.", args=[d.arg(name='audiences', type=d.T.array)]), - withAudiences(audiences): { audiences: if std.isArray(v=audiences) then audiences else [audiences] }, - '#withAudiencesMixin':: d.fn(help="Audiences are audience identifiers chosen by the authenticator that are compatible with both the TokenReview and token. An identifier is any identifier in the intersection of the TokenReviewSpec audiences and the token's audiences. A client of the TokenReview API that sets the spec.audiences field should validate that a compatible audience identifier is returned in the status.audiences field to ensure that the TokenReview server is audience aware. If a TokenReview returns an empty status.audience field where status.authenticated is 'true', the token is valid against the audience of the Kubernetes API server.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='audiences', type=d.T.array)]), - withAudiencesMixin(audiences): { audiences+: if std.isArray(v=audiences) then audiences else [audiences] }, - '#withAuthenticated':: d.fn(help='Authenticated indicates that the token was associated with a known user.', args=[d.arg(name='authenticated', type=d.T.boolean)]), - withAuthenticated(authenticated): { authenticated: authenticated }, - '#withError':: d.fn(help="Error indicates that the token couldn't be checked", args=[d.arg(name='err', type=d.T.string)]), - withError(err): { 'error': err }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authentication/v1/userInfo.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authentication/v1/userInfo.libsonnet deleted file mode 100644 index 06347bb70f18..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authentication/v1/userInfo.libsonnet +++ /dev/null @@ -1,18 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='userInfo', url='', help='UserInfo holds the information about the user needed to implement the user.Info interface.'), - '#withExtra':: d.fn(help='Any additional information provided by the authenticator.', args=[d.arg(name='extra', type=d.T.object)]), - withExtra(extra): { extra: extra }, - '#withExtraMixin':: d.fn(help='Any additional information provided by the authenticator.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='extra', type=d.T.object)]), - withExtraMixin(extra): { extra+: extra }, - '#withGroups':: d.fn(help='The names of groups this user is a part of.', args=[d.arg(name='groups', type=d.T.array)]), - withGroups(groups): { groups: if std.isArray(v=groups) then groups else [groups] }, - '#withGroupsMixin':: d.fn(help='The names of groups this user is a part of.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='groups', type=d.T.array)]), - withGroupsMixin(groups): { groups+: if std.isArray(v=groups) then groups else [groups] }, - '#withUid':: d.fn(help='A unique value that identifies this user across time. If this user is deleted and another user by the same name is added, they will have different UIDs.', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { uid: uid }, - '#withUsername':: d.fn(help='The name that uniquely identifies this user among all active users.', args=[d.arg(name='username', type=d.T.string)]), - withUsername(username): { username: username }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authentication/v1beta1/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authentication/v1beta1/main.libsonnet deleted file mode 100644 index 1078213dc46e..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authentication/v1beta1/main.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1beta1', url='', help=''), - tokenReview: (import 'tokenReview.libsonnet'), - tokenReviewSpec: (import 'tokenReviewSpec.libsonnet'), - tokenReviewStatus: (import 'tokenReviewStatus.libsonnet'), - userInfo: (import 'userInfo.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authentication/v1beta1/tokenReview.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authentication/v1beta1/tokenReview.libsonnet deleted file mode 100644 index a4da965e9f2d..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authentication/v1beta1/tokenReview.libsonnet +++ /dev/null @@ -1,102 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='tokenReview', url='', help='TokenReview attempts to authenticate a token to a known user. Note: TokenReview requests may be cached by the webhook token authenticator plugin in the kube-apiserver.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Tokenreview', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'authentication.k8s.io/v1beta1', - kind: 'TokenReview' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='TokenReviewSpec is a description of the token authentication request.'), - spec: { - '#withAudiences':: d.fn(help='Audiences is a list of the identifiers that the resource server presented with the token identifies as. Audience-aware token authenticators will verify that the token was intended for at least one of the audiences in this list. If no audiences are provided, the audience will default to the audience of the Kubernetes apiserver.', args=[d.arg(name='audiences', type=d.T.array)]), - withAudiences(audiences): { spec+: { audiences: if std.isArray(v=audiences) then audiences else [audiences] } }, - '#withAudiencesMixin':: d.fn(help='Audiences is a list of the identifiers that the resource server presented with the token identifies as. Audience-aware token authenticators will verify that the token was intended for at least one of the audiences in this list. If no audiences are provided, the audience will default to the audience of the Kubernetes apiserver.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='audiences', type=d.T.array)]), - withAudiencesMixin(audiences): { spec+: { audiences+: if std.isArray(v=audiences) then audiences else [audiences] } }, - '#withToken':: d.fn(help='Token is the opaque bearer token.', args=[d.arg(name='token', type=d.T.string)]), - withToken(token): { spec+: { token: token } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authentication/v1beta1/tokenReviewSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authentication/v1beta1/tokenReviewSpec.libsonnet deleted file mode 100644 index 907e56c7f4bb..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authentication/v1beta1/tokenReviewSpec.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='tokenReviewSpec', url='', help='TokenReviewSpec is a description of the token authentication request.'), - '#withAudiences':: d.fn(help='Audiences is a list of the identifiers that the resource server presented with the token identifies as. Audience-aware token authenticators will verify that the token was intended for at least one of the audiences in this list. If no audiences are provided, the audience will default to the audience of the Kubernetes apiserver.', args=[d.arg(name='audiences', type=d.T.array)]), - withAudiences(audiences): { audiences: if std.isArray(v=audiences) then audiences else [audiences] }, - '#withAudiencesMixin':: d.fn(help='Audiences is a list of the identifiers that the resource server presented with the token identifies as. Audience-aware token authenticators will verify that the token was intended for at least one of the audiences in this list. If no audiences are provided, the audience will default to the audience of the Kubernetes apiserver.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='audiences', type=d.T.array)]), - withAudiencesMixin(audiences): { audiences+: if std.isArray(v=audiences) then audiences else [audiences] }, - '#withToken':: d.fn(help='Token is the opaque bearer token.', args=[d.arg(name='token', type=d.T.string)]), - withToken(token): { token: token }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authentication/v1beta1/tokenReviewStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authentication/v1beta1/tokenReviewStatus.libsonnet deleted file mode 100644 index 778f041a1e68..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authentication/v1beta1/tokenReviewStatus.libsonnet +++ /dev/null @@ -1,29 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='tokenReviewStatus', url='', help='TokenReviewStatus is the result of the token authentication request.'), - '#user':: d.obj(help='UserInfo holds the information about the user needed to implement the user.Info interface.'), - user: { - '#withExtra':: d.fn(help='Any additional information provided by the authenticator.', args=[d.arg(name='extra', type=d.T.object)]), - withExtra(extra): { user+: { extra: extra } }, - '#withExtraMixin':: d.fn(help='Any additional information provided by the authenticator.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='extra', type=d.T.object)]), - withExtraMixin(extra): { user+: { extra+: extra } }, - '#withGroups':: d.fn(help='The names of groups this user is a part of.', args=[d.arg(name='groups', type=d.T.array)]), - withGroups(groups): { user+: { groups: if std.isArray(v=groups) then groups else [groups] } }, - '#withGroupsMixin':: d.fn(help='The names of groups this user is a part of.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='groups', type=d.T.array)]), - withGroupsMixin(groups): { user+: { groups+: if std.isArray(v=groups) then groups else [groups] } }, - '#withUid':: d.fn(help='A unique value that identifies this user across time. If this user is deleted and another user by the same name is added, they will have different UIDs.', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { user+: { uid: uid } }, - '#withUsername':: d.fn(help='The name that uniquely identifies this user among all active users.', args=[d.arg(name='username', type=d.T.string)]), - withUsername(username): { user+: { username: username } } - }, - '#withAudiences':: d.fn(help="Audiences are audience identifiers chosen by the authenticator that are compatible with both the TokenReview and token. An identifier is any identifier in the intersection of the TokenReviewSpec audiences and the token's audiences. A client of the TokenReview API that sets the spec.audiences field should validate that a compatible audience identifier is returned in the status.audiences field to ensure that the TokenReview server is audience aware. If a TokenReview returns an empty status.audience field where status.authenticated is 'true', the token is valid against the audience of the Kubernetes API server.", args=[d.arg(name='audiences', type=d.T.array)]), - withAudiences(audiences): { audiences: if std.isArray(v=audiences) then audiences else [audiences] }, - '#withAudiencesMixin':: d.fn(help="Audiences are audience identifiers chosen by the authenticator that are compatible with both the TokenReview and token. An identifier is any identifier in the intersection of the TokenReviewSpec audiences and the token's audiences. A client of the TokenReview API that sets the spec.audiences field should validate that a compatible audience identifier is returned in the status.audiences field to ensure that the TokenReview server is audience aware. If a TokenReview returns an empty status.audience field where status.authenticated is 'true', the token is valid against the audience of the Kubernetes API server.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='audiences', type=d.T.array)]), - withAudiencesMixin(audiences): { audiences+: if std.isArray(v=audiences) then audiences else [audiences] }, - '#withAuthenticated':: d.fn(help='Authenticated indicates that the token was associated with a known user.', args=[d.arg(name='authenticated', type=d.T.boolean)]), - withAuthenticated(authenticated): { authenticated: authenticated }, - '#withError':: d.fn(help="Error indicates that the token couldn't be checked", args=[d.arg(name='err', type=d.T.string)]), - withError(err): { 'error': err }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authentication/v1beta1/userInfo.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authentication/v1beta1/userInfo.libsonnet deleted file mode 100644 index 06347bb70f18..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authentication/v1beta1/userInfo.libsonnet +++ /dev/null @@ -1,18 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='userInfo', url='', help='UserInfo holds the information about the user needed to implement the user.Info interface.'), - '#withExtra':: d.fn(help='Any additional information provided by the authenticator.', args=[d.arg(name='extra', type=d.T.object)]), - withExtra(extra): { extra: extra }, - '#withExtraMixin':: d.fn(help='Any additional information provided by the authenticator.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='extra', type=d.T.object)]), - withExtraMixin(extra): { extra+: extra }, - '#withGroups':: d.fn(help='The names of groups this user is a part of.', args=[d.arg(name='groups', type=d.T.array)]), - withGroups(groups): { groups: if std.isArray(v=groups) then groups else [groups] }, - '#withGroupsMixin':: d.fn(help='The names of groups this user is a part of.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='groups', type=d.T.array)]), - withGroupsMixin(groups): { groups+: if std.isArray(v=groups) then groups else [groups] }, - '#withUid':: d.fn(help='A unique value that identifies this user across time. If this user is deleted and another user by the same name is added, they will have different UIDs.', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { uid: uid }, - '#withUsername':: d.fn(help='The name that uniquely identifies this user among all active users.', args=[d.arg(name='username', type=d.T.string)]), - withUsername(username): { username: username }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/main.libsonnet deleted file mode 100644 index b3bc83c5cb2d..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/main.libsonnet +++ /dev/null @@ -1,6 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='authorization', url='', help=''), - v1: (import 'v1/main.libsonnet'), - v1beta1: (import 'v1beta1/main.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/localSubjectAccessReview.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/localSubjectAccessReview.libsonnet deleted file mode 100644 index 5c054b83fce6..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/localSubjectAccessReview.libsonnet +++ /dev/null @@ -1,132 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='localSubjectAccessReview', url='', help='LocalSubjectAccessReview checks whether or not a user or group can perform an action in a given namespace. Having a namespace scoped resource makes it much easier to grant namespace scoped policy that includes permissions checking.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Localsubjectaccessreview', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'authorization.k8s.io/v1', - kind: 'LocalSubjectAccessReview' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='SubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes must be set'), - spec: { - '#nonResourceAttributes':: d.obj(help='NonResourceAttributes includes the authorization attributes available for non-resource requests to the Authorizer interface'), - nonResourceAttributes: { - '#withPath':: d.fn(help='Path is the URL path of the request', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { spec+: { nonResourceAttributes+: { path: path } } }, - '#withVerb':: d.fn(help='Verb is the standard HTTP verb', args=[d.arg(name='verb', type=d.T.string)]), - withVerb(verb): { spec+: { nonResourceAttributes+: { verb: verb } } } - }, - '#resourceAttributes':: d.obj(help='ResourceAttributes includes the authorization attributes available for resource requests to the Authorizer interface'), - resourceAttributes: { - '#withGroup':: d.fn(help='Group is the API Group of the Resource. "*" means all.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { spec+: { resourceAttributes+: { group: group } } }, - '#withName':: d.fn(help='Name is the name of the resource being requested for a "get" or deleted for a "delete". "" (empty) means all.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { resourceAttributes+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace is the namespace of the action being requested. Currently, there is no distinction between no namespace and all namespaces "" (empty) is defaulted for LocalSubjectAccessReviews "" (empty) is empty for cluster-scoped resources "" (empty) means "all" for namespace scoped resources from a SubjectAccessReview or SelfSubjectAccessReview', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { resourceAttributes+: { namespace: namespace } } }, - '#withResource':: d.fn(help='Resource is one of the existing resource types. "*" means all.', args=[d.arg(name='resource', type=d.T.string)]), - withResource(resource): { spec+: { resourceAttributes+: { resource: resource } } }, - '#withSubresource':: d.fn(help='Subresource is one of the existing resource types. "" means none.', args=[d.arg(name='subresource', type=d.T.string)]), - withSubresource(subresource): { spec+: { resourceAttributes+: { subresource: subresource } } }, - '#withVerb':: d.fn(help='Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy. "*" means all.', args=[d.arg(name='verb', type=d.T.string)]), - withVerb(verb): { spec+: { resourceAttributes+: { verb: verb } } }, - '#withVersion':: d.fn(help='Version is the API Version of the Resource. "*" means all.', args=[d.arg(name='version', type=d.T.string)]), - withVersion(version): { spec+: { resourceAttributes+: { version: version } } } - }, - '#withExtra':: d.fn(help='Extra corresponds to the user.Info.GetExtra() method from the authenticator. Since that is input to the authorizer it needs a reflection here.', args=[d.arg(name='extra', type=d.T.object)]), - withExtra(extra): { spec+: { extra: extra } }, - '#withExtraMixin':: d.fn(help='Extra corresponds to the user.Info.GetExtra() method from the authenticator. Since that is input to the authorizer it needs a reflection here.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='extra', type=d.T.object)]), - withExtraMixin(extra): { spec+: { extra+: extra } }, - '#withGroups':: d.fn(help="Groups is the groups you're testing for.", args=[d.arg(name='groups', type=d.T.array)]), - withGroups(groups): { spec+: { groups: if std.isArray(v=groups) then groups else [groups] } }, - '#withGroupsMixin':: d.fn(help="Groups is the groups you're testing for.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='groups', type=d.T.array)]), - withGroupsMixin(groups): { spec+: { groups+: if std.isArray(v=groups) then groups else [groups] } }, - '#withUid':: d.fn(help='UID information about the requesting user.', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { uid: uid } }, - '#withUser':: d.fn(help="User is the user you're testing for. If you specify 'User' but not 'Groups', then is it interpreted as 'What if User were not a member of any groups", args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { user: user } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/main.libsonnet deleted file mode 100644 index deb1b1034031..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/main.libsonnet +++ /dev/null @@ -1,17 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1', url='', help=''), - localSubjectAccessReview: (import 'localSubjectAccessReview.libsonnet'), - nonResourceAttributes: (import 'nonResourceAttributes.libsonnet'), - nonResourceRule: (import 'nonResourceRule.libsonnet'), - resourceAttributes: (import 'resourceAttributes.libsonnet'), - resourceRule: (import 'resourceRule.libsonnet'), - selfSubjectAccessReview: (import 'selfSubjectAccessReview.libsonnet'), - selfSubjectAccessReviewSpec: (import 'selfSubjectAccessReviewSpec.libsonnet'), - selfSubjectRulesReview: (import 'selfSubjectRulesReview.libsonnet'), - selfSubjectRulesReviewSpec: (import 'selfSubjectRulesReviewSpec.libsonnet'), - subjectAccessReview: (import 'subjectAccessReview.libsonnet'), - subjectAccessReviewSpec: (import 'subjectAccessReviewSpec.libsonnet'), - subjectAccessReviewStatus: (import 'subjectAccessReviewStatus.libsonnet'), - subjectRulesReviewStatus: (import 'subjectRulesReviewStatus.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/nonResourceAttributes.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/nonResourceAttributes.libsonnet deleted file mode 100644 index a8c424545042..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/nonResourceAttributes.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='nonResourceAttributes', url='', help='NonResourceAttributes includes the authorization attributes available for non-resource requests to the Authorizer interface'), - '#withPath':: d.fn(help='Path is the URL path of the request', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { path: path }, - '#withVerb':: d.fn(help='Verb is the standard HTTP verb', args=[d.arg(name='verb', type=d.T.string)]), - withVerb(verb): { verb: verb }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/nonResourceRule.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/nonResourceRule.libsonnet deleted file mode 100644 index 5a81375a21c5..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/nonResourceRule.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='nonResourceRule', url='', help='NonResourceRule holds information that describes a rule for the non-resource'), - '#withNonResourceURLs':: d.fn(help='NonResourceURLs is a set of partial urls that a user should have access to. *s are allowed, but only as the full, final step in the path. "*" means all.', args=[d.arg(name='nonResourceURLs', type=d.T.array)]), - withNonResourceURLs(nonResourceURLs): { nonResourceURLs: if std.isArray(v=nonResourceURLs) then nonResourceURLs else [nonResourceURLs] }, - '#withNonResourceURLsMixin':: d.fn(help='NonResourceURLs is a set of partial urls that a user should have access to. *s are allowed, but only as the full, final step in the path. "*" means all.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nonResourceURLs', type=d.T.array)]), - withNonResourceURLsMixin(nonResourceURLs): { nonResourceURLs+: if std.isArray(v=nonResourceURLs) then nonResourceURLs else [nonResourceURLs] }, - '#withVerbs':: d.fn(help='Verb is a list of kubernetes non-resource API verbs, like: get, post, put, delete, patch, head, options. "*" means all.', args=[d.arg(name='verbs', type=d.T.array)]), - withVerbs(verbs): { verbs: if std.isArray(v=verbs) then verbs else [verbs] }, - '#withVerbsMixin':: d.fn(help='Verb is a list of kubernetes non-resource API verbs, like: get, post, put, delete, patch, head, options. "*" means all.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='verbs', type=d.T.array)]), - withVerbsMixin(verbs): { verbs+: if std.isArray(v=verbs) then verbs else [verbs] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/resourceAttributes.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/resourceAttributes.libsonnet deleted file mode 100644 index d5762b3cf619..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/resourceAttributes.libsonnet +++ /dev/null @@ -1,20 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='resourceAttributes', url='', help='ResourceAttributes includes the authorization attributes available for resource requests to the Authorizer interface'), - '#withGroup':: d.fn(help='Group is the API Group of the Resource. "*" means all.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { group: group }, - '#withName':: d.fn(help='Name is the name of the resource being requested for a "get" or deleted for a "delete". "" (empty) means all.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withNamespace':: d.fn(help='Namespace is the namespace of the action being requested. Currently, there is no distinction between no namespace and all namespaces "" (empty) is defaulted for LocalSubjectAccessReviews "" (empty) is empty for cluster-scoped resources "" (empty) means "all" for namespace scoped resources from a SubjectAccessReview or SelfSubjectAccessReview', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { namespace: namespace }, - '#withResource':: d.fn(help='Resource is one of the existing resource types. "*" means all.', args=[d.arg(name='resource', type=d.T.string)]), - withResource(resource): { resource: resource }, - '#withSubresource':: d.fn(help='Subresource is one of the existing resource types. "" means none.', args=[d.arg(name='subresource', type=d.T.string)]), - withSubresource(subresource): { subresource: subresource }, - '#withVerb':: d.fn(help='Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy. "*" means all.', args=[d.arg(name='verb', type=d.T.string)]), - withVerb(verb): { verb: verb }, - '#withVersion':: d.fn(help='Version is the API Version of the Resource. "*" means all.', args=[d.arg(name='version', type=d.T.string)]), - withVersion(version): { version: version }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/resourceRule.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/resourceRule.libsonnet deleted file mode 100644 index fa883b7b2fa5..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/resourceRule.libsonnet +++ /dev/null @@ -1,22 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='resourceRule', url='', help="ResourceRule is the list of actions the subject is allowed to perform on resources. The list ordering isn't significant, may contain duplicates, and possibly be incomplete."), - '#withApiGroups':: d.fn(help='APIGroups is the name of the APIGroup that contains the resources. If multiple API groups are specified, any action requested against one of the enumerated resources in any API group will be allowed. "*" means all.', args=[d.arg(name='apiGroups', type=d.T.array)]), - withApiGroups(apiGroups): { apiGroups: if std.isArray(v=apiGroups) then apiGroups else [apiGroups] }, - '#withApiGroupsMixin':: d.fn(help='APIGroups is the name of the APIGroup that contains the resources. If multiple API groups are specified, any action requested against one of the enumerated resources in any API group will be allowed. "*" means all.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='apiGroups', type=d.T.array)]), - withApiGroupsMixin(apiGroups): { apiGroups+: if std.isArray(v=apiGroups) then apiGroups else [apiGroups] }, - '#withResourceNames':: d.fn(help='ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed. "*" means all.', args=[d.arg(name='resourceNames', type=d.T.array)]), - withResourceNames(resourceNames): { resourceNames: if std.isArray(v=resourceNames) then resourceNames else [resourceNames] }, - '#withResourceNamesMixin':: d.fn(help='ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed. "*" means all.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='resourceNames', type=d.T.array)]), - withResourceNamesMixin(resourceNames): { resourceNames+: if std.isArray(v=resourceNames) then resourceNames else [resourceNames] }, - '#withResources':: d.fn(help="Resources is a list of resources this rule applies to. '*' means all in the specified apiGroups.\n '*/foo' represents the subresource 'foo' for all resources in the specified apiGroups.", args=[d.arg(name='resources', type=d.T.array)]), - withResources(resources): { resources: if std.isArray(v=resources) then resources else [resources] }, - '#withResourcesMixin':: d.fn(help="Resources is a list of resources this rule applies to. '*' means all in the specified apiGroups.\n '*/foo' represents the subresource 'foo' for all resources in the specified apiGroups.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='resources', type=d.T.array)]), - withResourcesMixin(resources): { resources+: if std.isArray(v=resources) then resources else [resources] }, - '#withVerbs':: d.fn(help='Verb is a list of kubernetes resource API verbs, like: get, list, watch, create, update, delete, proxy. "*" means all.', args=[d.arg(name='verbs', type=d.T.array)]), - withVerbs(verbs): { verbs: if std.isArray(v=verbs) then verbs else [verbs] }, - '#withVerbsMixin':: d.fn(help='Verb is a list of kubernetes resource API verbs, like: get, list, watch, create, update, delete, proxy. "*" means all.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='verbs', type=d.T.array)]), - withVerbsMixin(verbs): { verbs+: if std.isArray(v=verbs) then verbs else [verbs] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/selfSubjectAccessReview.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/selfSubjectAccessReview.libsonnet deleted file mode 100644 index dfcde44e00c8..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/selfSubjectAccessReview.libsonnet +++ /dev/null @@ -1,120 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='selfSubjectAccessReview', url='', help='SelfSubjectAccessReview checks whether or the current user can perform an action. Not filling in a spec.namespace means "in all namespaces". Self is a special case, because users should always be able to check whether they can perform an action'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Selfsubjectaccessreview', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'authorization.k8s.io/v1', - kind: 'SelfSubjectAccessReview' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='SelfSubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes must be set'), - spec: { - '#nonResourceAttributes':: d.obj(help='NonResourceAttributes includes the authorization attributes available for non-resource requests to the Authorizer interface'), - nonResourceAttributes: { - '#withPath':: d.fn(help='Path is the URL path of the request', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { spec+: { nonResourceAttributes+: { path: path } } }, - '#withVerb':: d.fn(help='Verb is the standard HTTP verb', args=[d.arg(name='verb', type=d.T.string)]), - withVerb(verb): { spec+: { nonResourceAttributes+: { verb: verb } } } - }, - '#resourceAttributes':: d.obj(help='ResourceAttributes includes the authorization attributes available for resource requests to the Authorizer interface'), - resourceAttributes: { - '#withGroup':: d.fn(help='Group is the API Group of the Resource. "*" means all.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { spec+: { resourceAttributes+: { group: group } } }, - '#withName':: d.fn(help='Name is the name of the resource being requested for a "get" or deleted for a "delete". "" (empty) means all.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { resourceAttributes+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace is the namespace of the action being requested. Currently, there is no distinction between no namespace and all namespaces "" (empty) is defaulted for LocalSubjectAccessReviews "" (empty) is empty for cluster-scoped resources "" (empty) means "all" for namespace scoped resources from a SubjectAccessReview or SelfSubjectAccessReview', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { resourceAttributes+: { namespace: namespace } } }, - '#withResource':: d.fn(help='Resource is one of the existing resource types. "*" means all.', args=[d.arg(name='resource', type=d.T.string)]), - withResource(resource): { spec+: { resourceAttributes+: { resource: resource } } }, - '#withSubresource':: d.fn(help='Subresource is one of the existing resource types. "" means none.', args=[d.arg(name='subresource', type=d.T.string)]), - withSubresource(subresource): { spec+: { resourceAttributes+: { subresource: subresource } } }, - '#withVerb':: d.fn(help='Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy. "*" means all.', args=[d.arg(name='verb', type=d.T.string)]), - withVerb(verb): { spec+: { resourceAttributes+: { verb: verb } } }, - '#withVersion':: d.fn(help='Version is the API Version of the Resource. "*" means all.', args=[d.arg(name='version', type=d.T.string)]), - withVersion(version): { spec+: { resourceAttributes+: { version: version } } } - } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/selfSubjectAccessReviewSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/selfSubjectAccessReviewSpec.libsonnet deleted file mode 100644 index 571e9bb5ead6..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/selfSubjectAccessReviewSpec.libsonnet +++ /dev/null @@ -1,30 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='selfSubjectAccessReviewSpec', url='', help='SelfSubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes must be set'), - '#nonResourceAttributes':: d.obj(help='NonResourceAttributes includes the authorization attributes available for non-resource requests to the Authorizer interface'), - nonResourceAttributes: { - '#withPath':: d.fn(help='Path is the URL path of the request', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { nonResourceAttributes+: { path: path } }, - '#withVerb':: d.fn(help='Verb is the standard HTTP verb', args=[d.arg(name='verb', type=d.T.string)]), - withVerb(verb): { nonResourceAttributes+: { verb: verb } } - }, - '#resourceAttributes':: d.obj(help='ResourceAttributes includes the authorization attributes available for resource requests to the Authorizer interface'), - resourceAttributes: { - '#withGroup':: d.fn(help='Group is the API Group of the Resource. "*" means all.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { resourceAttributes+: { group: group } }, - '#withName':: d.fn(help='Name is the name of the resource being requested for a "get" or deleted for a "delete". "" (empty) means all.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { resourceAttributes+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace is the namespace of the action being requested. Currently, there is no distinction between no namespace and all namespaces "" (empty) is defaulted for LocalSubjectAccessReviews "" (empty) is empty for cluster-scoped resources "" (empty) means "all" for namespace scoped resources from a SubjectAccessReview or SelfSubjectAccessReview', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { resourceAttributes+: { namespace: namespace } }, - '#withResource':: d.fn(help='Resource is one of the existing resource types. "*" means all.', args=[d.arg(name='resource', type=d.T.string)]), - withResource(resource): { resourceAttributes+: { resource: resource } }, - '#withSubresource':: d.fn(help='Subresource is one of the existing resource types. "" means none.', args=[d.arg(name='subresource', type=d.T.string)]), - withSubresource(subresource): { resourceAttributes+: { subresource: subresource } }, - '#withVerb':: d.fn(help='Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy. "*" means all.', args=[d.arg(name='verb', type=d.T.string)]), - withVerb(verb): { resourceAttributes+: { verb: verb } }, - '#withVersion':: d.fn(help='Version is the API Version of the Resource. "*" means all.', args=[d.arg(name='version', type=d.T.string)]), - withVersion(version): { resourceAttributes+: { version: version } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/selfSubjectRulesReview.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/selfSubjectRulesReview.libsonnet deleted file mode 100644 index 2127c923deaf..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/selfSubjectRulesReview.libsonnet +++ /dev/null @@ -1,98 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='selfSubjectRulesReview', url='', help="SelfSubjectRulesReview enumerates the set of actions the current user can perform within a namespace. The returned list of actions may be incomplete depending on the server's authorization mode, and any errors experienced during the evaluation. SelfSubjectRulesReview should be used by UIs to show/hide actions, or to quickly let an end user reason about their permissions. It should NOT Be used by external systems to drive authorization decisions as this raises confused deputy, cache lifetime/revocation, and correctness concerns. SubjectAccessReview, and LocalAccessReview are the correct way to defer authorization decisions to the API server."), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Selfsubjectrulesreview', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'authorization.k8s.io/v1', - kind: 'SelfSubjectRulesReview' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help=''), - spec: { - '#withNamespace':: d.fn(help='Namespace to evaluate rules for. Required.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { namespace: namespace } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/selfSubjectRulesReviewSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/selfSubjectRulesReviewSpec.libsonnet deleted file mode 100644 index 91c607f39bf4..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/selfSubjectRulesReviewSpec.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='selfSubjectRulesReviewSpec', url='', help=''), - '#withNamespace':: d.fn(help='Namespace to evaluate rules for. Required.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { namespace: namespace }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/subjectAccessReview.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/subjectAccessReview.libsonnet deleted file mode 100644 index afbac2933888..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/subjectAccessReview.libsonnet +++ /dev/null @@ -1,132 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='subjectAccessReview', url='', help='SubjectAccessReview checks whether or not a user or group can perform an action.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Subjectaccessreview', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'authorization.k8s.io/v1', - kind: 'SubjectAccessReview' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='SubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes must be set'), - spec: { - '#nonResourceAttributes':: d.obj(help='NonResourceAttributes includes the authorization attributes available for non-resource requests to the Authorizer interface'), - nonResourceAttributes: { - '#withPath':: d.fn(help='Path is the URL path of the request', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { spec+: { nonResourceAttributes+: { path: path } } }, - '#withVerb':: d.fn(help='Verb is the standard HTTP verb', args=[d.arg(name='verb', type=d.T.string)]), - withVerb(verb): { spec+: { nonResourceAttributes+: { verb: verb } } } - }, - '#resourceAttributes':: d.obj(help='ResourceAttributes includes the authorization attributes available for resource requests to the Authorizer interface'), - resourceAttributes: { - '#withGroup':: d.fn(help='Group is the API Group of the Resource. "*" means all.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { spec+: { resourceAttributes+: { group: group } } }, - '#withName':: d.fn(help='Name is the name of the resource being requested for a "get" or deleted for a "delete". "" (empty) means all.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { resourceAttributes+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace is the namespace of the action being requested. Currently, there is no distinction between no namespace and all namespaces "" (empty) is defaulted for LocalSubjectAccessReviews "" (empty) is empty for cluster-scoped resources "" (empty) means "all" for namespace scoped resources from a SubjectAccessReview or SelfSubjectAccessReview', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { resourceAttributes+: { namespace: namespace } } }, - '#withResource':: d.fn(help='Resource is one of the existing resource types. "*" means all.', args=[d.arg(name='resource', type=d.T.string)]), - withResource(resource): { spec+: { resourceAttributes+: { resource: resource } } }, - '#withSubresource':: d.fn(help='Subresource is one of the existing resource types. "" means none.', args=[d.arg(name='subresource', type=d.T.string)]), - withSubresource(subresource): { spec+: { resourceAttributes+: { subresource: subresource } } }, - '#withVerb':: d.fn(help='Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy. "*" means all.', args=[d.arg(name='verb', type=d.T.string)]), - withVerb(verb): { spec+: { resourceAttributes+: { verb: verb } } }, - '#withVersion':: d.fn(help='Version is the API Version of the Resource. "*" means all.', args=[d.arg(name='version', type=d.T.string)]), - withVersion(version): { spec+: { resourceAttributes+: { version: version } } } - }, - '#withExtra':: d.fn(help='Extra corresponds to the user.Info.GetExtra() method from the authenticator. Since that is input to the authorizer it needs a reflection here.', args=[d.arg(name='extra', type=d.T.object)]), - withExtra(extra): { spec+: { extra: extra } }, - '#withExtraMixin':: d.fn(help='Extra corresponds to the user.Info.GetExtra() method from the authenticator. Since that is input to the authorizer it needs a reflection here.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='extra', type=d.T.object)]), - withExtraMixin(extra): { spec+: { extra+: extra } }, - '#withGroups':: d.fn(help="Groups is the groups you're testing for.", args=[d.arg(name='groups', type=d.T.array)]), - withGroups(groups): { spec+: { groups: if std.isArray(v=groups) then groups else [groups] } }, - '#withGroupsMixin':: d.fn(help="Groups is the groups you're testing for.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='groups', type=d.T.array)]), - withGroupsMixin(groups): { spec+: { groups+: if std.isArray(v=groups) then groups else [groups] } }, - '#withUid':: d.fn(help='UID information about the requesting user.', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { uid: uid } }, - '#withUser':: d.fn(help="User is the user you're testing for. If you specify 'User' but not 'Groups', then is it interpreted as 'What if User were not a member of any groups", args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { user: user } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/subjectAccessReviewSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/subjectAccessReviewSpec.libsonnet deleted file mode 100644 index 3568e1697214..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/subjectAccessReviewSpec.libsonnet +++ /dev/null @@ -1,42 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='subjectAccessReviewSpec', url='', help='SubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes must be set'), - '#nonResourceAttributes':: d.obj(help='NonResourceAttributes includes the authorization attributes available for non-resource requests to the Authorizer interface'), - nonResourceAttributes: { - '#withPath':: d.fn(help='Path is the URL path of the request', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { nonResourceAttributes+: { path: path } }, - '#withVerb':: d.fn(help='Verb is the standard HTTP verb', args=[d.arg(name='verb', type=d.T.string)]), - withVerb(verb): { nonResourceAttributes+: { verb: verb } } - }, - '#resourceAttributes':: d.obj(help='ResourceAttributes includes the authorization attributes available for resource requests to the Authorizer interface'), - resourceAttributes: { - '#withGroup':: d.fn(help='Group is the API Group of the Resource. "*" means all.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { resourceAttributes+: { group: group } }, - '#withName':: d.fn(help='Name is the name of the resource being requested for a "get" or deleted for a "delete". "" (empty) means all.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { resourceAttributes+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace is the namespace of the action being requested. Currently, there is no distinction between no namespace and all namespaces "" (empty) is defaulted for LocalSubjectAccessReviews "" (empty) is empty for cluster-scoped resources "" (empty) means "all" for namespace scoped resources from a SubjectAccessReview or SelfSubjectAccessReview', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { resourceAttributes+: { namespace: namespace } }, - '#withResource':: d.fn(help='Resource is one of the existing resource types. "*" means all.', args=[d.arg(name='resource', type=d.T.string)]), - withResource(resource): { resourceAttributes+: { resource: resource } }, - '#withSubresource':: d.fn(help='Subresource is one of the existing resource types. "" means none.', args=[d.arg(name='subresource', type=d.T.string)]), - withSubresource(subresource): { resourceAttributes+: { subresource: subresource } }, - '#withVerb':: d.fn(help='Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy. "*" means all.', args=[d.arg(name='verb', type=d.T.string)]), - withVerb(verb): { resourceAttributes+: { verb: verb } }, - '#withVersion':: d.fn(help='Version is the API Version of the Resource. "*" means all.', args=[d.arg(name='version', type=d.T.string)]), - withVersion(version): { resourceAttributes+: { version: version } } - }, - '#withExtra':: d.fn(help='Extra corresponds to the user.Info.GetExtra() method from the authenticator. Since that is input to the authorizer it needs a reflection here.', args=[d.arg(name='extra', type=d.T.object)]), - withExtra(extra): { extra: extra }, - '#withExtraMixin':: d.fn(help='Extra corresponds to the user.Info.GetExtra() method from the authenticator. Since that is input to the authorizer it needs a reflection here.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='extra', type=d.T.object)]), - withExtraMixin(extra): { extra+: extra }, - '#withGroups':: d.fn(help="Groups is the groups you're testing for.", args=[d.arg(name='groups', type=d.T.array)]), - withGroups(groups): { groups: if std.isArray(v=groups) then groups else [groups] }, - '#withGroupsMixin':: d.fn(help="Groups is the groups you're testing for.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='groups', type=d.T.array)]), - withGroupsMixin(groups): { groups+: if std.isArray(v=groups) then groups else [groups] }, - '#withUid':: d.fn(help='UID information about the requesting user.', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { uid: uid }, - '#withUser':: d.fn(help="User is the user you're testing for. If you specify 'User' but not 'Groups', then is it interpreted as 'What if User were not a member of any groups", args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { user: user }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/subjectAccessReviewStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/subjectAccessReviewStatus.libsonnet deleted file mode 100644 index 488446112ba6..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/subjectAccessReviewStatus.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='subjectAccessReviewStatus', url='', help='SubjectAccessReviewStatus'), - '#withAllowed':: d.fn(help='Allowed is required. True if the action would be allowed, false otherwise.', args=[d.arg(name='allowed', type=d.T.boolean)]), - withAllowed(allowed): { allowed: allowed }, - '#withDenied':: d.fn(help='Denied is optional. True if the action would be denied, otherwise false. If both allowed is false and denied is false, then the authorizer has no opinion on whether to authorize the action. Denied may not be true if Allowed is true.', args=[d.arg(name='denied', type=d.T.boolean)]), - withDenied(denied): { denied: denied }, - '#withEvaluationError':: d.fn(help='EvaluationError is an indication that some error occurred during the authorization check. It is entirely possible to get an error and be able to continue determine authorization status in spite of it. For instance, RBAC can be missing a role, but enough roles are still present and bound to reason about the request.', args=[d.arg(name='evaluationError', type=d.T.string)]), - withEvaluationError(evaluationError): { evaluationError: evaluationError }, - '#withReason':: d.fn(help='Reason is optional. It indicates why a request was allowed or denied.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/subjectRulesReviewStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/subjectRulesReviewStatus.libsonnet deleted file mode 100644 index 408e692ce01e..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1/subjectRulesReviewStatus.libsonnet +++ /dev/null @@ -1,18 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='subjectRulesReviewStatus', url='', help="SubjectRulesReviewStatus contains the result of a rules check. This check can be incomplete depending on the set of authorizers the server is configured with and any errors experienced during evaluation. Because authorization rules are additive, if a rule appears in a list it's safe to assume the subject has that permission, even if that list is incomplete."), - '#withEvaluationError':: d.fn(help="EvaluationError can appear in combination with Rules. It indicates an error occurred during rule evaluation, such as an authorizer that doesn't support rule evaluation, and that ResourceRules and/or NonResourceRules may be incomplete.", args=[d.arg(name='evaluationError', type=d.T.string)]), - withEvaluationError(evaluationError): { evaluationError: evaluationError }, - '#withIncomplete':: d.fn(help="Incomplete is true when the rules returned by this call are incomplete. This is most commonly encountered when an authorizer, such as an external authorizer, doesn't support rules evaluation.", args=[d.arg(name='incomplete', type=d.T.boolean)]), - withIncomplete(incomplete): { incomplete: incomplete }, - '#withNonResourceRules':: d.fn(help="NonResourceRules is the list of actions the subject is allowed to perform on non-resources. The list ordering isn't significant, may contain duplicates, and possibly be incomplete.", args=[d.arg(name='nonResourceRules', type=d.T.array)]), - withNonResourceRules(nonResourceRules): { nonResourceRules: if std.isArray(v=nonResourceRules) then nonResourceRules else [nonResourceRules] }, - '#withNonResourceRulesMixin':: d.fn(help="NonResourceRules is the list of actions the subject is allowed to perform on non-resources. The list ordering isn't significant, may contain duplicates, and possibly be incomplete.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nonResourceRules', type=d.T.array)]), - withNonResourceRulesMixin(nonResourceRules): { nonResourceRules+: if std.isArray(v=nonResourceRules) then nonResourceRules else [nonResourceRules] }, - '#withResourceRules':: d.fn(help="ResourceRules is the list of actions the subject is allowed to perform on resources. The list ordering isn't significant, may contain duplicates, and possibly be incomplete.", args=[d.arg(name='resourceRules', type=d.T.array)]), - withResourceRules(resourceRules): { resourceRules: if std.isArray(v=resourceRules) then resourceRules else [resourceRules] }, - '#withResourceRulesMixin':: d.fn(help="ResourceRules is the list of actions the subject is allowed to perform on resources. The list ordering isn't significant, may contain duplicates, and possibly be incomplete.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='resourceRules', type=d.T.array)]), - withResourceRulesMixin(resourceRules): { resourceRules+: if std.isArray(v=resourceRules) then resourceRules else [resourceRules] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/localSubjectAccessReview.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/localSubjectAccessReview.libsonnet deleted file mode 100644 index a10aa186eda6..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/localSubjectAccessReview.libsonnet +++ /dev/null @@ -1,132 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='localSubjectAccessReview', url='', help='LocalSubjectAccessReview checks whether or not a user or group can perform an action in a given namespace. Having a namespace scoped resource makes it much easier to grant namespace scoped policy that includes permissions checking.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Localsubjectaccessreview', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'authorization.k8s.io/v1beta1', - kind: 'LocalSubjectAccessReview' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='SubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes must be set'), - spec: { - '#nonResourceAttributes':: d.obj(help='NonResourceAttributes includes the authorization attributes available for non-resource requests to the Authorizer interface'), - nonResourceAttributes: { - '#withPath':: d.fn(help='Path is the URL path of the request', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { spec+: { nonResourceAttributes+: { path: path } } }, - '#withVerb':: d.fn(help='Verb is the standard HTTP verb', args=[d.arg(name='verb', type=d.T.string)]), - withVerb(verb): { spec+: { nonResourceAttributes+: { verb: verb } } } - }, - '#resourceAttributes':: d.obj(help='ResourceAttributes includes the authorization attributes available for resource requests to the Authorizer interface'), - resourceAttributes: { - '#withGroup':: d.fn(help='Group is the API Group of the Resource. "*" means all.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { spec+: { resourceAttributes+: { group: group } } }, - '#withName':: d.fn(help='Name is the name of the resource being requested for a "get" or deleted for a "delete". "" (empty) means all.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { resourceAttributes+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace is the namespace of the action being requested. Currently, there is no distinction between no namespace and all namespaces "" (empty) is defaulted for LocalSubjectAccessReviews "" (empty) is empty for cluster-scoped resources "" (empty) means "all" for namespace scoped resources from a SubjectAccessReview or SelfSubjectAccessReview', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { resourceAttributes+: { namespace: namespace } } }, - '#withResource':: d.fn(help='Resource is one of the existing resource types. "*" means all.', args=[d.arg(name='resource', type=d.T.string)]), - withResource(resource): { spec+: { resourceAttributes+: { resource: resource } } }, - '#withSubresource':: d.fn(help='Subresource is one of the existing resource types. "" means none.', args=[d.arg(name='subresource', type=d.T.string)]), - withSubresource(subresource): { spec+: { resourceAttributes+: { subresource: subresource } } }, - '#withVerb':: d.fn(help='Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy. "*" means all.', args=[d.arg(name='verb', type=d.T.string)]), - withVerb(verb): { spec+: { resourceAttributes+: { verb: verb } } }, - '#withVersion':: d.fn(help='Version is the API Version of the Resource. "*" means all.', args=[d.arg(name='version', type=d.T.string)]), - withVersion(version): { spec+: { resourceAttributes+: { version: version } } } - }, - '#withExtra':: d.fn(help='Extra corresponds to the user.Info.GetExtra() method from the authenticator. Since that is input to the authorizer it needs a reflection here.', args=[d.arg(name='extra', type=d.T.object)]), - withExtra(extra): { spec+: { extra: extra } }, - '#withExtraMixin':: d.fn(help='Extra corresponds to the user.Info.GetExtra() method from the authenticator. Since that is input to the authorizer it needs a reflection here.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='extra', type=d.T.object)]), - withExtraMixin(extra): { spec+: { extra+: extra } }, - '#withGroup':: d.fn(help="Groups is the groups you're testing for.", args=[d.arg(name='group', type=d.T.array)]), - withGroup(group): { spec+: { group: if std.isArray(v=group) then group else [group] } }, - '#withGroupMixin':: d.fn(help="Groups is the groups you're testing for.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='group', type=d.T.array)]), - withGroupMixin(group): { spec+: { group+: if std.isArray(v=group) then group else [group] } }, - '#withUid':: d.fn(help='UID information about the requesting user.', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { uid: uid } }, - '#withUser':: d.fn(help="User is the user you're testing for. If you specify 'User' but not 'Group', then is it interpreted as 'What if User were not a member of any groups", args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { user: user } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/main.libsonnet deleted file mode 100644 index 6d1e4f3648b9..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/main.libsonnet +++ /dev/null @@ -1,17 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1beta1', url='', help=''), - localSubjectAccessReview: (import 'localSubjectAccessReview.libsonnet'), - nonResourceAttributes: (import 'nonResourceAttributes.libsonnet'), - nonResourceRule: (import 'nonResourceRule.libsonnet'), - resourceAttributes: (import 'resourceAttributes.libsonnet'), - resourceRule: (import 'resourceRule.libsonnet'), - selfSubjectAccessReview: (import 'selfSubjectAccessReview.libsonnet'), - selfSubjectAccessReviewSpec: (import 'selfSubjectAccessReviewSpec.libsonnet'), - selfSubjectRulesReview: (import 'selfSubjectRulesReview.libsonnet'), - selfSubjectRulesReviewSpec: (import 'selfSubjectRulesReviewSpec.libsonnet'), - subjectAccessReview: (import 'subjectAccessReview.libsonnet'), - subjectAccessReviewSpec: (import 'subjectAccessReviewSpec.libsonnet'), - subjectAccessReviewStatus: (import 'subjectAccessReviewStatus.libsonnet'), - subjectRulesReviewStatus: (import 'subjectRulesReviewStatus.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/nonResourceAttributes.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/nonResourceAttributes.libsonnet deleted file mode 100644 index a8c424545042..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/nonResourceAttributes.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='nonResourceAttributes', url='', help='NonResourceAttributes includes the authorization attributes available for non-resource requests to the Authorizer interface'), - '#withPath':: d.fn(help='Path is the URL path of the request', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { path: path }, - '#withVerb':: d.fn(help='Verb is the standard HTTP verb', args=[d.arg(name='verb', type=d.T.string)]), - withVerb(verb): { verb: verb }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/nonResourceRule.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/nonResourceRule.libsonnet deleted file mode 100644 index 5a81375a21c5..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/nonResourceRule.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='nonResourceRule', url='', help='NonResourceRule holds information that describes a rule for the non-resource'), - '#withNonResourceURLs':: d.fn(help='NonResourceURLs is a set of partial urls that a user should have access to. *s are allowed, but only as the full, final step in the path. "*" means all.', args=[d.arg(name='nonResourceURLs', type=d.T.array)]), - withNonResourceURLs(nonResourceURLs): { nonResourceURLs: if std.isArray(v=nonResourceURLs) then nonResourceURLs else [nonResourceURLs] }, - '#withNonResourceURLsMixin':: d.fn(help='NonResourceURLs is a set of partial urls that a user should have access to. *s are allowed, but only as the full, final step in the path. "*" means all.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nonResourceURLs', type=d.T.array)]), - withNonResourceURLsMixin(nonResourceURLs): { nonResourceURLs+: if std.isArray(v=nonResourceURLs) then nonResourceURLs else [nonResourceURLs] }, - '#withVerbs':: d.fn(help='Verb is a list of kubernetes non-resource API verbs, like: get, post, put, delete, patch, head, options. "*" means all.', args=[d.arg(name='verbs', type=d.T.array)]), - withVerbs(verbs): { verbs: if std.isArray(v=verbs) then verbs else [verbs] }, - '#withVerbsMixin':: d.fn(help='Verb is a list of kubernetes non-resource API verbs, like: get, post, put, delete, patch, head, options. "*" means all.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='verbs', type=d.T.array)]), - withVerbsMixin(verbs): { verbs+: if std.isArray(v=verbs) then verbs else [verbs] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/resourceAttributes.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/resourceAttributes.libsonnet deleted file mode 100644 index d5762b3cf619..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/resourceAttributes.libsonnet +++ /dev/null @@ -1,20 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='resourceAttributes', url='', help='ResourceAttributes includes the authorization attributes available for resource requests to the Authorizer interface'), - '#withGroup':: d.fn(help='Group is the API Group of the Resource. "*" means all.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { group: group }, - '#withName':: d.fn(help='Name is the name of the resource being requested for a "get" or deleted for a "delete". "" (empty) means all.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withNamespace':: d.fn(help='Namespace is the namespace of the action being requested. Currently, there is no distinction between no namespace and all namespaces "" (empty) is defaulted for LocalSubjectAccessReviews "" (empty) is empty for cluster-scoped resources "" (empty) means "all" for namespace scoped resources from a SubjectAccessReview or SelfSubjectAccessReview', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { namespace: namespace }, - '#withResource':: d.fn(help='Resource is one of the existing resource types. "*" means all.', args=[d.arg(name='resource', type=d.T.string)]), - withResource(resource): { resource: resource }, - '#withSubresource':: d.fn(help='Subresource is one of the existing resource types. "" means none.', args=[d.arg(name='subresource', type=d.T.string)]), - withSubresource(subresource): { subresource: subresource }, - '#withVerb':: d.fn(help='Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy. "*" means all.', args=[d.arg(name='verb', type=d.T.string)]), - withVerb(verb): { verb: verb }, - '#withVersion':: d.fn(help='Version is the API Version of the Resource. "*" means all.', args=[d.arg(name='version', type=d.T.string)]), - withVersion(version): { version: version }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/resourceRule.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/resourceRule.libsonnet deleted file mode 100644 index fa883b7b2fa5..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/resourceRule.libsonnet +++ /dev/null @@ -1,22 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='resourceRule', url='', help="ResourceRule is the list of actions the subject is allowed to perform on resources. The list ordering isn't significant, may contain duplicates, and possibly be incomplete."), - '#withApiGroups':: d.fn(help='APIGroups is the name of the APIGroup that contains the resources. If multiple API groups are specified, any action requested against one of the enumerated resources in any API group will be allowed. "*" means all.', args=[d.arg(name='apiGroups', type=d.T.array)]), - withApiGroups(apiGroups): { apiGroups: if std.isArray(v=apiGroups) then apiGroups else [apiGroups] }, - '#withApiGroupsMixin':: d.fn(help='APIGroups is the name of the APIGroup that contains the resources. If multiple API groups are specified, any action requested against one of the enumerated resources in any API group will be allowed. "*" means all.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='apiGroups', type=d.T.array)]), - withApiGroupsMixin(apiGroups): { apiGroups+: if std.isArray(v=apiGroups) then apiGroups else [apiGroups] }, - '#withResourceNames':: d.fn(help='ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed. "*" means all.', args=[d.arg(name='resourceNames', type=d.T.array)]), - withResourceNames(resourceNames): { resourceNames: if std.isArray(v=resourceNames) then resourceNames else [resourceNames] }, - '#withResourceNamesMixin':: d.fn(help='ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed. "*" means all.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='resourceNames', type=d.T.array)]), - withResourceNamesMixin(resourceNames): { resourceNames+: if std.isArray(v=resourceNames) then resourceNames else [resourceNames] }, - '#withResources':: d.fn(help="Resources is a list of resources this rule applies to. '*' means all in the specified apiGroups.\n '*/foo' represents the subresource 'foo' for all resources in the specified apiGroups.", args=[d.arg(name='resources', type=d.T.array)]), - withResources(resources): { resources: if std.isArray(v=resources) then resources else [resources] }, - '#withResourcesMixin':: d.fn(help="Resources is a list of resources this rule applies to. '*' means all in the specified apiGroups.\n '*/foo' represents the subresource 'foo' for all resources in the specified apiGroups.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='resources', type=d.T.array)]), - withResourcesMixin(resources): { resources+: if std.isArray(v=resources) then resources else [resources] }, - '#withVerbs':: d.fn(help='Verb is a list of kubernetes resource API verbs, like: get, list, watch, create, update, delete, proxy. "*" means all.', args=[d.arg(name='verbs', type=d.T.array)]), - withVerbs(verbs): { verbs: if std.isArray(v=verbs) then verbs else [verbs] }, - '#withVerbsMixin':: d.fn(help='Verb is a list of kubernetes resource API verbs, like: get, list, watch, create, update, delete, proxy. "*" means all.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='verbs', type=d.T.array)]), - withVerbsMixin(verbs): { verbs+: if std.isArray(v=verbs) then verbs else [verbs] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/selfSubjectAccessReview.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/selfSubjectAccessReview.libsonnet deleted file mode 100644 index b9c4f329d8b1..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/selfSubjectAccessReview.libsonnet +++ /dev/null @@ -1,120 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='selfSubjectAccessReview', url='', help='SelfSubjectAccessReview checks whether or the current user can perform an action. Not filling in a spec.namespace means "in all namespaces". Self is a special case, because users should always be able to check whether they can perform an action'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Selfsubjectaccessreview', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'authorization.k8s.io/v1beta1', - kind: 'SelfSubjectAccessReview' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='SelfSubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes must be set'), - spec: { - '#nonResourceAttributes':: d.obj(help='NonResourceAttributes includes the authorization attributes available for non-resource requests to the Authorizer interface'), - nonResourceAttributes: { - '#withPath':: d.fn(help='Path is the URL path of the request', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { spec+: { nonResourceAttributes+: { path: path } } }, - '#withVerb':: d.fn(help='Verb is the standard HTTP verb', args=[d.arg(name='verb', type=d.T.string)]), - withVerb(verb): { spec+: { nonResourceAttributes+: { verb: verb } } } - }, - '#resourceAttributes':: d.obj(help='ResourceAttributes includes the authorization attributes available for resource requests to the Authorizer interface'), - resourceAttributes: { - '#withGroup':: d.fn(help='Group is the API Group of the Resource. "*" means all.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { spec+: { resourceAttributes+: { group: group } } }, - '#withName':: d.fn(help='Name is the name of the resource being requested for a "get" or deleted for a "delete". "" (empty) means all.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { resourceAttributes+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace is the namespace of the action being requested. Currently, there is no distinction between no namespace and all namespaces "" (empty) is defaulted for LocalSubjectAccessReviews "" (empty) is empty for cluster-scoped resources "" (empty) means "all" for namespace scoped resources from a SubjectAccessReview or SelfSubjectAccessReview', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { resourceAttributes+: { namespace: namespace } } }, - '#withResource':: d.fn(help='Resource is one of the existing resource types. "*" means all.', args=[d.arg(name='resource', type=d.T.string)]), - withResource(resource): { spec+: { resourceAttributes+: { resource: resource } } }, - '#withSubresource':: d.fn(help='Subresource is one of the existing resource types. "" means none.', args=[d.arg(name='subresource', type=d.T.string)]), - withSubresource(subresource): { spec+: { resourceAttributes+: { subresource: subresource } } }, - '#withVerb':: d.fn(help='Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy. "*" means all.', args=[d.arg(name='verb', type=d.T.string)]), - withVerb(verb): { spec+: { resourceAttributes+: { verb: verb } } }, - '#withVersion':: d.fn(help='Version is the API Version of the Resource. "*" means all.', args=[d.arg(name='version', type=d.T.string)]), - withVersion(version): { spec+: { resourceAttributes+: { version: version } } } - } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/selfSubjectAccessReviewSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/selfSubjectAccessReviewSpec.libsonnet deleted file mode 100644 index 571e9bb5ead6..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/selfSubjectAccessReviewSpec.libsonnet +++ /dev/null @@ -1,30 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='selfSubjectAccessReviewSpec', url='', help='SelfSubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes must be set'), - '#nonResourceAttributes':: d.obj(help='NonResourceAttributes includes the authorization attributes available for non-resource requests to the Authorizer interface'), - nonResourceAttributes: { - '#withPath':: d.fn(help='Path is the URL path of the request', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { nonResourceAttributes+: { path: path } }, - '#withVerb':: d.fn(help='Verb is the standard HTTP verb', args=[d.arg(name='verb', type=d.T.string)]), - withVerb(verb): { nonResourceAttributes+: { verb: verb } } - }, - '#resourceAttributes':: d.obj(help='ResourceAttributes includes the authorization attributes available for resource requests to the Authorizer interface'), - resourceAttributes: { - '#withGroup':: d.fn(help='Group is the API Group of the Resource. "*" means all.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { resourceAttributes+: { group: group } }, - '#withName':: d.fn(help='Name is the name of the resource being requested for a "get" or deleted for a "delete". "" (empty) means all.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { resourceAttributes+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace is the namespace of the action being requested. Currently, there is no distinction between no namespace and all namespaces "" (empty) is defaulted for LocalSubjectAccessReviews "" (empty) is empty for cluster-scoped resources "" (empty) means "all" for namespace scoped resources from a SubjectAccessReview or SelfSubjectAccessReview', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { resourceAttributes+: { namespace: namespace } }, - '#withResource':: d.fn(help='Resource is one of the existing resource types. "*" means all.', args=[d.arg(name='resource', type=d.T.string)]), - withResource(resource): { resourceAttributes+: { resource: resource } }, - '#withSubresource':: d.fn(help='Subresource is one of the existing resource types. "" means none.', args=[d.arg(name='subresource', type=d.T.string)]), - withSubresource(subresource): { resourceAttributes+: { subresource: subresource } }, - '#withVerb':: d.fn(help='Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy. "*" means all.', args=[d.arg(name='verb', type=d.T.string)]), - withVerb(verb): { resourceAttributes+: { verb: verb } }, - '#withVersion':: d.fn(help='Version is the API Version of the Resource. "*" means all.', args=[d.arg(name='version', type=d.T.string)]), - withVersion(version): { resourceAttributes+: { version: version } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/selfSubjectRulesReview.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/selfSubjectRulesReview.libsonnet deleted file mode 100644 index d61ab8bd5948..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/selfSubjectRulesReview.libsonnet +++ /dev/null @@ -1,98 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='selfSubjectRulesReview', url='', help="SelfSubjectRulesReview enumerates the set of actions the current user can perform within a namespace. The returned list of actions may be incomplete depending on the server's authorization mode, and any errors experienced during the evaluation. SelfSubjectRulesReview should be used by UIs to show/hide actions, or to quickly let an end user reason about their permissions. It should NOT Be used by external systems to drive authorization decisions as this raises confused deputy, cache lifetime/revocation, and correctness concerns. SubjectAccessReview, and LocalAccessReview are the correct way to defer authorization decisions to the API server."), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Selfsubjectrulesreview', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'authorization.k8s.io/v1beta1', - kind: 'SelfSubjectRulesReview' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help=''), - spec: { - '#withNamespace':: d.fn(help='Namespace to evaluate rules for. Required.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { namespace: namespace } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/selfSubjectRulesReviewSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/selfSubjectRulesReviewSpec.libsonnet deleted file mode 100644 index 91c607f39bf4..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/selfSubjectRulesReviewSpec.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='selfSubjectRulesReviewSpec', url='', help=''), - '#withNamespace':: d.fn(help='Namespace to evaluate rules for. Required.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { namespace: namespace }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/subjectAccessReview.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/subjectAccessReview.libsonnet deleted file mode 100644 index f5c63c6060ec..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/subjectAccessReview.libsonnet +++ /dev/null @@ -1,132 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='subjectAccessReview', url='', help='SubjectAccessReview checks whether or not a user or group can perform an action.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Subjectaccessreview', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'authorization.k8s.io/v1beta1', - kind: 'SubjectAccessReview' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='SubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes must be set'), - spec: { - '#nonResourceAttributes':: d.obj(help='NonResourceAttributes includes the authorization attributes available for non-resource requests to the Authorizer interface'), - nonResourceAttributes: { - '#withPath':: d.fn(help='Path is the URL path of the request', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { spec+: { nonResourceAttributes+: { path: path } } }, - '#withVerb':: d.fn(help='Verb is the standard HTTP verb', args=[d.arg(name='verb', type=d.T.string)]), - withVerb(verb): { spec+: { nonResourceAttributes+: { verb: verb } } } - }, - '#resourceAttributes':: d.obj(help='ResourceAttributes includes the authorization attributes available for resource requests to the Authorizer interface'), - resourceAttributes: { - '#withGroup':: d.fn(help='Group is the API Group of the Resource. "*" means all.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { spec+: { resourceAttributes+: { group: group } } }, - '#withName':: d.fn(help='Name is the name of the resource being requested for a "get" or deleted for a "delete". "" (empty) means all.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { resourceAttributes+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace is the namespace of the action being requested. Currently, there is no distinction between no namespace and all namespaces "" (empty) is defaulted for LocalSubjectAccessReviews "" (empty) is empty for cluster-scoped resources "" (empty) means "all" for namespace scoped resources from a SubjectAccessReview or SelfSubjectAccessReview', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { resourceAttributes+: { namespace: namespace } } }, - '#withResource':: d.fn(help='Resource is one of the existing resource types. "*" means all.', args=[d.arg(name='resource', type=d.T.string)]), - withResource(resource): { spec+: { resourceAttributes+: { resource: resource } } }, - '#withSubresource':: d.fn(help='Subresource is one of the existing resource types. "" means none.', args=[d.arg(name='subresource', type=d.T.string)]), - withSubresource(subresource): { spec+: { resourceAttributes+: { subresource: subresource } } }, - '#withVerb':: d.fn(help='Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy. "*" means all.', args=[d.arg(name='verb', type=d.T.string)]), - withVerb(verb): { spec+: { resourceAttributes+: { verb: verb } } }, - '#withVersion':: d.fn(help='Version is the API Version of the Resource. "*" means all.', args=[d.arg(name='version', type=d.T.string)]), - withVersion(version): { spec+: { resourceAttributes+: { version: version } } } - }, - '#withExtra':: d.fn(help='Extra corresponds to the user.Info.GetExtra() method from the authenticator. Since that is input to the authorizer it needs a reflection here.', args=[d.arg(name='extra', type=d.T.object)]), - withExtra(extra): { spec+: { extra: extra } }, - '#withExtraMixin':: d.fn(help='Extra corresponds to the user.Info.GetExtra() method from the authenticator. Since that is input to the authorizer it needs a reflection here.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='extra', type=d.T.object)]), - withExtraMixin(extra): { spec+: { extra+: extra } }, - '#withGroup':: d.fn(help="Groups is the groups you're testing for.", args=[d.arg(name='group', type=d.T.array)]), - withGroup(group): { spec+: { group: if std.isArray(v=group) then group else [group] } }, - '#withGroupMixin':: d.fn(help="Groups is the groups you're testing for.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='group', type=d.T.array)]), - withGroupMixin(group): { spec+: { group+: if std.isArray(v=group) then group else [group] } }, - '#withUid':: d.fn(help='UID information about the requesting user.', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { uid: uid } }, - '#withUser':: d.fn(help="User is the user you're testing for. If you specify 'User' but not 'Group', then is it interpreted as 'What if User were not a member of any groups", args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { user: user } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/subjectAccessReviewSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/subjectAccessReviewSpec.libsonnet deleted file mode 100644 index 3527c6974064..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/subjectAccessReviewSpec.libsonnet +++ /dev/null @@ -1,42 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='subjectAccessReviewSpec', url='', help='SubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes must be set'), - '#nonResourceAttributes':: d.obj(help='NonResourceAttributes includes the authorization attributes available for non-resource requests to the Authorizer interface'), - nonResourceAttributes: { - '#withPath':: d.fn(help='Path is the URL path of the request', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { nonResourceAttributes+: { path: path } }, - '#withVerb':: d.fn(help='Verb is the standard HTTP verb', args=[d.arg(name='verb', type=d.T.string)]), - withVerb(verb): { nonResourceAttributes+: { verb: verb } } - }, - '#resourceAttributes':: d.obj(help='ResourceAttributes includes the authorization attributes available for resource requests to the Authorizer interface'), - resourceAttributes: { - '#withGroup':: d.fn(help='Group is the API Group of the Resource. "*" means all.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { resourceAttributes+: { group: group } }, - '#withName':: d.fn(help='Name is the name of the resource being requested for a "get" or deleted for a "delete". "" (empty) means all.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { resourceAttributes+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace is the namespace of the action being requested. Currently, there is no distinction between no namespace and all namespaces "" (empty) is defaulted for LocalSubjectAccessReviews "" (empty) is empty for cluster-scoped resources "" (empty) means "all" for namespace scoped resources from a SubjectAccessReview or SelfSubjectAccessReview', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { resourceAttributes+: { namespace: namespace } }, - '#withResource':: d.fn(help='Resource is one of the existing resource types. "*" means all.', args=[d.arg(name='resource', type=d.T.string)]), - withResource(resource): { resourceAttributes+: { resource: resource } }, - '#withSubresource':: d.fn(help='Subresource is one of the existing resource types. "" means none.', args=[d.arg(name='subresource', type=d.T.string)]), - withSubresource(subresource): { resourceAttributes+: { subresource: subresource } }, - '#withVerb':: d.fn(help='Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy. "*" means all.', args=[d.arg(name='verb', type=d.T.string)]), - withVerb(verb): { resourceAttributes+: { verb: verb } }, - '#withVersion':: d.fn(help='Version is the API Version of the Resource. "*" means all.', args=[d.arg(name='version', type=d.T.string)]), - withVersion(version): { resourceAttributes+: { version: version } } - }, - '#withExtra':: d.fn(help='Extra corresponds to the user.Info.GetExtra() method from the authenticator. Since that is input to the authorizer it needs a reflection here.', args=[d.arg(name='extra', type=d.T.object)]), - withExtra(extra): { extra: extra }, - '#withExtraMixin':: d.fn(help='Extra corresponds to the user.Info.GetExtra() method from the authenticator. Since that is input to the authorizer it needs a reflection here.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='extra', type=d.T.object)]), - withExtraMixin(extra): { extra+: extra }, - '#withGroup':: d.fn(help="Groups is the groups you're testing for.", args=[d.arg(name='group', type=d.T.array)]), - withGroup(group): { group: if std.isArray(v=group) then group else [group] }, - '#withGroupMixin':: d.fn(help="Groups is the groups you're testing for.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='group', type=d.T.array)]), - withGroupMixin(group): { group+: if std.isArray(v=group) then group else [group] }, - '#withUid':: d.fn(help='UID information about the requesting user.', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { uid: uid }, - '#withUser':: d.fn(help="User is the user you're testing for. If you specify 'User' but not 'Group', then is it interpreted as 'What if User were not a member of any groups", args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { user: user }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/subjectAccessReviewStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/subjectAccessReviewStatus.libsonnet deleted file mode 100644 index 488446112ba6..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/subjectAccessReviewStatus.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='subjectAccessReviewStatus', url='', help='SubjectAccessReviewStatus'), - '#withAllowed':: d.fn(help='Allowed is required. True if the action would be allowed, false otherwise.', args=[d.arg(name='allowed', type=d.T.boolean)]), - withAllowed(allowed): { allowed: allowed }, - '#withDenied':: d.fn(help='Denied is optional. True if the action would be denied, otherwise false. If both allowed is false and denied is false, then the authorizer has no opinion on whether to authorize the action. Denied may not be true if Allowed is true.', args=[d.arg(name='denied', type=d.T.boolean)]), - withDenied(denied): { denied: denied }, - '#withEvaluationError':: d.fn(help='EvaluationError is an indication that some error occurred during the authorization check. It is entirely possible to get an error and be able to continue determine authorization status in spite of it. For instance, RBAC can be missing a role, but enough roles are still present and bound to reason about the request.', args=[d.arg(name='evaluationError', type=d.T.string)]), - withEvaluationError(evaluationError): { evaluationError: evaluationError }, - '#withReason':: d.fn(help='Reason is optional. It indicates why a request was allowed or denied.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/subjectRulesReviewStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/subjectRulesReviewStatus.libsonnet deleted file mode 100644 index 408e692ce01e..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/authorization/v1beta1/subjectRulesReviewStatus.libsonnet +++ /dev/null @@ -1,18 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='subjectRulesReviewStatus', url='', help="SubjectRulesReviewStatus contains the result of a rules check. This check can be incomplete depending on the set of authorizers the server is configured with and any errors experienced during evaluation. Because authorization rules are additive, if a rule appears in a list it's safe to assume the subject has that permission, even if that list is incomplete."), - '#withEvaluationError':: d.fn(help="EvaluationError can appear in combination with Rules. It indicates an error occurred during rule evaluation, such as an authorizer that doesn't support rule evaluation, and that ResourceRules and/or NonResourceRules may be incomplete.", args=[d.arg(name='evaluationError', type=d.T.string)]), - withEvaluationError(evaluationError): { evaluationError: evaluationError }, - '#withIncomplete':: d.fn(help="Incomplete is true when the rules returned by this call are incomplete. This is most commonly encountered when an authorizer, such as an external authorizer, doesn't support rules evaluation.", args=[d.arg(name='incomplete', type=d.T.boolean)]), - withIncomplete(incomplete): { incomplete: incomplete }, - '#withNonResourceRules':: d.fn(help="NonResourceRules is the list of actions the subject is allowed to perform on non-resources. The list ordering isn't significant, may contain duplicates, and possibly be incomplete.", args=[d.arg(name='nonResourceRules', type=d.T.array)]), - withNonResourceRules(nonResourceRules): { nonResourceRules: if std.isArray(v=nonResourceRules) then nonResourceRules else [nonResourceRules] }, - '#withNonResourceRulesMixin':: d.fn(help="NonResourceRules is the list of actions the subject is allowed to perform on non-resources. The list ordering isn't significant, may contain duplicates, and possibly be incomplete.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nonResourceRules', type=d.T.array)]), - withNonResourceRulesMixin(nonResourceRules): { nonResourceRules+: if std.isArray(v=nonResourceRules) then nonResourceRules else [nonResourceRules] }, - '#withResourceRules':: d.fn(help="ResourceRules is the list of actions the subject is allowed to perform on resources. The list ordering isn't significant, may contain duplicates, and possibly be incomplete.", args=[d.arg(name='resourceRules', type=d.T.array)]), - withResourceRules(resourceRules): { resourceRules: if std.isArray(v=resourceRules) then resourceRules else [resourceRules] }, - '#withResourceRulesMixin':: d.fn(help="ResourceRules is the list of actions the subject is allowed to perform on resources. The list ordering isn't significant, may contain duplicates, and possibly be incomplete.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='resourceRules', type=d.T.array)]), - withResourceRulesMixin(resourceRules): { resourceRules+: if std.isArray(v=resourceRules) then resourceRules else [resourceRules] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/main.libsonnet deleted file mode 100644 index f63528c6bf3b..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/main.libsonnet +++ /dev/null @@ -1,7 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='autoscaling', url='', help=''), - v1: (import 'v1/main.libsonnet'), - v2beta1: (import 'v2beta1/main.libsonnet'), - v2beta2: (import 'v2beta2/main.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v1/crossVersionObjectReference.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v1/crossVersionObjectReference.libsonnet deleted file mode 100644 index 44df39b78a17..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v1/crossVersionObjectReference.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='crossVersionObjectReference', url='', help='CrossVersionObjectReference contains enough information to let you identify the referred resource.'), - '#withKind':: d.fn(help='Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds"', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { kind: kind }, - '#withName':: d.fn(help='Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v1/horizontalPodAutoscaler.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v1/horizontalPodAutoscaler.libsonnet deleted file mode 100644 index ff3f6f7514fc..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v1/horizontalPodAutoscaler.libsonnet +++ /dev/null @@ -1,109 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='horizontalPodAutoscaler', url='', help='configuration of a horizontal pod autoscaler.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Horizontalpodautoscaler', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'autoscaling/v1', - kind: 'HorizontalPodAutoscaler' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='specification of a horizontal pod autoscaler.'), - spec: { - '#scaleTargetRef':: d.obj(help='CrossVersionObjectReference contains enough information to let you identify the referred resource.'), - scaleTargetRef: { - '#withKind':: d.fn(help='Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds"', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { scaleTargetRef+: { kind: kind } } }, - '#withName':: d.fn(help='Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { scaleTargetRef+: { name: name } } } - }, - '#withMaxReplicas':: d.fn(help='upper limit for the number of pods that can be set by the autoscaler; cannot be smaller than MinReplicas.', args=[d.arg(name='maxReplicas', type=d.T.integer)]), - withMaxReplicas(maxReplicas): { spec+: { maxReplicas: maxReplicas } }, - '#withMinReplicas':: d.fn(help='lower limit for the number of pods that can be set by the autoscaler, default 1.', args=[d.arg(name='minReplicas', type=d.T.integer)]), - withMinReplicas(minReplicas): { spec+: { minReplicas: minReplicas } }, - '#withTargetCPUUtilizationPercentage':: d.fn(help='target average CPU utilization (represented as a percentage of requested CPU) over all the pods; if not specified the default autoscaling policy will be used.', args=[d.arg(name='targetCPUUtilizationPercentage', type=d.T.integer)]), - withTargetCPUUtilizationPercentage(targetCPUUtilizationPercentage): { spec+: { targetCPUUtilizationPercentage: targetCPUUtilizationPercentage } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v1/horizontalPodAutoscalerSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v1/horizontalPodAutoscalerSpec.libsonnet deleted file mode 100644 index 9c1718e922bd..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v1/horizontalPodAutoscalerSpec.libsonnet +++ /dev/null @@ -1,19 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='horizontalPodAutoscalerSpec', url='', help='specification of a horizontal pod autoscaler.'), - '#scaleTargetRef':: d.obj(help='CrossVersionObjectReference contains enough information to let you identify the referred resource.'), - scaleTargetRef: { - '#withKind':: d.fn(help='Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds"', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { scaleTargetRef+: { kind: kind } }, - '#withName':: d.fn(help='Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { scaleTargetRef+: { name: name } } - }, - '#withMaxReplicas':: d.fn(help='upper limit for the number of pods that can be set by the autoscaler; cannot be smaller than MinReplicas.', args=[d.arg(name='maxReplicas', type=d.T.integer)]), - withMaxReplicas(maxReplicas): { maxReplicas: maxReplicas }, - '#withMinReplicas':: d.fn(help='lower limit for the number of pods that can be set by the autoscaler, default 1.', args=[d.arg(name='minReplicas', type=d.T.integer)]), - withMinReplicas(minReplicas): { minReplicas: minReplicas }, - '#withTargetCPUUtilizationPercentage':: d.fn(help='target average CPU utilization (represented as a percentage of requested CPU) over all the pods; if not specified the default autoscaling policy will be used.', args=[d.arg(name='targetCPUUtilizationPercentage', type=d.T.integer)]), - withTargetCPUUtilizationPercentage(targetCPUUtilizationPercentage): { targetCPUUtilizationPercentage: targetCPUUtilizationPercentage }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v1/horizontalPodAutoscalerStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v1/horizontalPodAutoscalerStatus.libsonnet deleted file mode 100644 index d1819b0d73f6..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v1/horizontalPodAutoscalerStatus.libsonnet +++ /dev/null @@ -1,16 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='horizontalPodAutoscalerStatus', url='', help='current status of a horizontal pod autoscaler'), - '#withCurrentCPUUtilizationPercentage':: d.fn(help='current average CPU utilization over all pods, represented as a percentage of requested CPU, e.g. 70 means that an average pod is using now 70% of its requested CPU.', args=[d.arg(name='currentCPUUtilizationPercentage', type=d.T.integer)]), - withCurrentCPUUtilizationPercentage(currentCPUUtilizationPercentage): { currentCPUUtilizationPercentage: currentCPUUtilizationPercentage }, - '#withCurrentReplicas':: d.fn(help='current number of replicas of pods managed by this autoscaler.', args=[d.arg(name='currentReplicas', type=d.T.integer)]), - withCurrentReplicas(currentReplicas): { currentReplicas: currentReplicas }, - '#withDesiredReplicas':: d.fn(help='desired number of replicas of pods managed by this autoscaler.', args=[d.arg(name='desiredReplicas', type=d.T.integer)]), - withDesiredReplicas(desiredReplicas): { desiredReplicas: desiredReplicas }, - '#withLastScaleTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastScaleTime', type=d.T.string)]), - withLastScaleTime(lastScaleTime): { lastScaleTime: lastScaleTime }, - '#withObservedGeneration':: d.fn(help='most recent generation observed by this autoscaler.', args=[d.arg(name='observedGeneration', type=d.T.integer)]), - withObservedGeneration(observedGeneration): { observedGeneration: observedGeneration }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v1/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v1/main.libsonnet deleted file mode 100644 index 9857c3530536..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v1/main.libsonnet +++ /dev/null @@ -1,11 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1', url='', help=''), - crossVersionObjectReference: (import 'crossVersionObjectReference.libsonnet'), - horizontalPodAutoscaler: (import 'horizontalPodAutoscaler.libsonnet'), - horizontalPodAutoscalerSpec: (import 'horizontalPodAutoscalerSpec.libsonnet'), - horizontalPodAutoscalerStatus: (import 'horizontalPodAutoscalerStatus.libsonnet'), - scale: (import 'scale.libsonnet'), - scaleSpec: (import 'scaleSpec.libsonnet'), - scaleStatus: (import 'scaleStatus.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v1/scale.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v1/scale.libsonnet deleted file mode 100644 index 351d1dab4434..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v1/scale.libsonnet +++ /dev/null @@ -1,98 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='scale', url='', help='Scale represents a scaling request for a resource.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Scale', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'autoscaling/v1', - kind: 'Scale' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='ScaleSpec describes the attributes of a scale subresource.'), - spec: { - '#withReplicas':: d.fn(help='desired number of instances for the scaled object.', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { spec+: { replicas: replicas } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v1/scaleSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v1/scaleSpec.libsonnet deleted file mode 100644 index 63bff7744208..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v1/scaleSpec.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='scaleSpec', url='', help='ScaleSpec describes the attributes of a scale subresource.'), - '#withReplicas':: d.fn(help='desired number of instances for the scaled object.', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { replicas: replicas }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v1/scaleStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v1/scaleStatus.libsonnet deleted file mode 100644 index 404679abc0db..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v1/scaleStatus.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='scaleStatus', url='', help='ScaleStatus represents the current status of a scale subresource.'), - '#withReplicas':: d.fn(help='actual number of observed instances of the scaled object.', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { replicas: replicas }, - '#withSelector':: d.fn(help='label query over pods that should match the replicas count. This is same as the label selector but in the string format to avoid introspection by clients. The string will be in the same format as the query-param syntax. More info about label selectors: http://kubernetes.io/docs/user-guide/labels#label-selectors', args=[d.arg(name='selector', type=d.T.string)]), - withSelector(selector): { selector: selector }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/crossVersionObjectReference.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/crossVersionObjectReference.libsonnet deleted file mode 100644 index 44df39b78a17..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/crossVersionObjectReference.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='crossVersionObjectReference', url='', help='CrossVersionObjectReference contains enough information to let you identify the referred resource.'), - '#withKind':: d.fn(help='Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds"', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { kind: kind }, - '#withName':: d.fn(help='Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/externalMetricSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/externalMetricSource.libsonnet deleted file mode 100644 index 73ac31dc93ed..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/externalMetricSource.libsonnet +++ /dev/null @@ -1,23 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='externalMetricSource', url='', help='ExternalMetricSource indicates how to scale on a metric not associated with any Kubernetes object (for example length of queue in cloud messaging service, or QPS from loadbalancer running outside of cluster). Exactly one "target" type should be set.'), - '#metricSelector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - metricSelector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { metricSelector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { metricSelector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { metricSelector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { metricSelector+: { matchLabels+: matchLabels } } - }, - '#withMetricName':: d.fn(help='metricName is the name of the metric in question.', args=[d.arg(name='metricName', type=d.T.string)]), - withMetricName(metricName): { metricName: metricName }, - '#withTargetAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='targetAverageValue', type=d.T.string)]), - withTargetAverageValue(targetAverageValue): { targetAverageValue: targetAverageValue }, - '#withTargetValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='targetValue', type=d.T.string)]), - withTargetValue(targetValue): { targetValue: targetValue }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/externalMetricStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/externalMetricStatus.libsonnet deleted file mode 100644 index 07014f07759d..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/externalMetricStatus.libsonnet +++ /dev/null @@ -1,23 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='externalMetricStatus', url='', help='ExternalMetricStatus indicates the current value of a global metric not associated with any Kubernetes object.'), - '#metricSelector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - metricSelector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { metricSelector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { metricSelector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { metricSelector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { metricSelector+: { matchLabels+: matchLabels } } - }, - '#withCurrentAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='currentAverageValue', type=d.T.string)]), - withCurrentAverageValue(currentAverageValue): { currentAverageValue: currentAverageValue }, - '#withCurrentValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='currentValue', type=d.T.string)]), - withCurrentValue(currentValue): { currentValue: currentValue }, - '#withMetricName':: d.fn(help='metricName is the name of a metric used for autoscaling in metric system.', args=[d.arg(name='metricName', type=d.T.string)]), - withMetricName(metricName): { metricName: metricName }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/horizontalPodAutoscaler.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/horizontalPodAutoscaler.libsonnet deleted file mode 100644 index fcafb3372b9c..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/horizontalPodAutoscaler.libsonnet +++ /dev/null @@ -1,111 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='horizontalPodAutoscaler', url='', help='HorizontalPodAutoscaler is the configuration for a horizontal pod autoscaler, which automatically manages the replica count of any resource implementing the scale subresource based on the metrics specified.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Horizontalpodautoscaler', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'autoscaling/v2beta1', - kind: 'HorizontalPodAutoscaler' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='HorizontalPodAutoscalerSpec describes the desired functionality of the HorizontalPodAutoscaler.'), - spec: { - '#scaleTargetRef':: d.obj(help='CrossVersionObjectReference contains enough information to let you identify the referred resource.'), - scaleTargetRef: { - '#withKind':: d.fn(help='Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds"', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { scaleTargetRef+: { kind: kind } } }, - '#withName':: d.fn(help='Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { scaleTargetRef+: { name: name } } } - }, - '#withMaxReplicas':: d.fn(help='maxReplicas is the upper limit for the number of replicas to which the autoscaler can scale up. It cannot be less that minReplicas.', args=[d.arg(name='maxReplicas', type=d.T.integer)]), - withMaxReplicas(maxReplicas): { spec+: { maxReplicas: maxReplicas } }, - '#withMetrics':: d.fn(help='metrics contains the specifications for which to use to calculate the desired replica count (the maximum replica count across all metrics will be used). The desired replica count is calculated multiplying the ratio between the target value and the current value by the current number of pods. Ergo, metrics used must decrease as the pod count is increased, and vice-versa. See the individual metric source types for more information about how each type of metric must respond.', args=[d.arg(name='metrics', type=d.T.array)]), - withMetrics(metrics): { spec+: { metrics: if std.isArray(v=metrics) then metrics else [metrics] } }, - '#withMetricsMixin':: d.fn(help='metrics contains the specifications for which to use to calculate the desired replica count (the maximum replica count across all metrics will be used). The desired replica count is calculated multiplying the ratio between the target value and the current value by the current number of pods. Ergo, metrics used must decrease as the pod count is increased, and vice-versa. See the individual metric source types for more information about how each type of metric must respond.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='metrics', type=d.T.array)]), - withMetricsMixin(metrics): { spec+: { metrics+: if std.isArray(v=metrics) then metrics else [metrics] } }, - '#withMinReplicas':: d.fn(help='minReplicas is the lower limit for the number of replicas to which the autoscaler can scale down. It defaults to 1 pod.', args=[d.arg(name='minReplicas', type=d.T.integer)]), - withMinReplicas(minReplicas): { spec+: { minReplicas: minReplicas } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/horizontalPodAutoscalerCondition.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/horizontalPodAutoscalerCondition.libsonnet deleted file mode 100644 index f8dc582cf70f..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/horizontalPodAutoscalerCondition.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='horizontalPodAutoscalerCondition', url='', help='HorizontalPodAutoscalerCondition describes the state of a HorizontalPodAutoscaler at a certain point.'), - '#withLastTransitionTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastTransitionTime', type=d.T.string)]), - withLastTransitionTime(lastTransitionTime): { lastTransitionTime: lastTransitionTime }, - '#withMessage':: d.fn(help='message is a human-readable explanation containing details about the transition', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withReason':: d.fn(help="reason is the reason for the condition's last transition.", args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#withType':: d.fn(help='type describes the current condition', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/horizontalPodAutoscalerSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/horizontalPodAutoscalerSpec.libsonnet deleted file mode 100644 index 9b97eeb547dd..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/horizontalPodAutoscalerSpec.libsonnet +++ /dev/null @@ -1,21 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='horizontalPodAutoscalerSpec', url='', help='HorizontalPodAutoscalerSpec describes the desired functionality of the HorizontalPodAutoscaler.'), - '#scaleTargetRef':: d.obj(help='CrossVersionObjectReference contains enough information to let you identify the referred resource.'), - scaleTargetRef: { - '#withKind':: d.fn(help='Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds"', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { scaleTargetRef+: { kind: kind } }, - '#withName':: d.fn(help='Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { scaleTargetRef+: { name: name } } - }, - '#withMaxReplicas':: d.fn(help='maxReplicas is the upper limit for the number of replicas to which the autoscaler can scale up. It cannot be less that minReplicas.', args=[d.arg(name='maxReplicas', type=d.T.integer)]), - withMaxReplicas(maxReplicas): { maxReplicas: maxReplicas }, - '#withMetrics':: d.fn(help='metrics contains the specifications for which to use to calculate the desired replica count (the maximum replica count across all metrics will be used). The desired replica count is calculated multiplying the ratio between the target value and the current value by the current number of pods. Ergo, metrics used must decrease as the pod count is increased, and vice-versa. See the individual metric source types for more information about how each type of metric must respond.', args=[d.arg(name='metrics', type=d.T.array)]), - withMetrics(metrics): { metrics: if std.isArray(v=metrics) then metrics else [metrics] }, - '#withMetricsMixin':: d.fn(help='metrics contains the specifications for which to use to calculate the desired replica count (the maximum replica count across all metrics will be used). The desired replica count is calculated multiplying the ratio between the target value and the current value by the current number of pods. Ergo, metrics used must decrease as the pod count is increased, and vice-versa. See the individual metric source types for more information about how each type of metric must respond.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='metrics', type=d.T.array)]), - withMetricsMixin(metrics): { metrics+: if std.isArray(v=metrics) then metrics else [metrics] }, - '#withMinReplicas':: d.fn(help='minReplicas is the lower limit for the number of replicas to which the autoscaler can scale down. It defaults to 1 pod.', args=[d.arg(name='minReplicas', type=d.T.integer)]), - withMinReplicas(minReplicas): { minReplicas: minReplicas }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/horizontalPodAutoscalerStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/horizontalPodAutoscalerStatus.libsonnet deleted file mode 100644 index 3df5c792bfec..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/horizontalPodAutoscalerStatus.libsonnet +++ /dev/null @@ -1,22 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='horizontalPodAutoscalerStatus', url='', help='HorizontalPodAutoscalerStatus describes the current status of a horizontal pod autoscaler.'), - '#withConditions':: d.fn(help='conditions is the set of conditions required for this autoscaler to scale its target, and indicates whether or not those conditions are met.', args=[d.arg(name='conditions', type=d.T.array)]), - withConditions(conditions): { conditions: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withConditionsMixin':: d.fn(help='conditions is the set of conditions required for this autoscaler to scale its target, and indicates whether or not those conditions are met.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='conditions', type=d.T.array)]), - withConditionsMixin(conditions): { conditions+: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withCurrentMetrics':: d.fn(help='currentMetrics is the last read state of the metrics used by this autoscaler.', args=[d.arg(name='currentMetrics', type=d.T.array)]), - withCurrentMetrics(currentMetrics): { currentMetrics: if std.isArray(v=currentMetrics) then currentMetrics else [currentMetrics] }, - '#withCurrentMetricsMixin':: d.fn(help='currentMetrics is the last read state of the metrics used by this autoscaler.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='currentMetrics', type=d.T.array)]), - withCurrentMetricsMixin(currentMetrics): { currentMetrics+: if std.isArray(v=currentMetrics) then currentMetrics else [currentMetrics] }, - '#withCurrentReplicas':: d.fn(help='currentReplicas is current number of replicas of pods managed by this autoscaler, as last seen by the autoscaler.', args=[d.arg(name='currentReplicas', type=d.T.integer)]), - withCurrentReplicas(currentReplicas): { currentReplicas: currentReplicas }, - '#withDesiredReplicas':: d.fn(help='desiredReplicas is the desired number of replicas of pods managed by this autoscaler, as last calculated by the autoscaler.', args=[d.arg(name='desiredReplicas', type=d.T.integer)]), - withDesiredReplicas(desiredReplicas): { desiredReplicas: desiredReplicas }, - '#withLastScaleTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastScaleTime', type=d.T.string)]), - withLastScaleTime(lastScaleTime): { lastScaleTime: lastScaleTime }, - '#withObservedGeneration':: d.fn(help='observedGeneration is the most recent generation observed by this autoscaler.', args=[d.arg(name='observedGeneration', type=d.T.integer)]), - withObservedGeneration(observedGeneration): { observedGeneration: observedGeneration }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/main.libsonnet deleted file mode 100644 index b5ad002a3af4..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/main.libsonnet +++ /dev/null @@ -1,19 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v2beta1', url='', help=''), - crossVersionObjectReference: (import 'crossVersionObjectReference.libsonnet'), - externalMetricSource: (import 'externalMetricSource.libsonnet'), - externalMetricStatus: (import 'externalMetricStatus.libsonnet'), - horizontalPodAutoscaler: (import 'horizontalPodAutoscaler.libsonnet'), - horizontalPodAutoscalerCondition: (import 'horizontalPodAutoscalerCondition.libsonnet'), - horizontalPodAutoscalerSpec: (import 'horizontalPodAutoscalerSpec.libsonnet'), - horizontalPodAutoscalerStatus: (import 'horizontalPodAutoscalerStatus.libsonnet'), - metricSpec: (import 'metricSpec.libsonnet'), - metricStatus: (import 'metricStatus.libsonnet'), - objectMetricSource: (import 'objectMetricSource.libsonnet'), - objectMetricStatus: (import 'objectMetricStatus.libsonnet'), - podsMetricSource: (import 'podsMetricSource.libsonnet'), - podsMetricStatus: (import 'podsMetricStatus.libsonnet'), - resourceMetricSource: (import 'resourceMetricSource.libsonnet'), - resourceMetricStatus: (import 'resourceMetricStatus.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/metricSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/metricSpec.libsonnet deleted file mode 100644 index 1a4316bf22f5..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/metricSpec.libsonnet +++ /dev/null @@ -1,82 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='metricSpec', url='', help='MetricSpec specifies how to scale based on a single metric (only `type` and one other matching field should be set at once).'), - '#external':: d.obj(help='ExternalMetricSource indicates how to scale on a metric not associated with any Kubernetes object (for example length of queue in cloud messaging service, or QPS from loadbalancer running outside of cluster). Exactly one "target" type should be set.'), - external: { - '#metricSelector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - metricSelector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { external+: { metricSelector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { external+: { metricSelector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { external+: { metricSelector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { external+: { metricSelector+: { matchLabels+: matchLabels } } } - }, - '#withMetricName':: d.fn(help='metricName is the name of the metric in question.', args=[d.arg(name='metricName', type=d.T.string)]), - withMetricName(metricName): { external+: { metricName: metricName } }, - '#withTargetAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='targetAverageValue', type=d.T.string)]), - withTargetAverageValue(targetAverageValue): { external+: { targetAverageValue: targetAverageValue } }, - '#withTargetValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='targetValue', type=d.T.string)]), - withTargetValue(targetValue): { external+: { targetValue: targetValue } } - }, - '#object':: d.obj(help='ObjectMetricSource indicates how to scale on a metric describing a kubernetes object (for example, hits-per-second on an Ingress object).'), - object: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { object+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { object+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { object+: { selector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { object+: { selector+: { matchLabels+: matchLabels } } } - }, - '#target':: d.obj(help='CrossVersionObjectReference contains enough information to let you identify the referred resource.'), - target: { - '#withKind':: d.fn(help='Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds"', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { object+: { target+: { kind: kind } } }, - '#withName':: d.fn(help='Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { object+: { target+: { name: name } } } - }, - '#withAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='averageValue', type=d.T.string)]), - withAverageValue(averageValue): { object+: { averageValue: averageValue } }, - '#withMetricName':: d.fn(help='metricName is the name of the metric in question.', args=[d.arg(name='metricName', type=d.T.string)]), - withMetricName(metricName): { object+: { metricName: metricName } }, - '#withTargetValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='targetValue', type=d.T.string)]), - withTargetValue(targetValue): { object+: { targetValue: targetValue } } - }, - '#pods':: d.obj(help='PodsMetricSource indicates how to scale on a metric describing each pod in the current scale target (for example, transactions-processed-per-second). The values will be averaged together before being compared to the target value.'), - pods: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { pods+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { pods+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { pods+: { selector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { pods+: { selector+: { matchLabels+: matchLabels } } } - }, - '#withMetricName':: d.fn(help='metricName is the name of the metric in question', args=[d.arg(name='metricName', type=d.T.string)]), - withMetricName(metricName): { pods+: { metricName: metricName } }, - '#withTargetAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='targetAverageValue', type=d.T.string)]), - withTargetAverageValue(targetAverageValue): { pods+: { targetAverageValue: targetAverageValue } } - }, - '#resource':: d.obj(help='ResourceMetricSource indicates how to scale on a resource metric known to Kubernetes, as specified in requests and limits, describing each pod in the current scale target (e.g. CPU or memory). The values will be averaged together before being compared to the target. Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the "pods" source. Only one "target" type should be set.'), - resource: { - '#withName':: d.fn(help='name is the name of the resource in question.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { resource+: { name: name } }, - '#withTargetAverageUtilization':: d.fn(help='targetAverageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods.', args=[d.arg(name='targetAverageUtilization', type=d.T.integer)]), - withTargetAverageUtilization(targetAverageUtilization): { resource+: { targetAverageUtilization: targetAverageUtilization } }, - '#withTargetAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='targetAverageValue', type=d.T.string)]), - withTargetAverageValue(targetAverageValue): { resource+: { targetAverageValue: targetAverageValue } } - }, - '#withType':: d.fn(help='type is the type of metric source. It should be one of "Object", "Pods" or "Resource", each mapping to a matching field in the object.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/metricStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/metricStatus.libsonnet deleted file mode 100644 index 19309f93abbb..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/metricStatus.libsonnet +++ /dev/null @@ -1,82 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='metricStatus', url='', help='MetricStatus describes the last-read state of a single metric.'), - '#external':: d.obj(help='ExternalMetricStatus indicates the current value of a global metric not associated with any Kubernetes object.'), - external: { - '#metricSelector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - metricSelector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { external+: { metricSelector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { external+: { metricSelector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { external+: { metricSelector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { external+: { metricSelector+: { matchLabels+: matchLabels } } } - }, - '#withCurrentAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='currentAverageValue', type=d.T.string)]), - withCurrentAverageValue(currentAverageValue): { external+: { currentAverageValue: currentAverageValue } }, - '#withCurrentValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='currentValue', type=d.T.string)]), - withCurrentValue(currentValue): { external+: { currentValue: currentValue } }, - '#withMetricName':: d.fn(help='metricName is the name of a metric used for autoscaling in metric system.', args=[d.arg(name='metricName', type=d.T.string)]), - withMetricName(metricName): { external+: { metricName: metricName } } - }, - '#object':: d.obj(help='ObjectMetricStatus indicates the current value of a metric describing a kubernetes object (for example, hits-per-second on an Ingress object).'), - object: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { object+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { object+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { object+: { selector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { object+: { selector+: { matchLabels+: matchLabels } } } - }, - '#target':: d.obj(help='CrossVersionObjectReference contains enough information to let you identify the referred resource.'), - target: { - '#withKind':: d.fn(help='Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds"', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { object+: { target+: { kind: kind } } }, - '#withName':: d.fn(help='Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { object+: { target+: { name: name } } } - }, - '#withAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='averageValue', type=d.T.string)]), - withAverageValue(averageValue): { object+: { averageValue: averageValue } }, - '#withCurrentValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='currentValue', type=d.T.string)]), - withCurrentValue(currentValue): { object+: { currentValue: currentValue } }, - '#withMetricName':: d.fn(help='metricName is the name of the metric in question.', args=[d.arg(name='metricName', type=d.T.string)]), - withMetricName(metricName): { object+: { metricName: metricName } } - }, - '#pods':: d.obj(help='PodsMetricStatus indicates the current value of a metric describing each pod in the current scale target (for example, transactions-processed-per-second).'), - pods: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { pods+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { pods+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { pods+: { selector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { pods+: { selector+: { matchLabels+: matchLabels } } } - }, - '#withCurrentAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='currentAverageValue', type=d.T.string)]), - withCurrentAverageValue(currentAverageValue): { pods+: { currentAverageValue: currentAverageValue } }, - '#withMetricName':: d.fn(help='metricName is the name of the metric in question', args=[d.arg(name='metricName', type=d.T.string)]), - withMetricName(metricName): { pods+: { metricName: metricName } } - }, - '#resource':: d.obj(help='ResourceMetricStatus indicates the current value of a resource metric known to Kubernetes, as specified in requests and limits, describing each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the "pods" source.'), - resource: { - '#withCurrentAverageUtilization':: d.fn(help='currentAverageUtilization is the current value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. It will only be present if `targetAverageValue` was set in the corresponding metric specification.', args=[d.arg(name='currentAverageUtilization', type=d.T.integer)]), - withCurrentAverageUtilization(currentAverageUtilization): { resource+: { currentAverageUtilization: currentAverageUtilization } }, - '#withCurrentAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='currentAverageValue', type=d.T.string)]), - withCurrentAverageValue(currentAverageValue): { resource+: { currentAverageValue: currentAverageValue } }, - '#withName':: d.fn(help='name is the name of the resource in question.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { resource+: { name: name } } - }, - '#withType':: d.fn(help='type is the type of metric source. It will be one of "Object", "Pods" or "Resource", each corresponds to a matching field in the object.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/objectMetricSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/objectMetricSource.libsonnet deleted file mode 100644 index 0dabf739b41f..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/objectMetricSource.libsonnet +++ /dev/null @@ -1,30 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='objectMetricSource', url='', help='ObjectMetricSource indicates how to scale on a metric describing a kubernetes object (for example, hits-per-second on an Ingress object).'), - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { selector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { selector+: { matchLabels+: matchLabels } } - }, - '#target':: d.obj(help='CrossVersionObjectReference contains enough information to let you identify the referred resource.'), - target: { - '#withKind':: d.fn(help='Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds"', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { target+: { kind: kind } }, - '#withName':: d.fn(help='Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { target+: { name: name } } - }, - '#withAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='averageValue', type=d.T.string)]), - withAverageValue(averageValue): { averageValue: averageValue }, - '#withMetricName':: d.fn(help='metricName is the name of the metric in question.', args=[d.arg(name='metricName', type=d.T.string)]), - withMetricName(metricName): { metricName: metricName }, - '#withTargetValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='targetValue', type=d.T.string)]), - withTargetValue(targetValue): { targetValue: targetValue }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/objectMetricStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/objectMetricStatus.libsonnet deleted file mode 100644 index ecd6bc0d809b..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/objectMetricStatus.libsonnet +++ /dev/null @@ -1,30 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='objectMetricStatus', url='', help='ObjectMetricStatus indicates the current value of a metric describing a kubernetes object (for example, hits-per-second on an Ingress object).'), - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { selector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { selector+: { matchLabels+: matchLabels } } - }, - '#target':: d.obj(help='CrossVersionObjectReference contains enough information to let you identify the referred resource.'), - target: { - '#withKind':: d.fn(help='Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds"', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { target+: { kind: kind } }, - '#withName':: d.fn(help='Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { target+: { name: name } } - }, - '#withAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='averageValue', type=d.T.string)]), - withAverageValue(averageValue): { averageValue: averageValue }, - '#withCurrentValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='currentValue', type=d.T.string)]), - withCurrentValue(currentValue): { currentValue: currentValue }, - '#withMetricName':: d.fn(help='metricName is the name of the metric in question.', args=[d.arg(name='metricName', type=d.T.string)]), - withMetricName(metricName): { metricName: metricName }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/podsMetricSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/podsMetricSource.libsonnet deleted file mode 100644 index 10d3fc08b96f..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/podsMetricSource.libsonnet +++ /dev/null @@ -1,21 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='podsMetricSource', url='', help='PodsMetricSource indicates how to scale on a metric describing each pod in the current scale target (for example, transactions-processed-per-second). The values will be averaged together before being compared to the target value.'), - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { selector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { selector+: { matchLabels+: matchLabels } } - }, - '#withMetricName':: d.fn(help='metricName is the name of the metric in question', args=[d.arg(name='metricName', type=d.T.string)]), - withMetricName(metricName): { metricName: metricName }, - '#withTargetAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='targetAverageValue', type=d.T.string)]), - withTargetAverageValue(targetAverageValue): { targetAverageValue: targetAverageValue }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/podsMetricStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/podsMetricStatus.libsonnet deleted file mode 100644 index 764cf3377ac4..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/podsMetricStatus.libsonnet +++ /dev/null @@ -1,21 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='podsMetricStatus', url='', help='PodsMetricStatus indicates the current value of a metric describing each pod in the current scale target (for example, transactions-processed-per-second).'), - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { selector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { selector+: { matchLabels+: matchLabels } } - }, - '#withCurrentAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='currentAverageValue', type=d.T.string)]), - withCurrentAverageValue(currentAverageValue): { currentAverageValue: currentAverageValue }, - '#withMetricName':: d.fn(help='metricName is the name of the metric in question', args=[d.arg(name='metricName', type=d.T.string)]), - withMetricName(metricName): { metricName: metricName }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/resourceMetricSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/resourceMetricSource.libsonnet deleted file mode 100644 index bfe8a352498c..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/resourceMetricSource.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='resourceMetricSource', url='', help='ResourceMetricSource indicates how to scale on a resource metric known to Kubernetes, as specified in requests and limits, describing each pod in the current scale target (e.g. CPU or memory). The values will be averaged together before being compared to the target. Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the "pods" source. Only one "target" type should be set.'), - '#withName':: d.fn(help='name is the name of the resource in question.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withTargetAverageUtilization':: d.fn(help='targetAverageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods.', args=[d.arg(name='targetAverageUtilization', type=d.T.integer)]), - withTargetAverageUtilization(targetAverageUtilization): { targetAverageUtilization: targetAverageUtilization }, - '#withTargetAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='targetAverageValue', type=d.T.string)]), - withTargetAverageValue(targetAverageValue): { targetAverageValue: targetAverageValue }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/resourceMetricStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/resourceMetricStatus.libsonnet deleted file mode 100644 index 2ada289eca5d..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta1/resourceMetricStatus.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='resourceMetricStatus', url='', help='ResourceMetricStatus indicates the current value of a resource metric known to Kubernetes, as specified in requests and limits, describing each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the "pods" source.'), - '#withCurrentAverageUtilization':: d.fn(help='currentAverageUtilization is the current value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. It will only be present if `targetAverageValue` was set in the corresponding metric specification.', args=[d.arg(name='currentAverageUtilization', type=d.T.integer)]), - withCurrentAverageUtilization(currentAverageUtilization): { currentAverageUtilization: currentAverageUtilization }, - '#withCurrentAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='currentAverageValue', type=d.T.string)]), - withCurrentAverageValue(currentAverageValue): { currentAverageValue: currentAverageValue }, - '#withName':: d.fn(help='name is the name of the resource in question.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/crossVersionObjectReference.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/crossVersionObjectReference.libsonnet deleted file mode 100644 index 44df39b78a17..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/crossVersionObjectReference.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='crossVersionObjectReference', url='', help='CrossVersionObjectReference contains enough information to let you identify the referred resource.'), - '#withKind':: d.fn(help='Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds"', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { kind: kind }, - '#withName':: d.fn(help='Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/externalMetricSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/externalMetricSource.libsonnet deleted file mode 100644 index 9699dbff6907..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/externalMetricSource.libsonnet +++ /dev/null @@ -1,33 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='externalMetricSource', url='', help='ExternalMetricSource indicates how to scale on a metric not associated with any Kubernetes object (for example length of queue in cloud messaging service, or QPS from loadbalancer running outside of cluster).'), - '#metric':: d.obj(help='MetricIdentifier defines the name and optionally selector for a metric'), - metric: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { metric+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { metric+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { metric+: { selector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { metric+: { selector+: { matchLabels+: matchLabels } } } - }, - '#withName':: d.fn(help='name is the name of the given metric', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metric+: { name: name } } - }, - '#target':: d.obj(help='MetricTarget defines the target value, average value, or average utilization of a specific metric'), - target: { - '#withAverageUtilization':: d.fn(help='averageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. Currently only valid for Resource metric source type', args=[d.arg(name='averageUtilization', type=d.T.integer)]), - withAverageUtilization(averageUtilization): { target+: { averageUtilization: averageUtilization } }, - '#withAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='averageValue', type=d.T.string)]), - withAverageValue(averageValue): { target+: { averageValue: averageValue } }, - '#withType':: d.fn(help='type represents whether the metric type is Utilization, Value, or AverageValue', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { target+: { type: type } }, - '#withValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='value', type=d.T.string)]), - withValue(value): { target+: { value: value } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/externalMetricStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/externalMetricStatus.libsonnet deleted file mode 100644 index 569979bc9996..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/externalMetricStatus.libsonnet +++ /dev/null @@ -1,31 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='externalMetricStatus', url='', help='ExternalMetricStatus indicates the current value of a global metric not associated with any Kubernetes object.'), - '#current':: d.obj(help='MetricValueStatus holds the current value for a metric'), - current: { - '#withAverageUtilization':: d.fn(help='currentAverageUtilization is the current value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods.', args=[d.arg(name='averageUtilization', type=d.T.integer)]), - withAverageUtilization(averageUtilization): { current+: { averageUtilization: averageUtilization } }, - '#withAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='averageValue', type=d.T.string)]), - withAverageValue(averageValue): { current+: { averageValue: averageValue } }, - '#withValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='value', type=d.T.string)]), - withValue(value): { current+: { value: value } } - }, - '#metric':: d.obj(help='MetricIdentifier defines the name and optionally selector for a metric'), - metric: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { metric+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { metric+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { metric+: { selector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { metric+: { selector+: { matchLabels+: matchLabels } } } - }, - '#withName':: d.fn(help='name is the name of the given metric', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metric+: { name: name } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/horizontalPodAutoscaler.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/horizontalPodAutoscaler.libsonnet deleted file mode 100644 index 712c2d191883..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/horizontalPodAutoscaler.libsonnet +++ /dev/null @@ -1,111 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='horizontalPodAutoscaler', url='', help='HorizontalPodAutoscaler is the configuration for a horizontal pod autoscaler, which automatically manages the replica count of any resource implementing the scale subresource based on the metrics specified.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Horizontalpodautoscaler', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'autoscaling/v2beta2', - kind: 'HorizontalPodAutoscaler' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='HorizontalPodAutoscalerSpec describes the desired functionality of the HorizontalPodAutoscaler.'), - spec: { - '#scaleTargetRef':: d.obj(help='CrossVersionObjectReference contains enough information to let you identify the referred resource.'), - scaleTargetRef: { - '#withKind':: d.fn(help='Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds"', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { scaleTargetRef+: { kind: kind } } }, - '#withName':: d.fn(help='Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { scaleTargetRef+: { name: name } } } - }, - '#withMaxReplicas':: d.fn(help='maxReplicas is the upper limit for the number of replicas to which the autoscaler can scale up. It cannot be less that minReplicas.', args=[d.arg(name='maxReplicas', type=d.T.integer)]), - withMaxReplicas(maxReplicas): { spec+: { maxReplicas: maxReplicas } }, - '#withMetrics':: d.fn(help='metrics contains the specifications for which to use to calculate the desired replica count (the maximum replica count across all metrics will be used). The desired replica count is calculated multiplying the ratio between the target value and the current value by the current number of pods. Ergo, metrics used must decrease as the pod count is increased, and vice-versa. See the individual metric source types for more information about how each type of metric must respond. If not set, the default metric will be set to 80% average CPU utilization.', args=[d.arg(name='metrics', type=d.T.array)]), - withMetrics(metrics): { spec+: { metrics: if std.isArray(v=metrics) then metrics else [metrics] } }, - '#withMetricsMixin':: d.fn(help='metrics contains the specifications for which to use to calculate the desired replica count (the maximum replica count across all metrics will be used). The desired replica count is calculated multiplying the ratio between the target value and the current value by the current number of pods. Ergo, metrics used must decrease as the pod count is increased, and vice-versa. See the individual metric source types for more information about how each type of metric must respond. If not set, the default metric will be set to 80% average CPU utilization.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='metrics', type=d.T.array)]), - withMetricsMixin(metrics): { spec+: { metrics+: if std.isArray(v=metrics) then metrics else [metrics] } }, - '#withMinReplicas':: d.fn(help='minReplicas is the lower limit for the number of replicas to which the autoscaler can scale down. It defaults to 1 pod.', args=[d.arg(name='minReplicas', type=d.T.integer)]), - withMinReplicas(minReplicas): { spec+: { minReplicas: minReplicas } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/horizontalPodAutoscalerCondition.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/horizontalPodAutoscalerCondition.libsonnet deleted file mode 100644 index f8dc582cf70f..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/horizontalPodAutoscalerCondition.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='horizontalPodAutoscalerCondition', url='', help='HorizontalPodAutoscalerCondition describes the state of a HorizontalPodAutoscaler at a certain point.'), - '#withLastTransitionTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastTransitionTime', type=d.T.string)]), - withLastTransitionTime(lastTransitionTime): { lastTransitionTime: lastTransitionTime }, - '#withMessage':: d.fn(help='message is a human-readable explanation containing details about the transition', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withReason':: d.fn(help="reason is the reason for the condition's last transition.", args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#withType':: d.fn(help='type describes the current condition', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/horizontalPodAutoscalerSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/horizontalPodAutoscalerSpec.libsonnet deleted file mode 100644 index a5a39abcd0ca..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/horizontalPodAutoscalerSpec.libsonnet +++ /dev/null @@ -1,21 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='horizontalPodAutoscalerSpec', url='', help='HorizontalPodAutoscalerSpec describes the desired functionality of the HorizontalPodAutoscaler.'), - '#scaleTargetRef':: d.obj(help='CrossVersionObjectReference contains enough information to let you identify the referred resource.'), - scaleTargetRef: { - '#withKind':: d.fn(help='Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds"', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { scaleTargetRef+: { kind: kind } }, - '#withName':: d.fn(help='Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { scaleTargetRef+: { name: name } } - }, - '#withMaxReplicas':: d.fn(help='maxReplicas is the upper limit for the number of replicas to which the autoscaler can scale up. It cannot be less that minReplicas.', args=[d.arg(name='maxReplicas', type=d.T.integer)]), - withMaxReplicas(maxReplicas): { maxReplicas: maxReplicas }, - '#withMetrics':: d.fn(help='metrics contains the specifications for which to use to calculate the desired replica count (the maximum replica count across all metrics will be used). The desired replica count is calculated multiplying the ratio between the target value and the current value by the current number of pods. Ergo, metrics used must decrease as the pod count is increased, and vice-versa. See the individual metric source types for more information about how each type of metric must respond. If not set, the default metric will be set to 80% average CPU utilization.', args=[d.arg(name='metrics', type=d.T.array)]), - withMetrics(metrics): { metrics: if std.isArray(v=metrics) then metrics else [metrics] }, - '#withMetricsMixin':: d.fn(help='metrics contains the specifications for which to use to calculate the desired replica count (the maximum replica count across all metrics will be used). The desired replica count is calculated multiplying the ratio between the target value and the current value by the current number of pods. Ergo, metrics used must decrease as the pod count is increased, and vice-versa. See the individual metric source types for more information about how each type of metric must respond. If not set, the default metric will be set to 80% average CPU utilization.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='metrics', type=d.T.array)]), - withMetricsMixin(metrics): { metrics+: if std.isArray(v=metrics) then metrics else [metrics] }, - '#withMinReplicas':: d.fn(help='minReplicas is the lower limit for the number of replicas to which the autoscaler can scale down. It defaults to 1 pod.', args=[d.arg(name='minReplicas', type=d.T.integer)]), - withMinReplicas(minReplicas): { minReplicas: minReplicas }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/horizontalPodAutoscalerStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/horizontalPodAutoscalerStatus.libsonnet deleted file mode 100644 index 3df5c792bfec..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/horizontalPodAutoscalerStatus.libsonnet +++ /dev/null @@ -1,22 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='horizontalPodAutoscalerStatus', url='', help='HorizontalPodAutoscalerStatus describes the current status of a horizontal pod autoscaler.'), - '#withConditions':: d.fn(help='conditions is the set of conditions required for this autoscaler to scale its target, and indicates whether or not those conditions are met.', args=[d.arg(name='conditions', type=d.T.array)]), - withConditions(conditions): { conditions: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withConditionsMixin':: d.fn(help='conditions is the set of conditions required for this autoscaler to scale its target, and indicates whether or not those conditions are met.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='conditions', type=d.T.array)]), - withConditionsMixin(conditions): { conditions+: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withCurrentMetrics':: d.fn(help='currentMetrics is the last read state of the metrics used by this autoscaler.', args=[d.arg(name='currentMetrics', type=d.T.array)]), - withCurrentMetrics(currentMetrics): { currentMetrics: if std.isArray(v=currentMetrics) then currentMetrics else [currentMetrics] }, - '#withCurrentMetricsMixin':: d.fn(help='currentMetrics is the last read state of the metrics used by this autoscaler.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='currentMetrics', type=d.T.array)]), - withCurrentMetricsMixin(currentMetrics): { currentMetrics+: if std.isArray(v=currentMetrics) then currentMetrics else [currentMetrics] }, - '#withCurrentReplicas':: d.fn(help='currentReplicas is current number of replicas of pods managed by this autoscaler, as last seen by the autoscaler.', args=[d.arg(name='currentReplicas', type=d.T.integer)]), - withCurrentReplicas(currentReplicas): { currentReplicas: currentReplicas }, - '#withDesiredReplicas':: d.fn(help='desiredReplicas is the desired number of replicas of pods managed by this autoscaler, as last calculated by the autoscaler.', args=[d.arg(name='desiredReplicas', type=d.T.integer)]), - withDesiredReplicas(desiredReplicas): { desiredReplicas: desiredReplicas }, - '#withLastScaleTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastScaleTime', type=d.T.string)]), - withLastScaleTime(lastScaleTime): { lastScaleTime: lastScaleTime }, - '#withObservedGeneration':: d.fn(help='observedGeneration is the most recent generation observed by this autoscaler.', args=[d.arg(name='observedGeneration', type=d.T.integer)]), - withObservedGeneration(observedGeneration): { observedGeneration: observedGeneration }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/main.libsonnet deleted file mode 100644 index 18def181cb2d..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/main.libsonnet +++ /dev/null @@ -1,22 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v2beta2', url='', help=''), - crossVersionObjectReference: (import 'crossVersionObjectReference.libsonnet'), - externalMetricSource: (import 'externalMetricSource.libsonnet'), - externalMetricStatus: (import 'externalMetricStatus.libsonnet'), - horizontalPodAutoscaler: (import 'horizontalPodAutoscaler.libsonnet'), - horizontalPodAutoscalerCondition: (import 'horizontalPodAutoscalerCondition.libsonnet'), - horizontalPodAutoscalerSpec: (import 'horizontalPodAutoscalerSpec.libsonnet'), - horizontalPodAutoscalerStatus: (import 'horizontalPodAutoscalerStatus.libsonnet'), - metricIdentifier: (import 'metricIdentifier.libsonnet'), - metricSpec: (import 'metricSpec.libsonnet'), - metricStatus: (import 'metricStatus.libsonnet'), - metricTarget: (import 'metricTarget.libsonnet'), - metricValueStatus: (import 'metricValueStatus.libsonnet'), - objectMetricSource: (import 'objectMetricSource.libsonnet'), - objectMetricStatus: (import 'objectMetricStatus.libsonnet'), - podsMetricSource: (import 'podsMetricSource.libsonnet'), - podsMetricStatus: (import 'podsMetricStatus.libsonnet'), - resourceMetricSource: (import 'resourceMetricSource.libsonnet'), - resourceMetricStatus: (import 'resourceMetricStatus.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/metricIdentifier.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/metricIdentifier.libsonnet deleted file mode 100644 index c110138483f9..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/metricIdentifier.libsonnet +++ /dev/null @@ -1,19 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='metricIdentifier', url='', help='MetricIdentifier defines the name and optionally selector for a metric'), - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { selector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { selector+: { matchLabels+: matchLabels } } - }, - '#withName':: d.fn(help='name is the name of the given metric', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/metricSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/metricSpec.libsonnet deleted file mode 100644 index a40d3110c367..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/metricSpec.libsonnet +++ /dev/null @@ -1,121 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='metricSpec', url='', help='MetricSpec specifies how to scale based on a single metric (only `type` and one other matching field should be set at once).'), - '#external':: d.obj(help='ExternalMetricSource indicates how to scale on a metric not associated with any Kubernetes object (for example length of queue in cloud messaging service, or QPS from loadbalancer running outside of cluster).'), - external: { - '#metric':: d.obj(help='MetricIdentifier defines the name and optionally selector for a metric'), - metric: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { external+: { metric+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { external+: { metric+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { external+: { metric+: { selector+: { matchLabels: matchLabels } } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { external+: { metric+: { selector+: { matchLabels+: matchLabels } } } } - }, - '#withName':: d.fn(help='name is the name of the given metric', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { external+: { metric+: { name: name } } } - }, - '#target':: d.obj(help='MetricTarget defines the target value, average value, or average utilization of a specific metric'), - target: { - '#withAverageUtilization':: d.fn(help='averageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. Currently only valid for Resource metric source type', args=[d.arg(name='averageUtilization', type=d.T.integer)]), - withAverageUtilization(averageUtilization): { external+: { target+: { averageUtilization: averageUtilization } } }, - '#withAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='averageValue', type=d.T.string)]), - withAverageValue(averageValue): { external+: { target+: { averageValue: averageValue } } }, - '#withType':: d.fn(help='type represents whether the metric type is Utilization, Value, or AverageValue', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { external+: { target+: { type: type } } }, - '#withValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='value', type=d.T.string)]), - withValue(value): { external+: { target+: { value: value } } } - } - }, - '#object':: d.obj(help='ObjectMetricSource indicates how to scale on a metric describing a kubernetes object (for example, hits-per-second on an Ingress object).'), - object: { - '#describedObject':: d.obj(help='CrossVersionObjectReference contains enough information to let you identify the referred resource.'), - describedObject: { - '#withKind':: d.fn(help='Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds"', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { object+: { describedObject+: { kind: kind } } }, - '#withName':: d.fn(help='Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { object+: { describedObject+: { name: name } } } - }, - '#metric':: d.obj(help='MetricIdentifier defines the name and optionally selector for a metric'), - metric: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { object+: { metric+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { object+: { metric+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { object+: { metric+: { selector+: { matchLabels: matchLabels } } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { object+: { metric+: { selector+: { matchLabels+: matchLabels } } } } - }, - '#withName':: d.fn(help='name is the name of the given metric', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { object+: { metric+: { name: name } } } - }, - '#target':: d.obj(help='MetricTarget defines the target value, average value, or average utilization of a specific metric'), - target: { - '#withAverageUtilization':: d.fn(help='averageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. Currently only valid for Resource metric source type', args=[d.arg(name='averageUtilization', type=d.T.integer)]), - withAverageUtilization(averageUtilization): { object+: { target+: { averageUtilization: averageUtilization } } }, - '#withAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='averageValue', type=d.T.string)]), - withAverageValue(averageValue): { object+: { target+: { averageValue: averageValue } } }, - '#withType':: d.fn(help='type represents whether the metric type is Utilization, Value, or AverageValue', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { object+: { target+: { type: type } } }, - '#withValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='value', type=d.T.string)]), - withValue(value): { object+: { target+: { value: value } } } - } - }, - '#pods':: d.obj(help='PodsMetricSource indicates how to scale on a metric describing each pod in the current scale target (for example, transactions-processed-per-second). The values will be averaged together before being compared to the target value.'), - pods: { - '#metric':: d.obj(help='MetricIdentifier defines the name and optionally selector for a metric'), - metric: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { pods+: { metric+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { pods+: { metric+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { pods+: { metric+: { selector+: { matchLabels: matchLabels } } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { pods+: { metric+: { selector+: { matchLabels+: matchLabels } } } } - }, - '#withName':: d.fn(help='name is the name of the given metric', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { pods+: { metric+: { name: name } } } - }, - '#target':: d.obj(help='MetricTarget defines the target value, average value, or average utilization of a specific metric'), - target: { - '#withAverageUtilization':: d.fn(help='averageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. Currently only valid for Resource metric source type', args=[d.arg(name='averageUtilization', type=d.T.integer)]), - withAverageUtilization(averageUtilization): { pods+: { target+: { averageUtilization: averageUtilization } } }, - '#withAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='averageValue', type=d.T.string)]), - withAverageValue(averageValue): { pods+: { target+: { averageValue: averageValue } } }, - '#withType':: d.fn(help='type represents whether the metric type is Utilization, Value, or AverageValue', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { pods+: { target+: { type: type } } }, - '#withValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='value', type=d.T.string)]), - withValue(value): { pods+: { target+: { value: value } } } - } - }, - '#resource':: d.obj(help='ResourceMetricSource indicates how to scale on a resource metric known to Kubernetes, as specified in requests and limits, describing each pod in the current scale target (e.g. CPU or memory). The values will be averaged together before being compared to the target. Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the "pods" source. Only one "target" type should be set.'), - resource: { - '#target':: d.obj(help='MetricTarget defines the target value, average value, or average utilization of a specific metric'), - target: { - '#withAverageUtilization':: d.fn(help='averageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. Currently only valid for Resource metric source type', args=[d.arg(name='averageUtilization', type=d.T.integer)]), - withAverageUtilization(averageUtilization): { resource+: { target+: { averageUtilization: averageUtilization } } }, - '#withAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='averageValue', type=d.T.string)]), - withAverageValue(averageValue): { resource+: { target+: { averageValue: averageValue } } }, - '#withType':: d.fn(help='type represents whether the metric type is Utilization, Value, or AverageValue', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { resource+: { target+: { type: type } } }, - '#withValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='value', type=d.T.string)]), - withValue(value): { resource+: { target+: { value: value } } } - }, - '#withName':: d.fn(help='name is the name of the resource in question.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { resource+: { name: name } } - }, - '#withType':: d.fn(help='type is the type of metric source. It should be one of "Object", "Pods" or "Resource", each mapping to a matching field in the object.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/metricStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/metricStatus.libsonnet deleted file mode 100644 index 75ad705d3954..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/metricStatus.libsonnet +++ /dev/null @@ -1,113 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='metricStatus', url='', help='MetricStatus describes the last-read state of a single metric.'), - '#external':: d.obj(help='ExternalMetricStatus indicates the current value of a global metric not associated with any Kubernetes object.'), - external: { - '#current':: d.obj(help='MetricValueStatus holds the current value for a metric'), - current: { - '#withAverageUtilization':: d.fn(help='currentAverageUtilization is the current value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods.', args=[d.arg(name='averageUtilization', type=d.T.integer)]), - withAverageUtilization(averageUtilization): { external+: { current+: { averageUtilization: averageUtilization } } }, - '#withAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='averageValue', type=d.T.string)]), - withAverageValue(averageValue): { external+: { current+: { averageValue: averageValue } } }, - '#withValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='value', type=d.T.string)]), - withValue(value): { external+: { current+: { value: value } } } - }, - '#metric':: d.obj(help='MetricIdentifier defines the name and optionally selector for a metric'), - metric: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { external+: { metric+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { external+: { metric+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { external+: { metric+: { selector+: { matchLabels: matchLabels } } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { external+: { metric+: { selector+: { matchLabels+: matchLabels } } } } - }, - '#withName':: d.fn(help='name is the name of the given metric', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { external+: { metric+: { name: name } } } - } - }, - '#object':: d.obj(help='ObjectMetricStatus indicates the current value of a metric describing a kubernetes object (for example, hits-per-second on an Ingress object).'), - object: { - '#current':: d.obj(help='MetricValueStatus holds the current value for a metric'), - current: { - '#withAverageUtilization':: d.fn(help='currentAverageUtilization is the current value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods.', args=[d.arg(name='averageUtilization', type=d.T.integer)]), - withAverageUtilization(averageUtilization): { object+: { current+: { averageUtilization: averageUtilization } } }, - '#withAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='averageValue', type=d.T.string)]), - withAverageValue(averageValue): { object+: { current+: { averageValue: averageValue } } }, - '#withValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='value', type=d.T.string)]), - withValue(value): { object+: { current+: { value: value } } } - }, - '#describedObject':: d.obj(help='CrossVersionObjectReference contains enough information to let you identify the referred resource.'), - describedObject: { - '#withKind':: d.fn(help='Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds"', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { object+: { describedObject+: { kind: kind } } }, - '#withName':: d.fn(help='Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { object+: { describedObject+: { name: name } } } - }, - '#metric':: d.obj(help='MetricIdentifier defines the name and optionally selector for a metric'), - metric: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { object+: { metric+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { object+: { metric+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { object+: { metric+: { selector+: { matchLabels: matchLabels } } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { object+: { metric+: { selector+: { matchLabels+: matchLabels } } } } - }, - '#withName':: d.fn(help='name is the name of the given metric', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { object+: { metric+: { name: name } } } - } - }, - '#pods':: d.obj(help='PodsMetricStatus indicates the current value of a metric describing each pod in the current scale target (for example, transactions-processed-per-second).'), - pods: { - '#current':: d.obj(help='MetricValueStatus holds the current value for a metric'), - current: { - '#withAverageUtilization':: d.fn(help='currentAverageUtilization is the current value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods.', args=[d.arg(name='averageUtilization', type=d.T.integer)]), - withAverageUtilization(averageUtilization): { pods+: { current+: { averageUtilization: averageUtilization } } }, - '#withAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='averageValue', type=d.T.string)]), - withAverageValue(averageValue): { pods+: { current+: { averageValue: averageValue } } }, - '#withValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='value', type=d.T.string)]), - withValue(value): { pods+: { current+: { value: value } } } - }, - '#metric':: d.obj(help='MetricIdentifier defines the name and optionally selector for a metric'), - metric: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { pods+: { metric+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { pods+: { metric+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { pods+: { metric+: { selector+: { matchLabels: matchLabels } } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { pods+: { metric+: { selector+: { matchLabels+: matchLabels } } } } - }, - '#withName':: d.fn(help='name is the name of the given metric', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { pods+: { metric+: { name: name } } } - } - }, - '#resource':: d.obj(help='ResourceMetricStatus indicates the current value of a resource metric known to Kubernetes, as specified in requests and limits, describing each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the "pods" source.'), - resource: { - '#current':: d.obj(help='MetricValueStatus holds the current value for a metric'), - current: { - '#withAverageUtilization':: d.fn(help='currentAverageUtilization is the current value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods.', args=[d.arg(name='averageUtilization', type=d.T.integer)]), - withAverageUtilization(averageUtilization): { resource+: { current+: { averageUtilization: averageUtilization } } }, - '#withAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='averageValue', type=d.T.string)]), - withAverageValue(averageValue): { resource+: { current+: { averageValue: averageValue } } }, - '#withValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='value', type=d.T.string)]), - withValue(value): { resource+: { current+: { value: value } } } - }, - '#withName':: d.fn(help='Name is the name of the resource in question.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { resource+: { name: name } } - }, - '#withType':: d.fn(help='type is the type of metric source. It will be one of "Object", "Pods" or "Resource", each corresponds to a matching field in the object.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/metricTarget.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/metricTarget.libsonnet deleted file mode 100644 index 5bae66dc283e..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/metricTarget.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='metricTarget', url='', help='MetricTarget defines the target value, average value, or average utilization of a specific metric'), - '#withAverageUtilization':: d.fn(help='averageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. Currently only valid for Resource metric source type', args=[d.arg(name='averageUtilization', type=d.T.integer)]), - withAverageUtilization(averageUtilization): { averageUtilization: averageUtilization }, - '#withAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='averageValue', type=d.T.string)]), - withAverageValue(averageValue): { averageValue: averageValue }, - '#withType':: d.fn(help='type represents whether the metric type is Utilization, Value, or AverageValue', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#withValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='value', type=d.T.string)]), - withValue(value): { value: value }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/metricValueStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/metricValueStatus.libsonnet deleted file mode 100644 index 7e89ecb05687..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/metricValueStatus.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='metricValueStatus', url='', help='MetricValueStatus holds the current value for a metric'), - '#withAverageUtilization':: d.fn(help='currentAverageUtilization is the current value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods.', args=[d.arg(name='averageUtilization', type=d.T.integer)]), - withAverageUtilization(averageUtilization): { averageUtilization: averageUtilization }, - '#withAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='averageValue', type=d.T.string)]), - withAverageValue(averageValue): { averageValue: averageValue }, - '#withValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='value', type=d.T.string)]), - withValue(value): { value: value }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/objectMetricSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/objectMetricSource.libsonnet deleted file mode 100644 index 76d6f244b993..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/objectMetricSource.libsonnet +++ /dev/null @@ -1,40 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='objectMetricSource', url='', help='ObjectMetricSource indicates how to scale on a metric describing a kubernetes object (for example, hits-per-second on an Ingress object).'), - '#describedObject':: d.obj(help='CrossVersionObjectReference contains enough information to let you identify the referred resource.'), - describedObject: { - '#withKind':: d.fn(help='Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds"', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { describedObject+: { kind: kind } }, - '#withName':: d.fn(help='Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { describedObject+: { name: name } } - }, - '#metric':: d.obj(help='MetricIdentifier defines the name and optionally selector for a metric'), - metric: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { metric+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { metric+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { metric+: { selector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { metric+: { selector+: { matchLabels+: matchLabels } } } - }, - '#withName':: d.fn(help='name is the name of the given metric', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metric+: { name: name } } - }, - '#target':: d.obj(help='MetricTarget defines the target value, average value, or average utilization of a specific metric'), - target: { - '#withAverageUtilization':: d.fn(help='averageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. Currently only valid for Resource metric source type', args=[d.arg(name='averageUtilization', type=d.T.integer)]), - withAverageUtilization(averageUtilization): { target+: { averageUtilization: averageUtilization } }, - '#withAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='averageValue', type=d.T.string)]), - withAverageValue(averageValue): { target+: { averageValue: averageValue } }, - '#withType':: d.fn(help='type represents whether the metric type is Utilization, Value, or AverageValue', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { target+: { type: type } }, - '#withValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='value', type=d.T.string)]), - withValue(value): { target+: { value: value } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/objectMetricStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/objectMetricStatus.libsonnet deleted file mode 100644 index d7ce0d08eb91..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/objectMetricStatus.libsonnet +++ /dev/null @@ -1,38 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='objectMetricStatus', url='', help='ObjectMetricStatus indicates the current value of a metric describing a kubernetes object (for example, hits-per-second on an Ingress object).'), - '#current':: d.obj(help='MetricValueStatus holds the current value for a metric'), - current: { - '#withAverageUtilization':: d.fn(help='currentAverageUtilization is the current value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods.', args=[d.arg(name='averageUtilization', type=d.T.integer)]), - withAverageUtilization(averageUtilization): { current+: { averageUtilization: averageUtilization } }, - '#withAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='averageValue', type=d.T.string)]), - withAverageValue(averageValue): { current+: { averageValue: averageValue } }, - '#withValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='value', type=d.T.string)]), - withValue(value): { current+: { value: value } } - }, - '#describedObject':: d.obj(help='CrossVersionObjectReference contains enough information to let you identify the referred resource.'), - describedObject: { - '#withKind':: d.fn(help='Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds"', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { describedObject+: { kind: kind } }, - '#withName':: d.fn(help='Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { describedObject+: { name: name } } - }, - '#metric':: d.obj(help='MetricIdentifier defines the name and optionally selector for a metric'), - metric: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { metric+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { metric+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { metric+: { selector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { metric+: { selector+: { matchLabels+: matchLabels } } } - }, - '#withName':: d.fn(help='name is the name of the given metric', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metric+: { name: name } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/podsMetricSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/podsMetricSource.libsonnet deleted file mode 100644 index 6f1487539022..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/podsMetricSource.libsonnet +++ /dev/null @@ -1,33 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='podsMetricSource', url='', help='PodsMetricSource indicates how to scale on a metric describing each pod in the current scale target (for example, transactions-processed-per-second). The values will be averaged together before being compared to the target value.'), - '#metric':: d.obj(help='MetricIdentifier defines the name and optionally selector for a metric'), - metric: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { metric+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { metric+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { metric+: { selector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { metric+: { selector+: { matchLabels+: matchLabels } } } - }, - '#withName':: d.fn(help='name is the name of the given metric', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metric+: { name: name } } - }, - '#target':: d.obj(help='MetricTarget defines the target value, average value, or average utilization of a specific metric'), - target: { - '#withAverageUtilization':: d.fn(help='averageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. Currently only valid for Resource metric source type', args=[d.arg(name='averageUtilization', type=d.T.integer)]), - withAverageUtilization(averageUtilization): { target+: { averageUtilization: averageUtilization } }, - '#withAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='averageValue', type=d.T.string)]), - withAverageValue(averageValue): { target+: { averageValue: averageValue } }, - '#withType':: d.fn(help='type represents whether the metric type is Utilization, Value, or AverageValue', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { target+: { type: type } }, - '#withValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='value', type=d.T.string)]), - withValue(value): { target+: { value: value } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/podsMetricStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/podsMetricStatus.libsonnet deleted file mode 100644 index a849f602b084..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/podsMetricStatus.libsonnet +++ /dev/null @@ -1,31 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='podsMetricStatus', url='', help='PodsMetricStatus indicates the current value of a metric describing each pod in the current scale target (for example, transactions-processed-per-second).'), - '#current':: d.obj(help='MetricValueStatus holds the current value for a metric'), - current: { - '#withAverageUtilization':: d.fn(help='currentAverageUtilization is the current value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods.', args=[d.arg(name='averageUtilization', type=d.T.integer)]), - withAverageUtilization(averageUtilization): { current+: { averageUtilization: averageUtilization } }, - '#withAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='averageValue', type=d.T.string)]), - withAverageValue(averageValue): { current+: { averageValue: averageValue } }, - '#withValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='value', type=d.T.string)]), - withValue(value): { current+: { value: value } } - }, - '#metric':: d.obj(help='MetricIdentifier defines the name and optionally selector for a metric'), - metric: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { metric+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { metric+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { metric+: { selector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { metric+: { selector+: { matchLabels+: matchLabels } } } - }, - '#withName':: d.fn(help='name is the name of the given metric', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metric+: { name: name } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/resourceMetricSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/resourceMetricSource.libsonnet deleted file mode 100644 index fb8ce77b0518..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/resourceMetricSource.libsonnet +++ /dev/null @@ -1,19 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='resourceMetricSource', url='', help='ResourceMetricSource indicates how to scale on a resource metric known to Kubernetes, as specified in requests and limits, describing each pod in the current scale target (e.g. CPU or memory). The values will be averaged together before being compared to the target. Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the "pods" source. Only one "target" type should be set.'), - '#target':: d.obj(help='MetricTarget defines the target value, average value, or average utilization of a specific metric'), - target: { - '#withAverageUtilization':: d.fn(help='averageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. Currently only valid for Resource metric source type', args=[d.arg(name='averageUtilization', type=d.T.integer)]), - withAverageUtilization(averageUtilization): { target+: { averageUtilization: averageUtilization } }, - '#withAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='averageValue', type=d.T.string)]), - withAverageValue(averageValue): { target+: { averageValue: averageValue } }, - '#withType':: d.fn(help='type represents whether the metric type is Utilization, Value, or AverageValue', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { target+: { type: type } }, - '#withValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='value', type=d.T.string)]), - withValue(value): { target+: { value: value } } - }, - '#withName':: d.fn(help='name is the name of the resource in question.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/resourceMetricStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/resourceMetricStatus.libsonnet deleted file mode 100644 index f06bceea879a..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/autoscaling/v2beta2/resourceMetricStatus.libsonnet +++ /dev/null @@ -1,17 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='resourceMetricStatus', url='', help='ResourceMetricStatus indicates the current value of a resource metric known to Kubernetes, as specified in requests and limits, describing each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the "pods" source.'), - '#current':: d.obj(help='MetricValueStatus holds the current value for a metric'), - current: { - '#withAverageUtilization':: d.fn(help='currentAverageUtilization is the current value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods.', args=[d.arg(name='averageUtilization', type=d.T.integer)]), - withAverageUtilization(averageUtilization): { current+: { averageUtilization: averageUtilization } }, - '#withAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='averageValue', type=d.T.string)]), - withAverageValue(averageValue): { current+: { averageValue: averageValue } }, - '#withValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='value', type=d.T.string)]), - withValue(value): { current+: { value: value } } - }, - '#withName':: d.fn(help='Name is the name of the resource in question.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/main.libsonnet deleted file mode 100644 index 74f858163712..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/main.libsonnet +++ /dev/null @@ -1,7 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='batch', url='', help=''), - v1: (import 'v1/main.libsonnet'), - v1beta1: (import 'v1beta1/main.libsonnet'), - v2alpha1: (import 'v2alpha1/main.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v1/job.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v1/job.libsonnet deleted file mode 100644 index ae460dced8ef..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v1/job.libsonnet +++ /dev/null @@ -1,361 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='job', url='', help='Job represents the configuration of a single job.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Job', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'batch/v1', - kind: 'Job' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='JobSpec describes how the job execution will look like.'), - spec: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { spec+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { spec+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { spec+: { selector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { spec+: { selector+: { matchLabels+: matchLabels } } } - }, - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { group: group } } } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { name: name } } } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { spec+: { template+: { metadata+: { initializers+: { result+: { code: code } } } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { template+: { metadata+: { initializers+: { result+: { kind: kind } } } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { spec+: { template+: { metadata+: { initializers+: { result+: { message: message } } } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { spec+: { template+: { metadata+: { initializers+: { result+: { metadata: metadata } } } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { spec+: { template+: { metadata+: { initializers+: { result+: { reason: reason } } } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { spec+: { template+: { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { spec+: { template+: { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { spec+: { template+: { metadata+: { annotations: annotations } } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { spec+: { template+: { metadata+: { annotations+: annotations } } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { spec+: { template+: { metadata+: { clusterName: clusterName } } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { spec+: { template+: { metadata+: { creationTimestamp: creationTimestamp } } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { spec+: { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { spec+: { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { spec+: { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { spec+: { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { spec+: { template+: { metadata+: { generateName: generateName } } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { spec+: { template+: { metadata+: { generation: generation } } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { spec+: { template+: { metadata+: { labels: labels } } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { spec+: { template+: { metadata+: { labels+: labels } } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { spec+: { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { spec+: { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { template+: { metadata+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { template+: { metadata+: { namespace: namespace } } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { spec+: { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { spec+: { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { spec+: { template+: { metadata+: { resourceVersion: resourceVersion } } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { spec+: { template+: { metadata+: { selfLink: selfLink } } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { template+: { metadata+: { uid: uid } } } } - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } } - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } - } - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { spec+: { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { spec+: { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { spec+: { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { spec+: { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { spec+: { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { spec+: { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } } } - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } } } - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { spec+: { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { spec+: { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { spec+: { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { spec+: { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { spec+: { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { spec+: { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { spec+: { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { spec+: { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } } - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { spec+: { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { spec+: { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { spec+: { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { spec+: { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { spec+: { template+: { spec+: { dnsPolicy: dnsPolicy } } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { spec+: { template+: { spec+: { enableServiceLinks: enableServiceLinks } } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { spec+: { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { spec+: { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { spec+: { template+: { spec+: { hostIPC: hostIPC } } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { spec+: { template+: { spec+: { hostNetwork: hostNetwork } } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { spec+: { template+: { spec+: { hostPID: hostPID } } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { spec+: { template+: { spec+: { hostname: hostname } } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { spec+: { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { spec+: { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { spec+: { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { spec+: { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { spec+: { template+: { spec+: { nodeName: nodeName } } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { spec+: { template+: { spec+: { nodeSelector: nodeSelector } } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { spec+: { template+: { spec+: { nodeSelector+: nodeSelector } } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { spec+: { template+: { spec+: { priority: priority } } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { spec+: { template+: { spec+: { priorityClassName: priorityClassName } } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { spec+: { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { spec+: { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { spec+: { template+: { spec+: { restartPolicy: restartPolicy } } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is an alpha feature and may change in the future.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { spec+: { template+: { spec+: { runtimeClassName: runtimeClassName } } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { spec+: { template+: { spec+: { schedulerName: schedulerName } } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { spec+: { template+: { spec+: { serviceAccount: serviceAccount } } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { spec+: { template+: { spec+: { serviceAccountName: serviceAccountName } } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false. This field is beta-level and may be disabled with the PodShareProcessNamespace feature.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { spec+: { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { spec+: { template+: { spec+: { subdomain: subdomain } } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { spec+: { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { spec+: { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { spec+: { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { spec+: { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { spec+: { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } } } - } - }, - '#withActiveDeadlineSeconds':: d.fn(help='Specifies the duration in seconds relative to the startTime that the job may be active before the system tries to terminate it; value must be positive integer', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } }, - '#withBackoffLimit':: d.fn(help='Specifies the number of retries before marking this job failed. Defaults to 6', args=[d.arg(name='backoffLimit', type=d.T.integer)]), - withBackoffLimit(backoffLimit): { spec+: { backoffLimit: backoffLimit } }, - '#withCompletions':: d.fn(help='Specifies the desired number of successfully finished pods the job should be run with. Setting to nil means that the success of any pod signals the success of all pods, and allows parallelism to have any positive value. Setting to 1 means that parallelism is limited to 1 and the success of that pod signals the success of the job. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/', args=[d.arg(name='completions', type=d.T.integer)]), - withCompletions(completions): { spec+: { completions: completions } }, - '#withManualSelector':: d.fn(help='manualSelector controls generation of pod labels and pod selectors. Leave `manualSelector` unset unless you are certain what you are doing. When false or unset, the system pick labels unique to this job and appends those labels to the pod template. When true, the user is responsible for picking unique labels and specifying the selector. Failure to pick a unique label may cause this and other jobs to not function correctly. However, You may see `manualSelector=true` in jobs that were created with the old `extensions/v1beta1` API. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/#specifying-your-own-pod-selector', args=[d.arg(name='manualSelector', type=d.T.boolean)]), - withManualSelector(manualSelector): { spec+: { manualSelector: manualSelector } }, - '#withParallelism':: d.fn(help='Specifies the maximum desired number of pods the job should run at any given time. The actual number of pods running in steady state will be less than this number when ((.spec.completions - .status.successful) < .spec.parallelism), i.e. when the work left to do is less than max parallelism. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/', args=[d.arg(name='parallelism', type=d.T.integer)]), - withParallelism(parallelism): { spec+: { parallelism: parallelism } }, - '#withTtlSecondsAfterFinished':: d.fn(help="ttlSecondsAfterFinished limits the lifetime of a Job that has finished execution (either Complete or Failed). If this field is set, ttlSecondsAfterFinished after the Job finishes, it is eligible to be automatically deleted. When the Job is being deleted, its lifecycle guarantees (e.g. finalizers) will be honored. If this field is unset, the Job won't be automatically deleted. If this field is set to zero, the Job becomes eligible to be deleted immediately after it finishes. This field is alpha-level and is only honored by servers that enable the TTLAfterFinished feature.", args=[d.arg(name='ttlSecondsAfterFinished', type=d.T.integer)]), - withTtlSecondsAfterFinished(ttlSecondsAfterFinished): { spec+: { ttlSecondsAfterFinished: ttlSecondsAfterFinished } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v1/jobCondition.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v1/jobCondition.libsonnet deleted file mode 100644 index 6310ee739678..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v1/jobCondition.libsonnet +++ /dev/null @@ -1,16 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='jobCondition', url='', help='JobCondition describes current state of a job.'), - '#withLastProbeTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastProbeTime', type=d.T.string)]), - withLastProbeTime(lastProbeTime): { lastProbeTime: lastProbeTime }, - '#withLastTransitionTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastTransitionTime', type=d.T.string)]), - withLastTransitionTime(lastTransitionTime): { lastTransitionTime: lastTransitionTime }, - '#withMessage':: d.fn(help='Human readable message indicating details about last transition.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withReason':: d.fn(help="(brief) reason for the condition's last transition.", args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#withType':: d.fn(help='Type of job condition, Complete or Failed.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v1/jobSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v1/jobSpec.libsonnet deleted file mode 100644 index f2916d087085..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v1/jobSpec.libsonnet +++ /dev/null @@ -1,271 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='jobSpec', url='', help='JobSpec describes how the job execution will look like.'), - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { selector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { selector+: { matchLabels+: matchLabels } } - }, - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { template+: { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { template+: { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { template+: { metadata+: { initializers+: { result+: { details+: { group: group } } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { template+: { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { template+: { metadata+: { initializers+: { result+: { details+: { name: name } } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { template+: { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { template+: { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { template+: { metadata+: { initializers+: { result+: { code: code } } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { template+: { metadata+: { initializers+: { result+: { kind: kind } } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { template+: { metadata+: { initializers+: { result+: { message: message } } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { template+: { metadata+: { initializers+: { result+: { metadata: metadata } } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { template+: { metadata+: { initializers+: { result+: { reason: reason } } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { template+: { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { template+: { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { template+: { metadata+: { annotations: annotations } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { template+: { metadata+: { annotations+: annotations } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { template+: { metadata+: { clusterName: clusterName } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { template+: { metadata+: { creationTimestamp: creationTimestamp } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { template+: { metadata+: { generateName: generateName } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { template+: { metadata+: { generation: generation } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { template+: { metadata+: { labels: labels } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { template+: { metadata+: { labels+: labels } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { template+: { metadata+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { template+: { metadata+: { namespace: namespace } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { template+: { metadata+: { resourceVersion: resourceVersion } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { template+: { metadata+: { selfLink: selfLink } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { template+: { metadata+: { uid: uid } } } - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } - } - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } } - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } } - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { template+: { spec+: { dnsPolicy: dnsPolicy } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { template+: { spec+: { enableServiceLinks: enableServiceLinks } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { template+: { spec+: { hostIPC: hostIPC } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { template+: { spec+: { hostNetwork: hostNetwork } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { template+: { spec+: { hostPID: hostPID } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { template+: { spec+: { hostname: hostname } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { template+: { spec+: { nodeName: nodeName } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { template+: { spec+: { nodeSelector: nodeSelector } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { template+: { spec+: { nodeSelector+: nodeSelector } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { template+: { spec+: { priority: priority } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { template+: { spec+: { priorityClassName: priorityClassName } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { template+: { spec+: { restartPolicy: restartPolicy } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is an alpha feature and may change in the future.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { template+: { spec+: { runtimeClassName: runtimeClassName } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { template+: { spec+: { schedulerName: schedulerName } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { template+: { spec+: { serviceAccount: serviceAccount } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { template+: { spec+: { serviceAccountName: serviceAccountName } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false. This field is beta-level and may be disabled with the PodShareProcessNamespace feature.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { template+: { spec+: { subdomain: subdomain } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } } - } - }, - '#withActiveDeadlineSeconds':: d.fn(help='Specifies the duration in seconds relative to the startTime that the job may be active before the system tries to terminate it; value must be positive integer', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { activeDeadlineSeconds: activeDeadlineSeconds }, - '#withBackoffLimit':: d.fn(help='Specifies the number of retries before marking this job failed. Defaults to 6', args=[d.arg(name='backoffLimit', type=d.T.integer)]), - withBackoffLimit(backoffLimit): { backoffLimit: backoffLimit }, - '#withCompletions':: d.fn(help='Specifies the desired number of successfully finished pods the job should be run with. Setting to nil means that the success of any pod signals the success of all pods, and allows parallelism to have any positive value. Setting to 1 means that parallelism is limited to 1 and the success of that pod signals the success of the job. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/', args=[d.arg(name='completions', type=d.T.integer)]), - withCompletions(completions): { completions: completions }, - '#withManualSelector':: d.fn(help='manualSelector controls generation of pod labels and pod selectors. Leave `manualSelector` unset unless you are certain what you are doing. When false or unset, the system pick labels unique to this job and appends those labels to the pod template. When true, the user is responsible for picking unique labels and specifying the selector. Failure to pick a unique label may cause this and other jobs to not function correctly. However, You may see `manualSelector=true` in jobs that were created with the old `extensions/v1beta1` API. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/#specifying-your-own-pod-selector', args=[d.arg(name='manualSelector', type=d.T.boolean)]), - withManualSelector(manualSelector): { manualSelector: manualSelector }, - '#withParallelism':: d.fn(help='Specifies the maximum desired number of pods the job should run at any given time. The actual number of pods running in steady state will be less than this number when ((.spec.completions - .status.successful) < .spec.parallelism), i.e. when the work left to do is less than max parallelism. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/', args=[d.arg(name='parallelism', type=d.T.integer)]), - withParallelism(parallelism): { parallelism: parallelism }, - '#withTtlSecondsAfterFinished':: d.fn(help="ttlSecondsAfterFinished limits the lifetime of a Job that has finished execution (either Complete or Failed). If this field is set, ttlSecondsAfterFinished after the Job finishes, it is eligible to be automatically deleted. When the Job is being deleted, its lifecycle guarantees (e.g. finalizers) will be honored. If this field is unset, the Job won't be automatically deleted. If this field is set to zero, the Job becomes eligible to be deleted immediately after it finishes. This field is alpha-level and is only honored by servers that enable the TTLAfterFinished feature.", args=[d.arg(name='ttlSecondsAfterFinished', type=d.T.integer)]), - withTtlSecondsAfterFinished(ttlSecondsAfterFinished): { ttlSecondsAfterFinished: ttlSecondsAfterFinished }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v1/jobStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v1/jobStatus.libsonnet deleted file mode 100644 index a5b6eeabb33b..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v1/jobStatus.libsonnet +++ /dev/null @@ -1,20 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='jobStatus', url='', help='JobStatus represents the current state of a Job.'), - '#withActive':: d.fn(help='The number of actively running pods.', args=[d.arg(name='active', type=d.T.integer)]), - withActive(active): { active: active }, - '#withCompletionTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='completionTime', type=d.T.string)]), - withCompletionTime(completionTime): { completionTime: completionTime }, - '#withConditions':: d.fn(help="The latest available observations of an object's current state. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/", args=[d.arg(name='conditions', type=d.T.array)]), - withConditions(conditions): { conditions: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withConditionsMixin':: d.fn(help="The latest available observations of an object's current state. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='conditions', type=d.T.array)]), - withConditionsMixin(conditions): { conditions+: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withFailed':: d.fn(help='The number of pods which reached phase Failed.', args=[d.arg(name='failed', type=d.T.integer)]), - withFailed(failed): { failed: failed }, - '#withStartTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='startTime', type=d.T.string)]), - withStartTime(startTime): { startTime: startTime }, - '#withSucceeded':: d.fn(help='The number of pods which reached phase Succeeded.', args=[d.arg(name='succeeded', type=d.T.integer)]), - withSucceeded(succeeded): { succeeded: succeeded }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v1/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v1/main.libsonnet deleted file mode 100644 index 83bac04eebe3..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v1/main.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1', url='', help=''), - job: (import 'job.libsonnet'), - jobCondition: (import 'jobCondition.libsonnet'), - jobSpec: (import 'jobSpec.libsonnet'), - jobStatus: (import 'jobStatus.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v1beta1/cronJob.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v1beta1/cronJob.libsonnet deleted file mode 100644 index 455c74dc7b22..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v1beta1/cronJob.libsonnet +++ /dev/null @@ -1,461 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='cronJob', url='', help='CronJob represents the configuration of a single cron job.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Cronjob', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'batch/v1beta1', - kind: 'CronJob' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='CronJobSpec describes how the job execution will look like and when it will actually run.'), - spec: { - '#jobTemplate':: d.obj(help='JobTemplateSpec describes the data a Job should have when created from a template'), - jobTemplate: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { spec+: { jobTemplate+: { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { spec+: { jobTemplate+: { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { spec+: { jobTemplate+: { metadata+: { initializers+: { result+: { details+: { group: group } } } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { jobTemplate+: { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { jobTemplate+: { metadata+: { initializers+: { result+: { details+: { name: name } } } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { spec+: { jobTemplate+: { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { jobTemplate+: { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { spec+: { jobTemplate+: { metadata+: { initializers+: { result+: { code: code } } } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { jobTemplate+: { metadata+: { initializers+: { result+: { kind: kind } } } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { spec+: { jobTemplate+: { metadata+: { initializers+: { result+: { message: message } } } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { spec+: { jobTemplate+: { metadata+: { initializers+: { result+: { metadata: metadata } } } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { spec+: { jobTemplate+: { metadata+: { initializers+: { result+: { reason: reason } } } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { spec+: { jobTemplate+: { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { spec+: { jobTemplate+: { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { spec+: { jobTemplate+: { metadata+: { annotations: annotations } } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { spec+: { jobTemplate+: { metadata+: { annotations+: annotations } } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { spec+: { jobTemplate+: { metadata+: { clusterName: clusterName } } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { spec+: { jobTemplate+: { metadata+: { creationTimestamp: creationTimestamp } } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { spec+: { jobTemplate+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { spec+: { jobTemplate+: { metadata+: { deletionTimestamp: deletionTimestamp } } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { spec+: { jobTemplate+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { spec+: { jobTemplate+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { spec+: { jobTemplate+: { metadata+: { generateName: generateName } } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { spec+: { jobTemplate+: { metadata+: { generation: generation } } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { spec+: { jobTemplate+: { metadata+: { labels: labels } } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { spec+: { jobTemplate+: { metadata+: { labels+: labels } } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { spec+: { jobTemplate+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { spec+: { jobTemplate+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { jobTemplate+: { metadata+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { jobTemplate+: { metadata+: { namespace: namespace } } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { spec+: { jobTemplate+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { spec+: { jobTemplate+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { spec+: { jobTemplate+: { metadata+: { resourceVersion: resourceVersion } } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { spec+: { jobTemplate+: { metadata+: { selfLink: selfLink } } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { jobTemplate+: { metadata+: { uid: uid } } } } - }, - '#spec':: d.obj(help='JobSpec describes how the job execution will look like.'), - spec: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { spec+: { jobTemplate+: { spec+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { spec+: { jobTemplate+: { spec+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { spec+: { jobTemplate+: { spec+: { selector+: { matchLabels: matchLabels } } } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { spec+: { jobTemplate+: { spec+: { selector+: { matchLabels+: matchLabels } } } } } - }, - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { group: group } } } } } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { name: name } } } } } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { result+: { code: code } } } } } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { result+: { kind: kind } } } } } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { result+: { message: message } } } } } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { result+: { metadata: metadata } } } } } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { result+: { reason: reason } } } } } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } } } } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } } } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { annotations: annotations } } } } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { annotations+: annotations } } } } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { clusterName: clusterName } } } } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { creationTimestamp: creationTimestamp } } } } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } } } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } } } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { generateName: generateName } } } } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { generation: generation } } } } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { labels: labels } } } } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { labels+: labels } } } } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { name: name } } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { namespace: namespace } } } } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { resourceVersion: resourceVersion } } } } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { selfLink: selfLink } } } } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { uid: uid } } } } } } - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } } } } - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } } } - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } } } - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } } } - } - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } } } } } - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } } } } } - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } } } } - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } } } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } } } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } } } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } } } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { dnsPolicy: dnsPolicy } } } } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { enableServiceLinks: enableServiceLinks } } } } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { hostIPC: hostIPC } } } } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { hostNetwork: hostNetwork } } } } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { hostPID: hostPID } } } } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { hostname: hostname } } } } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { nodeName: nodeName } } } } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { nodeSelector: nodeSelector } } } } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { nodeSelector+: nodeSelector } } } } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { priority: priority } } } } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { priorityClassName: priorityClassName } } } } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { restartPolicy: restartPolicy } } } } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is an alpha feature and may change in the future.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { runtimeClassName: runtimeClassName } } } } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { schedulerName: schedulerName } } } } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { serviceAccount: serviceAccount } } } } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { serviceAccountName: serviceAccountName } } } } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false. This field is beta-level and may be disabled with the PodShareProcessNamespace feature.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } } } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { subdomain: subdomain } } } } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } } } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } } } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } } } } } - } - }, - '#withActiveDeadlineSeconds':: d.fn(help='Specifies the duration in seconds relative to the startTime that the job may be active before the system tries to terminate it; value must be positive integer', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { spec+: { jobTemplate+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } } }, - '#withBackoffLimit':: d.fn(help='Specifies the number of retries before marking this job failed. Defaults to 6', args=[d.arg(name='backoffLimit', type=d.T.integer)]), - withBackoffLimit(backoffLimit): { spec+: { jobTemplate+: { spec+: { backoffLimit: backoffLimit } } } }, - '#withCompletions':: d.fn(help='Specifies the desired number of successfully finished pods the job should be run with. Setting to nil means that the success of any pod signals the success of all pods, and allows parallelism to have any positive value. Setting to 1 means that parallelism is limited to 1 and the success of that pod signals the success of the job. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/', args=[d.arg(name='completions', type=d.T.integer)]), - withCompletions(completions): { spec+: { jobTemplate+: { spec+: { completions: completions } } } }, - '#withManualSelector':: d.fn(help='manualSelector controls generation of pod labels and pod selectors. Leave `manualSelector` unset unless you are certain what you are doing. When false or unset, the system pick labels unique to this job and appends those labels to the pod template. When true, the user is responsible for picking unique labels and specifying the selector. Failure to pick a unique label may cause this and other jobs to not function correctly. However, You may see `manualSelector=true` in jobs that were created with the old `extensions/v1beta1` API. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/#specifying-your-own-pod-selector', args=[d.arg(name='manualSelector', type=d.T.boolean)]), - withManualSelector(manualSelector): { spec+: { jobTemplate+: { spec+: { manualSelector: manualSelector } } } }, - '#withParallelism':: d.fn(help='Specifies the maximum desired number of pods the job should run at any given time. The actual number of pods running in steady state will be less than this number when ((.spec.completions - .status.successful) < .spec.parallelism), i.e. when the work left to do is less than max parallelism. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/', args=[d.arg(name='parallelism', type=d.T.integer)]), - withParallelism(parallelism): { spec+: { jobTemplate+: { spec+: { parallelism: parallelism } } } }, - '#withTtlSecondsAfterFinished':: d.fn(help="ttlSecondsAfterFinished limits the lifetime of a Job that has finished execution (either Complete or Failed). If this field is set, ttlSecondsAfterFinished after the Job finishes, it is eligible to be automatically deleted. When the Job is being deleted, its lifecycle guarantees (e.g. finalizers) will be honored. If this field is unset, the Job won't be automatically deleted. If this field is set to zero, the Job becomes eligible to be deleted immediately after it finishes. This field is alpha-level and is only honored by servers that enable the TTLAfterFinished feature.", args=[d.arg(name='ttlSecondsAfterFinished', type=d.T.integer)]), - withTtlSecondsAfterFinished(ttlSecondsAfterFinished): { spec+: { jobTemplate+: { spec+: { ttlSecondsAfterFinished: ttlSecondsAfterFinished } } } } - } - }, - '#withConcurrencyPolicy':: d.fn(help="Specifies how to treat concurrent executions of a Job. Valid values are: - 'Allow' (default): allows CronJobs to run concurrently; - 'Forbid': forbids concurrent runs, skipping next run if previous run hasn't finished yet; - 'Replace': cancels currently running job and replaces it with a new one", args=[d.arg(name='concurrencyPolicy', type=d.T.string)]), - withConcurrencyPolicy(concurrencyPolicy): { spec+: { concurrencyPolicy: concurrencyPolicy } }, - '#withFailedJobsHistoryLimit':: d.fn(help='The number of failed finished jobs to retain. This is a pointer to distinguish between explicit zero and not specified. Defaults to 1.', args=[d.arg(name='failedJobsHistoryLimit', type=d.T.integer)]), - withFailedJobsHistoryLimit(failedJobsHistoryLimit): { spec+: { failedJobsHistoryLimit: failedJobsHistoryLimit } }, - '#withSchedule':: d.fn(help='The schedule in Cron format, see https://en.wikipedia.org/wiki/Cron.', args=[d.arg(name='schedule', type=d.T.string)]), - withSchedule(schedule): { spec+: { schedule: schedule } }, - '#withStartingDeadlineSeconds':: d.fn(help='Optional deadline in seconds for starting the job if it misses scheduled time for any reason. Missed jobs executions will be counted as failed ones.', args=[d.arg(name='startingDeadlineSeconds', type=d.T.integer)]), - withStartingDeadlineSeconds(startingDeadlineSeconds): { spec+: { startingDeadlineSeconds: startingDeadlineSeconds } }, - '#withSuccessfulJobsHistoryLimit':: d.fn(help='The number of successful finished jobs to retain. This is a pointer to distinguish between explicit zero and not specified. Defaults to 3.', args=[d.arg(name='successfulJobsHistoryLimit', type=d.T.integer)]), - withSuccessfulJobsHistoryLimit(successfulJobsHistoryLimit): { spec+: { successfulJobsHistoryLimit: successfulJobsHistoryLimit } }, - '#withSuspend':: d.fn(help='This flag tells the controller to suspend subsequent executions, it does not apply to already started executions. Defaults to false.', args=[d.arg(name='suspend', type=d.T.boolean)]), - withSuspend(suspend): { spec+: { suspend: suspend } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v1beta1/cronJobSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v1beta1/cronJobSpec.libsonnet deleted file mode 100644 index e1bf93a9e7e2..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v1beta1/cronJobSpec.libsonnet +++ /dev/null @@ -1,371 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='cronJobSpec', url='', help='CronJobSpec describes how the job execution will look like and when it will actually run.'), - '#jobTemplate':: d.obj(help='JobTemplateSpec describes the data a Job should have when created from a template'), - jobTemplate: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { jobTemplate+: { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { jobTemplate+: { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { jobTemplate+: { metadata+: { initializers+: { result+: { details+: { group: group } } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { jobTemplate+: { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { jobTemplate+: { metadata+: { initializers+: { result+: { details+: { name: name } } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { jobTemplate+: { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { jobTemplate+: { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { jobTemplate+: { metadata+: { initializers+: { result+: { code: code } } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { jobTemplate+: { metadata+: { initializers+: { result+: { kind: kind } } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { jobTemplate+: { metadata+: { initializers+: { result+: { message: message } } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { jobTemplate+: { metadata+: { initializers+: { result+: { metadata: metadata } } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { jobTemplate+: { metadata+: { initializers+: { result+: { reason: reason } } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { jobTemplate+: { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { jobTemplate+: { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { jobTemplate+: { metadata+: { annotations: annotations } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { jobTemplate+: { metadata+: { annotations+: annotations } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { jobTemplate+: { metadata+: { clusterName: clusterName } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { jobTemplate+: { metadata+: { creationTimestamp: creationTimestamp } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { jobTemplate+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { jobTemplate+: { metadata+: { deletionTimestamp: deletionTimestamp } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { jobTemplate+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { jobTemplate+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { jobTemplate+: { metadata+: { generateName: generateName } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { jobTemplate+: { metadata+: { generation: generation } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { jobTemplate+: { metadata+: { labels: labels } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { jobTemplate+: { metadata+: { labels+: labels } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { jobTemplate+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { jobTemplate+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { jobTemplate+: { metadata+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { jobTemplate+: { metadata+: { namespace: namespace } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { jobTemplate+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { jobTemplate+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { jobTemplate+: { metadata+: { resourceVersion: resourceVersion } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { jobTemplate+: { metadata+: { selfLink: selfLink } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { jobTemplate+: { metadata+: { uid: uid } } } - }, - '#spec':: d.obj(help='JobSpec describes how the job execution will look like.'), - spec: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { jobTemplate+: { spec+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { jobTemplate+: { spec+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { jobTemplate+: { spec+: { selector+: { matchLabels: matchLabels } } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { jobTemplate+: { spec+: { selector+: { matchLabels+: matchLabels } } } } - }, - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { group: group } } } } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { name: name } } } } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { result+: { code: code } } } } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { result+: { kind: kind } } } } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { result+: { message: message } } } } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { result+: { metadata: metadata } } } } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { result+: { reason: reason } } } } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } } } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { jobTemplate+: { spec+: { template+: { metadata+: { annotations: annotations } } } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { jobTemplate+: { spec+: { template+: { metadata+: { annotations+: annotations } } } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { jobTemplate+: { spec+: { template+: { metadata+: { clusterName: clusterName } } } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { jobTemplate+: { spec+: { template+: { metadata+: { creationTimestamp: creationTimestamp } } } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { jobTemplate+: { spec+: { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { jobTemplate+: { spec+: { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { jobTemplate+: { spec+: { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { jobTemplate+: { spec+: { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { jobTemplate+: { spec+: { template+: { metadata+: { generateName: generateName } } } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { jobTemplate+: { spec+: { template+: { metadata+: { generation: generation } } } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { jobTemplate+: { spec+: { template+: { metadata+: { labels: labels } } } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { jobTemplate+: { spec+: { template+: { metadata+: { labels+: labels } } } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { jobTemplate+: { spec+: { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { jobTemplate+: { spec+: { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { jobTemplate+: { spec+: { template+: { metadata+: { name: name } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { jobTemplate+: { spec+: { template+: { metadata+: { namespace: namespace } } } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { jobTemplate+: { spec+: { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { jobTemplate+: { spec+: { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { jobTemplate+: { spec+: { template+: { metadata+: { resourceVersion: resourceVersion } } } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { jobTemplate+: { spec+: { template+: { metadata+: { selfLink: selfLink } } } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { jobTemplate+: { spec+: { template+: { metadata+: { uid: uid } } } } } - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } } } - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } } - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } } - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } } - } - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { jobTemplate+: { spec+: { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { jobTemplate+: { spec+: { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { jobTemplate+: { spec+: { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { jobTemplate+: { spec+: { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { jobTemplate+: { spec+: { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { jobTemplate+: { spec+: { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } } } } - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } } } } - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } } } - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { jobTemplate+: { spec+: { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { jobTemplate+: { spec+: { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { jobTemplate+: { spec+: { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { jobTemplate+: { spec+: { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { jobTemplate+: { spec+: { template+: { spec+: { dnsPolicy: dnsPolicy } } } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { jobTemplate+: { spec+: { template+: { spec+: { enableServiceLinks: enableServiceLinks } } } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { jobTemplate+: { spec+: { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { jobTemplate+: { spec+: { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { jobTemplate+: { spec+: { template+: { spec+: { hostIPC: hostIPC } } } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { jobTemplate+: { spec+: { template+: { spec+: { hostNetwork: hostNetwork } } } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { jobTemplate+: { spec+: { template+: { spec+: { hostPID: hostPID } } } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { jobTemplate+: { spec+: { template+: { spec+: { hostname: hostname } } } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { jobTemplate+: { spec+: { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { jobTemplate+: { spec+: { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { jobTemplate+: { spec+: { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { jobTemplate+: { spec+: { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { jobTemplate+: { spec+: { template+: { spec+: { nodeName: nodeName } } } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { jobTemplate+: { spec+: { template+: { spec+: { nodeSelector: nodeSelector } } } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { jobTemplate+: { spec+: { template+: { spec+: { nodeSelector+: nodeSelector } } } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { jobTemplate+: { spec+: { template+: { spec+: { priority: priority } } } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { jobTemplate+: { spec+: { template+: { spec+: { priorityClassName: priorityClassName } } } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { jobTemplate+: { spec+: { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { jobTemplate+: { spec+: { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { jobTemplate+: { spec+: { template+: { spec+: { restartPolicy: restartPolicy } } } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is an alpha feature and may change in the future.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { jobTemplate+: { spec+: { template+: { spec+: { runtimeClassName: runtimeClassName } } } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { jobTemplate+: { spec+: { template+: { spec+: { schedulerName: schedulerName } } } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { jobTemplate+: { spec+: { template+: { spec+: { serviceAccount: serviceAccount } } } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { jobTemplate+: { spec+: { template+: { spec+: { serviceAccountName: serviceAccountName } } } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false. This field is beta-level and may be disabled with the PodShareProcessNamespace feature.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { jobTemplate+: { spec+: { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { jobTemplate+: { spec+: { template+: { spec+: { subdomain: subdomain } } } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { jobTemplate+: { spec+: { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { jobTemplate+: { spec+: { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { jobTemplate+: { spec+: { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { jobTemplate+: { spec+: { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { jobTemplate+: { spec+: { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } } } } - } - }, - '#withActiveDeadlineSeconds':: d.fn(help='Specifies the duration in seconds relative to the startTime that the job may be active before the system tries to terminate it; value must be positive integer', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { jobTemplate+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } }, - '#withBackoffLimit':: d.fn(help='Specifies the number of retries before marking this job failed. Defaults to 6', args=[d.arg(name='backoffLimit', type=d.T.integer)]), - withBackoffLimit(backoffLimit): { jobTemplate+: { spec+: { backoffLimit: backoffLimit } } }, - '#withCompletions':: d.fn(help='Specifies the desired number of successfully finished pods the job should be run with. Setting to nil means that the success of any pod signals the success of all pods, and allows parallelism to have any positive value. Setting to 1 means that parallelism is limited to 1 and the success of that pod signals the success of the job. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/', args=[d.arg(name='completions', type=d.T.integer)]), - withCompletions(completions): { jobTemplate+: { spec+: { completions: completions } } }, - '#withManualSelector':: d.fn(help='manualSelector controls generation of pod labels and pod selectors. Leave `manualSelector` unset unless you are certain what you are doing. When false or unset, the system pick labels unique to this job and appends those labels to the pod template. When true, the user is responsible for picking unique labels and specifying the selector. Failure to pick a unique label may cause this and other jobs to not function correctly. However, You may see `manualSelector=true` in jobs that were created with the old `extensions/v1beta1` API. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/#specifying-your-own-pod-selector', args=[d.arg(name='manualSelector', type=d.T.boolean)]), - withManualSelector(manualSelector): { jobTemplate+: { spec+: { manualSelector: manualSelector } } }, - '#withParallelism':: d.fn(help='Specifies the maximum desired number of pods the job should run at any given time. The actual number of pods running in steady state will be less than this number when ((.spec.completions - .status.successful) < .spec.parallelism), i.e. when the work left to do is less than max parallelism. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/', args=[d.arg(name='parallelism', type=d.T.integer)]), - withParallelism(parallelism): { jobTemplate+: { spec+: { parallelism: parallelism } } }, - '#withTtlSecondsAfterFinished':: d.fn(help="ttlSecondsAfterFinished limits the lifetime of a Job that has finished execution (either Complete or Failed). If this field is set, ttlSecondsAfterFinished after the Job finishes, it is eligible to be automatically deleted. When the Job is being deleted, its lifecycle guarantees (e.g. finalizers) will be honored. If this field is unset, the Job won't be automatically deleted. If this field is set to zero, the Job becomes eligible to be deleted immediately after it finishes. This field is alpha-level and is only honored by servers that enable the TTLAfterFinished feature.", args=[d.arg(name='ttlSecondsAfterFinished', type=d.T.integer)]), - withTtlSecondsAfterFinished(ttlSecondsAfterFinished): { jobTemplate+: { spec+: { ttlSecondsAfterFinished: ttlSecondsAfterFinished } } } - } - }, - '#withConcurrencyPolicy':: d.fn(help="Specifies how to treat concurrent executions of a Job. Valid values are: - 'Allow' (default): allows CronJobs to run concurrently; - 'Forbid': forbids concurrent runs, skipping next run if previous run hasn't finished yet; - 'Replace': cancels currently running job and replaces it with a new one", args=[d.arg(name='concurrencyPolicy', type=d.T.string)]), - withConcurrencyPolicy(concurrencyPolicy): { concurrencyPolicy: concurrencyPolicy }, - '#withFailedJobsHistoryLimit':: d.fn(help='The number of failed finished jobs to retain. This is a pointer to distinguish between explicit zero and not specified. Defaults to 1.', args=[d.arg(name='failedJobsHistoryLimit', type=d.T.integer)]), - withFailedJobsHistoryLimit(failedJobsHistoryLimit): { failedJobsHistoryLimit: failedJobsHistoryLimit }, - '#withSchedule':: d.fn(help='The schedule in Cron format, see https://en.wikipedia.org/wiki/Cron.', args=[d.arg(name='schedule', type=d.T.string)]), - withSchedule(schedule): { schedule: schedule }, - '#withStartingDeadlineSeconds':: d.fn(help='Optional deadline in seconds for starting the job if it misses scheduled time for any reason. Missed jobs executions will be counted as failed ones.', args=[d.arg(name='startingDeadlineSeconds', type=d.T.integer)]), - withStartingDeadlineSeconds(startingDeadlineSeconds): { startingDeadlineSeconds: startingDeadlineSeconds }, - '#withSuccessfulJobsHistoryLimit':: d.fn(help='The number of successful finished jobs to retain. This is a pointer to distinguish between explicit zero and not specified. Defaults to 3.', args=[d.arg(name='successfulJobsHistoryLimit', type=d.T.integer)]), - withSuccessfulJobsHistoryLimit(successfulJobsHistoryLimit): { successfulJobsHistoryLimit: successfulJobsHistoryLimit }, - '#withSuspend':: d.fn(help='This flag tells the controller to suspend subsequent executions, it does not apply to already started executions. Defaults to false.', args=[d.arg(name='suspend', type=d.T.boolean)]), - withSuspend(suspend): { suspend: suspend }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v1beta1/cronJobStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v1beta1/cronJobStatus.libsonnet deleted file mode 100644 index df255a13e219..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v1beta1/cronJobStatus.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='cronJobStatus', url='', help='CronJobStatus represents the current state of a cron job.'), - '#withActive':: d.fn(help='A list of pointers to currently running jobs.', args=[d.arg(name='active', type=d.T.array)]), - withActive(active): { active: if std.isArray(v=active) then active else [active] }, - '#withActiveMixin':: d.fn(help='A list of pointers to currently running jobs.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='active', type=d.T.array)]), - withActiveMixin(active): { active+: if std.isArray(v=active) then active else [active] }, - '#withLastScheduleTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastScheduleTime', type=d.T.string)]), - withLastScheduleTime(lastScheduleTime): { lastScheduleTime: lastScheduleTime }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v1beta1/jobTemplateSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v1beta1/jobTemplateSpec.libsonnet deleted file mode 100644 index 091b8811970c..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v1beta1/jobTemplateSpec.libsonnet +++ /dev/null @@ -1,356 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='jobTemplateSpec', url='', help='JobTemplateSpec describes the data a Job should have when created from a template'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#spec':: d.obj(help='JobSpec describes how the job execution will look like.'), - spec: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { spec+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { spec+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { spec+: { selector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { spec+: { selector+: { matchLabels+: matchLabels } } } - }, - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { group: group } } } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { name: name } } } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { spec+: { template+: { metadata+: { initializers+: { result+: { code: code } } } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { template+: { metadata+: { initializers+: { result+: { kind: kind } } } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { spec+: { template+: { metadata+: { initializers+: { result+: { message: message } } } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { spec+: { template+: { metadata+: { initializers+: { result+: { metadata: metadata } } } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { spec+: { template+: { metadata+: { initializers+: { result+: { reason: reason } } } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { spec+: { template+: { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { spec+: { template+: { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { spec+: { template+: { metadata+: { annotations: annotations } } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { spec+: { template+: { metadata+: { annotations+: annotations } } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { spec+: { template+: { metadata+: { clusterName: clusterName } } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { spec+: { template+: { metadata+: { creationTimestamp: creationTimestamp } } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { spec+: { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { spec+: { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { spec+: { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { spec+: { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { spec+: { template+: { metadata+: { generateName: generateName } } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { spec+: { template+: { metadata+: { generation: generation } } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { spec+: { template+: { metadata+: { labels: labels } } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { spec+: { template+: { metadata+: { labels+: labels } } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { spec+: { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { spec+: { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { template+: { metadata+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { template+: { metadata+: { namespace: namespace } } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { spec+: { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { spec+: { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { spec+: { template+: { metadata+: { resourceVersion: resourceVersion } } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { spec+: { template+: { metadata+: { selfLink: selfLink } } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { template+: { metadata+: { uid: uid } } } } - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } } - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } - } - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { spec+: { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { spec+: { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { spec+: { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { spec+: { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { spec+: { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { spec+: { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } } } - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } } } - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { spec+: { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { spec+: { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { spec+: { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { spec+: { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { spec+: { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { spec+: { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { spec+: { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { spec+: { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } } - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { spec+: { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { spec+: { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { spec+: { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { spec+: { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { spec+: { template+: { spec+: { dnsPolicy: dnsPolicy } } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { spec+: { template+: { spec+: { enableServiceLinks: enableServiceLinks } } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { spec+: { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { spec+: { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { spec+: { template+: { spec+: { hostIPC: hostIPC } } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { spec+: { template+: { spec+: { hostNetwork: hostNetwork } } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { spec+: { template+: { spec+: { hostPID: hostPID } } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { spec+: { template+: { spec+: { hostname: hostname } } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { spec+: { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { spec+: { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { spec+: { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { spec+: { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { spec+: { template+: { spec+: { nodeName: nodeName } } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { spec+: { template+: { spec+: { nodeSelector: nodeSelector } } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { spec+: { template+: { spec+: { nodeSelector+: nodeSelector } } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { spec+: { template+: { spec+: { priority: priority } } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { spec+: { template+: { spec+: { priorityClassName: priorityClassName } } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { spec+: { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { spec+: { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { spec+: { template+: { spec+: { restartPolicy: restartPolicy } } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is an alpha feature and may change in the future.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { spec+: { template+: { spec+: { runtimeClassName: runtimeClassName } } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { spec+: { template+: { spec+: { schedulerName: schedulerName } } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { spec+: { template+: { spec+: { serviceAccount: serviceAccount } } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { spec+: { template+: { spec+: { serviceAccountName: serviceAccountName } } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false. This field is beta-level and may be disabled with the PodShareProcessNamespace feature.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { spec+: { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { spec+: { template+: { spec+: { subdomain: subdomain } } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { spec+: { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { spec+: { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { spec+: { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { spec+: { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { spec+: { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } } } - } - }, - '#withActiveDeadlineSeconds':: d.fn(help='Specifies the duration in seconds relative to the startTime that the job may be active before the system tries to terminate it; value must be positive integer', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } }, - '#withBackoffLimit':: d.fn(help='Specifies the number of retries before marking this job failed. Defaults to 6', args=[d.arg(name='backoffLimit', type=d.T.integer)]), - withBackoffLimit(backoffLimit): { spec+: { backoffLimit: backoffLimit } }, - '#withCompletions':: d.fn(help='Specifies the desired number of successfully finished pods the job should be run with. Setting to nil means that the success of any pod signals the success of all pods, and allows parallelism to have any positive value. Setting to 1 means that parallelism is limited to 1 and the success of that pod signals the success of the job. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/', args=[d.arg(name='completions', type=d.T.integer)]), - withCompletions(completions): { spec+: { completions: completions } }, - '#withManualSelector':: d.fn(help='manualSelector controls generation of pod labels and pod selectors. Leave `manualSelector` unset unless you are certain what you are doing. When false or unset, the system pick labels unique to this job and appends those labels to the pod template. When true, the user is responsible for picking unique labels and specifying the selector. Failure to pick a unique label may cause this and other jobs to not function correctly. However, You may see `manualSelector=true` in jobs that were created with the old `extensions/v1beta1` API. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/#specifying-your-own-pod-selector', args=[d.arg(name='manualSelector', type=d.T.boolean)]), - withManualSelector(manualSelector): { spec+: { manualSelector: manualSelector } }, - '#withParallelism':: d.fn(help='Specifies the maximum desired number of pods the job should run at any given time. The actual number of pods running in steady state will be less than this number when ((.spec.completions - .status.successful) < .spec.parallelism), i.e. when the work left to do is less than max parallelism. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/', args=[d.arg(name='parallelism', type=d.T.integer)]), - withParallelism(parallelism): { spec+: { parallelism: parallelism } }, - '#withTtlSecondsAfterFinished':: d.fn(help="ttlSecondsAfterFinished limits the lifetime of a Job that has finished execution (either Complete or Failed). If this field is set, ttlSecondsAfterFinished after the Job finishes, it is eligible to be automatically deleted. When the Job is being deleted, its lifecycle guarantees (e.g. finalizers) will be honored. If this field is unset, the Job won't be automatically deleted. If this field is set to zero, the Job becomes eligible to be deleted immediately after it finishes. This field is alpha-level and is only honored by servers that enable the TTLAfterFinished feature.", args=[d.arg(name='ttlSecondsAfterFinished', type=d.T.integer)]), - withTtlSecondsAfterFinished(ttlSecondsAfterFinished): { spec+: { ttlSecondsAfterFinished: ttlSecondsAfterFinished } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v1beta1/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v1beta1/main.libsonnet deleted file mode 100644 index f7f1f93fcc1b..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v1beta1/main.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1beta1', url='', help=''), - cronJob: (import 'cronJob.libsonnet'), - cronJobSpec: (import 'cronJobSpec.libsonnet'), - cronJobStatus: (import 'cronJobStatus.libsonnet'), - jobTemplateSpec: (import 'jobTemplateSpec.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v2alpha1/cronJob.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v2alpha1/cronJob.libsonnet deleted file mode 100644 index 9e3ad50fc6e0..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v2alpha1/cronJob.libsonnet +++ /dev/null @@ -1,461 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='cronJob', url='', help='CronJob represents the configuration of a single cron job.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Cronjob', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'batch/v2alpha1', - kind: 'CronJob' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='CronJobSpec describes how the job execution will look like and when it will actually run.'), - spec: { - '#jobTemplate':: d.obj(help='JobTemplateSpec describes the data a Job should have when created from a template'), - jobTemplate: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { spec+: { jobTemplate+: { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { spec+: { jobTemplate+: { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { spec+: { jobTemplate+: { metadata+: { initializers+: { result+: { details+: { group: group } } } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { jobTemplate+: { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { jobTemplate+: { metadata+: { initializers+: { result+: { details+: { name: name } } } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { spec+: { jobTemplate+: { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { jobTemplate+: { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { spec+: { jobTemplate+: { metadata+: { initializers+: { result+: { code: code } } } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { jobTemplate+: { metadata+: { initializers+: { result+: { kind: kind } } } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { spec+: { jobTemplate+: { metadata+: { initializers+: { result+: { message: message } } } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { spec+: { jobTemplate+: { metadata+: { initializers+: { result+: { metadata: metadata } } } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { spec+: { jobTemplate+: { metadata+: { initializers+: { result+: { reason: reason } } } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { spec+: { jobTemplate+: { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { spec+: { jobTemplate+: { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { spec+: { jobTemplate+: { metadata+: { annotations: annotations } } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { spec+: { jobTemplate+: { metadata+: { annotations+: annotations } } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { spec+: { jobTemplate+: { metadata+: { clusterName: clusterName } } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { spec+: { jobTemplate+: { metadata+: { creationTimestamp: creationTimestamp } } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { spec+: { jobTemplate+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { spec+: { jobTemplate+: { metadata+: { deletionTimestamp: deletionTimestamp } } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { spec+: { jobTemplate+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { spec+: { jobTemplate+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { spec+: { jobTemplate+: { metadata+: { generateName: generateName } } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { spec+: { jobTemplate+: { metadata+: { generation: generation } } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { spec+: { jobTemplate+: { metadata+: { labels: labels } } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { spec+: { jobTemplate+: { metadata+: { labels+: labels } } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { spec+: { jobTemplate+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { spec+: { jobTemplate+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { jobTemplate+: { metadata+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { jobTemplate+: { metadata+: { namespace: namespace } } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { spec+: { jobTemplate+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { spec+: { jobTemplate+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { spec+: { jobTemplate+: { metadata+: { resourceVersion: resourceVersion } } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { spec+: { jobTemplate+: { metadata+: { selfLink: selfLink } } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { jobTemplate+: { metadata+: { uid: uid } } } } - }, - '#spec':: d.obj(help='JobSpec describes how the job execution will look like.'), - spec: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { spec+: { jobTemplate+: { spec+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { spec+: { jobTemplate+: { spec+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { spec+: { jobTemplate+: { spec+: { selector+: { matchLabels: matchLabels } } } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { spec+: { jobTemplate+: { spec+: { selector+: { matchLabels+: matchLabels } } } } } - }, - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { group: group } } } } } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { name: name } } } } } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { result+: { code: code } } } } } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { result+: { kind: kind } } } } } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { result+: { message: message } } } } } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { result+: { metadata: metadata } } } } } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { result+: { reason: reason } } } } } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } } } } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } } } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { annotations: annotations } } } } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { annotations+: annotations } } } } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { clusterName: clusterName } } } } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { creationTimestamp: creationTimestamp } } } } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } } } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } } } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { generateName: generateName } } } } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { generation: generation } } } } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { labels: labels } } } } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { labels+: labels } } } } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { name: name } } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { namespace: namespace } } } } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { resourceVersion: resourceVersion } } } } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { selfLink: selfLink } } } } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { uid: uid } } } } } } - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } } } } - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } } } - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } } } - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } } } - } - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } } } } } - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } } } } } - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } } } } - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } } } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } } } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } } } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } } } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { dnsPolicy: dnsPolicy } } } } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { enableServiceLinks: enableServiceLinks } } } } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { hostIPC: hostIPC } } } } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { hostNetwork: hostNetwork } } } } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { hostPID: hostPID } } } } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { hostname: hostname } } } } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { nodeName: nodeName } } } } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { nodeSelector: nodeSelector } } } } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { nodeSelector+: nodeSelector } } } } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { priority: priority } } } } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { priorityClassName: priorityClassName } } } } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { restartPolicy: restartPolicy } } } } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is an alpha feature and may change in the future.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { runtimeClassName: runtimeClassName } } } } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { schedulerName: schedulerName } } } } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { serviceAccount: serviceAccount } } } } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { serviceAccountName: serviceAccountName } } } } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false. This field is beta-level and may be disabled with the PodShareProcessNamespace feature.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } } } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { subdomain: subdomain } } } } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } } } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } } } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } } } } } - } - }, - '#withActiveDeadlineSeconds':: d.fn(help='Specifies the duration in seconds relative to the startTime that the job may be active before the system tries to terminate it; value must be positive integer', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { spec+: { jobTemplate+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } } }, - '#withBackoffLimit':: d.fn(help='Specifies the number of retries before marking this job failed. Defaults to 6', args=[d.arg(name='backoffLimit', type=d.T.integer)]), - withBackoffLimit(backoffLimit): { spec+: { jobTemplate+: { spec+: { backoffLimit: backoffLimit } } } }, - '#withCompletions':: d.fn(help='Specifies the desired number of successfully finished pods the job should be run with. Setting to nil means that the success of any pod signals the success of all pods, and allows parallelism to have any positive value. Setting to 1 means that parallelism is limited to 1 and the success of that pod signals the success of the job. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/', args=[d.arg(name='completions', type=d.T.integer)]), - withCompletions(completions): { spec+: { jobTemplate+: { spec+: { completions: completions } } } }, - '#withManualSelector':: d.fn(help='manualSelector controls generation of pod labels and pod selectors. Leave `manualSelector` unset unless you are certain what you are doing. When false or unset, the system pick labels unique to this job and appends those labels to the pod template. When true, the user is responsible for picking unique labels and specifying the selector. Failure to pick a unique label may cause this and other jobs to not function correctly. However, You may see `manualSelector=true` in jobs that were created with the old `extensions/v1beta1` API. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/#specifying-your-own-pod-selector', args=[d.arg(name='manualSelector', type=d.T.boolean)]), - withManualSelector(manualSelector): { spec+: { jobTemplate+: { spec+: { manualSelector: manualSelector } } } }, - '#withParallelism':: d.fn(help='Specifies the maximum desired number of pods the job should run at any given time. The actual number of pods running in steady state will be less than this number when ((.spec.completions - .status.successful) < .spec.parallelism), i.e. when the work left to do is less than max parallelism. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/', args=[d.arg(name='parallelism', type=d.T.integer)]), - withParallelism(parallelism): { spec+: { jobTemplate+: { spec+: { parallelism: parallelism } } } }, - '#withTtlSecondsAfterFinished':: d.fn(help="ttlSecondsAfterFinished limits the lifetime of a Job that has finished execution (either Complete or Failed). If this field is set, ttlSecondsAfterFinished after the Job finishes, it is eligible to be automatically deleted. When the Job is being deleted, its lifecycle guarantees (e.g. finalizers) will be honored. If this field is unset, the Job won't be automatically deleted. If this field is set to zero, the Job becomes eligible to be deleted immediately after it finishes. This field is alpha-level and is only honored by servers that enable the TTLAfterFinished feature.", args=[d.arg(name='ttlSecondsAfterFinished', type=d.T.integer)]), - withTtlSecondsAfterFinished(ttlSecondsAfterFinished): { spec+: { jobTemplate+: { spec+: { ttlSecondsAfterFinished: ttlSecondsAfterFinished } } } } - } - }, - '#withConcurrencyPolicy':: d.fn(help="Specifies how to treat concurrent executions of a Job. Valid values are: - 'Allow' (default): allows CronJobs to run concurrently; - 'Forbid': forbids concurrent runs, skipping next run if previous run hasn't finished yet; - 'Replace': cancels currently running job and replaces it with a new one", args=[d.arg(name='concurrencyPolicy', type=d.T.string)]), - withConcurrencyPolicy(concurrencyPolicy): { spec+: { concurrencyPolicy: concurrencyPolicy } }, - '#withFailedJobsHistoryLimit':: d.fn(help='The number of failed finished jobs to retain. This is a pointer to distinguish between explicit zero and not specified.', args=[d.arg(name='failedJobsHistoryLimit', type=d.T.integer)]), - withFailedJobsHistoryLimit(failedJobsHistoryLimit): { spec+: { failedJobsHistoryLimit: failedJobsHistoryLimit } }, - '#withSchedule':: d.fn(help='The schedule in Cron format, see https://en.wikipedia.org/wiki/Cron.', args=[d.arg(name='schedule', type=d.T.string)]), - withSchedule(schedule): { spec+: { schedule: schedule } }, - '#withStartingDeadlineSeconds':: d.fn(help='Optional deadline in seconds for starting the job if it misses scheduled time for any reason. Missed jobs executions will be counted as failed ones.', args=[d.arg(name='startingDeadlineSeconds', type=d.T.integer)]), - withStartingDeadlineSeconds(startingDeadlineSeconds): { spec+: { startingDeadlineSeconds: startingDeadlineSeconds } }, - '#withSuccessfulJobsHistoryLimit':: d.fn(help='The number of successful finished jobs to retain. This is a pointer to distinguish between explicit zero and not specified.', args=[d.arg(name='successfulJobsHistoryLimit', type=d.T.integer)]), - withSuccessfulJobsHistoryLimit(successfulJobsHistoryLimit): { spec+: { successfulJobsHistoryLimit: successfulJobsHistoryLimit } }, - '#withSuspend':: d.fn(help='This flag tells the controller to suspend subsequent executions, it does not apply to already started executions. Defaults to false.', args=[d.arg(name='suspend', type=d.T.boolean)]), - withSuspend(suspend): { spec+: { suspend: suspend } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v2alpha1/cronJobSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v2alpha1/cronJobSpec.libsonnet deleted file mode 100644 index 1ca7d71c5b13..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v2alpha1/cronJobSpec.libsonnet +++ /dev/null @@ -1,371 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='cronJobSpec', url='', help='CronJobSpec describes how the job execution will look like and when it will actually run.'), - '#jobTemplate':: d.obj(help='JobTemplateSpec describes the data a Job should have when created from a template'), - jobTemplate: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { jobTemplate+: { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { jobTemplate+: { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { jobTemplate+: { metadata+: { initializers+: { result+: { details+: { group: group } } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { jobTemplate+: { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { jobTemplate+: { metadata+: { initializers+: { result+: { details+: { name: name } } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { jobTemplate+: { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { jobTemplate+: { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { jobTemplate+: { metadata+: { initializers+: { result+: { code: code } } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { jobTemplate+: { metadata+: { initializers+: { result+: { kind: kind } } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { jobTemplate+: { metadata+: { initializers+: { result+: { message: message } } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { jobTemplate+: { metadata+: { initializers+: { result+: { metadata: metadata } } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { jobTemplate+: { metadata+: { initializers+: { result+: { reason: reason } } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { jobTemplate+: { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { jobTemplate+: { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { jobTemplate+: { metadata+: { annotations: annotations } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { jobTemplate+: { metadata+: { annotations+: annotations } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { jobTemplate+: { metadata+: { clusterName: clusterName } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { jobTemplate+: { metadata+: { creationTimestamp: creationTimestamp } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { jobTemplate+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { jobTemplate+: { metadata+: { deletionTimestamp: deletionTimestamp } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { jobTemplate+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { jobTemplate+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { jobTemplate+: { metadata+: { generateName: generateName } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { jobTemplate+: { metadata+: { generation: generation } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { jobTemplate+: { metadata+: { labels: labels } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { jobTemplate+: { metadata+: { labels+: labels } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { jobTemplate+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { jobTemplate+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { jobTemplate+: { metadata+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { jobTemplate+: { metadata+: { namespace: namespace } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { jobTemplate+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { jobTemplate+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { jobTemplate+: { metadata+: { resourceVersion: resourceVersion } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { jobTemplate+: { metadata+: { selfLink: selfLink } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { jobTemplate+: { metadata+: { uid: uid } } } - }, - '#spec':: d.obj(help='JobSpec describes how the job execution will look like.'), - spec: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { jobTemplate+: { spec+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { jobTemplate+: { spec+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { jobTemplate+: { spec+: { selector+: { matchLabels: matchLabels } } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { jobTemplate+: { spec+: { selector+: { matchLabels+: matchLabels } } } } - }, - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { group: group } } } } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { name: name } } } } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { result+: { code: code } } } } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { result+: { kind: kind } } } } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { result+: { message: message } } } } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { result+: { metadata: metadata } } } } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { result+: { reason: reason } } } } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } } } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { jobTemplate+: { spec+: { template+: { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { jobTemplate+: { spec+: { template+: { metadata+: { annotations: annotations } } } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { jobTemplate+: { spec+: { template+: { metadata+: { annotations+: annotations } } } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { jobTemplate+: { spec+: { template+: { metadata+: { clusterName: clusterName } } } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { jobTemplate+: { spec+: { template+: { metadata+: { creationTimestamp: creationTimestamp } } } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { jobTemplate+: { spec+: { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { jobTemplate+: { spec+: { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { jobTemplate+: { spec+: { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { jobTemplate+: { spec+: { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { jobTemplate+: { spec+: { template+: { metadata+: { generateName: generateName } } } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { jobTemplate+: { spec+: { template+: { metadata+: { generation: generation } } } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { jobTemplate+: { spec+: { template+: { metadata+: { labels: labels } } } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { jobTemplate+: { spec+: { template+: { metadata+: { labels+: labels } } } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { jobTemplate+: { spec+: { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { jobTemplate+: { spec+: { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { jobTemplate+: { spec+: { template+: { metadata+: { name: name } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { jobTemplate+: { spec+: { template+: { metadata+: { namespace: namespace } } } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { jobTemplate+: { spec+: { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { jobTemplate+: { spec+: { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { jobTemplate+: { spec+: { template+: { metadata+: { resourceVersion: resourceVersion } } } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { jobTemplate+: { spec+: { template+: { metadata+: { selfLink: selfLink } } } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { jobTemplate+: { spec+: { template+: { metadata+: { uid: uid } } } } } - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } } } - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } } - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } } - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } } - } - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { jobTemplate+: { spec+: { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { jobTemplate+: { spec+: { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { jobTemplate+: { spec+: { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { jobTemplate+: { spec+: { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { jobTemplate+: { spec+: { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { jobTemplate+: { spec+: { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } } } } - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } } } } - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } } } - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { jobTemplate+: { spec+: { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { jobTemplate+: { spec+: { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { jobTemplate+: { spec+: { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { jobTemplate+: { spec+: { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { jobTemplate+: { spec+: { template+: { spec+: { dnsPolicy: dnsPolicy } } } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { jobTemplate+: { spec+: { template+: { spec+: { enableServiceLinks: enableServiceLinks } } } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { jobTemplate+: { spec+: { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { jobTemplate+: { spec+: { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { jobTemplate+: { spec+: { template+: { spec+: { hostIPC: hostIPC } } } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { jobTemplate+: { spec+: { template+: { spec+: { hostNetwork: hostNetwork } } } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { jobTemplate+: { spec+: { template+: { spec+: { hostPID: hostPID } } } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { jobTemplate+: { spec+: { template+: { spec+: { hostname: hostname } } } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { jobTemplate+: { spec+: { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { jobTemplate+: { spec+: { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { jobTemplate+: { spec+: { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { jobTemplate+: { spec+: { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { jobTemplate+: { spec+: { template+: { spec+: { nodeName: nodeName } } } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { jobTemplate+: { spec+: { template+: { spec+: { nodeSelector: nodeSelector } } } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { jobTemplate+: { spec+: { template+: { spec+: { nodeSelector+: nodeSelector } } } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { jobTemplate+: { spec+: { template+: { spec+: { priority: priority } } } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { jobTemplate+: { spec+: { template+: { spec+: { priorityClassName: priorityClassName } } } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { jobTemplate+: { spec+: { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { jobTemplate+: { spec+: { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { jobTemplate+: { spec+: { template+: { spec+: { restartPolicy: restartPolicy } } } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is an alpha feature and may change in the future.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { jobTemplate+: { spec+: { template+: { spec+: { runtimeClassName: runtimeClassName } } } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { jobTemplate+: { spec+: { template+: { spec+: { schedulerName: schedulerName } } } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { jobTemplate+: { spec+: { template+: { spec+: { serviceAccount: serviceAccount } } } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { jobTemplate+: { spec+: { template+: { spec+: { serviceAccountName: serviceAccountName } } } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false. This field is beta-level and may be disabled with the PodShareProcessNamespace feature.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { jobTemplate+: { spec+: { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { jobTemplate+: { spec+: { template+: { spec+: { subdomain: subdomain } } } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { jobTemplate+: { spec+: { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { jobTemplate+: { spec+: { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { jobTemplate+: { spec+: { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { jobTemplate+: { spec+: { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { jobTemplate+: { spec+: { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } } } } - } - }, - '#withActiveDeadlineSeconds':: d.fn(help='Specifies the duration in seconds relative to the startTime that the job may be active before the system tries to terminate it; value must be positive integer', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { jobTemplate+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } }, - '#withBackoffLimit':: d.fn(help='Specifies the number of retries before marking this job failed. Defaults to 6', args=[d.arg(name='backoffLimit', type=d.T.integer)]), - withBackoffLimit(backoffLimit): { jobTemplate+: { spec+: { backoffLimit: backoffLimit } } }, - '#withCompletions':: d.fn(help='Specifies the desired number of successfully finished pods the job should be run with. Setting to nil means that the success of any pod signals the success of all pods, and allows parallelism to have any positive value. Setting to 1 means that parallelism is limited to 1 and the success of that pod signals the success of the job. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/', args=[d.arg(name='completions', type=d.T.integer)]), - withCompletions(completions): { jobTemplate+: { spec+: { completions: completions } } }, - '#withManualSelector':: d.fn(help='manualSelector controls generation of pod labels and pod selectors. Leave `manualSelector` unset unless you are certain what you are doing. When false or unset, the system pick labels unique to this job and appends those labels to the pod template. When true, the user is responsible for picking unique labels and specifying the selector. Failure to pick a unique label may cause this and other jobs to not function correctly. However, You may see `manualSelector=true` in jobs that were created with the old `extensions/v1beta1` API. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/#specifying-your-own-pod-selector', args=[d.arg(name='manualSelector', type=d.T.boolean)]), - withManualSelector(manualSelector): { jobTemplate+: { spec+: { manualSelector: manualSelector } } }, - '#withParallelism':: d.fn(help='Specifies the maximum desired number of pods the job should run at any given time. The actual number of pods running in steady state will be less than this number when ((.spec.completions - .status.successful) < .spec.parallelism), i.e. when the work left to do is less than max parallelism. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/', args=[d.arg(name='parallelism', type=d.T.integer)]), - withParallelism(parallelism): { jobTemplate+: { spec+: { parallelism: parallelism } } }, - '#withTtlSecondsAfterFinished':: d.fn(help="ttlSecondsAfterFinished limits the lifetime of a Job that has finished execution (either Complete or Failed). If this field is set, ttlSecondsAfterFinished after the Job finishes, it is eligible to be automatically deleted. When the Job is being deleted, its lifecycle guarantees (e.g. finalizers) will be honored. If this field is unset, the Job won't be automatically deleted. If this field is set to zero, the Job becomes eligible to be deleted immediately after it finishes. This field is alpha-level and is only honored by servers that enable the TTLAfterFinished feature.", args=[d.arg(name='ttlSecondsAfterFinished', type=d.T.integer)]), - withTtlSecondsAfterFinished(ttlSecondsAfterFinished): { jobTemplate+: { spec+: { ttlSecondsAfterFinished: ttlSecondsAfterFinished } } } - } - }, - '#withConcurrencyPolicy':: d.fn(help="Specifies how to treat concurrent executions of a Job. Valid values are: - 'Allow' (default): allows CronJobs to run concurrently; - 'Forbid': forbids concurrent runs, skipping next run if previous run hasn't finished yet; - 'Replace': cancels currently running job and replaces it with a new one", args=[d.arg(name='concurrencyPolicy', type=d.T.string)]), - withConcurrencyPolicy(concurrencyPolicy): { concurrencyPolicy: concurrencyPolicy }, - '#withFailedJobsHistoryLimit':: d.fn(help='The number of failed finished jobs to retain. This is a pointer to distinguish between explicit zero and not specified.', args=[d.arg(name='failedJobsHistoryLimit', type=d.T.integer)]), - withFailedJobsHistoryLimit(failedJobsHistoryLimit): { failedJobsHistoryLimit: failedJobsHistoryLimit }, - '#withSchedule':: d.fn(help='The schedule in Cron format, see https://en.wikipedia.org/wiki/Cron.', args=[d.arg(name='schedule', type=d.T.string)]), - withSchedule(schedule): { schedule: schedule }, - '#withStartingDeadlineSeconds':: d.fn(help='Optional deadline in seconds for starting the job if it misses scheduled time for any reason. Missed jobs executions will be counted as failed ones.', args=[d.arg(name='startingDeadlineSeconds', type=d.T.integer)]), - withStartingDeadlineSeconds(startingDeadlineSeconds): { startingDeadlineSeconds: startingDeadlineSeconds }, - '#withSuccessfulJobsHistoryLimit':: d.fn(help='The number of successful finished jobs to retain. This is a pointer to distinguish between explicit zero and not specified.', args=[d.arg(name='successfulJobsHistoryLimit', type=d.T.integer)]), - withSuccessfulJobsHistoryLimit(successfulJobsHistoryLimit): { successfulJobsHistoryLimit: successfulJobsHistoryLimit }, - '#withSuspend':: d.fn(help='This flag tells the controller to suspend subsequent executions, it does not apply to already started executions. Defaults to false.', args=[d.arg(name='suspend', type=d.T.boolean)]), - withSuspend(suspend): { suspend: suspend }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v2alpha1/cronJobStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v2alpha1/cronJobStatus.libsonnet deleted file mode 100644 index df255a13e219..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v2alpha1/cronJobStatus.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='cronJobStatus', url='', help='CronJobStatus represents the current state of a cron job.'), - '#withActive':: d.fn(help='A list of pointers to currently running jobs.', args=[d.arg(name='active', type=d.T.array)]), - withActive(active): { active: if std.isArray(v=active) then active else [active] }, - '#withActiveMixin':: d.fn(help='A list of pointers to currently running jobs.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='active', type=d.T.array)]), - withActiveMixin(active): { active+: if std.isArray(v=active) then active else [active] }, - '#withLastScheduleTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastScheduleTime', type=d.T.string)]), - withLastScheduleTime(lastScheduleTime): { lastScheduleTime: lastScheduleTime }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v2alpha1/jobTemplateSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v2alpha1/jobTemplateSpec.libsonnet deleted file mode 100644 index 091b8811970c..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v2alpha1/jobTemplateSpec.libsonnet +++ /dev/null @@ -1,356 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='jobTemplateSpec', url='', help='JobTemplateSpec describes the data a Job should have when created from a template'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#spec':: d.obj(help='JobSpec describes how the job execution will look like.'), - spec: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { spec+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { spec+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { spec+: { selector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { spec+: { selector+: { matchLabels+: matchLabels } } } - }, - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { group: group } } } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { name: name } } } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { spec+: { template+: { metadata+: { initializers+: { result+: { code: code } } } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { template+: { metadata+: { initializers+: { result+: { kind: kind } } } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { spec+: { template+: { metadata+: { initializers+: { result+: { message: message } } } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { spec+: { template+: { metadata+: { initializers+: { result+: { metadata: metadata } } } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { spec+: { template+: { metadata+: { initializers+: { result+: { reason: reason } } } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { spec+: { template+: { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { spec+: { template+: { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { spec+: { template+: { metadata+: { annotations: annotations } } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { spec+: { template+: { metadata+: { annotations+: annotations } } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { spec+: { template+: { metadata+: { clusterName: clusterName } } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { spec+: { template+: { metadata+: { creationTimestamp: creationTimestamp } } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { spec+: { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { spec+: { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { spec+: { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { spec+: { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { spec+: { template+: { metadata+: { generateName: generateName } } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { spec+: { template+: { metadata+: { generation: generation } } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { spec+: { template+: { metadata+: { labels: labels } } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { spec+: { template+: { metadata+: { labels+: labels } } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { spec+: { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { spec+: { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { template+: { metadata+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { template+: { metadata+: { namespace: namespace } } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { spec+: { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { spec+: { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { spec+: { template+: { metadata+: { resourceVersion: resourceVersion } } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { spec+: { template+: { metadata+: { selfLink: selfLink } } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { template+: { metadata+: { uid: uid } } } } - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } } - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } - } - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { spec+: { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { spec+: { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { spec+: { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { spec+: { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { spec+: { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { spec+: { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } } } - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } } } - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { spec+: { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { spec+: { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { spec+: { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { spec+: { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { spec+: { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { spec+: { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { spec+: { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { spec+: { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } } - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { spec+: { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { spec+: { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { spec+: { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { spec+: { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { spec+: { template+: { spec+: { dnsPolicy: dnsPolicy } } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { spec+: { template+: { spec+: { enableServiceLinks: enableServiceLinks } } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { spec+: { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { spec+: { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { spec+: { template+: { spec+: { hostIPC: hostIPC } } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { spec+: { template+: { spec+: { hostNetwork: hostNetwork } } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { spec+: { template+: { spec+: { hostPID: hostPID } } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { spec+: { template+: { spec+: { hostname: hostname } } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { spec+: { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { spec+: { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { spec+: { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { spec+: { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { spec+: { template+: { spec+: { nodeName: nodeName } } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { spec+: { template+: { spec+: { nodeSelector: nodeSelector } } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { spec+: { template+: { spec+: { nodeSelector+: nodeSelector } } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { spec+: { template+: { spec+: { priority: priority } } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { spec+: { template+: { spec+: { priorityClassName: priorityClassName } } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { spec+: { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { spec+: { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { spec+: { template+: { spec+: { restartPolicy: restartPolicy } } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is an alpha feature and may change in the future.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { spec+: { template+: { spec+: { runtimeClassName: runtimeClassName } } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { spec+: { template+: { spec+: { schedulerName: schedulerName } } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { spec+: { template+: { spec+: { serviceAccount: serviceAccount } } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { spec+: { template+: { spec+: { serviceAccountName: serviceAccountName } } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false. This field is beta-level and may be disabled with the PodShareProcessNamespace feature.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { spec+: { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { spec+: { template+: { spec+: { subdomain: subdomain } } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { spec+: { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { spec+: { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { spec+: { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { spec+: { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { spec+: { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } } } - } - }, - '#withActiveDeadlineSeconds':: d.fn(help='Specifies the duration in seconds relative to the startTime that the job may be active before the system tries to terminate it; value must be positive integer', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } }, - '#withBackoffLimit':: d.fn(help='Specifies the number of retries before marking this job failed. Defaults to 6', args=[d.arg(name='backoffLimit', type=d.T.integer)]), - withBackoffLimit(backoffLimit): { spec+: { backoffLimit: backoffLimit } }, - '#withCompletions':: d.fn(help='Specifies the desired number of successfully finished pods the job should be run with. Setting to nil means that the success of any pod signals the success of all pods, and allows parallelism to have any positive value. Setting to 1 means that parallelism is limited to 1 and the success of that pod signals the success of the job. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/', args=[d.arg(name='completions', type=d.T.integer)]), - withCompletions(completions): { spec+: { completions: completions } }, - '#withManualSelector':: d.fn(help='manualSelector controls generation of pod labels and pod selectors. Leave `manualSelector` unset unless you are certain what you are doing. When false or unset, the system pick labels unique to this job and appends those labels to the pod template. When true, the user is responsible for picking unique labels and specifying the selector. Failure to pick a unique label may cause this and other jobs to not function correctly. However, You may see `manualSelector=true` in jobs that were created with the old `extensions/v1beta1` API. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/#specifying-your-own-pod-selector', args=[d.arg(name='manualSelector', type=d.T.boolean)]), - withManualSelector(manualSelector): { spec+: { manualSelector: manualSelector } }, - '#withParallelism':: d.fn(help='Specifies the maximum desired number of pods the job should run at any given time. The actual number of pods running in steady state will be less than this number when ((.spec.completions - .status.successful) < .spec.parallelism), i.e. when the work left to do is less than max parallelism. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/', args=[d.arg(name='parallelism', type=d.T.integer)]), - withParallelism(parallelism): { spec+: { parallelism: parallelism } }, - '#withTtlSecondsAfterFinished':: d.fn(help="ttlSecondsAfterFinished limits the lifetime of a Job that has finished execution (either Complete or Failed). If this field is set, ttlSecondsAfterFinished after the Job finishes, it is eligible to be automatically deleted. When the Job is being deleted, its lifecycle guarantees (e.g. finalizers) will be honored. If this field is unset, the Job won't be automatically deleted. If this field is set to zero, the Job becomes eligible to be deleted immediately after it finishes. This field is alpha-level and is only honored by servers that enable the TTLAfterFinished feature.", args=[d.arg(name='ttlSecondsAfterFinished', type=d.T.integer)]), - withTtlSecondsAfterFinished(ttlSecondsAfterFinished): { spec+: { ttlSecondsAfterFinished: ttlSecondsAfterFinished } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v2alpha1/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v2alpha1/main.libsonnet deleted file mode 100644 index df4a3429d444..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/batch/v2alpha1/main.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v2alpha1', url='', help=''), - cronJob: (import 'cronJob.libsonnet'), - cronJobSpec: (import 'cronJobSpec.libsonnet'), - cronJobStatus: (import 'cronJobStatus.libsonnet'), - jobTemplateSpec: (import 'jobTemplateSpec.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/certificates/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/certificates/main.libsonnet deleted file mode 100644 index 54cbb269663a..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/certificates/main.libsonnet +++ /dev/null @@ -1,5 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='certificates', url='', help=''), - v1beta1: (import 'v1beta1/main.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/certificates/v1beta1/certificateSigningRequest.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/certificates/v1beta1/certificateSigningRequest.libsonnet deleted file mode 100644 index fdfd57172dcd..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/certificates/v1beta1/certificateSigningRequest.libsonnet +++ /dev/null @@ -1,114 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='certificateSigningRequest', url='', help='Describes a certificate signing request'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Certificatesigningrequest', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'certificates.k8s.io/v1beta1', - kind: 'CertificateSigningRequest' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='This information is immutable after the request is created. Only the Request and Usages fields can be set on creation, other fields are derived by Kubernetes and cannot be modified by users.'), - spec: { - '#withExtra':: d.fn(help='Extra information about the requesting user. See user.Info interface for details.', args=[d.arg(name='extra', type=d.T.object)]), - withExtra(extra): { spec+: { extra: extra } }, - '#withExtraMixin':: d.fn(help='Extra information about the requesting user. See user.Info interface for details.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='extra', type=d.T.object)]), - withExtraMixin(extra): { spec+: { extra+: extra } }, - '#withGroups':: d.fn(help='Group information about the requesting user. See user.Info interface for details.', args=[d.arg(name='groups', type=d.T.array)]), - withGroups(groups): { spec+: { groups: if std.isArray(v=groups) then groups else [groups] } }, - '#withGroupsMixin':: d.fn(help='Group information about the requesting user. See user.Info interface for details.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='groups', type=d.T.array)]), - withGroupsMixin(groups): { spec+: { groups+: if std.isArray(v=groups) then groups else [groups] } }, - '#withRequest':: d.fn(help='Base64-encoded PKCS#10 CSR data', args=[d.arg(name='request', type=d.T.string)]), - withRequest(request): { spec+: { request: request } }, - '#withUid':: d.fn(help='UID information about the requesting user. See user.Info interface for details.', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { uid: uid } }, - '#withUsages':: d.fn(help='allowedUsages specifies a set of usage contexts the key will be valid for. See: https://tools.ietf.org/html/rfc5280#section-4.2.1.3\n https://tools.ietf.org/html/rfc5280#section-4.2.1.12', args=[d.arg(name='usages', type=d.T.array)]), - withUsages(usages): { spec+: { usages: if std.isArray(v=usages) then usages else [usages] } }, - '#withUsagesMixin':: d.fn(help='allowedUsages specifies a set of usage contexts the key will be valid for. See: https://tools.ietf.org/html/rfc5280#section-4.2.1.3\n https://tools.ietf.org/html/rfc5280#section-4.2.1.12\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='usages', type=d.T.array)]), - withUsagesMixin(usages): { spec+: { usages+: if std.isArray(v=usages) then usages else [usages] } }, - '#withUsername':: d.fn(help='Information about the requesting user. See user.Info interface for details.', args=[d.arg(name='username', type=d.T.string)]), - withUsername(username): { spec+: { username: username } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/certificates/v1beta1/certificateSigningRequestCondition.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/certificates/v1beta1/certificateSigningRequestCondition.libsonnet deleted file mode 100644 index e9465581ff76..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/certificates/v1beta1/certificateSigningRequestCondition.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='certificateSigningRequestCondition', url='', help=''), - '#withLastUpdateTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastUpdateTime', type=d.T.string)]), - withLastUpdateTime(lastUpdateTime): { lastUpdateTime: lastUpdateTime }, - '#withMessage':: d.fn(help='human readable message with details about the request state', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withReason':: d.fn(help='brief reason for the request state', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#withType':: d.fn(help='request approval state, currently Approved or Denied.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/certificates/v1beta1/certificateSigningRequestSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/certificates/v1beta1/certificateSigningRequestSpec.libsonnet deleted file mode 100644 index f3ae92f82c35..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/certificates/v1beta1/certificateSigningRequestSpec.libsonnet +++ /dev/null @@ -1,24 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='certificateSigningRequestSpec', url='', help='This information is immutable after the request is created. Only the Request and Usages fields can be set on creation, other fields are derived by Kubernetes and cannot be modified by users.'), - '#withExtra':: d.fn(help='Extra information about the requesting user. See user.Info interface for details.', args=[d.arg(name='extra', type=d.T.object)]), - withExtra(extra): { extra: extra }, - '#withExtraMixin':: d.fn(help='Extra information about the requesting user. See user.Info interface for details.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='extra', type=d.T.object)]), - withExtraMixin(extra): { extra+: extra }, - '#withGroups':: d.fn(help='Group information about the requesting user. See user.Info interface for details.', args=[d.arg(name='groups', type=d.T.array)]), - withGroups(groups): { groups: if std.isArray(v=groups) then groups else [groups] }, - '#withGroupsMixin':: d.fn(help='Group information about the requesting user. See user.Info interface for details.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='groups', type=d.T.array)]), - withGroupsMixin(groups): { groups+: if std.isArray(v=groups) then groups else [groups] }, - '#withRequest':: d.fn(help='Base64-encoded PKCS#10 CSR data', args=[d.arg(name='request', type=d.T.string)]), - withRequest(request): { request: request }, - '#withUid':: d.fn(help='UID information about the requesting user. See user.Info interface for details.', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { uid: uid }, - '#withUsages':: d.fn(help='allowedUsages specifies a set of usage contexts the key will be valid for. See: https://tools.ietf.org/html/rfc5280#section-4.2.1.3\n https://tools.ietf.org/html/rfc5280#section-4.2.1.12', args=[d.arg(name='usages', type=d.T.array)]), - withUsages(usages): { usages: if std.isArray(v=usages) then usages else [usages] }, - '#withUsagesMixin':: d.fn(help='allowedUsages specifies a set of usage contexts the key will be valid for. See: https://tools.ietf.org/html/rfc5280#section-4.2.1.3\n https://tools.ietf.org/html/rfc5280#section-4.2.1.12\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='usages', type=d.T.array)]), - withUsagesMixin(usages): { usages+: if std.isArray(v=usages) then usages else [usages] }, - '#withUsername':: d.fn(help='Information about the requesting user. See user.Info interface for details.', args=[d.arg(name='username', type=d.T.string)]), - withUsername(username): { username: username }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/certificates/v1beta1/certificateSigningRequestStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/certificates/v1beta1/certificateSigningRequestStatus.libsonnet deleted file mode 100644 index 71255eddfb57..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/certificates/v1beta1/certificateSigningRequestStatus.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='certificateSigningRequestStatus', url='', help=''), - '#withCertificate':: d.fn(help='If request was approved, the controller will place the issued certificate here.', args=[d.arg(name='certificate', type=d.T.string)]), - withCertificate(certificate): { certificate: certificate }, - '#withConditions':: d.fn(help='Conditions applied to the request, such as approval or denial.', args=[d.arg(name='conditions', type=d.T.array)]), - withConditions(conditions): { conditions: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withConditionsMixin':: d.fn(help='Conditions applied to the request, such as approval or denial.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='conditions', type=d.T.array)]), - withConditionsMixin(conditions): { conditions+: if std.isArray(v=conditions) then conditions else [conditions] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/certificates/v1beta1/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/certificates/v1beta1/main.libsonnet deleted file mode 100644 index c25e5ef3659c..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/certificates/v1beta1/main.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1beta1', url='', help=''), - certificateSigningRequest: (import 'certificateSigningRequest.libsonnet'), - certificateSigningRequestCondition: (import 'certificateSigningRequestCondition.libsonnet'), - certificateSigningRequestSpec: (import 'certificateSigningRequestSpec.libsonnet'), - certificateSigningRequestStatus: (import 'certificateSigningRequestStatus.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/coordination/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/coordination/main.libsonnet deleted file mode 100644 index 4994721cac7c..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/coordination/main.libsonnet +++ /dev/null @@ -1,6 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='coordination', url='', help=''), - v1: (import 'v1/main.libsonnet'), - v1beta1: (import 'v1beta1/main.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/coordination/v1/lease.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/coordination/v1/lease.libsonnet deleted file mode 100644 index 485c5b52dde1..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/coordination/v1/lease.libsonnet +++ /dev/null @@ -1,106 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='lease', url='', help='Lease defines a lease concept.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Lease', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'coordination.k8s.io/v1', - kind: 'Lease' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='LeaseSpec is a specification of a Lease.'), - spec: { - '#withAcquireTime':: d.fn(help='MicroTime is version of Time with microsecond level precision.', args=[d.arg(name='acquireTime', type=d.T.string)]), - withAcquireTime(acquireTime): { spec+: { acquireTime: acquireTime } }, - '#withHolderIdentity':: d.fn(help='holderIdentity contains the identity of the holder of a current lease.', args=[d.arg(name='holderIdentity', type=d.T.string)]), - withHolderIdentity(holderIdentity): { spec+: { holderIdentity: holderIdentity } }, - '#withLeaseDurationSeconds':: d.fn(help='leaseDurationSeconds is a duration that candidates for a lease need to wait to force acquire it. This is measure against time of last observed RenewTime.', args=[d.arg(name='leaseDurationSeconds', type=d.T.integer)]), - withLeaseDurationSeconds(leaseDurationSeconds): { spec+: { leaseDurationSeconds: leaseDurationSeconds } }, - '#withLeaseTransitions':: d.fn(help='leaseTransitions is the number of transitions of a lease between holders.', args=[d.arg(name='leaseTransitions', type=d.T.integer)]), - withLeaseTransitions(leaseTransitions): { spec+: { leaseTransitions: leaseTransitions } }, - '#withRenewTime':: d.fn(help='MicroTime is version of Time with microsecond level precision.', args=[d.arg(name='renewTime', type=d.T.string)]), - withRenewTime(renewTime): { spec+: { renewTime: renewTime } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/coordination/v1/leaseSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/coordination/v1/leaseSpec.libsonnet deleted file mode 100644 index eb2499189338..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/coordination/v1/leaseSpec.libsonnet +++ /dev/null @@ -1,16 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='leaseSpec', url='', help='LeaseSpec is a specification of a Lease.'), - '#withAcquireTime':: d.fn(help='MicroTime is version of Time with microsecond level precision.', args=[d.arg(name='acquireTime', type=d.T.string)]), - withAcquireTime(acquireTime): { acquireTime: acquireTime }, - '#withHolderIdentity':: d.fn(help='holderIdentity contains the identity of the holder of a current lease.', args=[d.arg(name='holderIdentity', type=d.T.string)]), - withHolderIdentity(holderIdentity): { holderIdentity: holderIdentity }, - '#withLeaseDurationSeconds':: d.fn(help='leaseDurationSeconds is a duration that candidates for a lease need to wait to force acquire it. This is measure against time of last observed RenewTime.', args=[d.arg(name='leaseDurationSeconds', type=d.T.integer)]), - withLeaseDurationSeconds(leaseDurationSeconds): { leaseDurationSeconds: leaseDurationSeconds }, - '#withLeaseTransitions':: d.fn(help='leaseTransitions is the number of transitions of a lease between holders.', args=[d.arg(name='leaseTransitions', type=d.T.integer)]), - withLeaseTransitions(leaseTransitions): { leaseTransitions: leaseTransitions }, - '#withRenewTime':: d.fn(help='MicroTime is version of Time with microsecond level precision.', args=[d.arg(name='renewTime', type=d.T.string)]), - withRenewTime(renewTime): { renewTime: renewTime }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/coordination/v1/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/coordination/v1/main.libsonnet deleted file mode 100644 index 3eac8b9dca03..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/coordination/v1/main.libsonnet +++ /dev/null @@ -1,6 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1', url='', help=''), - lease: (import 'lease.libsonnet'), - leaseSpec: (import 'leaseSpec.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/coordination/v1beta1/lease.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/coordination/v1beta1/lease.libsonnet deleted file mode 100644 index f3d681e0319e..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/coordination/v1beta1/lease.libsonnet +++ /dev/null @@ -1,106 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='lease', url='', help='Lease defines a lease concept.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Lease', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'coordination.k8s.io/v1beta1', - kind: 'Lease' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='LeaseSpec is a specification of a Lease.'), - spec: { - '#withAcquireTime':: d.fn(help='MicroTime is version of Time with microsecond level precision.', args=[d.arg(name='acquireTime', type=d.T.string)]), - withAcquireTime(acquireTime): { spec+: { acquireTime: acquireTime } }, - '#withHolderIdentity':: d.fn(help='holderIdentity contains the identity of the holder of a current lease.', args=[d.arg(name='holderIdentity', type=d.T.string)]), - withHolderIdentity(holderIdentity): { spec+: { holderIdentity: holderIdentity } }, - '#withLeaseDurationSeconds':: d.fn(help='leaseDurationSeconds is a duration that candidates for a lease need to wait to force acquire it. This is measure against time of last observed RenewTime.', args=[d.arg(name='leaseDurationSeconds', type=d.T.integer)]), - withLeaseDurationSeconds(leaseDurationSeconds): { spec+: { leaseDurationSeconds: leaseDurationSeconds } }, - '#withLeaseTransitions':: d.fn(help='leaseTransitions is the number of transitions of a lease between holders.', args=[d.arg(name='leaseTransitions', type=d.T.integer)]), - withLeaseTransitions(leaseTransitions): { spec+: { leaseTransitions: leaseTransitions } }, - '#withRenewTime':: d.fn(help='MicroTime is version of Time with microsecond level precision.', args=[d.arg(name='renewTime', type=d.T.string)]), - withRenewTime(renewTime): { spec+: { renewTime: renewTime } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/coordination/v1beta1/leaseSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/coordination/v1beta1/leaseSpec.libsonnet deleted file mode 100644 index eb2499189338..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/coordination/v1beta1/leaseSpec.libsonnet +++ /dev/null @@ -1,16 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='leaseSpec', url='', help='LeaseSpec is a specification of a Lease.'), - '#withAcquireTime':: d.fn(help='MicroTime is version of Time with microsecond level precision.', args=[d.arg(name='acquireTime', type=d.T.string)]), - withAcquireTime(acquireTime): { acquireTime: acquireTime }, - '#withHolderIdentity':: d.fn(help='holderIdentity contains the identity of the holder of a current lease.', args=[d.arg(name='holderIdentity', type=d.T.string)]), - withHolderIdentity(holderIdentity): { holderIdentity: holderIdentity }, - '#withLeaseDurationSeconds':: d.fn(help='leaseDurationSeconds is a duration that candidates for a lease need to wait to force acquire it. This is measure against time of last observed RenewTime.', args=[d.arg(name='leaseDurationSeconds', type=d.T.integer)]), - withLeaseDurationSeconds(leaseDurationSeconds): { leaseDurationSeconds: leaseDurationSeconds }, - '#withLeaseTransitions':: d.fn(help='leaseTransitions is the number of transitions of a lease between holders.', args=[d.arg(name='leaseTransitions', type=d.T.integer)]), - withLeaseTransitions(leaseTransitions): { leaseTransitions: leaseTransitions }, - '#withRenewTime':: d.fn(help='MicroTime is version of Time with microsecond level precision.', args=[d.arg(name='renewTime', type=d.T.string)]), - withRenewTime(renewTime): { renewTime: renewTime }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/coordination/v1beta1/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/coordination/v1beta1/main.libsonnet deleted file mode 100644 index 23036ba06b3d..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/coordination/v1beta1/main.libsonnet +++ /dev/null @@ -1,6 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1beta1', url='', help=''), - lease: (import 'lease.libsonnet'), - leaseSpec: (import 'leaseSpec.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/main.libsonnet deleted file mode 100644 index 1ee90e7629e8..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/main.libsonnet +++ /dev/null @@ -1,5 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='core', url='', help=''), - v1: (import 'v1/main.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/affinity.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/affinity.libsonnet deleted file mode 100644 index 2ab9119f40d3..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/affinity.libsonnet +++ /dev/null @@ -1,42 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='affinity', url='', help='Affinity is a group of affinity scheduling rules.'), - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/attachedVolume.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/attachedVolume.libsonnet deleted file mode 100644 index e4a6623295b6..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/attachedVolume.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='attachedVolume', url='', help='AttachedVolume describes a volume attached to a node'), - '#withDevicePath':: d.fn(help='DevicePath represents the device path where the volume should be available', args=[d.arg(name='devicePath', type=d.T.string)]), - withDevicePath(devicePath): { devicePath: devicePath }, - '#withName':: d.fn(help='Name of the attached volume', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/awsElasticBlockStoreVolumeSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/awsElasticBlockStoreVolumeSource.libsonnet deleted file mode 100644 index 6d4ab4cd0c19..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/awsElasticBlockStoreVolumeSource.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='awsElasticBlockStoreVolumeSource', url='', help='Represents a Persistent Disk resource in AWS.\n\nAn AWS EBS disk must exist before mounting to a container. The disk must also be in the same AWS zone as the kubelet. An AWS EBS disk can only be mounted as read/write once. AWS EBS volumes support ownership management and SELinux relabeling.'), - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { fsType: fsType }, - '#withPartition':: d.fn(help='The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).', args=[d.arg(name='partition', type=d.T.integer)]), - withPartition(partition): { partition: partition }, - '#withReadOnly':: d.fn(help='Specify "true" to force and set the ReadOnly property in VolumeMounts to "true". If omitted, the default is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#withVolumeID':: d.fn(help='Unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore', args=[d.arg(name='volumeID', type=d.T.string)]), - withVolumeID(volumeID): { volumeID: volumeID }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/azureDiskVolumeSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/azureDiskVolumeSource.libsonnet deleted file mode 100644 index 52b47cdd98d8..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/azureDiskVolumeSource.libsonnet +++ /dev/null @@ -1,18 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='azureDiskVolumeSource', url='', help='AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.'), - '#withCachingMode':: d.fn(help='Host Caching mode: None, Read Only, Read Write.', args=[d.arg(name='cachingMode', type=d.T.string)]), - withCachingMode(cachingMode): { cachingMode: cachingMode }, - '#withDiskName':: d.fn(help='The Name of the data disk in the blob storage', args=[d.arg(name='diskName', type=d.T.string)]), - withDiskName(diskName): { diskName: diskName }, - '#withDiskURI':: d.fn(help='The URI the data disk in the blob storage', args=[d.arg(name='diskURI', type=d.T.string)]), - withDiskURI(diskURI): { diskURI: diskURI }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { fsType: fsType }, - '#withKind':: d.fn(help='Expected values Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { kind: kind }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/azureFilePersistentVolumeSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/azureFilePersistentVolumeSource.libsonnet deleted file mode 100644 index 3e931958051a..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/azureFilePersistentVolumeSource.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='azureFilePersistentVolumeSource', url='', help='AzureFile represents an Azure File Service mount on the host and bind mount to the pod.'), - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#withSecretName':: d.fn(help='the name of secret that contains Azure Storage Account Name and Key', args=[d.arg(name='secretName', type=d.T.string)]), - withSecretName(secretName): { secretName: secretName }, - '#withSecretNamespace':: d.fn(help='the namespace of the secret that contains Azure Storage Account Name and Key default is the same as the Pod', args=[d.arg(name='secretNamespace', type=d.T.string)]), - withSecretNamespace(secretNamespace): { secretNamespace: secretNamespace }, - '#withShareName':: d.fn(help='Share Name', args=[d.arg(name='shareName', type=d.T.string)]), - withShareName(shareName): { shareName: shareName }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/azureFileVolumeSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/azureFileVolumeSource.libsonnet deleted file mode 100644 index 6264cff78a59..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/azureFileVolumeSource.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='azureFileVolumeSource', url='', help='AzureFile represents an Azure File Service mount on the host and bind mount to the pod.'), - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#withSecretName':: d.fn(help='the name of secret that contains Azure Storage Account Name and Key', args=[d.arg(name='secretName', type=d.T.string)]), - withSecretName(secretName): { secretName: secretName }, - '#withShareName':: d.fn(help='Share Name', args=[d.arg(name='shareName', type=d.T.string)]), - withShareName(shareName): { shareName: shareName }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/binding.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/binding.libsonnet deleted file mode 100644 index 1d91a8d3c660..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/binding.libsonnet +++ /dev/null @@ -1,108 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='binding', url='', help='Binding ties one object to another; for example, a pod is bound to a node by a scheduler. Deprecated in 1.7, please use the bindings subresource of pods instead.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Binding', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'v1', - kind: 'Binding' - } + self.metadata.withName(name=name), - '#target':: d.obj(help='ObjectReference contains enough information to let you inspect or modify the referred object.'), - target: { - '#withFieldPath':: d.fn(help='If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { target+: { fieldPath: fieldPath } }, - '#withKind':: d.fn(help='Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { target+: { kind: kind } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { target+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { target+: { namespace: namespace } }, - '#withResourceVersion':: d.fn(help='Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { target+: { resourceVersion: resourceVersion } }, - '#withUid':: d.fn(help='UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { target+: { uid: uid } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/capabilities.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/capabilities.libsonnet deleted file mode 100644 index 1edb328c988b..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/capabilities.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='capabilities', url='', help='Adds and removes POSIX capabilities from running containers.'), - '#withAdd':: d.fn(help='Added capabilities', args=[d.arg(name='add', type=d.T.array)]), - withAdd(add): { add: if std.isArray(v=add) then add else [add] }, - '#withAddMixin':: d.fn(help='Added capabilities\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='add', type=d.T.array)]), - withAddMixin(add): { add+: if std.isArray(v=add) then add else [add] }, - '#withDrop':: d.fn(help='Removed capabilities', args=[d.arg(name='drop', type=d.T.array)]), - withDrop(drop): { drop: if std.isArray(v=drop) then drop else [drop] }, - '#withDropMixin':: d.fn(help='Removed capabilities\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='drop', type=d.T.array)]), - withDropMixin(drop): { drop+: if std.isArray(v=drop) then drop else [drop] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/cephFSPersistentVolumeSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/cephFSPersistentVolumeSource.libsonnet deleted file mode 100644 index 552aefda5f81..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/cephFSPersistentVolumeSource.libsonnet +++ /dev/null @@ -1,25 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='cephFSPersistentVolumeSource', url='', help='Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling.'), - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { secretRef+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { secretRef+: { namespace: namespace } } - }, - '#withMonitors':: d.fn(help='Required: Monitors is a collection of Ceph monitors More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitors(monitors): { monitors: if std.isArray(v=monitors) then monitors else [monitors] }, - '#withMonitorsMixin':: d.fn(help='Required: Monitors is a collection of Ceph monitors More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitorsMixin(monitors): { monitors+: if std.isArray(v=monitors) then monitors else [monitors] }, - '#withPath':: d.fn(help='Optional: Used as the mounted root, rather than the full Ceph tree, default is /', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { path: path }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#withSecretFile':: d.fn(help='Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='secretFile', type=d.T.string)]), - withSecretFile(secretFile): { secretFile: secretFile }, - '#withUser':: d.fn(help='Optional: User is the rados user name, default is admin More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { user: user }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/cephFSVolumeSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/cephFSVolumeSource.libsonnet deleted file mode 100644 index 54a0c8e14d4b..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/cephFSVolumeSource.libsonnet +++ /dev/null @@ -1,23 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='cephFSVolumeSource', url='', help='Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling.'), - '#secretRef':: d.obj(help='LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.'), - secretRef: { - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { secretRef+: { name: name } } - }, - '#withMonitors':: d.fn(help='Required: Monitors is a collection of Ceph monitors More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitors(monitors): { monitors: if std.isArray(v=monitors) then monitors else [monitors] }, - '#withMonitorsMixin':: d.fn(help='Required: Monitors is a collection of Ceph monitors More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitorsMixin(monitors): { monitors+: if std.isArray(v=monitors) then monitors else [monitors] }, - '#withPath':: d.fn(help='Optional: Used as the mounted root, rather than the full Ceph tree, default is /', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { path: path }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#withSecretFile':: d.fn(help='Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='secretFile', type=d.T.string)]), - withSecretFile(secretFile): { secretFile: secretFile }, - '#withUser':: d.fn(help='Optional: User is the rados user name, default is admin More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { user: user }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/cinderPersistentVolumeSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/cinderPersistentVolumeSource.libsonnet deleted file mode 100644 index 11f5f44f78f6..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/cinderPersistentVolumeSource.libsonnet +++ /dev/null @@ -1,19 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='cinderPersistentVolumeSource', url='', help='Represents a cinder volume resource in Openstack. A Cinder volume must exist before mounting to a container. The volume must also be in the same region as the kubelet. Cinder volumes support ownership management and SELinux relabeling.'), - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { secretRef+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { secretRef+: { namespace: namespace } } - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { fsType: fsType }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#withVolumeID':: d.fn(help='volume id used to identify the volume in cinder More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md', args=[d.arg(name='volumeID', type=d.T.string)]), - withVolumeID(volumeID): { volumeID: volumeID }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/cinderVolumeSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/cinderVolumeSource.libsonnet deleted file mode 100644 index 509d5d733653..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/cinderVolumeSource.libsonnet +++ /dev/null @@ -1,17 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='cinderVolumeSource', url='', help='Represents a cinder volume resource in Openstack. A Cinder volume must exist before mounting to a container. The volume must also be in the same region as the kubelet. Cinder volumes support ownership management and SELinux relabeling.'), - '#secretRef':: d.obj(help='LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.'), - secretRef: { - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { secretRef+: { name: name } } - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { fsType: fsType }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#withVolumeID':: d.fn(help='volume id used to identify the volume in cinder More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md', args=[d.arg(name='volumeID', type=d.T.string)]), - withVolumeID(volumeID): { volumeID: volumeID }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/clientIPConfig.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/clientIPConfig.libsonnet deleted file mode 100644 index 12c3b4bbb6b5..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/clientIPConfig.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='clientIPConfig', url='', help='ClientIPConfig represents the configurations of Client IP based session affinity.'), - '#withTimeoutSeconds':: d.fn(help='timeoutSeconds specifies the seconds of ClientIP type session sticky time. The value must be >0 && <=86400(for 1 day) if ServiceAffinity == "ClientIP". Default value is 10800(for 3 hours).', args=[d.arg(name='timeoutSeconds', type=d.T.integer)]), - withTimeoutSeconds(timeoutSeconds): { timeoutSeconds: timeoutSeconds }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/componentCondition.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/componentCondition.libsonnet deleted file mode 100644 index c5e2b2c2585b..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/componentCondition.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='componentCondition', url='', help='Information about the condition of a component.'), - '#withError':: d.fn(help='Condition error code for a component. For example, a health check error code.', args=[d.arg(name='err', type=d.T.string)]), - withError(err): { 'error': err }, - '#withMessage':: d.fn(help='Message about the condition for a component. For example, information about a health check.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withType':: d.fn(help='Type of condition for a component. Valid value: "Healthy"', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/componentStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/componentStatus.libsonnet deleted file mode 100644 index a9feeacd9929..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/componentStatus.libsonnet +++ /dev/null @@ -1,97 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='componentStatus', url='', help='ComponentStatus (and ComponentStatusList) holds the cluster validation info.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Componentstatus', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'v1', - kind: 'ComponentStatus' - } + self.metadata.withName(name=name), - '#withConditions':: d.fn(help='List of component conditions observed', args=[d.arg(name='conditions', type=d.T.array)]), - withConditions(conditions): { conditions: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withConditionsMixin':: d.fn(help='List of component conditions observed\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='conditions', type=d.T.array)]), - withConditionsMixin(conditions): { conditions+: if std.isArray(v=conditions) then conditions else [conditions] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/configMap.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/configMap.libsonnet deleted file mode 100644 index 2ca36dc1a3d7..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/configMap.libsonnet +++ /dev/null @@ -1,101 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='configMap', url='', help='ConfigMap holds configuration data for pods to consume.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Configmap', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'v1', - kind: 'ConfigMap' - } + self.metadata.withName(name=name), - '#withBinaryData':: d.fn(help="BinaryData contains the binary data. Each key must consist of alphanumeric characters, '-', '_' or '.'. BinaryData can contain byte sequences that are not in the UTF-8 range. The keys stored in BinaryData must not overlap with the ones in the Data field, this is enforced during validation process. Using this field will require 1.10+ apiserver and kubelet.", args=[d.arg(name='binaryData', type=d.T.object)]), - withBinaryData(binaryData): { binaryData: binaryData }, - '#withBinaryDataMixin':: d.fn(help="BinaryData contains the binary data. Each key must consist of alphanumeric characters, '-', '_' or '.'. BinaryData can contain byte sequences that are not in the UTF-8 range. The keys stored in BinaryData must not overlap with the ones in the Data field, this is enforced during validation process. Using this field will require 1.10+ apiserver and kubelet.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='binaryData', type=d.T.object)]), - withBinaryDataMixin(binaryData): { binaryData+: binaryData }, - '#withData':: d.fn(help="Data contains the configuration data. Each key must consist of alphanumeric characters, '-', '_' or '.'. Values with non-UTF-8 byte sequences must use the BinaryData field. The keys stored in Data must not overlap with the keys in the BinaryData field, this is enforced during validation process.", args=[d.arg(name='data', type=d.T.object)]), - withData(data): { data: data }, - '#withDataMixin':: d.fn(help="Data contains the configuration data. Each key must consist of alphanumeric characters, '-', '_' or '.'. Values with non-UTF-8 byte sequences must use the BinaryData field. The keys stored in Data must not overlap with the keys in the BinaryData field, this is enforced during validation process.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='data', type=d.T.object)]), - withDataMixin(data): { data+: data }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/configMapEnvSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/configMapEnvSource.libsonnet deleted file mode 100644 index dec3d789fd1c..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/configMapEnvSource.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='configMapEnvSource', url='', help="ConfigMapEnvSource selects a ConfigMap to populate the environment variables with.\n\nThe contents of the target ConfigMap's Data field will represent the key-value pairs as environment variables."), - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withOptional':: d.fn(help='Specify whether the ConfigMap must be defined', args=[d.arg(name='optional', type=d.T.boolean)]), - withOptional(optional): { optional: optional }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/configMapKeySelector.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/configMapKeySelector.libsonnet deleted file mode 100644 index 0dc6652806c6..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/configMapKeySelector.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='configMapKeySelector', url='', help='Selects a key from a ConfigMap.'), - '#withKey':: d.fn(help='The key to select.', args=[d.arg(name='key', type=d.T.string)]), - withKey(key): { key: key }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withOptional':: d.fn(help="Specify whether the ConfigMap or it's key must be defined", args=[d.arg(name='optional', type=d.T.boolean)]), - withOptional(optional): { optional: optional }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/configMapNodeConfigSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/configMapNodeConfigSource.libsonnet deleted file mode 100644 index b2bac1ed4e71..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/configMapNodeConfigSource.libsonnet +++ /dev/null @@ -1,16 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='configMapNodeConfigSource', url='', help='ConfigMapNodeConfigSource contains the information to reference a ConfigMap as a config source for the Node.'), - '#withKubeletConfigKey':: d.fn(help='KubeletConfigKey declares which key of the referenced ConfigMap corresponds to the KubeletConfiguration structure This field is required in all cases.', args=[d.arg(name='kubeletConfigKey', type=d.T.string)]), - withKubeletConfigKey(kubeletConfigKey): { kubeletConfigKey: kubeletConfigKey }, - '#withName':: d.fn(help='Name is the metadata.name of the referenced ConfigMap. This field is required in all cases.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withNamespace':: d.fn(help='Namespace is the metadata.namespace of the referenced ConfigMap. This field is required in all cases.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { namespace: namespace }, - '#withResourceVersion':: d.fn(help='ResourceVersion is the metadata.ResourceVersion of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { resourceVersion: resourceVersion }, - '#withUid':: d.fn(help='UID is the metadata.UID of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { uid: uid }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/configMapProjection.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/configMapProjection.libsonnet deleted file mode 100644 index 88422f83f6ac..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/configMapProjection.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='configMapProjection', url='', help="Adapts a ConfigMap into a projected volume.\n\nThe contents of the target ConfigMap's Data field will be presented in a projected volume as files using the keys in the Data field as the file names, unless the items element is populated with specific mappings of keys to paths. Note that this is identical to a configmap volume source without the default mode."), - '#withItems':: d.fn(help="If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.", args=[d.arg(name='items', type=d.T.array)]), - withItems(items): { items: if std.isArray(v=items) then items else [items] }, - '#withItemsMixin':: d.fn(help="If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='items', type=d.T.array)]), - withItemsMixin(items): { items+: if std.isArray(v=items) then items else [items] }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withOptional':: d.fn(help="Specify whether the ConfigMap or it's keys must be defined", args=[d.arg(name='optional', type=d.T.boolean)]), - withOptional(optional): { optional: optional }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/configMapVolumeSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/configMapVolumeSource.libsonnet deleted file mode 100644 index f02e293a885e..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/configMapVolumeSource.libsonnet +++ /dev/null @@ -1,16 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='configMapVolumeSource', url='', help="Adapts a ConfigMap into a volume.\n\nThe contents of the target ConfigMap's Data field will be presented in a volume as files using the keys in the Data field as the file names, unless the items element is populated with specific mappings of keys to paths. ConfigMap volumes support ownership management and SELinux relabeling."), - '#withDefaultMode':: d.fn(help='Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.', args=[d.arg(name='defaultMode', type=d.T.integer)]), - withDefaultMode(defaultMode): { defaultMode: defaultMode }, - '#withItems':: d.fn(help="If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.", args=[d.arg(name='items', type=d.T.array)]), - withItems(items): { items: if std.isArray(v=items) then items else [items] }, - '#withItemsMixin':: d.fn(help="If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='items', type=d.T.array)]), - withItemsMixin(items): { items+: if std.isArray(v=items) then items else [items] }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withOptional':: d.fn(help="Specify whether the ConfigMap or it's keys must be defined", args=[d.arg(name='optional', type=d.T.boolean)]), - withOptional(optional): { optional: optional }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/container.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/container.libsonnet deleted file mode 100644 index f1512a019bc4..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/container.libsonnet +++ /dev/null @@ -1,253 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='container', url='', help='A single application container that you want to run within a pod.'), - '#lifecycle':: d.obj(help='Lifecycle describes actions that the management system should take in response to container lifecycle events. For the PostStart and PreStop lifecycle handlers, management of the container blocks until the action is complete, unless the container process fails, in which case the handler is aborted.'), - lifecycle: { - '#postStart':: d.obj(help='Handler defines a specific action that should be taken'), - postStart: { - '#exec':: d.obj(help='ExecAction describes a "run in container" action.'), - exec: { - '#withCommand':: d.fn(help="Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.", args=[d.arg(name='command', type=d.T.array)]), - withCommand(command): { lifecycle+: { postStart+: { exec+: { command: if std.isArray(v=command) then command else [command] } } } }, - '#withCommandMixin':: d.fn(help="Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='command', type=d.T.array)]), - withCommandMixin(command): { lifecycle+: { postStart+: { exec+: { command+: if std.isArray(v=command) then command else [command] } } } } - }, - '#httpGet':: d.obj(help='HTTPGetAction describes an action based on HTTP Get requests.'), - httpGet: { - '#withHost':: d.fn(help='Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { lifecycle+: { postStart+: { httpGet+: { host: host } } } }, - '#withHttpHeaders':: d.fn(help='Custom headers to set in the request. HTTP allows repeated headers.', args=[d.arg(name='httpHeaders', type=d.T.array)]), - withHttpHeaders(httpHeaders): { lifecycle+: { postStart+: { httpGet+: { httpHeaders: if std.isArray(v=httpHeaders) then httpHeaders else [httpHeaders] } } } }, - '#withHttpHeadersMixin':: d.fn(help='Custom headers to set in the request. HTTP allows repeated headers.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='httpHeaders', type=d.T.array)]), - withHttpHeadersMixin(httpHeaders): { lifecycle+: { postStart+: { httpGet+: { httpHeaders+: if std.isArray(v=httpHeaders) then httpHeaders else [httpHeaders] } } } }, - '#withPath':: d.fn(help='Path to access on the HTTP server.', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { lifecycle+: { postStart+: { httpGet+: { path: path } } } }, - '#withPort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='port', type=d.T.string)]), - withPort(port): { lifecycle+: { postStart+: { httpGet+: { port: port } } } }, - '#withScheme':: d.fn(help='Scheme to use for connecting to the host. Defaults to HTTP.', args=[d.arg(name='scheme', type=d.T.string)]), - withScheme(scheme): { lifecycle+: { postStart+: { httpGet+: { scheme: scheme } } } } - }, - '#tcpSocket':: d.obj(help='TCPSocketAction describes an action based on opening a socket'), - tcpSocket: { - '#withHost':: d.fn(help='Optional: Host name to connect to, defaults to the pod IP.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { lifecycle+: { postStart+: { tcpSocket+: { host: host } } } }, - '#withPort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='port', type=d.T.string)]), - withPort(port): { lifecycle+: { postStart+: { tcpSocket+: { port: port } } } } - } - }, - '#preStop':: d.obj(help='Handler defines a specific action that should be taken'), - preStop: { - '#exec':: d.obj(help='ExecAction describes a "run in container" action.'), - exec: { - '#withCommand':: d.fn(help="Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.", args=[d.arg(name='command', type=d.T.array)]), - withCommand(command): { lifecycle+: { preStop+: { exec+: { command: if std.isArray(v=command) then command else [command] } } } }, - '#withCommandMixin':: d.fn(help="Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='command', type=d.T.array)]), - withCommandMixin(command): { lifecycle+: { preStop+: { exec+: { command+: if std.isArray(v=command) then command else [command] } } } } - }, - '#httpGet':: d.obj(help='HTTPGetAction describes an action based on HTTP Get requests.'), - httpGet: { - '#withHost':: d.fn(help='Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { lifecycle+: { preStop+: { httpGet+: { host: host } } } }, - '#withHttpHeaders':: d.fn(help='Custom headers to set in the request. HTTP allows repeated headers.', args=[d.arg(name='httpHeaders', type=d.T.array)]), - withHttpHeaders(httpHeaders): { lifecycle+: { preStop+: { httpGet+: { httpHeaders: if std.isArray(v=httpHeaders) then httpHeaders else [httpHeaders] } } } }, - '#withHttpHeadersMixin':: d.fn(help='Custom headers to set in the request. HTTP allows repeated headers.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='httpHeaders', type=d.T.array)]), - withHttpHeadersMixin(httpHeaders): { lifecycle+: { preStop+: { httpGet+: { httpHeaders+: if std.isArray(v=httpHeaders) then httpHeaders else [httpHeaders] } } } }, - '#withPath':: d.fn(help='Path to access on the HTTP server.', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { lifecycle+: { preStop+: { httpGet+: { path: path } } } }, - '#withPort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='port', type=d.T.string)]), - withPort(port): { lifecycle+: { preStop+: { httpGet+: { port: port } } } }, - '#withScheme':: d.fn(help='Scheme to use for connecting to the host. Defaults to HTTP.', args=[d.arg(name='scheme', type=d.T.string)]), - withScheme(scheme): { lifecycle+: { preStop+: { httpGet+: { scheme: scheme } } } } - }, - '#tcpSocket':: d.obj(help='TCPSocketAction describes an action based on opening a socket'), - tcpSocket: { - '#withHost':: d.fn(help='Optional: Host name to connect to, defaults to the pod IP.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { lifecycle+: { preStop+: { tcpSocket+: { host: host } } } }, - '#withPort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='port', type=d.T.string)]), - withPort(port): { lifecycle+: { preStop+: { tcpSocket+: { port: port } } } } - } - } - }, - '#livenessProbe':: d.obj(help='Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.'), - livenessProbe: { - '#exec':: d.obj(help='ExecAction describes a "run in container" action.'), - exec: { - '#withCommand':: d.fn(help="Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.", args=[d.arg(name='command', type=d.T.array)]), - withCommand(command): { livenessProbe+: { exec+: { command: if std.isArray(v=command) then command else [command] } } }, - '#withCommandMixin':: d.fn(help="Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='command', type=d.T.array)]), - withCommandMixin(command): { livenessProbe+: { exec+: { command+: if std.isArray(v=command) then command else [command] } } } - }, - '#httpGet':: d.obj(help='HTTPGetAction describes an action based on HTTP Get requests.'), - httpGet: { - '#withHost':: d.fn(help='Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { livenessProbe+: { httpGet+: { host: host } } }, - '#withHttpHeaders':: d.fn(help='Custom headers to set in the request. HTTP allows repeated headers.', args=[d.arg(name='httpHeaders', type=d.T.array)]), - withHttpHeaders(httpHeaders): { livenessProbe+: { httpGet+: { httpHeaders: if std.isArray(v=httpHeaders) then httpHeaders else [httpHeaders] } } }, - '#withHttpHeadersMixin':: d.fn(help='Custom headers to set in the request. HTTP allows repeated headers.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='httpHeaders', type=d.T.array)]), - withHttpHeadersMixin(httpHeaders): { livenessProbe+: { httpGet+: { httpHeaders+: if std.isArray(v=httpHeaders) then httpHeaders else [httpHeaders] } } }, - '#withPath':: d.fn(help='Path to access on the HTTP server.', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { livenessProbe+: { httpGet+: { path: path } } }, - '#withPort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='port', type=d.T.string)]), - withPort(port): { livenessProbe+: { httpGet+: { port: port } } }, - '#withScheme':: d.fn(help='Scheme to use for connecting to the host. Defaults to HTTP.', args=[d.arg(name='scheme', type=d.T.string)]), - withScheme(scheme): { livenessProbe+: { httpGet+: { scheme: scheme } } } - }, - '#tcpSocket':: d.obj(help='TCPSocketAction describes an action based on opening a socket'), - tcpSocket: { - '#withHost':: d.fn(help='Optional: Host name to connect to, defaults to the pod IP.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { livenessProbe+: { tcpSocket+: { host: host } } }, - '#withPort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='port', type=d.T.string)]), - withPort(port): { livenessProbe+: { tcpSocket+: { port: port } } } - }, - '#withFailureThreshold':: d.fn(help='Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.', args=[d.arg(name='failureThreshold', type=d.T.integer)]), - withFailureThreshold(failureThreshold): { livenessProbe+: { failureThreshold: failureThreshold } }, - '#withInitialDelaySeconds':: d.fn(help='Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes', args=[d.arg(name='initialDelaySeconds', type=d.T.integer)]), - withInitialDelaySeconds(initialDelaySeconds): { livenessProbe+: { initialDelaySeconds: initialDelaySeconds } }, - '#withPeriodSeconds':: d.fn(help='How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.', args=[d.arg(name='periodSeconds', type=d.T.integer)]), - withPeriodSeconds(periodSeconds): { livenessProbe+: { periodSeconds: periodSeconds } }, - '#withSuccessThreshold':: d.fn(help='Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1.', args=[d.arg(name='successThreshold', type=d.T.integer)]), - withSuccessThreshold(successThreshold): { livenessProbe+: { successThreshold: successThreshold } }, - '#withTimeoutSeconds':: d.fn(help='Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes', args=[d.arg(name='timeoutSeconds', type=d.T.integer)]), - withTimeoutSeconds(timeoutSeconds): { livenessProbe+: { timeoutSeconds: timeoutSeconds } } - }, - '#readinessProbe':: d.obj(help='Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.'), - readinessProbe: { - '#exec':: d.obj(help='ExecAction describes a "run in container" action.'), - exec: { - '#withCommand':: d.fn(help="Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.", args=[d.arg(name='command', type=d.T.array)]), - withCommand(command): { readinessProbe+: { exec+: { command: if std.isArray(v=command) then command else [command] } } }, - '#withCommandMixin':: d.fn(help="Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='command', type=d.T.array)]), - withCommandMixin(command): { readinessProbe+: { exec+: { command+: if std.isArray(v=command) then command else [command] } } } - }, - '#httpGet':: d.obj(help='HTTPGetAction describes an action based on HTTP Get requests.'), - httpGet: { - '#withHost':: d.fn(help='Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { readinessProbe+: { httpGet+: { host: host } } }, - '#withHttpHeaders':: d.fn(help='Custom headers to set in the request. HTTP allows repeated headers.', args=[d.arg(name='httpHeaders', type=d.T.array)]), - withHttpHeaders(httpHeaders): { readinessProbe+: { httpGet+: { httpHeaders: if std.isArray(v=httpHeaders) then httpHeaders else [httpHeaders] } } }, - '#withHttpHeadersMixin':: d.fn(help='Custom headers to set in the request. HTTP allows repeated headers.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='httpHeaders', type=d.T.array)]), - withHttpHeadersMixin(httpHeaders): { readinessProbe+: { httpGet+: { httpHeaders+: if std.isArray(v=httpHeaders) then httpHeaders else [httpHeaders] } } }, - '#withPath':: d.fn(help='Path to access on the HTTP server.', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { readinessProbe+: { httpGet+: { path: path } } }, - '#withPort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='port', type=d.T.string)]), - withPort(port): { readinessProbe+: { httpGet+: { port: port } } }, - '#withScheme':: d.fn(help='Scheme to use for connecting to the host. Defaults to HTTP.', args=[d.arg(name='scheme', type=d.T.string)]), - withScheme(scheme): { readinessProbe+: { httpGet+: { scheme: scheme } } } - }, - '#tcpSocket':: d.obj(help='TCPSocketAction describes an action based on opening a socket'), - tcpSocket: { - '#withHost':: d.fn(help='Optional: Host name to connect to, defaults to the pod IP.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { readinessProbe+: { tcpSocket+: { host: host } } }, - '#withPort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='port', type=d.T.string)]), - withPort(port): { readinessProbe+: { tcpSocket+: { port: port } } } - }, - '#withFailureThreshold':: d.fn(help='Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.', args=[d.arg(name='failureThreshold', type=d.T.integer)]), - withFailureThreshold(failureThreshold): { readinessProbe+: { failureThreshold: failureThreshold } }, - '#withInitialDelaySeconds':: d.fn(help='Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes', args=[d.arg(name='initialDelaySeconds', type=d.T.integer)]), - withInitialDelaySeconds(initialDelaySeconds): { readinessProbe+: { initialDelaySeconds: initialDelaySeconds } }, - '#withPeriodSeconds':: d.fn(help='How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.', args=[d.arg(name='periodSeconds', type=d.T.integer)]), - withPeriodSeconds(periodSeconds): { readinessProbe+: { periodSeconds: periodSeconds } }, - '#withSuccessThreshold':: d.fn(help='Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1.', args=[d.arg(name='successThreshold', type=d.T.integer)]), - withSuccessThreshold(successThreshold): { readinessProbe+: { successThreshold: successThreshold } }, - '#withTimeoutSeconds':: d.fn(help='Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes', args=[d.arg(name='timeoutSeconds', type=d.T.integer)]), - withTimeoutSeconds(timeoutSeconds): { readinessProbe+: { timeoutSeconds: timeoutSeconds } } - }, - '#resources':: d.obj(help='ResourceRequirements describes the compute resource requirements.'), - resources: { - '#withLimits':: d.fn(help='Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/', args=[d.arg(name='limits', type=d.T.object)]), - withLimits(limits): { resources+: { limits: limits } }, - '#withLimitsMixin':: d.fn(help='Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='limits', type=d.T.object)]), - withLimitsMixin(limits): { resources+: { limits+: limits } }, - '#withRequests':: d.fn(help='Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/', args=[d.arg(name='requests', type=d.T.object)]), - withRequests(requests): { resources+: { requests: requests } }, - '#withRequestsMixin':: d.fn(help='Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requests', type=d.T.object)]), - withRequestsMixin(requests): { resources+: { requests+: requests } } - }, - '#securityContext':: d.obj(help='SecurityContext holds security configuration that will be applied to a container. Some fields are present in both SecurityContext and PodSecurityContext. When both are set, the values in SecurityContext take precedence.'), - securityContext: { - '#capabilities':: d.obj(help='Adds and removes POSIX capabilities from running containers.'), - capabilities: { - '#withAdd':: d.fn(help='Added capabilities', args=[d.arg(name='add', type=d.T.array)]), - withAdd(add): { securityContext+: { capabilities+: { add: if std.isArray(v=add) then add else [add] } } }, - '#withAddMixin':: d.fn(help='Added capabilities\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='add', type=d.T.array)]), - withAddMixin(add): { securityContext+: { capabilities+: { add+: if std.isArray(v=add) then add else [add] } } }, - '#withDrop':: d.fn(help='Removed capabilities', args=[d.arg(name='drop', type=d.T.array)]), - withDrop(drop): { securityContext+: { capabilities+: { drop: if std.isArray(v=drop) then drop else [drop] } } }, - '#withDropMixin':: d.fn(help='Removed capabilities\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='drop', type=d.T.array)]), - withDropMixin(drop): { securityContext+: { capabilities+: { drop+: if std.isArray(v=drop) then drop else [drop] } } } - }, - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { securityContext+: { seLinuxOptions+: { level: level } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { securityContext+: { seLinuxOptions+: { role: role } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { securityContext+: { seLinuxOptions+: { type: type } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { securityContext+: { seLinuxOptions+: { user: user } } } - }, - '#withAllowPrivilegeEscalation':: d.fn(help='AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN', args=[d.arg(name='allowPrivilegeEscalation', type=d.T.boolean)]), - withAllowPrivilegeEscalation(allowPrivilegeEscalation): { securityContext+: { allowPrivilegeEscalation: allowPrivilegeEscalation } }, - '#withPrivileged':: d.fn(help='Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false.', args=[d.arg(name='privileged', type=d.T.boolean)]), - withPrivileged(privileged): { securityContext+: { privileged: privileged } }, - '#withProcMount':: d.fn(help='procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled.', args=[d.arg(name='procMount', type=d.T.string)]), - withProcMount(procMount): { securityContext+: { procMount: procMount } }, - '#withReadOnlyRootFilesystem':: d.fn(help='Whether this container has a read-only root filesystem. Default is false.', args=[d.arg(name='readOnlyRootFilesystem', type=d.T.boolean)]), - withReadOnlyRootFilesystem(readOnlyRootFilesystem): { securityContext+: { readOnlyRootFilesystem: readOnlyRootFilesystem } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { securityContext+: { runAsGroup: runAsGroup } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { securityContext+: { runAsNonRoot: runAsNonRoot } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { securityContext+: { runAsUser: runAsUser } } - }, - '#withArgs':: d.fn(help="Arguments to the entrypoint. The docker image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", args=[d.arg(name='args', type=d.T.array)]), - withArgs(args): { args: if std.isArray(v=args) then args else [args] }, - '#withArgsMixin':: d.fn(help="Arguments to the entrypoint. The docker image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='args', type=d.T.array)]), - withArgsMixin(args): { args+: if std.isArray(v=args) then args else [args] }, - '#withCommand':: d.fn(help="Entrypoint array. Not executed within a shell. The docker image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", args=[d.arg(name='command', type=d.T.array)]), - withCommand(command): { command: if std.isArray(v=command) then command else [command] }, - '#withCommandMixin':: d.fn(help="Entrypoint array. Not executed within a shell. The docker image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='command', type=d.T.array)]), - withCommandMixin(command): { command+: if std.isArray(v=command) then command else [command] }, - '#withEnv':: d.fn(help='List of environment variables to set in the container. Cannot be updated.', args=[d.arg(name='env', type=d.T.array)]), - withEnv(env): { env: if std.isArray(v=env) then env else [env] }, - '#withEnvFrom':: d.fn(help='List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.', args=[d.arg(name='envFrom', type=d.T.array)]), - withEnvFrom(envFrom): { envFrom: if std.isArray(v=envFrom) then envFrom else [envFrom] }, - '#withEnvFromMixin':: d.fn(help='List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='envFrom', type=d.T.array)]), - withEnvFromMixin(envFrom): { envFrom+: if std.isArray(v=envFrom) then envFrom else [envFrom] }, - '#withEnvMixin':: d.fn(help='List of environment variables to set in the container. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='env', type=d.T.array)]), - withEnvMixin(env): { env+: if std.isArray(v=env) then env else [env] }, - '#withImage':: d.fn(help='Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets.', args=[d.arg(name='image', type=d.T.string)]), - withImage(image): { image: image }, - '#withImagePullPolicy':: d.fn(help='Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images', args=[d.arg(name='imagePullPolicy', type=d.T.string)]), - withImagePullPolicy(imagePullPolicy): { imagePullPolicy: imagePullPolicy }, - '#withName':: d.fn(help='Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withPorts':: d.fn(help='List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default "0.0.0.0" address inside a container will be accessible from the network. Cannot be updated.', args=[d.arg(name='ports', type=d.T.array)]), - withPorts(ports): { ports: if std.isArray(v=ports) then ports else [ports] }, - '#withPortsMixin':: d.fn(help='List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default "0.0.0.0" address inside a container will be accessible from the network. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ports', type=d.T.array)]), - withPortsMixin(ports): { ports+: if std.isArray(v=ports) then ports else [ports] }, - '#withStdin':: d.fn(help='Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false.', args=[d.arg(name='stdin', type=d.T.boolean)]), - withStdin(stdin): { stdin: stdin }, - '#withStdinOnce':: d.fn(help='Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false', args=[d.arg(name='stdinOnce', type=d.T.boolean)]), - withStdinOnce(stdinOnce): { stdinOnce: stdinOnce }, - '#withTerminationMessagePath':: d.fn(help="Optional: Path at which the file to which the container's termination message will be written is mounted into the container's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.", args=[d.arg(name='terminationMessagePath', type=d.T.string)]), - withTerminationMessagePath(terminationMessagePath): { terminationMessagePath: terminationMessagePath }, - '#withTerminationMessagePolicy':: d.fn(help='Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.', args=[d.arg(name='terminationMessagePolicy', type=d.T.string)]), - withTerminationMessagePolicy(terminationMessagePolicy): { terminationMessagePolicy: terminationMessagePolicy }, - '#withTty':: d.fn(help="Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.", args=[d.arg(name='tty', type=d.T.boolean)]), - withTty(tty): { tty: tty }, - '#withVolumeDevices':: d.fn(help='volumeDevices is the list of block devices to be used by the container. This is a beta feature.', args=[d.arg(name='volumeDevices', type=d.T.array)]), - withVolumeDevices(volumeDevices): { volumeDevices: if std.isArray(v=volumeDevices) then volumeDevices else [volumeDevices] }, - '#withVolumeDevicesMixin':: d.fn(help='volumeDevices is the list of block devices to be used by the container. This is a beta feature.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumeDevices', type=d.T.array)]), - withVolumeDevicesMixin(volumeDevices): { volumeDevices+: if std.isArray(v=volumeDevices) then volumeDevices else [volumeDevices] }, - '#withVolumeMounts':: d.fn(help="Pod volumes to mount into the container's filesystem. Cannot be updated.", args=[d.arg(name='volumeMounts', type=d.T.array)]), - withVolumeMounts(volumeMounts): { volumeMounts: if std.isArray(v=volumeMounts) then volumeMounts else [volumeMounts] }, - '#withVolumeMountsMixin':: d.fn(help="Pod volumes to mount into the container's filesystem. Cannot be updated.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='volumeMounts', type=d.T.array)]), - withVolumeMountsMixin(volumeMounts): { volumeMounts+: if std.isArray(v=volumeMounts) then volumeMounts else [volumeMounts] }, - '#withWorkingDir':: d.fn(help="Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.", args=[d.arg(name='workingDir', type=d.T.string)]), - withWorkingDir(workingDir): { workingDir: workingDir }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/containerImage.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/containerImage.libsonnet deleted file mode 100644 index 9635466ef774..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/containerImage.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='containerImage', url='', help='Describe a container image'), - '#withNames':: d.fn(help='Names by which this image is known. e.g. ["k8s.gcr.io/hyperkube:v1.0.7", "dockerhub.io/google_containers/hyperkube:v1.0.7"]', args=[d.arg(name='names', type=d.T.array)]), - withNames(names): { names: if std.isArray(v=names) then names else [names] }, - '#withNamesMixin':: d.fn(help='Names by which this image is known. e.g. ["k8s.gcr.io/hyperkube:v1.0.7", "dockerhub.io/google_containers/hyperkube:v1.0.7"]\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='names', type=d.T.array)]), - withNamesMixin(names): { names+: if std.isArray(v=names) then names else [names] }, - '#withSizeBytes':: d.fn(help='The size of the image in bytes.', args=[d.arg(name='sizeBytes', type=d.T.integer)]), - withSizeBytes(sizeBytes): { sizeBytes: sizeBytes }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/containerPort.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/containerPort.libsonnet deleted file mode 100644 index 972bde033085..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/containerPort.libsonnet +++ /dev/null @@ -1,16 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='containerPort', url='', help='ContainerPort represents a network port in a single container.'), - '#withContainerPort':: d.fn(help="Number of port to expose on the pod's IP address. This must be a valid port number, 0 < x < 65536.", args=[d.arg(name='containerPort', type=d.T.integer)]), - withContainerPort(containerPort): { containerPort: containerPort }, - '#withHostIP':: d.fn(help='What host IP to bind the external port to.', args=[d.arg(name='hostIP', type=d.T.string)]), - withHostIP(hostIP): { hostIP: hostIP }, - '#withHostPort':: d.fn(help='Number of port to expose on the host. If specified, this must be a valid port number, 0 < x < 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this.', args=[d.arg(name='hostPort', type=d.T.integer)]), - withHostPort(hostPort): { hostPort: hostPort }, - '#withName':: d.fn(help='If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withProtocol':: d.fn(help='Protocol for port. Must be UDP, TCP, or SCTP. Defaults to "TCP".', args=[d.arg(name='protocol', type=d.T.string)]), - withProtocol(protocol): { protocol: protocol }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/containerState.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/containerState.libsonnet deleted file mode 100644 index 86d5fcd9f1d6..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/containerState.libsonnet +++ /dev/null @@ -1,35 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='containerState', url='', help='ContainerState holds a possible state of container. Only one of its members may be specified. If none of them is specified, the default one is ContainerStateWaiting.'), - '#running':: d.obj(help='ContainerStateRunning is a running state of a container.'), - running: { - '#withStartedAt':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='startedAt', type=d.T.string)]), - withStartedAt(startedAt): { running+: { startedAt: startedAt } } - }, - '#terminated':: d.obj(help='ContainerStateTerminated is a terminated state of a container.'), - terminated: { - '#withContainerID':: d.fn(help="Container's ID in the format 'docker://'", args=[d.arg(name='containerID', type=d.T.string)]), - withContainerID(containerID): { terminated+: { containerID: containerID } }, - '#withExitCode':: d.fn(help='Exit status from the last termination of the container', args=[d.arg(name='exitCode', type=d.T.integer)]), - withExitCode(exitCode): { terminated+: { exitCode: exitCode } }, - '#withFinishedAt':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='finishedAt', type=d.T.string)]), - withFinishedAt(finishedAt): { terminated+: { finishedAt: finishedAt } }, - '#withMessage':: d.fn(help='Message regarding the last termination of the container', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { terminated+: { message: message } }, - '#withReason':: d.fn(help='(brief) reason from the last termination of the container', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { terminated+: { reason: reason } }, - '#withSignal':: d.fn(help='Signal from the last termination of the container', args=[d.arg(name='signal', type=d.T.integer)]), - withSignal(signal): { terminated+: { signal: signal } }, - '#withStartedAt':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='startedAt', type=d.T.string)]), - withStartedAt(startedAt): { terminated+: { startedAt: startedAt } } - }, - '#waiting':: d.obj(help='ContainerStateWaiting is a waiting state of a container.'), - waiting: { - '#withMessage':: d.fn(help='Message regarding why the container is not yet running.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { waiting+: { message: message } }, - '#withReason':: d.fn(help='(brief) reason the container is not yet running.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { waiting+: { reason: reason } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/containerStateRunning.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/containerStateRunning.libsonnet deleted file mode 100644 index 5fb84f5ebc3e..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/containerStateRunning.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='containerStateRunning', url='', help='ContainerStateRunning is a running state of a container.'), - '#withStartedAt':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='startedAt', type=d.T.string)]), - withStartedAt(startedAt): { startedAt: startedAt }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/containerStateTerminated.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/containerStateTerminated.libsonnet deleted file mode 100644 index aba2175a80fd..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/containerStateTerminated.libsonnet +++ /dev/null @@ -1,20 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='containerStateTerminated', url='', help='ContainerStateTerminated is a terminated state of a container.'), - '#withContainerID':: d.fn(help="Container's ID in the format 'docker://'", args=[d.arg(name='containerID', type=d.T.string)]), - withContainerID(containerID): { containerID: containerID }, - '#withExitCode':: d.fn(help='Exit status from the last termination of the container', args=[d.arg(name='exitCode', type=d.T.integer)]), - withExitCode(exitCode): { exitCode: exitCode }, - '#withFinishedAt':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='finishedAt', type=d.T.string)]), - withFinishedAt(finishedAt): { finishedAt: finishedAt }, - '#withMessage':: d.fn(help='Message regarding the last termination of the container', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withReason':: d.fn(help='(brief) reason from the last termination of the container', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#withSignal':: d.fn(help='Signal from the last termination of the container', args=[d.arg(name='signal', type=d.T.integer)]), - withSignal(signal): { signal: signal }, - '#withStartedAt':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='startedAt', type=d.T.string)]), - withStartedAt(startedAt): { startedAt: startedAt }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/containerStateWaiting.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/containerStateWaiting.libsonnet deleted file mode 100644 index 7b8a175e6f9d..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/containerStateWaiting.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='containerStateWaiting', url='', help='ContainerStateWaiting is a waiting state of a container.'), - '#withMessage':: d.fn(help='Message regarding why the container is not yet running.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withReason':: d.fn(help='(brief) reason the container is not yet running.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/containerStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/containerStatus.libsonnet deleted file mode 100644 index 6023c6c5b06a..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/containerStatus.libsonnet +++ /dev/null @@ -1,82 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='containerStatus', url='', help='ContainerStatus contains details for the current status of this container.'), - '#lastState':: d.obj(help='ContainerState holds a possible state of container. Only one of its members may be specified. If none of them is specified, the default one is ContainerStateWaiting.'), - lastState: { - '#running':: d.obj(help='ContainerStateRunning is a running state of a container.'), - running: { - '#withStartedAt':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='startedAt', type=d.T.string)]), - withStartedAt(startedAt): { lastState+: { running+: { startedAt: startedAt } } } - }, - '#terminated':: d.obj(help='ContainerStateTerminated is a terminated state of a container.'), - terminated: { - '#withContainerID':: d.fn(help="Container's ID in the format 'docker://'", args=[d.arg(name='containerID', type=d.T.string)]), - withContainerID(containerID): { lastState+: { terminated+: { containerID: containerID } } }, - '#withExitCode':: d.fn(help='Exit status from the last termination of the container', args=[d.arg(name='exitCode', type=d.T.integer)]), - withExitCode(exitCode): { lastState+: { terminated+: { exitCode: exitCode } } }, - '#withFinishedAt':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='finishedAt', type=d.T.string)]), - withFinishedAt(finishedAt): { lastState+: { terminated+: { finishedAt: finishedAt } } }, - '#withMessage':: d.fn(help='Message regarding the last termination of the container', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { lastState+: { terminated+: { message: message } } }, - '#withReason':: d.fn(help='(brief) reason from the last termination of the container', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { lastState+: { terminated+: { reason: reason } } }, - '#withSignal':: d.fn(help='Signal from the last termination of the container', args=[d.arg(name='signal', type=d.T.integer)]), - withSignal(signal): { lastState+: { terminated+: { signal: signal } } }, - '#withStartedAt':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='startedAt', type=d.T.string)]), - withStartedAt(startedAt): { lastState+: { terminated+: { startedAt: startedAt } } } - }, - '#waiting':: d.obj(help='ContainerStateWaiting is a waiting state of a container.'), - waiting: { - '#withMessage':: d.fn(help='Message regarding why the container is not yet running.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { lastState+: { waiting+: { message: message } } }, - '#withReason':: d.fn(help='(brief) reason the container is not yet running.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { lastState+: { waiting+: { reason: reason } } } - } - }, - '#state':: d.obj(help='ContainerState holds a possible state of container. Only one of its members may be specified. If none of them is specified, the default one is ContainerStateWaiting.'), - state: { - '#running':: d.obj(help='ContainerStateRunning is a running state of a container.'), - running: { - '#withStartedAt':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='startedAt', type=d.T.string)]), - withStartedAt(startedAt): { state+: { running+: { startedAt: startedAt } } } - }, - '#terminated':: d.obj(help='ContainerStateTerminated is a terminated state of a container.'), - terminated: { - '#withContainerID':: d.fn(help="Container's ID in the format 'docker://'", args=[d.arg(name='containerID', type=d.T.string)]), - withContainerID(containerID): { state+: { terminated+: { containerID: containerID } } }, - '#withExitCode':: d.fn(help='Exit status from the last termination of the container', args=[d.arg(name='exitCode', type=d.T.integer)]), - withExitCode(exitCode): { state+: { terminated+: { exitCode: exitCode } } }, - '#withFinishedAt':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='finishedAt', type=d.T.string)]), - withFinishedAt(finishedAt): { state+: { terminated+: { finishedAt: finishedAt } } }, - '#withMessage':: d.fn(help='Message regarding the last termination of the container', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { state+: { terminated+: { message: message } } }, - '#withReason':: d.fn(help='(brief) reason from the last termination of the container', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { state+: { terminated+: { reason: reason } } }, - '#withSignal':: d.fn(help='Signal from the last termination of the container', args=[d.arg(name='signal', type=d.T.integer)]), - withSignal(signal): { state+: { terminated+: { signal: signal } } }, - '#withStartedAt':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='startedAt', type=d.T.string)]), - withStartedAt(startedAt): { state+: { terminated+: { startedAt: startedAt } } } - }, - '#waiting':: d.obj(help='ContainerStateWaiting is a waiting state of a container.'), - waiting: { - '#withMessage':: d.fn(help='Message regarding why the container is not yet running.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { state+: { waiting+: { message: message } } }, - '#withReason':: d.fn(help='(brief) reason the container is not yet running.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { state+: { waiting+: { reason: reason } } } - } - }, - '#withContainerID':: d.fn(help="Container's ID in the format 'docker://'.", args=[d.arg(name='containerID', type=d.T.string)]), - withContainerID(containerID): { containerID: containerID }, - '#withImage':: d.fn(help='The image the container is running. More info: https://kubernetes.io/docs/concepts/containers/images', args=[d.arg(name='image', type=d.T.string)]), - withImage(image): { image: image }, - '#withImageID':: d.fn(help="ImageID of the container's image.", args=[d.arg(name='imageID', type=d.T.string)]), - withImageID(imageID): { imageID: imageID }, - '#withName':: d.fn(help='This must be a DNS_LABEL. Each container in a pod must have a unique name. Cannot be updated.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withReady':: d.fn(help='Specifies whether the container has passed its readiness probe.', args=[d.arg(name='ready', type=d.T.boolean)]), - withReady(ready): { ready: ready }, - '#withRestartCount':: d.fn(help='The number of times the container has been restarted, currently based on the number of dead containers that have not yet been removed. Note that this is calculated from dead containers. But those containers are subject to garbage collection. This value will get capped at 5 by GC.', args=[d.arg(name='restartCount', type=d.T.integer)]), - withRestartCount(restartCount): { restartCount: restartCount }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/csiPersistentVolumeSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/csiPersistentVolumeSource.libsonnet deleted file mode 100644 index 735bb6dd0479..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/csiPersistentVolumeSource.libsonnet +++ /dev/null @@ -1,39 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='csiPersistentVolumeSource', url='', help='Represents storage that is managed by an external CSI volume driver (Beta feature)'), - '#controllerPublishSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - controllerPublishSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { controllerPublishSecretRef+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { controllerPublishSecretRef+: { namespace: namespace } } - }, - '#nodePublishSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - nodePublishSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { nodePublishSecretRef+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { nodePublishSecretRef+: { namespace: namespace } } - }, - '#nodeStageSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - nodeStageSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { nodeStageSecretRef+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { nodeStageSecretRef+: { namespace: namespace } } - }, - '#withDriver':: d.fn(help='Driver is the name of the driver to use for this volume. Required.', args=[d.arg(name='driver', type=d.T.string)]), - withDriver(driver): { driver: driver }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs".', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { fsType: fsType }, - '#withReadOnly':: d.fn(help='Optional: The value to pass to ControllerPublishVolumeRequest. Defaults to false (read/write).', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#withVolumeAttributes':: d.fn(help='Attributes of the volume to publish.', args=[d.arg(name='volumeAttributes', type=d.T.object)]), - withVolumeAttributes(volumeAttributes): { volumeAttributes: volumeAttributes }, - '#withVolumeAttributesMixin':: d.fn(help='Attributes of the volume to publish.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumeAttributes', type=d.T.object)]), - withVolumeAttributesMixin(volumeAttributes): { volumeAttributes+: volumeAttributes }, - '#withVolumeHandle':: d.fn(help='VolumeHandle is the unique volume name returned by the CSI volume plugin’s CreateVolume to refer to the volume on all subsequent calls. Required.', args=[d.arg(name='volumeHandle', type=d.T.string)]), - withVolumeHandle(volumeHandle): { volumeHandle: volumeHandle }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/csiVolumeSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/csiVolumeSource.libsonnet deleted file mode 100644 index d08df7c44b6b..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/csiVolumeSource.libsonnet +++ /dev/null @@ -1,21 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='csiVolumeSource', url='', help='Represents a source location of a volume to mount, managed by an external CSI driver'), - '#nodePublishSecretRef':: d.obj(help='LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.'), - nodePublishSecretRef: { - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { nodePublishSecretRef+: { name: name } } - }, - '#withDriver':: d.fn(help='Driver is the name of the CSI driver that handles this volume. Consult with your admin for the correct name as registered in the cluster.', args=[d.arg(name='driver', type=d.T.string)]), - withDriver(driver): { driver: driver }, - '#withFsType':: d.fn(help='Filesystem type to mount. Ex. "ext4", "xfs", "ntfs". If not provided, the empty value is passed to the associated CSI driver which will determine the default filesystem to apply.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { fsType: fsType }, - '#withReadOnly':: d.fn(help='Specifies a read-only configuration for the volume. Defaults to false (read/write).', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#withVolumeAttributes':: d.fn(help="VolumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values.", args=[d.arg(name='volumeAttributes', type=d.T.object)]), - withVolumeAttributes(volumeAttributes): { volumeAttributes: volumeAttributes }, - '#withVolumeAttributesMixin':: d.fn(help="VolumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='volumeAttributes', type=d.T.object)]), - withVolumeAttributesMixin(volumeAttributes): { volumeAttributes+: volumeAttributes }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/daemonEndpoint.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/daemonEndpoint.libsonnet deleted file mode 100644 index b6e6c6e0ab27..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/daemonEndpoint.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='daemonEndpoint', url='', help='DaemonEndpoint contains information about a single Daemon endpoint.'), - '#withPort':: d.fn(help='Port number of the given endpoint.', args=[d.arg(name='port', type=d.T.integer)]), - withPort(port): { port: port }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/downwardAPIProjection.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/downwardAPIProjection.libsonnet deleted file mode 100644 index dc13b3b8f649..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/downwardAPIProjection.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='downwardAPIProjection', url='', help='Represents downward API info for projecting into a projected volume. Note that this is identical to a downwardAPI volume source without the default mode.'), - '#withItems':: d.fn(help='Items is a list of DownwardAPIVolume file', args=[d.arg(name='items', type=d.T.array)]), - withItems(items): { items: if std.isArray(v=items) then items else [items] }, - '#withItemsMixin':: d.fn(help='Items is a list of DownwardAPIVolume file\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='items', type=d.T.array)]), - withItemsMixin(items): { items+: if std.isArray(v=items) then items else [items] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/downwardAPIVolumeFile.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/downwardAPIVolumeFile.libsonnet deleted file mode 100644 index d487ca11a18e..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/downwardAPIVolumeFile.libsonnet +++ /dev/null @@ -1,24 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='downwardAPIVolumeFile', url='', help='DownwardAPIVolumeFile represents information to create the file containing the pod field'), - '#fieldRef':: d.obj(help='ObjectFieldSelector selects an APIVersioned field of an object.'), - fieldRef: { - '#withFieldPath':: d.fn(help='Path of the field to select in the specified API version.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { fieldRef+: { fieldPath: fieldPath } } - }, - '#resourceFieldRef':: d.obj(help='ResourceFieldSelector represents container resources (cpu, memory) and their output format'), - resourceFieldRef: { - '#withContainerName':: d.fn(help='Container name: required for volumes, optional for env vars', args=[d.arg(name='containerName', type=d.T.string)]), - withContainerName(containerName): { resourceFieldRef+: { containerName: containerName } }, - '#withDivisor':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='divisor', type=d.T.string)]), - withDivisor(divisor): { resourceFieldRef+: { divisor: divisor } }, - '#withResource':: d.fn(help='Required: resource to select', args=[d.arg(name='resource', type=d.T.string)]), - withResource(resource): { resourceFieldRef+: { resource: resource } } - }, - '#withMode':: d.fn(help='Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.', args=[d.arg(name='mode', type=d.T.integer)]), - withMode(mode): { mode: mode }, - '#withPath':: d.fn(help="Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'", args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { path: path }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/downwardAPIVolumeSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/downwardAPIVolumeSource.libsonnet deleted file mode 100644 index fba13ebd85ad..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/downwardAPIVolumeSource.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='downwardAPIVolumeSource', url='', help='DownwardAPIVolumeSource represents a volume containing downward API info. Downward API volumes support ownership management and SELinux relabeling.'), - '#withDefaultMode':: d.fn(help='Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.', args=[d.arg(name='defaultMode', type=d.T.integer)]), - withDefaultMode(defaultMode): { defaultMode: defaultMode }, - '#withItems':: d.fn(help='Items is a list of downward API volume file', args=[d.arg(name='items', type=d.T.array)]), - withItems(items): { items: if std.isArray(v=items) then items else [items] }, - '#withItemsMixin':: d.fn(help='Items is a list of downward API volume file\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='items', type=d.T.array)]), - withItemsMixin(items): { items+: if std.isArray(v=items) then items else [items] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/emptyDirVolumeSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/emptyDirVolumeSource.libsonnet deleted file mode 100644 index 192bb0fb268a..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/emptyDirVolumeSource.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='emptyDirVolumeSource', url='', help='Represents an empty directory for a pod. Empty directory volumes support ownership management and SELinux relabeling.'), - '#withMedium':: d.fn(help="What type of storage medium should back this directory. The default is '' which means to use the node's default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir", args=[d.arg(name='medium', type=d.T.string)]), - withMedium(medium): { medium: medium }, - '#withSizeLimit':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='sizeLimit', type=d.T.string)]), - withSizeLimit(sizeLimit): { sizeLimit: sizeLimit }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/endpointAddress.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/endpointAddress.libsonnet deleted file mode 100644 index 82ddb968ad45..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/endpointAddress.libsonnet +++ /dev/null @@ -1,27 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='endpointAddress', url='', help='EndpointAddress is a tuple that describes single IP address.'), - '#targetRef':: d.obj(help='ObjectReference contains enough information to let you inspect or modify the referred object.'), - targetRef: { - '#withFieldPath':: d.fn(help='If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { targetRef+: { fieldPath: fieldPath } }, - '#withKind':: d.fn(help='Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { targetRef+: { kind: kind } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { targetRef+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { targetRef+: { namespace: namespace } }, - '#withResourceVersion':: d.fn(help='Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { targetRef+: { resourceVersion: resourceVersion } }, - '#withUid':: d.fn(help='UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { targetRef+: { uid: uid } } - }, - '#withHostname':: d.fn(help='The Hostname of this endpoint', args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { hostname: hostname }, - '#withIp':: d.fn(help='The IP of this endpoint. May not be loopback (127.0.0.0/8), link-local (169.254.0.0/16), or link-local multicast ((224.0.0.0/24). IPv6 is also accepted but not fully supported on all platforms. Also, certain kubernetes components, like kube-proxy, are not IPv6 ready.', args=[d.arg(name='ip', type=d.T.string)]), - withIp(ip): { ip: ip }, - '#withNodeName':: d.fn(help='Optional: Node hosting this endpoint. This can be used to determine endpoints local to a node.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { nodeName: nodeName }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/endpointPort.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/endpointPort.libsonnet deleted file mode 100644 index ac1987104d5e..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/endpointPort.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='endpointPort', url='', help='EndpointPort is a tuple that describes a single port.'), - '#withName':: d.fn(help='The name of this port (corresponds to ServicePort.Name). Must be a DNS_LABEL. Optional only if one port is defined.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withPort':: d.fn(help='The port number of the endpoint.', args=[d.arg(name='port', type=d.T.integer)]), - withPort(port): { port: port }, - '#withProtocol':: d.fn(help='The IP protocol for this port. Must be UDP, TCP, or SCTP. Default is TCP.', args=[d.arg(name='protocol', type=d.T.string)]), - withProtocol(protocol): { protocol: protocol }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/endpointSubset.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/endpointSubset.libsonnet deleted file mode 100644 index 6e6976185e1b..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/endpointSubset.libsonnet +++ /dev/null @@ -1,18 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='endpointSubset', url='', help='EndpointSubset is a group of addresses with a common set of ports. The expanded set of endpoints is the Cartesian product of Addresses x Ports. For example, given:\n {\n Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}],\n Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}]\n }\nThe resulting set of endpoints can be viewed as:\n a: [ 10.10.1.1:8675, 10.10.2.2:8675 ],\n b: [ 10.10.1.1:309, 10.10.2.2:309 ]'), - '#withAddresses':: d.fn(help='IP addresses which offer the related ports that are marked as ready. These endpoints should be considered safe for load balancers and clients to utilize.', args=[d.arg(name='addresses', type=d.T.array)]), - withAddresses(addresses): { addresses: if std.isArray(v=addresses) then addresses else [addresses] }, - '#withAddressesMixin':: d.fn(help='IP addresses which offer the related ports that are marked as ready. These endpoints should be considered safe for load balancers and clients to utilize.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='addresses', type=d.T.array)]), - withAddressesMixin(addresses): { addresses+: if std.isArray(v=addresses) then addresses else [addresses] }, - '#withNotReadyAddresses':: d.fn(help='IP addresses which offer the related ports but are not currently marked as ready because they have not yet finished starting, have recently failed a readiness check, or have recently failed a liveness check.', args=[d.arg(name='notReadyAddresses', type=d.T.array)]), - withNotReadyAddresses(notReadyAddresses): { notReadyAddresses: if std.isArray(v=notReadyAddresses) then notReadyAddresses else [notReadyAddresses] }, - '#withNotReadyAddressesMixin':: d.fn(help='IP addresses which offer the related ports but are not currently marked as ready because they have not yet finished starting, have recently failed a readiness check, or have recently failed a liveness check.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='notReadyAddresses', type=d.T.array)]), - withNotReadyAddressesMixin(notReadyAddresses): { notReadyAddresses+: if std.isArray(v=notReadyAddresses) then notReadyAddresses else [notReadyAddresses] }, - '#withPorts':: d.fn(help='Port numbers available on the related IP addresses.', args=[d.arg(name='ports', type=d.T.array)]), - withPorts(ports): { ports: if std.isArray(v=ports) then ports else [ports] }, - '#withPortsMixin':: d.fn(help='Port numbers available on the related IP addresses.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ports', type=d.T.array)]), - withPortsMixin(ports): { ports+: if std.isArray(v=ports) then ports else [ports] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/endpoints.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/endpoints.libsonnet deleted file mode 100644 index 960c948e5e83..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/endpoints.libsonnet +++ /dev/null @@ -1,97 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='endpoints', url='', help='Endpoints is a collection of endpoints that implement the actual service. Example:\n Name: "mysvc",\n Subsets: [\n {\n Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}],\n Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}]\n },\n {\n Addresses: [{"ip": "10.10.3.3"}],\n Ports: [{"name": "a", "port": 93}, {"name": "b", "port": 76}]\n },\n ]'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Endpoints', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'v1', - kind: 'Endpoints' - } + self.metadata.withName(name=name), - '#withSubsets':: d.fn(help='The set of all endpoints is the union of all subsets. Addresses are placed into subsets according to the IPs they share. A single address with multiple ports, some of which are ready and some of which are not (because they come from different containers) will result in the address being displayed in different subsets for the different ports. No address will appear in both Addresses and NotReadyAddresses in the same subset. Sets of addresses and ports that comprise a service.', args=[d.arg(name='subsets', type=d.T.array)]), - withSubsets(subsets): { subsets: if std.isArray(v=subsets) then subsets else [subsets] }, - '#withSubsetsMixin':: d.fn(help='The set of all endpoints is the union of all subsets. Addresses are placed into subsets according to the IPs they share. A single address with multiple ports, some of which are ready and some of which are not (because they come from different containers) will result in the address being displayed in different subsets for the different ports. No address will appear in both Addresses and NotReadyAddresses in the same subset. Sets of addresses and ports that comprise a service.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='subsets', type=d.T.array)]), - withSubsetsMixin(subsets): { subsets+: if std.isArray(v=subsets) then subsets else [subsets] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/envFromSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/envFromSource.libsonnet deleted file mode 100644 index 09540e3957b2..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/envFromSource.libsonnet +++ /dev/null @@ -1,22 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='envFromSource', url='', help='EnvFromSource represents the source of a set of ConfigMaps'), - '#configMapRef':: d.obj(help="ConfigMapEnvSource selects a ConfigMap to populate the environment variables with.\n\nThe contents of the target ConfigMap's Data field will represent the key-value pairs as environment variables."), - configMapRef: { - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { configMapRef+: { name: name } }, - '#withOptional':: d.fn(help='Specify whether the ConfigMap must be defined', args=[d.arg(name='optional', type=d.T.boolean)]), - withOptional(optional): { configMapRef+: { optional: optional } } - }, - '#secretRef':: d.obj(help="SecretEnvSource selects a Secret to populate the environment variables with.\n\nThe contents of the target Secret's Data field will represent the key-value pairs as environment variables."), - secretRef: { - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { secretRef+: { name: name } }, - '#withOptional':: d.fn(help='Specify whether the Secret must be defined', args=[d.arg(name='optional', type=d.T.boolean)]), - withOptional(optional): { secretRef+: { optional: optional } } - }, - '#withPrefix':: d.fn(help='An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.', args=[d.arg(name='prefix', type=d.T.string)]), - withPrefix(prefix): { prefix: prefix }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/envVar.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/envVar.libsonnet deleted file mode 100644 index 30291148f6cc..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/envVar.libsonnet +++ /dev/null @@ -1,45 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='envVar', url='', help='EnvVar represents an environment variable present in a Container.'), - '#valueFrom':: d.obj(help='EnvVarSource represents a source for the value of an EnvVar.'), - valueFrom: { - '#configMapKeyRef':: d.obj(help='Selects a key from a ConfigMap.'), - configMapKeyRef: { - '#withKey':: d.fn(help='The key to select.', args=[d.arg(name='key', type=d.T.string)]), - withKey(key): { valueFrom+: { configMapKeyRef+: { key: key } } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { valueFrom+: { configMapKeyRef+: { name: name } } }, - '#withOptional':: d.fn(help="Specify whether the ConfigMap or it's key must be defined", args=[d.arg(name='optional', type=d.T.boolean)]), - withOptional(optional): { valueFrom+: { configMapKeyRef+: { optional: optional } } } - }, - '#fieldRef':: d.obj(help='ObjectFieldSelector selects an APIVersioned field of an object.'), - fieldRef: { - '#withFieldPath':: d.fn(help='Path of the field to select in the specified API version.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { valueFrom+: { fieldRef+: { fieldPath: fieldPath } } } - }, - '#resourceFieldRef':: d.obj(help='ResourceFieldSelector represents container resources (cpu, memory) and their output format'), - resourceFieldRef: { - '#withContainerName':: d.fn(help='Container name: required for volumes, optional for env vars', args=[d.arg(name='containerName', type=d.T.string)]), - withContainerName(containerName): { valueFrom+: { resourceFieldRef+: { containerName: containerName } } }, - '#withDivisor':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='divisor', type=d.T.string)]), - withDivisor(divisor): { valueFrom+: { resourceFieldRef+: { divisor: divisor } } }, - '#withResource':: d.fn(help='Required: resource to select', args=[d.arg(name='resource', type=d.T.string)]), - withResource(resource): { valueFrom+: { resourceFieldRef+: { resource: resource } } } - }, - '#secretKeyRef':: d.obj(help='SecretKeySelector selects a key of a Secret.'), - secretKeyRef: { - '#withKey':: d.fn(help='The key of the secret to select from. Must be a valid secret key.', args=[d.arg(name='key', type=d.T.string)]), - withKey(key): { valueFrom+: { secretKeyRef+: { key: key } } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { valueFrom+: { secretKeyRef+: { name: name } } }, - '#withOptional':: d.fn(help="Specify whether the Secret or it's key must be defined", args=[d.arg(name='optional', type=d.T.boolean)]), - withOptional(optional): { valueFrom+: { secretKeyRef+: { optional: optional } } } - } - }, - '#withName':: d.fn(help='Name of the environment variable. Must be a C_IDENTIFIER.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withValue':: d.fn(help='Variable references $(VAR_NAME) are expanded using the previous defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "".', args=[d.arg(name='value', type=d.T.string)]), - withValue(value): { value: value }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/envVarSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/envVarSource.libsonnet deleted file mode 100644 index 80950a9ec535..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/envVarSource.libsonnet +++ /dev/null @@ -1,38 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='envVarSource', url='', help='EnvVarSource represents a source for the value of an EnvVar.'), - '#configMapKeyRef':: d.obj(help='Selects a key from a ConfigMap.'), - configMapKeyRef: { - '#withKey':: d.fn(help='The key to select.', args=[d.arg(name='key', type=d.T.string)]), - withKey(key): { configMapKeyRef+: { key: key } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { configMapKeyRef+: { name: name } }, - '#withOptional':: d.fn(help="Specify whether the ConfigMap or it's key must be defined", args=[d.arg(name='optional', type=d.T.boolean)]), - withOptional(optional): { configMapKeyRef+: { optional: optional } } - }, - '#fieldRef':: d.obj(help='ObjectFieldSelector selects an APIVersioned field of an object.'), - fieldRef: { - '#withFieldPath':: d.fn(help='Path of the field to select in the specified API version.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { fieldRef+: { fieldPath: fieldPath } } - }, - '#resourceFieldRef':: d.obj(help='ResourceFieldSelector represents container resources (cpu, memory) and their output format'), - resourceFieldRef: { - '#withContainerName':: d.fn(help='Container name: required for volumes, optional for env vars', args=[d.arg(name='containerName', type=d.T.string)]), - withContainerName(containerName): { resourceFieldRef+: { containerName: containerName } }, - '#withDivisor':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='divisor', type=d.T.string)]), - withDivisor(divisor): { resourceFieldRef+: { divisor: divisor } }, - '#withResource':: d.fn(help='Required: resource to select', args=[d.arg(name='resource', type=d.T.string)]), - withResource(resource): { resourceFieldRef+: { resource: resource } } - }, - '#secretKeyRef':: d.obj(help='SecretKeySelector selects a key of a Secret.'), - secretKeyRef: { - '#withKey':: d.fn(help='The key of the secret to select from. Must be a valid secret key.', args=[d.arg(name='key', type=d.T.string)]), - withKey(key): { secretKeyRef+: { key: key } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { secretKeyRef+: { name: name } }, - '#withOptional':: d.fn(help="Specify whether the Secret or it's key must be defined", args=[d.arg(name='optional', type=d.T.boolean)]), - withOptional(optional): { secretKeyRef+: { optional: optional } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/event.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/event.libsonnet deleted file mode 100644 index 0aa218ecf2b3..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/event.libsonnet +++ /dev/null @@ -1,159 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='event', url='', help='Event is a report of an event somewhere in the cluster.'), - '#involvedObject':: d.obj(help='ObjectReference contains enough information to let you inspect or modify the referred object.'), - involvedObject: { - '#withFieldPath':: d.fn(help='If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { involvedObject+: { fieldPath: fieldPath } }, - '#withKind':: d.fn(help='Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { involvedObject+: { kind: kind } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { involvedObject+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { involvedObject+: { namespace: namespace } }, - '#withResourceVersion':: d.fn(help='Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { involvedObject+: { resourceVersion: resourceVersion } }, - '#withUid':: d.fn(help='UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { involvedObject+: { uid: uid } } - }, - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Event', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'v1', - kind: 'Event' - } + self.metadata.withName(name=name), - '#related':: d.obj(help='ObjectReference contains enough information to let you inspect or modify the referred object.'), - related: { - '#withFieldPath':: d.fn(help='If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { related+: { fieldPath: fieldPath } }, - '#withKind':: d.fn(help='Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { related+: { kind: kind } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { related+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { related+: { namespace: namespace } }, - '#withResourceVersion':: d.fn(help='Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { related+: { resourceVersion: resourceVersion } }, - '#withUid':: d.fn(help='UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { related+: { uid: uid } } - }, - '#series':: d.obj(help='EventSeries contain information on series of events, i.e. thing that was/is happening continuously for some time.'), - series: { - '#withCount':: d.fn(help='Number of occurrences in this series up to the last heartbeat time', args=[d.arg(name='count', type=d.T.integer)]), - withCount(count): { series+: { count: count } }, - '#withLastObservedTime':: d.fn(help='MicroTime is version of Time with microsecond level precision.', args=[d.arg(name='lastObservedTime', type=d.T.string)]), - withLastObservedTime(lastObservedTime): { series+: { lastObservedTime: lastObservedTime } }, - '#withState':: d.fn(help='State of this Series: Ongoing or Finished', args=[d.arg(name='state', type=d.T.string)]), - withState(state): { series+: { state: state } } - }, - '#source':: d.obj(help='EventSource contains information for an event.'), - source: { - '#withComponent':: d.fn(help='Component from which the event is generated.', args=[d.arg(name='component', type=d.T.string)]), - withComponent(component): { source+: { component: component } }, - '#withHost':: d.fn(help='Node name on which the event is generated.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { source+: { host: host } } - }, - '#withAction':: d.fn(help='What action was taken/failed regarding to the Regarding object.', args=[d.arg(name='action', type=d.T.string)]), - withAction(action): { action: action }, - '#withCount':: d.fn(help='The number of times this event has occurred.', args=[d.arg(name='count', type=d.T.integer)]), - withCount(count): { count: count }, - '#withEventTime':: d.fn(help='MicroTime is version of Time with microsecond level precision.', args=[d.arg(name='eventTime', type=d.T.string)]), - withEventTime(eventTime): { eventTime: eventTime }, - '#withFirstTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='firstTimestamp', type=d.T.string)]), - withFirstTimestamp(firstTimestamp): { firstTimestamp: firstTimestamp }, - '#withLastTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastTimestamp', type=d.T.string)]), - withLastTimestamp(lastTimestamp): { lastTimestamp: lastTimestamp }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withReason':: d.fn(help="This should be a short, machine understandable string that gives the reason for the transition into the object's current status.", args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#withReportingComponent':: d.fn(help='Name of the controller that emitted this Event, e.g. `kubernetes.io/kubelet`.', args=[d.arg(name='reportingComponent', type=d.T.string)]), - withReportingComponent(reportingComponent): { reportingComponent: reportingComponent }, - '#withReportingInstance':: d.fn(help='ID of the controller instance, e.g. `kubelet-xyzf`.', args=[d.arg(name='reportingInstance', type=d.T.string)]), - withReportingInstance(reportingInstance): { reportingInstance: reportingInstance }, - '#withType':: d.fn(help='Type of this event (Normal, Warning), new types could be added in the future', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/eventSeries.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/eventSeries.libsonnet deleted file mode 100644 index 6aea2b9a354e..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/eventSeries.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='eventSeries', url='', help='EventSeries contain information on series of events, i.e. thing that was/is happening continuously for some time.'), - '#withCount':: d.fn(help='Number of occurrences in this series up to the last heartbeat time', args=[d.arg(name='count', type=d.T.integer)]), - withCount(count): { count: count }, - '#withLastObservedTime':: d.fn(help='MicroTime is version of Time with microsecond level precision.', args=[d.arg(name='lastObservedTime', type=d.T.string)]), - withLastObservedTime(lastObservedTime): { lastObservedTime: lastObservedTime }, - '#withState':: d.fn(help='State of this Series: Ongoing or Finished', args=[d.arg(name='state', type=d.T.string)]), - withState(state): { state: state }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/eventSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/eventSource.libsonnet deleted file mode 100644 index 2704b37d9649..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/eventSource.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='eventSource', url='', help='EventSource contains information for an event.'), - '#withComponent':: d.fn(help='Component from which the event is generated.', args=[d.arg(name='component', type=d.T.string)]), - withComponent(component): { component: component }, - '#withHost':: d.fn(help='Node name on which the event is generated.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { host: host }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/execAction.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/execAction.libsonnet deleted file mode 100644 index 643a8bc5365e..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/execAction.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='execAction', url='', help='ExecAction describes a "run in container" action.'), - '#withCommand':: d.fn(help="Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.", args=[d.arg(name='command', type=d.T.array)]), - withCommand(command): { command: if std.isArray(v=command) then command else [command] }, - '#withCommandMixin':: d.fn(help="Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='command', type=d.T.array)]), - withCommandMixin(command): { command+: if std.isArray(v=command) then command else [command] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/fcVolumeSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/fcVolumeSource.libsonnet deleted file mode 100644 index 4568df31936f..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/fcVolumeSource.libsonnet +++ /dev/null @@ -1,20 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='fcVolumeSource', url='', help='Represents a Fibre Channel volume. Fibre Channel volumes can only be mounted as read/write once. Fibre Channel volumes support ownership management and SELinux relabeling.'), - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { fsType: fsType }, - '#withLun':: d.fn(help='Optional: FC target lun number', args=[d.arg(name='lun', type=d.T.integer)]), - withLun(lun): { lun: lun }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#withTargetWWNs':: d.fn(help='Optional: FC target worldwide names (WWNs)', args=[d.arg(name='targetWWNs', type=d.T.array)]), - withTargetWWNs(targetWWNs): { targetWWNs: if std.isArray(v=targetWWNs) then targetWWNs else [targetWWNs] }, - '#withTargetWWNsMixin':: d.fn(help='Optional: FC target worldwide names (WWNs)\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='targetWWNs', type=d.T.array)]), - withTargetWWNsMixin(targetWWNs): { targetWWNs+: if std.isArray(v=targetWWNs) then targetWWNs else [targetWWNs] }, - '#withWwids':: d.fn(help='Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.', args=[d.arg(name='wwids', type=d.T.array)]), - withWwids(wwids): { wwids: if std.isArray(v=wwids) then wwids else [wwids] }, - '#withWwidsMixin':: d.fn(help='Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='wwids', type=d.T.array)]), - withWwidsMixin(wwids): { wwids+: if std.isArray(v=wwids) then wwids else [wwids] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/flexPersistentVolumeSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/flexPersistentVolumeSource.libsonnet deleted file mode 100644 index e02bf42fa755..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/flexPersistentVolumeSource.libsonnet +++ /dev/null @@ -1,23 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='flexPersistentVolumeSource', url='', help='FlexPersistentVolumeSource represents a generic persistent volume resource that is provisioned/attached using an exec based plugin.'), - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { secretRef+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { secretRef+: { namespace: namespace } } - }, - '#withDriver':: d.fn(help='Driver is the name of the driver to use for this volume.', args=[d.arg(name='driver', type=d.T.string)]), - withDriver(driver): { driver: driver }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { fsType: fsType }, - '#withOptions':: d.fn(help='Optional: Extra command options if any.', args=[d.arg(name='options', type=d.T.object)]), - withOptions(options): { options: options }, - '#withOptionsMixin':: d.fn(help='Optional: Extra command options if any.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.object)]), - withOptionsMixin(options): { options+: options }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/flexVolumeSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/flexVolumeSource.libsonnet deleted file mode 100644 index bf20f460c754..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/flexVolumeSource.libsonnet +++ /dev/null @@ -1,21 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='flexVolumeSource', url='', help='FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.'), - '#secretRef':: d.obj(help='LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.'), - secretRef: { - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { secretRef+: { name: name } } - }, - '#withDriver':: d.fn(help='Driver is the name of the driver to use for this volume.', args=[d.arg(name='driver', type=d.T.string)]), - withDriver(driver): { driver: driver }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { fsType: fsType }, - '#withOptions':: d.fn(help='Optional: Extra command options if any.', args=[d.arg(name='options', type=d.T.object)]), - withOptions(options): { options: options }, - '#withOptionsMixin':: d.fn(help='Optional: Extra command options if any.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.object)]), - withOptionsMixin(options): { options+: options }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/flockerVolumeSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/flockerVolumeSource.libsonnet deleted file mode 100644 index ec063af5f736..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/flockerVolumeSource.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='flockerVolumeSource', url='', help='Represents a Flocker volume mounted by the Flocker agent. One and only one of datasetName and datasetUUID should be set. Flocker volumes do not support ownership management or SELinux relabeling.'), - '#withDatasetName':: d.fn(help='Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated', args=[d.arg(name='datasetName', type=d.T.string)]), - withDatasetName(datasetName): { datasetName: datasetName }, - '#withDatasetUUID':: d.fn(help='UUID of the dataset. This is unique identifier of a Flocker dataset', args=[d.arg(name='datasetUUID', type=d.T.string)]), - withDatasetUUID(datasetUUID): { datasetUUID: datasetUUID }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/gcePersistentDiskVolumeSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/gcePersistentDiskVolumeSource.libsonnet deleted file mode 100644 index 48517442552a..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/gcePersistentDiskVolumeSource.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='gcePersistentDiskVolumeSource', url='', help='Represents a Persistent Disk resource in Google Compute Engine.\n\nA GCE PD must exist before mounting to a container. The disk must also be in the same GCE project and zone as the kubelet. A GCE PD can only be mounted as read/write once or read-only many times. GCE PDs support ownership management and SELinux relabeling.'), - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { fsType: fsType }, - '#withPartition':: d.fn(help='The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='partition', type=d.T.integer)]), - withPartition(partition): { partition: partition }, - '#withPdName':: d.fn(help='Unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='pdName', type=d.T.string)]), - withPdName(pdName): { pdName: pdName }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/gitRepoVolumeSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/gitRepoVolumeSource.libsonnet deleted file mode 100644 index c60bf5aa5529..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/gitRepoVolumeSource.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='gitRepoVolumeSource', url='', help="Represents a volume that is populated with the contents of a git repository. Git repo volumes do not support ownership management. Git repo volumes support SELinux relabeling.\n\nDEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod's container."), - '#withDirectory':: d.fn(help="Target directory name. Must not contain or start with '..'. If '.' is supplied, the volume directory will be the git repository. Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name.", args=[d.arg(name='directory', type=d.T.string)]), - withDirectory(directory): { directory: directory }, - '#withRepository':: d.fn(help='Repository URL', args=[d.arg(name='repository', type=d.T.string)]), - withRepository(repository): { repository: repository }, - '#withRevision':: d.fn(help='Commit hash for the specified revision.', args=[d.arg(name='revision', type=d.T.string)]), - withRevision(revision): { revision: revision }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/glusterfsPersistentVolumeSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/glusterfsPersistentVolumeSource.libsonnet deleted file mode 100644 index 1f45a8fb37d7..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/glusterfsPersistentVolumeSource.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='glusterfsPersistentVolumeSource', url='', help='Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling.'), - '#withEndpoints':: d.fn(help='EndpointsName is the endpoint name that details Glusterfs topology. More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='endpoints', type=d.T.string)]), - withEndpoints(endpoints): { endpoints: endpoints }, - '#withEndpointsNamespace':: d.fn(help='EndpointsNamespace is the namespace that contains Glusterfs endpoint. If this field is empty, the EndpointNamespace defaults to the same namespace as the bound PVC. More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='endpointsNamespace', type=d.T.string)]), - withEndpointsNamespace(endpointsNamespace): { endpointsNamespace: endpointsNamespace }, - '#withPath':: d.fn(help='Path is the Glusterfs volume path. More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { path: path }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/glusterfsVolumeSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/glusterfsVolumeSource.libsonnet deleted file mode 100644 index d167ec927961..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/glusterfsVolumeSource.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='glusterfsVolumeSource', url='', help='Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling.'), - '#withEndpoints':: d.fn(help='EndpointsName is the endpoint name that details Glusterfs topology. More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='endpoints', type=d.T.string)]), - withEndpoints(endpoints): { endpoints: endpoints }, - '#withPath':: d.fn(help='Path is the Glusterfs volume path. More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { path: path }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/handler.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/handler.libsonnet deleted file mode 100644 index 990432d26ca7..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/handler.libsonnet +++ /dev/null @@ -1,35 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='handler', url='', help='Handler defines a specific action that should be taken'), - '#exec':: d.obj(help='ExecAction describes a "run in container" action.'), - exec: { - '#withCommand':: d.fn(help="Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.", args=[d.arg(name='command', type=d.T.array)]), - withCommand(command): { exec+: { command: if std.isArray(v=command) then command else [command] } }, - '#withCommandMixin':: d.fn(help="Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='command', type=d.T.array)]), - withCommandMixin(command): { exec+: { command+: if std.isArray(v=command) then command else [command] } } - }, - '#httpGet':: d.obj(help='HTTPGetAction describes an action based on HTTP Get requests.'), - httpGet: { - '#withHost':: d.fn(help='Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { httpGet+: { host: host } }, - '#withHttpHeaders':: d.fn(help='Custom headers to set in the request. HTTP allows repeated headers.', args=[d.arg(name='httpHeaders', type=d.T.array)]), - withHttpHeaders(httpHeaders): { httpGet+: { httpHeaders: if std.isArray(v=httpHeaders) then httpHeaders else [httpHeaders] } }, - '#withHttpHeadersMixin':: d.fn(help='Custom headers to set in the request. HTTP allows repeated headers.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='httpHeaders', type=d.T.array)]), - withHttpHeadersMixin(httpHeaders): { httpGet+: { httpHeaders+: if std.isArray(v=httpHeaders) then httpHeaders else [httpHeaders] } }, - '#withPath':: d.fn(help='Path to access on the HTTP server.', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { httpGet+: { path: path } }, - '#withPort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='port', type=d.T.string)]), - withPort(port): { httpGet+: { port: port } }, - '#withScheme':: d.fn(help='Scheme to use for connecting to the host. Defaults to HTTP.', args=[d.arg(name='scheme', type=d.T.string)]), - withScheme(scheme): { httpGet+: { scheme: scheme } } - }, - '#tcpSocket':: d.obj(help='TCPSocketAction describes an action based on opening a socket'), - tcpSocket: { - '#withHost':: d.fn(help='Optional: Host name to connect to, defaults to the pod IP.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { tcpSocket+: { host: host } }, - '#withPort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='port', type=d.T.string)]), - withPort(port): { tcpSocket+: { port: port } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/hostAlias.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/hostAlias.libsonnet deleted file mode 100644 index bbecf01dbf81..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/hostAlias.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='hostAlias', url='', help="HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the pod's hosts file."), - '#withHostnames':: d.fn(help='Hostnames for the above IP address.', args=[d.arg(name='hostnames', type=d.T.array)]), - withHostnames(hostnames): { hostnames: if std.isArray(v=hostnames) then hostnames else [hostnames] }, - '#withHostnamesMixin':: d.fn(help='Hostnames for the above IP address.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='hostnames', type=d.T.array)]), - withHostnamesMixin(hostnames): { hostnames+: if std.isArray(v=hostnames) then hostnames else [hostnames] }, - '#withIp':: d.fn(help='IP address of the host file entry.', args=[d.arg(name='ip', type=d.T.string)]), - withIp(ip): { ip: ip }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/hostPathVolumeSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/hostPathVolumeSource.libsonnet deleted file mode 100644 index fef5b659eab6..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/hostPathVolumeSource.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='hostPathVolumeSource', url='', help='Represents a host path mapped into a pod. Host path volumes do not support ownership management or SELinux relabeling.'), - '#withPath':: d.fn(help='Path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { path: path }, - '#withType':: d.fn(help='Type for HostPath Volume Defaults to "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/httpGetAction.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/httpGetAction.libsonnet deleted file mode 100644 index 86b3e86acd31..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/httpGetAction.libsonnet +++ /dev/null @@ -1,18 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='httpGetAction', url='', help='HTTPGetAction describes an action based on HTTP Get requests.'), - '#withHost':: d.fn(help='Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { host: host }, - '#withHttpHeaders':: d.fn(help='Custom headers to set in the request. HTTP allows repeated headers.', args=[d.arg(name='httpHeaders', type=d.T.array)]), - withHttpHeaders(httpHeaders): { httpHeaders: if std.isArray(v=httpHeaders) then httpHeaders else [httpHeaders] }, - '#withHttpHeadersMixin':: d.fn(help='Custom headers to set in the request. HTTP allows repeated headers.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='httpHeaders', type=d.T.array)]), - withHttpHeadersMixin(httpHeaders): { httpHeaders+: if std.isArray(v=httpHeaders) then httpHeaders else [httpHeaders] }, - '#withPath':: d.fn(help='Path to access on the HTTP server.', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { path: path }, - '#withPort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='port', type=d.T.string)]), - withPort(port): { port: port }, - '#withScheme':: d.fn(help='Scheme to use for connecting to the host. Defaults to HTTP.', args=[d.arg(name='scheme', type=d.T.string)]), - withScheme(scheme): { scheme: scheme }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/httpHeader.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/httpHeader.libsonnet deleted file mode 100644 index 6f02a876ae81..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/httpHeader.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='httpHeader', url='', help='HTTPHeader describes a custom header to be used in HTTP probes'), - '#withName':: d.fn(help='The header field name', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withValue':: d.fn(help='The header field value', args=[d.arg(name='value', type=d.T.string)]), - withValue(value): { value: value }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/iscsiPersistentVolumeSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/iscsiPersistentVolumeSource.libsonnet deleted file mode 100644 index 6f1482e25621..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/iscsiPersistentVolumeSource.libsonnet +++ /dev/null @@ -1,35 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='iscsiPersistentVolumeSource', url='', help='ISCSIPersistentVolumeSource represents an ISCSI disk. ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling.'), - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { secretRef+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { secretRef+: { namespace: namespace } } - }, - '#withChapAuthDiscovery':: d.fn(help='whether support iSCSI Discovery CHAP authentication', args=[d.arg(name='chapAuthDiscovery', type=d.T.boolean)]), - withChapAuthDiscovery(chapAuthDiscovery): { chapAuthDiscovery: chapAuthDiscovery }, - '#withChapAuthSession':: d.fn(help='whether support iSCSI Session CHAP authentication', args=[d.arg(name='chapAuthSession', type=d.T.boolean)]), - withChapAuthSession(chapAuthSession): { chapAuthSession: chapAuthSession }, - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { fsType: fsType }, - '#withInitiatorName':: d.fn(help='Custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface : will be created for the connection.', args=[d.arg(name='initiatorName', type=d.T.string)]), - withInitiatorName(initiatorName): { initiatorName: initiatorName }, - '#withIqn':: d.fn(help='Target iSCSI Qualified Name.', args=[d.arg(name='iqn', type=d.T.string)]), - withIqn(iqn): { iqn: iqn }, - '#withIscsiInterface':: d.fn(help="iSCSI Interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).", args=[d.arg(name='iscsiInterface', type=d.T.string)]), - withIscsiInterface(iscsiInterface): { iscsiInterface: iscsiInterface }, - '#withLun':: d.fn(help='iSCSI Target Lun number.', args=[d.arg(name='lun', type=d.T.integer)]), - withLun(lun): { lun: lun }, - '#withPortals':: d.fn(help='iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).', args=[d.arg(name='portals', type=d.T.array)]), - withPortals(portals): { portals: if std.isArray(v=portals) then portals else [portals] }, - '#withPortalsMixin':: d.fn(help='iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='portals', type=d.T.array)]), - withPortalsMixin(portals): { portals+: if std.isArray(v=portals) then portals else [portals] }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#withTargetPortal':: d.fn(help='iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).', args=[d.arg(name='targetPortal', type=d.T.string)]), - withTargetPortal(targetPortal): { targetPortal: targetPortal }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/iscsiVolumeSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/iscsiVolumeSource.libsonnet deleted file mode 100644 index 1a5e4d190741..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/iscsiVolumeSource.libsonnet +++ /dev/null @@ -1,33 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='iscsiVolumeSource', url='', help='Represents an ISCSI disk. ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling.'), - '#secretRef':: d.obj(help='LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.'), - secretRef: { - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { secretRef+: { name: name } } - }, - '#withChapAuthDiscovery':: d.fn(help='whether support iSCSI Discovery CHAP authentication', args=[d.arg(name='chapAuthDiscovery', type=d.T.boolean)]), - withChapAuthDiscovery(chapAuthDiscovery): { chapAuthDiscovery: chapAuthDiscovery }, - '#withChapAuthSession':: d.fn(help='whether support iSCSI Session CHAP authentication', args=[d.arg(name='chapAuthSession', type=d.T.boolean)]), - withChapAuthSession(chapAuthSession): { chapAuthSession: chapAuthSession }, - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { fsType: fsType }, - '#withInitiatorName':: d.fn(help='Custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface : will be created for the connection.', args=[d.arg(name='initiatorName', type=d.T.string)]), - withInitiatorName(initiatorName): { initiatorName: initiatorName }, - '#withIqn':: d.fn(help='Target iSCSI Qualified Name.', args=[d.arg(name='iqn', type=d.T.string)]), - withIqn(iqn): { iqn: iqn }, - '#withIscsiInterface':: d.fn(help="iSCSI Interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).", args=[d.arg(name='iscsiInterface', type=d.T.string)]), - withIscsiInterface(iscsiInterface): { iscsiInterface: iscsiInterface }, - '#withLun':: d.fn(help='iSCSI Target Lun number.', args=[d.arg(name='lun', type=d.T.integer)]), - withLun(lun): { lun: lun }, - '#withPortals':: d.fn(help='iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).', args=[d.arg(name='portals', type=d.T.array)]), - withPortals(portals): { portals: if std.isArray(v=portals) then portals else [portals] }, - '#withPortalsMixin':: d.fn(help='iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='portals', type=d.T.array)]), - withPortalsMixin(portals): { portals+: if std.isArray(v=portals) then portals else [portals] }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#withTargetPortal':: d.fn(help='iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).', args=[d.arg(name='targetPortal', type=d.T.string)]), - withTargetPortal(targetPortal): { targetPortal: targetPortal }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/keyToPath.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/keyToPath.libsonnet deleted file mode 100644 index a8ff570d8744..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/keyToPath.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='keyToPath', url='', help='Maps a string key to a path within a volume.'), - '#withKey':: d.fn(help='The key to project.', args=[d.arg(name='key', type=d.T.string)]), - withKey(key): { key: key }, - '#withMode':: d.fn(help='Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.', args=[d.arg(name='mode', type=d.T.integer)]), - withMode(mode): { mode: mode }, - '#withPath':: d.fn(help="The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.", args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { path: path }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/lifecycle.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/lifecycle.libsonnet deleted file mode 100644 index f48fee73d702..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/lifecycle.libsonnet +++ /dev/null @@ -1,70 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='lifecycle', url='', help='Lifecycle describes actions that the management system should take in response to container lifecycle events. For the PostStart and PreStop lifecycle handlers, management of the container blocks until the action is complete, unless the container process fails, in which case the handler is aborted.'), - '#postStart':: d.obj(help='Handler defines a specific action that should be taken'), - postStart: { - '#exec':: d.obj(help='ExecAction describes a "run in container" action.'), - exec: { - '#withCommand':: d.fn(help="Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.", args=[d.arg(name='command', type=d.T.array)]), - withCommand(command): { postStart+: { exec+: { command: if std.isArray(v=command) then command else [command] } } }, - '#withCommandMixin':: d.fn(help="Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='command', type=d.T.array)]), - withCommandMixin(command): { postStart+: { exec+: { command+: if std.isArray(v=command) then command else [command] } } } - }, - '#httpGet':: d.obj(help='HTTPGetAction describes an action based on HTTP Get requests.'), - httpGet: { - '#withHost':: d.fn(help='Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { postStart+: { httpGet+: { host: host } } }, - '#withHttpHeaders':: d.fn(help='Custom headers to set in the request. HTTP allows repeated headers.', args=[d.arg(name='httpHeaders', type=d.T.array)]), - withHttpHeaders(httpHeaders): { postStart+: { httpGet+: { httpHeaders: if std.isArray(v=httpHeaders) then httpHeaders else [httpHeaders] } } }, - '#withHttpHeadersMixin':: d.fn(help='Custom headers to set in the request. HTTP allows repeated headers.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='httpHeaders', type=d.T.array)]), - withHttpHeadersMixin(httpHeaders): { postStart+: { httpGet+: { httpHeaders+: if std.isArray(v=httpHeaders) then httpHeaders else [httpHeaders] } } }, - '#withPath':: d.fn(help='Path to access on the HTTP server.', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { postStart+: { httpGet+: { path: path } } }, - '#withPort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='port', type=d.T.string)]), - withPort(port): { postStart+: { httpGet+: { port: port } } }, - '#withScheme':: d.fn(help='Scheme to use for connecting to the host. Defaults to HTTP.', args=[d.arg(name='scheme', type=d.T.string)]), - withScheme(scheme): { postStart+: { httpGet+: { scheme: scheme } } } - }, - '#tcpSocket':: d.obj(help='TCPSocketAction describes an action based on opening a socket'), - tcpSocket: { - '#withHost':: d.fn(help='Optional: Host name to connect to, defaults to the pod IP.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { postStart+: { tcpSocket+: { host: host } } }, - '#withPort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='port', type=d.T.string)]), - withPort(port): { postStart+: { tcpSocket+: { port: port } } } - } - }, - '#preStop':: d.obj(help='Handler defines a specific action that should be taken'), - preStop: { - '#exec':: d.obj(help='ExecAction describes a "run in container" action.'), - exec: { - '#withCommand':: d.fn(help="Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.", args=[d.arg(name='command', type=d.T.array)]), - withCommand(command): { preStop+: { exec+: { command: if std.isArray(v=command) then command else [command] } } }, - '#withCommandMixin':: d.fn(help="Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='command', type=d.T.array)]), - withCommandMixin(command): { preStop+: { exec+: { command+: if std.isArray(v=command) then command else [command] } } } - }, - '#httpGet':: d.obj(help='HTTPGetAction describes an action based on HTTP Get requests.'), - httpGet: { - '#withHost':: d.fn(help='Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { preStop+: { httpGet+: { host: host } } }, - '#withHttpHeaders':: d.fn(help='Custom headers to set in the request. HTTP allows repeated headers.', args=[d.arg(name='httpHeaders', type=d.T.array)]), - withHttpHeaders(httpHeaders): { preStop+: { httpGet+: { httpHeaders: if std.isArray(v=httpHeaders) then httpHeaders else [httpHeaders] } } }, - '#withHttpHeadersMixin':: d.fn(help='Custom headers to set in the request. HTTP allows repeated headers.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='httpHeaders', type=d.T.array)]), - withHttpHeadersMixin(httpHeaders): { preStop+: { httpGet+: { httpHeaders+: if std.isArray(v=httpHeaders) then httpHeaders else [httpHeaders] } } }, - '#withPath':: d.fn(help='Path to access on the HTTP server.', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { preStop+: { httpGet+: { path: path } } }, - '#withPort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='port', type=d.T.string)]), - withPort(port): { preStop+: { httpGet+: { port: port } } }, - '#withScheme':: d.fn(help='Scheme to use for connecting to the host. Defaults to HTTP.', args=[d.arg(name='scheme', type=d.T.string)]), - withScheme(scheme): { preStop+: { httpGet+: { scheme: scheme } } } - }, - '#tcpSocket':: d.obj(help='TCPSocketAction describes an action based on opening a socket'), - tcpSocket: { - '#withHost':: d.fn(help='Optional: Host name to connect to, defaults to the pod IP.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { preStop+: { tcpSocket+: { host: host } } }, - '#withPort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='port', type=d.T.string)]), - withPort(port): { preStop+: { tcpSocket+: { port: port } } } - } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/limitRange.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/limitRange.libsonnet deleted file mode 100644 index 7baf720a5e1b..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/limitRange.libsonnet +++ /dev/null @@ -1,100 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='limitRange', url='', help='LimitRange sets resource usage limits for each kind of resource in a Namespace.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Limitrange', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'v1', - kind: 'LimitRange' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='LimitRangeSpec defines a min/max usage limit for resources that match on kind.'), - spec: { - '#withLimits':: d.fn(help='Limits is the list of LimitRangeItem objects that are enforced.', args=[d.arg(name='limits', type=d.T.array)]), - withLimits(limits): { spec+: { limits: if std.isArray(v=limits) then limits else [limits] } }, - '#withLimitsMixin':: d.fn(help='Limits is the list of LimitRangeItem objects that are enforced.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='limits', type=d.T.array)]), - withLimitsMixin(limits): { spec+: { limits+: if std.isArray(v=limits) then limits else [limits] } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/limitRangeItem.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/limitRangeItem.libsonnet deleted file mode 100644 index d917907cc396..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/limitRangeItem.libsonnet +++ /dev/null @@ -1,28 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='limitRangeItem', url='', help='LimitRangeItem defines a min/max usage limit for any resource that matches on kind.'), - '#withDefault':: d.fn(help='Default resource requirement limit value by resource name if resource limit is omitted.', args=[d.arg(name='default', type=d.T.object)]), - withDefault(default): { default: default }, - '#withDefaultMixin':: d.fn(help='Default resource requirement limit value by resource name if resource limit is omitted.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='default', type=d.T.object)]), - withDefaultMixin(default): { default+: default }, - '#withDefaultRequest':: d.fn(help='DefaultRequest is the default resource requirement request value by resource name if resource request is omitted.', args=[d.arg(name='defaultRequest', type=d.T.object)]), - withDefaultRequest(defaultRequest): { defaultRequest: defaultRequest }, - '#withDefaultRequestMixin':: d.fn(help='DefaultRequest is the default resource requirement request value by resource name if resource request is omitted.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='defaultRequest', type=d.T.object)]), - withDefaultRequestMixin(defaultRequest): { defaultRequest+: defaultRequest }, - '#withMax':: d.fn(help='Max usage constraints on this kind by resource name.', args=[d.arg(name='max', type=d.T.object)]), - withMax(max): { max: max }, - '#withMaxLimitRequestRatio':: d.fn(help='MaxLimitRequestRatio if specified, the named resource must have a request and limit that are both non-zero where limit divided by request is less than or equal to the enumerated value; this represents the max burst for the named resource.', args=[d.arg(name='maxLimitRequestRatio', type=d.T.object)]), - withMaxLimitRequestRatio(maxLimitRequestRatio): { maxLimitRequestRatio: maxLimitRequestRatio }, - '#withMaxLimitRequestRatioMixin':: d.fn(help='MaxLimitRequestRatio if specified, the named resource must have a request and limit that are both non-zero where limit divided by request is less than or equal to the enumerated value; this represents the max burst for the named resource.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='maxLimitRequestRatio', type=d.T.object)]), - withMaxLimitRequestRatioMixin(maxLimitRequestRatio): { maxLimitRequestRatio+: maxLimitRequestRatio }, - '#withMaxMixin':: d.fn(help='Max usage constraints on this kind by resource name.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='max', type=d.T.object)]), - withMaxMixin(max): { max+: max }, - '#withMin':: d.fn(help='Min usage constraints on this kind by resource name.', args=[d.arg(name='min', type=d.T.object)]), - withMin(min): { min: min }, - '#withMinMixin':: d.fn(help='Min usage constraints on this kind by resource name.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='min', type=d.T.object)]), - withMinMixin(min): { min+: min }, - '#withType':: d.fn(help='Type of resource that this limit applies to.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/limitRangeSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/limitRangeSpec.libsonnet deleted file mode 100644 index 3084932fe681..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/limitRangeSpec.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='limitRangeSpec', url='', help='LimitRangeSpec defines a min/max usage limit for resources that match on kind.'), - '#withLimits':: d.fn(help='Limits is the list of LimitRangeItem objects that are enforced.', args=[d.arg(name='limits', type=d.T.array)]), - withLimits(limits): { limits: if std.isArray(v=limits) then limits else [limits] }, - '#withLimitsMixin':: d.fn(help='Limits is the list of LimitRangeItem objects that are enforced.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='limits', type=d.T.array)]), - withLimitsMixin(limits): { limits+: if std.isArray(v=limits) then limits else [limits] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/loadBalancerIngress.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/loadBalancerIngress.libsonnet deleted file mode 100644 index ed692c412d9c..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/loadBalancerIngress.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='loadBalancerIngress', url='', help='LoadBalancerIngress represents the status of a load-balancer ingress point: traffic intended for the service should be sent to an ingress point.'), - '#withHostname':: d.fn(help='Hostname is set for load-balancer ingress points that are DNS based (typically AWS load-balancers)', args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { hostname: hostname }, - '#withIp':: d.fn(help='IP is set for load-balancer ingress points that are IP based (typically GCE or OpenStack load-balancers)', args=[d.arg(name='ip', type=d.T.string)]), - withIp(ip): { ip: ip }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/loadBalancerStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/loadBalancerStatus.libsonnet deleted file mode 100644 index 0ba2ec000d04..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/loadBalancerStatus.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='loadBalancerStatus', url='', help='LoadBalancerStatus represents the status of a load-balancer.'), - '#withIngress':: d.fn(help='Ingress is a list containing ingress points for the load-balancer. Traffic intended for the service should be sent to these ingress points.', args=[d.arg(name='ingress', type=d.T.array)]), - withIngress(ingress): { ingress: if std.isArray(v=ingress) then ingress else [ingress] }, - '#withIngressMixin':: d.fn(help='Ingress is a list containing ingress points for the load-balancer. Traffic intended for the service should be sent to these ingress points.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ingress', type=d.T.array)]), - withIngressMixin(ingress): { ingress+: if std.isArray(v=ingress) then ingress else [ingress] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/localObjectReference.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/localObjectReference.libsonnet deleted file mode 100644 index b34145831f33..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/localObjectReference.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='localObjectReference', url='', help='LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.'), - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/localVolumeSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/localVolumeSource.libsonnet deleted file mode 100644 index d16a5a49d40f..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/localVolumeSource.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='localVolumeSource', url='', help='Local represents directly-attached storage with node affinity (Beta feature)'), - '#withFsType':: d.fn(help='Filesystem type to mount. It applies only when the Path is a block device. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default value is to auto-select a fileystem if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { fsType: fsType }, - '#withPath':: d.fn(help='The full path to the volume on the node. It can be either a directory or block device (disk, partition, ...).', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { path: path }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/main.libsonnet deleted file mode 100644 index e163d3bc5984..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/main.libsonnet +++ /dev/null @@ -1,167 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1', url='', help=''), - affinity: (import 'affinity.libsonnet'), - attachedVolume: (import 'attachedVolume.libsonnet'), - awsElasticBlockStoreVolumeSource: (import 'awsElasticBlockStoreVolumeSource.libsonnet'), - azureDiskVolumeSource: (import 'azureDiskVolumeSource.libsonnet'), - azureFilePersistentVolumeSource: (import 'azureFilePersistentVolumeSource.libsonnet'), - azureFileVolumeSource: (import 'azureFileVolumeSource.libsonnet'), - binding: (import 'binding.libsonnet'), - capabilities: (import 'capabilities.libsonnet'), - cephFSPersistentVolumeSource: (import 'cephFSPersistentVolumeSource.libsonnet'), - cephFSVolumeSource: (import 'cephFSVolumeSource.libsonnet'), - cinderPersistentVolumeSource: (import 'cinderPersistentVolumeSource.libsonnet'), - cinderVolumeSource: (import 'cinderVolumeSource.libsonnet'), - clientIPConfig: (import 'clientIPConfig.libsonnet'), - componentCondition: (import 'componentCondition.libsonnet'), - componentStatus: (import 'componentStatus.libsonnet'), - configMap: (import 'configMap.libsonnet'), - configMapEnvSource: (import 'configMapEnvSource.libsonnet'), - configMapKeySelector: (import 'configMapKeySelector.libsonnet'), - configMapNodeConfigSource: (import 'configMapNodeConfigSource.libsonnet'), - configMapProjection: (import 'configMapProjection.libsonnet'), - configMapVolumeSource: (import 'configMapVolumeSource.libsonnet'), - container: (import 'container.libsonnet'), - containerImage: (import 'containerImage.libsonnet'), - containerPort: (import 'containerPort.libsonnet'), - containerState: (import 'containerState.libsonnet'), - containerStateRunning: (import 'containerStateRunning.libsonnet'), - containerStateTerminated: (import 'containerStateTerminated.libsonnet'), - containerStateWaiting: (import 'containerStateWaiting.libsonnet'), - containerStatus: (import 'containerStatus.libsonnet'), - csiPersistentVolumeSource: (import 'csiPersistentVolumeSource.libsonnet'), - csiVolumeSource: (import 'csiVolumeSource.libsonnet'), - daemonEndpoint: (import 'daemonEndpoint.libsonnet'), - downwardAPIProjection: (import 'downwardAPIProjection.libsonnet'), - downwardAPIVolumeFile: (import 'downwardAPIVolumeFile.libsonnet'), - downwardAPIVolumeSource: (import 'downwardAPIVolumeSource.libsonnet'), - emptyDirVolumeSource: (import 'emptyDirVolumeSource.libsonnet'), - endpointAddress: (import 'endpointAddress.libsonnet'), - endpointPort: (import 'endpointPort.libsonnet'), - endpointSubset: (import 'endpointSubset.libsonnet'), - endpoints: (import 'endpoints.libsonnet'), - envFromSource: (import 'envFromSource.libsonnet'), - envVar: (import 'envVar.libsonnet'), - envVarSource: (import 'envVarSource.libsonnet'), - event: (import 'event.libsonnet'), - eventSeries: (import 'eventSeries.libsonnet'), - eventSource: (import 'eventSource.libsonnet'), - execAction: (import 'execAction.libsonnet'), - fcVolumeSource: (import 'fcVolumeSource.libsonnet'), - flexPersistentVolumeSource: (import 'flexPersistentVolumeSource.libsonnet'), - flexVolumeSource: (import 'flexVolumeSource.libsonnet'), - flockerVolumeSource: (import 'flockerVolumeSource.libsonnet'), - gcePersistentDiskVolumeSource: (import 'gcePersistentDiskVolumeSource.libsonnet'), - gitRepoVolumeSource: (import 'gitRepoVolumeSource.libsonnet'), - glusterfsPersistentVolumeSource: (import 'glusterfsPersistentVolumeSource.libsonnet'), - glusterfsVolumeSource: (import 'glusterfsVolumeSource.libsonnet'), - handler: (import 'handler.libsonnet'), - hostAlias: (import 'hostAlias.libsonnet'), - hostPathVolumeSource: (import 'hostPathVolumeSource.libsonnet'), - httpGetAction: (import 'httpGetAction.libsonnet'), - httpHeader: (import 'httpHeader.libsonnet'), - iscsiPersistentVolumeSource: (import 'iscsiPersistentVolumeSource.libsonnet'), - iscsiVolumeSource: (import 'iscsiVolumeSource.libsonnet'), - keyToPath: (import 'keyToPath.libsonnet'), - lifecycle: (import 'lifecycle.libsonnet'), - limitRange: (import 'limitRange.libsonnet'), - limitRangeItem: (import 'limitRangeItem.libsonnet'), - limitRangeSpec: (import 'limitRangeSpec.libsonnet'), - loadBalancerIngress: (import 'loadBalancerIngress.libsonnet'), - loadBalancerStatus: (import 'loadBalancerStatus.libsonnet'), - localObjectReference: (import 'localObjectReference.libsonnet'), - localVolumeSource: (import 'localVolumeSource.libsonnet'), - namespace: (import 'namespace.libsonnet'), - namespaceSpec: (import 'namespaceSpec.libsonnet'), - namespaceStatus: (import 'namespaceStatus.libsonnet'), - nfsVolumeSource: (import 'nfsVolumeSource.libsonnet'), - node: (import 'node.libsonnet'), - nodeAddress: (import 'nodeAddress.libsonnet'), - nodeAffinity: (import 'nodeAffinity.libsonnet'), - nodeCondition: (import 'nodeCondition.libsonnet'), - nodeConfigSource: (import 'nodeConfigSource.libsonnet'), - nodeConfigStatus: (import 'nodeConfigStatus.libsonnet'), - nodeDaemonEndpoints: (import 'nodeDaemonEndpoints.libsonnet'), - nodeSelector: (import 'nodeSelector.libsonnet'), - nodeSelectorRequirement: (import 'nodeSelectorRequirement.libsonnet'), - nodeSelectorTerm: (import 'nodeSelectorTerm.libsonnet'), - nodeSpec: (import 'nodeSpec.libsonnet'), - nodeStatus: (import 'nodeStatus.libsonnet'), - nodeSystemInfo: (import 'nodeSystemInfo.libsonnet'), - objectFieldSelector: (import 'objectFieldSelector.libsonnet'), - objectReference: (import 'objectReference.libsonnet'), - persistentVolume: (import 'persistentVolume.libsonnet'), - persistentVolumeClaim: (import 'persistentVolumeClaim.libsonnet'), - persistentVolumeClaimCondition: (import 'persistentVolumeClaimCondition.libsonnet'), - persistentVolumeClaimSpec: (import 'persistentVolumeClaimSpec.libsonnet'), - persistentVolumeClaimStatus: (import 'persistentVolumeClaimStatus.libsonnet'), - persistentVolumeClaimVolumeSource: (import 'persistentVolumeClaimVolumeSource.libsonnet'), - persistentVolumeSpec: (import 'persistentVolumeSpec.libsonnet'), - persistentVolumeStatus: (import 'persistentVolumeStatus.libsonnet'), - photonPersistentDiskVolumeSource: (import 'photonPersistentDiskVolumeSource.libsonnet'), - pod: (import 'pod.libsonnet'), - podAffinity: (import 'podAffinity.libsonnet'), - podAffinityTerm: (import 'podAffinityTerm.libsonnet'), - podAntiAffinity: (import 'podAntiAffinity.libsonnet'), - podCondition: (import 'podCondition.libsonnet'), - podDNSConfig: (import 'podDNSConfig.libsonnet'), - podDNSConfigOption: (import 'podDNSConfigOption.libsonnet'), - podReadinessGate: (import 'podReadinessGate.libsonnet'), - podSecurityContext: (import 'podSecurityContext.libsonnet'), - podSpec: (import 'podSpec.libsonnet'), - podStatus: (import 'podStatus.libsonnet'), - podTemplate: (import 'podTemplate.libsonnet'), - podTemplateSpec: (import 'podTemplateSpec.libsonnet'), - portworxVolumeSource: (import 'portworxVolumeSource.libsonnet'), - preferredSchedulingTerm: (import 'preferredSchedulingTerm.libsonnet'), - probe: (import 'probe.libsonnet'), - projectedVolumeSource: (import 'projectedVolumeSource.libsonnet'), - quobyteVolumeSource: (import 'quobyteVolumeSource.libsonnet'), - rbdPersistentVolumeSource: (import 'rbdPersistentVolumeSource.libsonnet'), - rbdVolumeSource: (import 'rbdVolumeSource.libsonnet'), - replicationController: (import 'replicationController.libsonnet'), - replicationControllerCondition: (import 'replicationControllerCondition.libsonnet'), - replicationControllerSpec: (import 'replicationControllerSpec.libsonnet'), - replicationControllerStatus: (import 'replicationControllerStatus.libsonnet'), - resourceFieldSelector: (import 'resourceFieldSelector.libsonnet'), - resourceQuota: (import 'resourceQuota.libsonnet'), - resourceQuotaSpec: (import 'resourceQuotaSpec.libsonnet'), - resourceQuotaStatus: (import 'resourceQuotaStatus.libsonnet'), - resourceRequirements: (import 'resourceRequirements.libsonnet'), - scaleIOPersistentVolumeSource: (import 'scaleIOPersistentVolumeSource.libsonnet'), - scaleIOVolumeSource: (import 'scaleIOVolumeSource.libsonnet'), - scopeSelector: (import 'scopeSelector.libsonnet'), - scopedResourceSelectorRequirement: (import 'scopedResourceSelectorRequirement.libsonnet'), - seLinuxOptions: (import 'seLinuxOptions.libsonnet'), - secret: (import 'secret.libsonnet'), - secretEnvSource: (import 'secretEnvSource.libsonnet'), - secretKeySelector: (import 'secretKeySelector.libsonnet'), - secretProjection: (import 'secretProjection.libsonnet'), - secretReference: (import 'secretReference.libsonnet'), - secretVolumeSource: (import 'secretVolumeSource.libsonnet'), - securityContext: (import 'securityContext.libsonnet'), - service: (import 'service.libsonnet'), - serviceAccount: (import 'serviceAccount.libsonnet'), - serviceAccountTokenProjection: (import 'serviceAccountTokenProjection.libsonnet'), - servicePort: (import 'servicePort.libsonnet'), - serviceSpec: (import 'serviceSpec.libsonnet'), - serviceStatus: (import 'serviceStatus.libsonnet'), - sessionAffinityConfig: (import 'sessionAffinityConfig.libsonnet'), - storageOSPersistentVolumeSource: (import 'storageOSPersistentVolumeSource.libsonnet'), - storageOSVolumeSource: (import 'storageOSVolumeSource.libsonnet'), - sysctl: (import 'sysctl.libsonnet'), - taint: (import 'taint.libsonnet'), - tcpSocketAction: (import 'tcpSocketAction.libsonnet'), - toleration: (import 'toleration.libsonnet'), - topologySelectorLabelRequirement: (import 'topologySelectorLabelRequirement.libsonnet'), - topologySelectorTerm: (import 'topologySelectorTerm.libsonnet'), - typedLocalObjectReference: (import 'typedLocalObjectReference.libsonnet'), - volume: (import 'volume.libsonnet'), - volumeDevice: (import 'volumeDevice.libsonnet'), - volumeMount: (import 'volumeMount.libsonnet'), - volumeNodeAffinity: (import 'volumeNodeAffinity.libsonnet'), - volumeProjection: (import 'volumeProjection.libsonnet'), - vsphereVirtualDiskVolumeSource: (import 'vsphereVirtualDiskVolumeSource.libsonnet'), - weightedPodAffinityTerm: (import 'weightedPodAffinityTerm.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/namespace.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/namespace.libsonnet deleted file mode 100644 index 1103529e2698..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/namespace.libsonnet +++ /dev/null @@ -1,100 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='namespace', url='', help='Namespace provides a scope for Names. Use of multiple namespaces is optional.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Namespace', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'v1', - kind: 'Namespace' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='NamespaceSpec describes the attributes on a Namespace.'), - spec: { - '#withFinalizers':: d.fn(help='Finalizers is an opaque list of values that must be empty to permanently remove object from storage. More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { spec+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Finalizers is an opaque list of values that must be empty to permanently remove object from storage. More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { spec+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/namespaceSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/namespaceSpec.libsonnet deleted file mode 100644 index b341d1946826..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/namespaceSpec.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='namespaceSpec', url='', help='NamespaceSpec describes the attributes on a Namespace.'), - '#withFinalizers':: d.fn(help='Finalizers is an opaque list of values that must be empty to permanently remove object from storage. More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] }, - '#withFinalizersMixin':: d.fn(help='Finalizers is an opaque list of values that must be empty to permanently remove object from storage. More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/namespaceStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/namespaceStatus.libsonnet deleted file mode 100644 index 4d0e65a541a8..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/namespaceStatus.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='namespaceStatus', url='', help='NamespaceStatus is information about the current status of a Namespace.'), - '#withPhase':: d.fn(help='Phase is the current lifecycle phase of the namespace. More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/', args=[d.arg(name='phase', type=d.T.string)]), - withPhase(phase): { phase: phase }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/nfsVolumeSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/nfsVolumeSource.libsonnet deleted file mode 100644 index bb45073be88b..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/nfsVolumeSource.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='nfsVolumeSource', url='', help='Represents an NFS mount that lasts the lifetime of a pod. NFS volumes do not support ownership management or SELinux relabeling.'), - '#withPath':: d.fn(help='Path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { path: path }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#withServer':: d.fn(help='Server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs', args=[d.arg(name='server', type=d.T.string)]), - withServer(server): { server: server }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/node.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/node.libsonnet deleted file mode 100644 index 49bcaec376bd..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/node.libsonnet +++ /dev/null @@ -1,124 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='node', url='', help='Node is a worker node in Kubernetes. Each node will have a unique identifier in the cache (i.e. in etcd).'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Node', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'v1', - kind: 'Node' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='NodeSpec describes the attributes that a node is created with.'), - spec: { - '#configSource':: d.obj(help='NodeConfigSource specifies a source of node configuration. Exactly one subfield (excluding metadata) must be non-nil.'), - configSource: { - '#configMap':: d.obj(help='ConfigMapNodeConfigSource contains the information to reference a ConfigMap as a config source for the Node.'), - configMap: { - '#withKubeletConfigKey':: d.fn(help='KubeletConfigKey declares which key of the referenced ConfigMap corresponds to the KubeletConfiguration structure This field is required in all cases.', args=[d.arg(name='kubeletConfigKey', type=d.T.string)]), - withKubeletConfigKey(kubeletConfigKey): { spec+: { configSource+: { configMap+: { kubeletConfigKey: kubeletConfigKey } } } }, - '#withName':: d.fn(help='Name is the metadata.name of the referenced ConfigMap. This field is required in all cases.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { configSource+: { configMap+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace is the metadata.namespace of the referenced ConfigMap. This field is required in all cases.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { configSource+: { configMap+: { namespace: namespace } } } }, - '#withResourceVersion':: d.fn(help='ResourceVersion is the metadata.ResourceVersion of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { spec+: { configSource+: { configMap+: { resourceVersion: resourceVersion } } } }, - '#withUid':: d.fn(help='UID is the metadata.UID of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { configSource+: { configMap+: { uid: uid } } } } - } - }, - '#withExternalID':: d.fn(help='Deprecated. Not all kubelets will set this field. Remove field after 1.13. see: https://issues.k8s.io/61966', args=[d.arg(name='externalID', type=d.T.string)]), - withExternalID(externalID): { spec+: { externalID: externalID } }, - '#withPodCIDR':: d.fn(help='PodCIDR represents the pod IP range assigned to the node.', args=[d.arg(name='podCIDR', type=d.T.string)]), - withPodCIDR(podCIDR): { spec+: { podCIDR: podCIDR } }, - '#withProviderID':: d.fn(help='ID of the node assigned by the cloud provider in the format: ://', args=[d.arg(name='providerID', type=d.T.string)]), - withProviderID(providerID): { spec+: { providerID: providerID } }, - '#withTaints':: d.fn(help="If specified, the node's taints.", args=[d.arg(name='taints', type=d.T.array)]), - withTaints(taints): { spec+: { taints: if std.isArray(v=taints) then taints else [taints] } }, - '#withTaintsMixin':: d.fn(help="If specified, the node's taints.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='taints', type=d.T.array)]), - withTaintsMixin(taints): { spec+: { taints+: if std.isArray(v=taints) then taints else [taints] } }, - '#withUnschedulable':: d.fn(help='Unschedulable controls node schedulability of new pods. By default, node is schedulable. More info: https://kubernetes.io/docs/concepts/nodes/node/#manual-node-administration', args=[d.arg(name='unschedulable', type=d.T.boolean)]), - withUnschedulable(unschedulable): { spec+: { unschedulable: unschedulable } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/nodeAddress.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/nodeAddress.libsonnet deleted file mode 100644 index 08773e364bbc..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/nodeAddress.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='nodeAddress', url='', help="NodeAddress contains information for the node's address."), - '#withAddress':: d.fn(help='The node address.', args=[d.arg(name='address', type=d.T.string)]), - withAddress(address): { address: address }, - '#withType':: d.fn(help='Node address type, one of Hostname, ExternalIP or InternalIP.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/nodeAffinity.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/nodeAffinity.libsonnet deleted file mode 100644 index 4f2d716a5c1d..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/nodeAffinity.libsonnet +++ /dev/null @@ -1,17 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='nodeAffinity', url='', help='Node affinity is a group of node affinity scheduling rules.'), - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/nodeCondition.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/nodeCondition.libsonnet deleted file mode 100644 index 555a66b46f46..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/nodeCondition.libsonnet +++ /dev/null @@ -1,16 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='nodeCondition', url='', help='NodeCondition contains condition information for a node.'), - '#withLastHeartbeatTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastHeartbeatTime', type=d.T.string)]), - withLastHeartbeatTime(lastHeartbeatTime): { lastHeartbeatTime: lastHeartbeatTime }, - '#withLastTransitionTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastTransitionTime', type=d.T.string)]), - withLastTransitionTime(lastTransitionTime): { lastTransitionTime: lastTransitionTime }, - '#withMessage':: d.fn(help='Human readable message indicating details about last transition.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withReason':: d.fn(help="(brief) reason for the condition's last transition.", args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#withType':: d.fn(help='Type of node condition.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/nodeConfigSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/nodeConfigSource.libsonnet deleted file mode 100644 index 9a8393bbadde..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/nodeConfigSource.libsonnet +++ /dev/null @@ -1,19 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='nodeConfigSource', url='', help='NodeConfigSource specifies a source of node configuration. Exactly one subfield (excluding metadata) must be non-nil.'), - '#configMap':: d.obj(help='ConfigMapNodeConfigSource contains the information to reference a ConfigMap as a config source for the Node.'), - configMap: { - '#withKubeletConfigKey':: d.fn(help='KubeletConfigKey declares which key of the referenced ConfigMap corresponds to the KubeletConfiguration structure This field is required in all cases.', args=[d.arg(name='kubeletConfigKey', type=d.T.string)]), - withKubeletConfigKey(kubeletConfigKey): { configMap+: { kubeletConfigKey: kubeletConfigKey } }, - '#withName':: d.fn(help='Name is the metadata.name of the referenced ConfigMap. This field is required in all cases.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { configMap+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace is the metadata.namespace of the referenced ConfigMap. This field is required in all cases.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { configMap+: { namespace: namespace } }, - '#withResourceVersion':: d.fn(help='ResourceVersion is the metadata.ResourceVersion of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { configMap+: { resourceVersion: resourceVersion } }, - '#withUid':: d.fn(help='UID is the metadata.UID of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { configMap+: { uid: uid } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/nodeConfigStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/nodeConfigStatus.libsonnet deleted file mode 100644 index 82f6b056bf39..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/nodeConfigStatus.libsonnet +++ /dev/null @@ -1,56 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='nodeConfigStatus', url='', help='NodeConfigStatus describes the status of the config assigned by Node.Spec.ConfigSource.'), - '#active':: d.obj(help='NodeConfigSource specifies a source of node configuration. Exactly one subfield (excluding metadata) must be non-nil.'), - active: { - '#configMap':: d.obj(help='ConfigMapNodeConfigSource contains the information to reference a ConfigMap as a config source for the Node.'), - configMap: { - '#withKubeletConfigKey':: d.fn(help='KubeletConfigKey declares which key of the referenced ConfigMap corresponds to the KubeletConfiguration structure This field is required in all cases.', args=[d.arg(name='kubeletConfigKey', type=d.T.string)]), - withKubeletConfigKey(kubeletConfigKey): { active+: { configMap+: { kubeletConfigKey: kubeletConfigKey } } }, - '#withName':: d.fn(help='Name is the metadata.name of the referenced ConfigMap. This field is required in all cases.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { active+: { configMap+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace is the metadata.namespace of the referenced ConfigMap. This field is required in all cases.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { active+: { configMap+: { namespace: namespace } } }, - '#withResourceVersion':: d.fn(help='ResourceVersion is the metadata.ResourceVersion of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { active+: { configMap+: { resourceVersion: resourceVersion } } }, - '#withUid':: d.fn(help='UID is the metadata.UID of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { active+: { configMap+: { uid: uid } } } - } - }, - '#assigned':: d.obj(help='NodeConfigSource specifies a source of node configuration. Exactly one subfield (excluding metadata) must be non-nil.'), - assigned: { - '#configMap':: d.obj(help='ConfigMapNodeConfigSource contains the information to reference a ConfigMap as a config source for the Node.'), - configMap: { - '#withKubeletConfigKey':: d.fn(help='KubeletConfigKey declares which key of the referenced ConfigMap corresponds to the KubeletConfiguration structure This field is required in all cases.', args=[d.arg(name='kubeletConfigKey', type=d.T.string)]), - withKubeletConfigKey(kubeletConfigKey): { assigned+: { configMap+: { kubeletConfigKey: kubeletConfigKey } } }, - '#withName':: d.fn(help='Name is the metadata.name of the referenced ConfigMap. This field is required in all cases.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { assigned+: { configMap+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace is the metadata.namespace of the referenced ConfigMap. This field is required in all cases.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { assigned+: { configMap+: { namespace: namespace } } }, - '#withResourceVersion':: d.fn(help='ResourceVersion is the metadata.ResourceVersion of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { assigned+: { configMap+: { resourceVersion: resourceVersion } } }, - '#withUid':: d.fn(help='UID is the metadata.UID of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { assigned+: { configMap+: { uid: uid } } } - } - }, - '#lastKnownGood':: d.obj(help='NodeConfigSource specifies a source of node configuration. Exactly one subfield (excluding metadata) must be non-nil.'), - lastKnownGood: { - '#configMap':: d.obj(help='ConfigMapNodeConfigSource contains the information to reference a ConfigMap as a config source for the Node.'), - configMap: { - '#withKubeletConfigKey':: d.fn(help='KubeletConfigKey declares which key of the referenced ConfigMap corresponds to the KubeletConfiguration structure This field is required in all cases.', args=[d.arg(name='kubeletConfigKey', type=d.T.string)]), - withKubeletConfigKey(kubeletConfigKey): { lastKnownGood+: { configMap+: { kubeletConfigKey: kubeletConfigKey } } }, - '#withName':: d.fn(help='Name is the metadata.name of the referenced ConfigMap. This field is required in all cases.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { lastKnownGood+: { configMap+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace is the metadata.namespace of the referenced ConfigMap. This field is required in all cases.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { lastKnownGood+: { configMap+: { namespace: namespace } } }, - '#withResourceVersion':: d.fn(help='ResourceVersion is the metadata.ResourceVersion of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { lastKnownGood+: { configMap+: { resourceVersion: resourceVersion } } }, - '#withUid':: d.fn(help='UID is the metadata.UID of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { lastKnownGood+: { configMap+: { uid: uid } } } - } - }, - '#withError':: d.fn(help='Error describes any problems reconciling the Spec.ConfigSource to the Active config. Errors may occur, for example, attempting to checkpoint Spec.ConfigSource to the local Assigned record, attempting to checkpoint the payload associated with Spec.ConfigSource, attempting to load or validate the Assigned config, etc. Errors may occur at different points while syncing config. Earlier errors (e.g. download or checkpointing errors) will not result in a rollback to LastKnownGood, and may resolve across Kubelet retries. Later errors (e.g. loading or validating a checkpointed config) will result in a rollback to LastKnownGood. In the latter case, it is usually possible to resolve the error by fixing the config assigned in Spec.ConfigSource. You can find additional information for debugging by searching the error message in the Kubelet log. Error is a human-readable description of the error state; machines can check whether or not Error is empty, but should not rely on the stability of the Error text across Kubelet versions.', args=[d.arg(name='err', type=d.T.string)]), - withError(err): { 'error': err }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/nodeDaemonEndpoints.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/nodeDaemonEndpoints.libsonnet deleted file mode 100644 index ce855cb2b729..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/nodeDaemonEndpoints.libsonnet +++ /dev/null @@ -1,11 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='nodeDaemonEndpoints', url='', help='NodeDaemonEndpoints lists ports opened by daemons running on the Node.'), - '#kubeletEndpoint':: d.obj(help='DaemonEndpoint contains information about a single Daemon endpoint.'), - kubeletEndpoint: { - '#withPort':: d.fn(help='Port number of the given endpoint.', args=[d.arg(name='port', type=d.T.integer)]), - withPort(port): { kubeletEndpoint+: { port: port } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/nodeSelector.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/nodeSelector.libsonnet deleted file mode 100644 index 8317c363d153..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/nodeSelector.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='nodeSelector', url='', help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/nodeSelectorRequirement.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/nodeSelectorRequirement.libsonnet deleted file mode 100644 index 142534ceb025..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/nodeSelectorRequirement.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='nodeSelectorRequirement', url='', help='A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.'), - '#withKey':: d.fn(help='The label key that the selector applies to.', args=[d.arg(name='key', type=d.T.string)]), - withKey(key): { key: key }, - '#withOperator':: d.fn(help="Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.", args=[d.arg(name='operator', type=d.T.string)]), - withOperator(operator): { operator: operator }, - '#withValues':: d.fn(help='An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.', args=[d.arg(name='values', type=d.T.array)]), - withValues(values): { values: if std.isArray(v=values) then values else [values] }, - '#withValuesMixin':: d.fn(help='An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='values', type=d.T.array)]), - withValuesMixin(values): { values+: if std.isArray(v=values) then values else [values] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/nodeSelectorTerm.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/nodeSelectorTerm.libsonnet deleted file mode 100644 index 69cf0e7ce196..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/nodeSelectorTerm.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='nodeSelectorTerm', url='', help='A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.'), - '#withMatchExpressions':: d.fn(help="A list of node selector requirements by node's labels.", args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] }, - '#withMatchExpressionsMixin':: d.fn(help="A list of node selector requirements by node's labels.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] }, - '#withMatchFields':: d.fn(help="A list of node selector requirements by node's fields.", args=[d.arg(name='matchFields', type=d.T.array)]), - withMatchFields(matchFields): { matchFields: if std.isArray(v=matchFields) then matchFields else [matchFields] }, - '#withMatchFieldsMixin':: d.fn(help="A list of node selector requirements by node's fields.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='matchFields', type=d.T.array)]), - withMatchFieldsMixin(matchFields): { matchFields+: if std.isArray(v=matchFields) then matchFields else [matchFields] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/nodeSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/nodeSpec.libsonnet deleted file mode 100644 index 7a0d95086ad5..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/nodeSpec.libsonnet +++ /dev/null @@ -1,34 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='nodeSpec', url='', help='NodeSpec describes the attributes that a node is created with.'), - '#configSource':: d.obj(help='NodeConfigSource specifies a source of node configuration. Exactly one subfield (excluding metadata) must be non-nil.'), - configSource: { - '#configMap':: d.obj(help='ConfigMapNodeConfigSource contains the information to reference a ConfigMap as a config source for the Node.'), - configMap: { - '#withKubeletConfigKey':: d.fn(help='KubeletConfigKey declares which key of the referenced ConfigMap corresponds to the KubeletConfiguration structure This field is required in all cases.', args=[d.arg(name='kubeletConfigKey', type=d.T.string)]), - withKubeletConfigKey(kubeletConfigKey): { configSource+: { configMap+: { kubeletConfigKey: kubeletConfigKey } } }, - '#withName':: d.fn(help='Name is the metadata.name of the referenced ConfigMap. This field is required in all cases.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { configSource+: { configMap+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace is the metadata.namespace of the referenced ConfigMap. This field is required in all cases.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { configSource+: { configMap+: { namespace: namespace } } }, - '#withResourceVersion':: d.fn(help='ResourceVersion is the metadata.ResourceVersion of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { configSource+: { configMap+: { resourceVersion: resourceVersion } } }, - '#withUid':: d.fn(help='UID is the metadata.UID of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { configSource+: { configMap+: { uid: uid } } } - } - }, - '#withExternalID':: d.fn(help='Deprecated. Not all kubelets will set this field. Remove field after 1.13. see: https://issues.k8s.io/61966', args=[d.arg(name='externalID', type=d.T.string)]), - withExternalID(externalID): { externalID: externalID }, - '#withPodCIDR':: d.fn(help='PodCIDR represents the pod IP range assigned to the node.', args=[d.arg(name='podCIDR', type=d.T.string)]), - withPodCIDR(podCIDR): { podCIDR: podCIDR }, - '#withProviderID':: d.fn(help='ID of the node assigned by the cloud provider in the format: ://', args=[d.arg(name='providerID', type=d.T.string)]), - withProviderID(providerID): { providerID: providerID }, - '#withTaints':: d.fn(help="If specified, the node's taints.", args=[d.arg(name='taints', type=d.T.array)]), - withTaints(taints): { taints: if std.isArray(v=taints) then taints else [taints] }, - '#withTaintsMixin':: d.fn(help="If specified, the node's taints.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='taints', type=d.T.array)]), - withTaintsMixin(taints): { taints+: if std.isArray(v=taints) then taints else [taints] }, - '#withUnschedulable':: d.fn(help='Unschedulable controls node schedulability of new pods. By default, node is schedulable. More info: https://kubernetes.io/docs/concepts/nodes/node/#manual-node-administration', args=[d.arg(name='unschedulable', type=d.T.boolean)]), - withUnschedulable(unschedulable): { unschedulable: unschedulable }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/nodeStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/nodeStatus.libsonnet deleted file mode 100644 index c8b7b0852c70..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/nodeStatus.libsonnet +++ /dev/null @@ -1,120 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='nodeStatus', url='', help='NodeStatus is information about the current status of a node.'), - '#config':: d.obj(help='NodeConfigStatus describes the status of the config assigned by Node.Spec.ConfigSource.'), - config: { - '#active':: d.obj(help='NodeConfigSource specifies a source of node configuration. Exactly one subfield (excluding metadata) must be non-nil.'), - active: { - '#configMap':: d.obj(help='ConfigMapNodeConfigSource contains the information to reference a ConfigMap as a config source for the Node.'), - configMap: { - '#withKubeletConfigKey':: d.fn(help='KubeletConfigKey declares which key of the referenced ConfigMap corresponds to the KubeletConfiguration structure This field is required in all cases.', args=[d.arg(name='kubeletConfigKey', type=d.T.string)]), - withKubeletConfigKey(kubeletConfigKey): { config+: { active+: { configMap+: { kubeletConfigKey: kubeletConfigKey } } } }, - '#withName':: d.fn(help='Name is the metadata.name of the referenced ConfigMap. This field is required in all cases.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { config+: { active+: { configMap+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace is the metadata.namespace of the referenced ConfigMap. This field is required in all cases.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { config+: { active+: { configMap+: { namespace: namespace } } } }, - '#withResourceVersion':: d.fn(help='ResourceVersion is the metadata.ResourceVersion of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { config+: { active+: { configMap+: { resourceVersion: resourceVersion } } } }, - '#withUid':: d.fn(help='UID is the metadata.UID of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { config+: { active+: { configMap+: { uid: uid } } } } - } - }, - '#assigned':: d.obj(help='NodeConfigSource specifies a source of node configuration. Exactly one subfield (excluding metadata) must be non-nil.'), - assigned: { - '#configMap':: d.obj(help='ConfigMapNodeConfigSource contains the information to reference a ConfigMap as a config source for the Node.'), - configMap: { - '#withKubeletConfigKey':: d.fn(help='KubeletConfigKey declares which key of the referenced ConfigMap corresponds to the KubeletConfiguration structure This field is required in all cases.', args=[d.arg(name='kubeletConfigKey', type=d.T.string)]), - withKubeletConfigKey(kubeletConfigKey): { config+: { assigned+: { configMap+: { kubeletConfigKey: kubeletConfigKey } } } }, - '#withName':: d.fn(help='Name is the metadata.name of the referenced ConfigMap. This field is required in all cases.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { config+: { assigned+: { configMap+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace is the metadata.namespace of the referenced ConfigMap. This field is required in all cases.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { config+: { assigned+: { configMap+: { namespace: namespace } } } }, - '#withResourceVersion':: d.fn(help='ResourceVersion is the metadata.ResourceVersion of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { config+: { assigned+: { configMap+: { resourceVersion: resourceVersion } } } }, - '#withUid':: d.fn(help='UID is the metadata.UID of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { config+: { assigned+: { configMap+: { uid: uid } } } } - } - }, - '#lastKnownGood':: d.obj(help='NodeConfigSource specifies a source of node configuration. Exactly one subfield (excluding metadata) must be non-nil.'), - lastKnownGood: { - '#configMap':: d.obj(help='ConfigMapNodeConfigSource contains the information to reference a ConfigMap as a config source for the Node.'), - configMap: { - '#withKubeletConfigKey':: d.fn(help='KubeletConfigKey declares which key of the referenced ConfigMap corresponds to the KubeletConfiguration structure This field is required in all cases.', args=[d.arg(name='kubeletConfigKey', type=d.T.string)]), - withKubeletConfigKey(kubeletConfigKey): { config+: { lastKnownGood+: { configMap+: { kubeletConfigKey: kubeletConfigKey } } } }, - '#withName':: d.fn(help='Name is the metadata.name of the referenced ConfigMap. This field is required in all cases.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { config+: { lastKnownGood+: { configMap+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace is the metadata.namespace of the referenced ConfigMap. This field is required in all cases.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { config+: { lastKnownGood+: { configMap+: { namespace: namespace } } } }, - '#withResourceVersion':: d.fn(help='ResourceVersion is the metadata.ResourceVersion of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { config+: { lastKnownGood+: { configMap+: { resourceVersion: resourceVersion } } } }, - '#withUid':: d.fn(help='UID is the metadata.UID of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { config+: { lastKnownGood+: { configMap+: { uid: uid } } } } - } - }, - '#withError':: d.fn(help='Error describes any problems reconciling the Spec.ConfigSource to the Active config. Errors may occur, for example, attempting to checkpoint Spec.ConfigSource to the local Assigned record, attempting to checkpoint the payload associated with Spec.ConfigSource, attempting to load or validate the Assigned config, etc. Errors may occur at different points while syncing config. Earlier errors (e.g. download or checkpointing errors) will not result in a rollback to LastKnownGood, and may resolve across Kubelet retries. Later errors (e.g. loading or validating a checkpointed config) will result in a rollback to LastKnownGood. In the latter case, it is usually possible to resolve the error by fixing the config assigned in Spec.ConfigSource. You can find additional information for debugging by searching the error message in the Kubelet log. Error is a human-readable description of the error state; machines can check whether or not Error is empty, but should not rely on the stability of the Error text across Kubelet versions.', args=[d.arg(name='err', type=d.T.string)]), - withError(err): { config+: { 'error': err } } - }, - '#daemonEndpoints':: d.obj(help='NodeDaemonEndpoints lists ports opened by daemons running on the Node.'), - daemonEndpoints: { - '#kubeletEndpoint':: d.obj(help='DaemonEndpoint contains information about a single Daemon endpoint.'), - kubeletEndpoint: { - '#withPort':: d.fn(help='Port number of the given endpoint.', args=[d.arg(name='port', type=d.T.integer)]), - withPort(port): { daemonEndpoints+: { kubeletEndpoint+: { port: port } } } - } - }, - '#nodeInfo':: d.obj(help='NodeSystemInfo is a set of ids/uuids to uniquely identify the node.'), - nodeInfo: { - '#withArchitecture':: d.fn(help='The Architecture reported by the node', args=[d.arg(name='architecture', type=d.T.string)]), - withArchitecture(architecture): { nodeInfo+: { architecture: architecture } }, - '#withBootID':: d.fn(help='Boot ID reported by the node.', args=[d.arg(name='bootID', type=d.T.string)]), - withBootID(bootID): { nodeInfo+: { bootID: bootID } }, - '#withContainerRuntimeVersion':: d.fn(help='ContainerRuntime Version reported by the node through runtime remote API (e.g. docker://1.5.0).', args=[d.arg(name='containerRuntimeVersion', type=d.T.string)]), - withContainerRuntimeVersion(containerRuntimeVersion): { nodeInfo+: { containerRuntimeVersion: containerRuntimeVersion } }, - '#withKernelVersion':: d.fn(help="Kernel Version reported by the node from 'uname -r' (e.g. 3.16.0-0.bpo.4-amd64).", args=[d.arg(name='kernelVersion', type=d.T.string)]), - withKernelVersion(kernelVersion): { nodeInfo+: { kernelVersion: kernelVersion } }, - '#withKubeProxyVersion':: d.fn(help='KubeProxy Version reported by the node.', args=[d.arg(name='kubeProxyVersion', type=d.T.string)]), - withKubeProxyVersion(kubeProxyVersion): { nodeInfo+: { kubeProxyVersion: kubeProxyVersion } }, - '#withKubeletVersion':: d.fn(help='Kubelet Version reported by the node.', args=[d.arg(name='kubeletVersion', type=d.T.string)]), - withKubeletVersion(kubeletVersion): { nodeInfo+: { kubeletVersion: kubeletVersion } }, - '#withMachineID':: d.fn(help='MachineID reported by the node. For unique machine identification in the cluster this field is preferred. Learn more from man(5) machine-id: http://man7.org/linux/man-pages/man5/machine-id.5.html', args=[d.arg(name='machineID', type=d.T.string)]), - withMachineID(machineID): { nodeInfo+: { machineID: machineID } }, - '#withOperatingSystem':: d.fn(help='The Operating System reported by the node', args=[d.arg(name='operatingSystem', type=d.T.string)]), - withOperatingSystem(operatingSystem): { nodeInfo+: { operatingSystem: operatingSystem } }, - '#withOsImage':: d.fn(help='OS Image reported by the node from /etc/os-release (e.g. Debian GNU/Linux 7 (wheezy)).', args=[d.arg(name='osImage', type=d.T.string)]), - withOsImage(osImage): { nodeInfo+: { osImage: osImage } }, - '#withSystemUUID':: d.fn(help='SystemUUID reported by the node. For unique machine identification MachineID is preferred. This field is specific to Red Hat hosts https://access.redhat.com/documentation/en-US/Red_Hat_Subscription_Management/1/html/RHSM/getting-system-uuid.html', args=[d.arg(name='systemUUID', type=d.T.string)]), - withSystemUUID(systemUUID): { nodeInfo+: { systemUUID: systemUUID } } - }, - '#withAddresses':: d.fn(help='List of addresses reachable to the node. Queried from cloud provider, if available. More info: https://kubernetes.io/docs/concepts/nodes/node/#addresses', args=[d.arg(name='addresses', type=d.T.array)]), - withAddresses(addresses): { addresses: if std.isArray(v=addresses) then addresses else [addresses] }, - '#withAddressesMixin':: d.fn(help='List of addresses reachable to the node. Queried from cloud provider, if available. More info: https://kubernetes.io/docs/concepts/nodes/node/#addresses\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='addresses', type=d.T.array)]), - withAddressesMixin(addresses): { addresses+: if std.isArray(v=addresses) then addresses else [addresses] }, - '#withAllocatable':: d.fn(help='Allocatable represents the resources of a node that are available for scheduling. Defaults to Capacity.', args=[d.arg(name='allocatable', type=d.T.object)]), - withAllocatable(allocatable): { allocatable: allocatable }, - '#withAllocatableMixin':: d.fn(help='Allocatable represents the resources of a node that are available for scheduling. Defaults to Capacity.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='allocatable', type=d.T.object)]), - withAllocatableMixin(allocatable): { allocatable+: allocatable }, - '#withCapacity':: d.fn(help='Capacity represents the total resources of a node. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity', args=[d.arg(name='capacity', type=d.T.object)]), - withCapacity(capacity): { capacity: capacity }, - '#withCapacityMixin':: d.fn(help='Capacity represents the total resources of a node. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='capacity', type=d.T.object)]), - withCapacityMixin(capacity): { capacity+: capacity }, - '#withConditions':: d.fn(help='Conditions is an array of current observed node conditions. More info: https://kubernetes.io/docs/concepts/nodes/node/#condition', args=[d.arg(name='conditions', type=d.T.array)]), - withConditions(conditions): { conditions: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withConditionsMixin':: d.fn(help='Conditions is an array of current observed node conditions. More info: https://kubernetes.io/docs/concepts/nodes/node/#condition\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='conditions', type=d.T.array)]), - withConditionsMixin(conditions): { conditions+: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withImages':: d.fn(help='List of container images on this node', args=[d.arg(name='images', type=d.T.array)]), - withImages(images): { images: if std.isArray(v=images) then images else [images] }, - '#withImagesMixin':: d.fn(help='List of container images on this node\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='images', type=d.T.array)]), - withImagesMixin(images): { images+: if std.isArray(v=images) then images else [images] }, - '#withPhase':: d.fn(help='NodePhase is the recently observed lifecycle phase of the node. More info: https://kubernetes.io/docs/concepts/nodes/node/#phase The field is never populated, and now is deprecated.', args=[d.arg(name='phase', type=d.T.string)]), - withPhase(phase): { phase: phase }, - '#withVolumesAttached':: d.fn(help='List of volumes that are attached to the node.', args=[d.arg(name='volumesAttached', type=d.T.array)]), - withVolumesAttached(volumesAttached): { volumesAttached: if std.isArray(v=volumesAttached) then volumesAttached else [volumesAttached] }, - '#withVolumesAttachedMixin':: d.fn(help='List of volumes that are attached to the node.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumesAttached', type=d.T.array)]), - withVolumesAttachedMixin(volumesAttached): { volumesAttached+: if std.isArray(v=volumesAttached) then volumesAttached else [volumesAttached] }, - '#withVolumesInUse':: d.fn(help='List of attachable volumes in use (mounted) by the node.', args=[d.arg(name='volumesInUse', type=d.T.array)]), - withVolumesInUse(volumesInUse): { volumesInUse: if std.isArray(v=volumesInUse) then volumesInUse else [volumesInUse] }, - '#withVolumesInUseMixin':: d.fn(help='List of attachable volumes in use (mounted) by the node.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumesInUse', type=d.T.array)]), - withVolumesInUseMixin(volumesInUse): { volumesInUse+: if std.isArray(v=volumesInUse) then volumesInUse else [volumesInUse] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/nodeSystemInfo.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/nodeSystemInfo.libsonnet deleted file mode 100644 index e149ea9a1979..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/nodeSystemInfo.libsonnet +++ /dev/null @@ -1,26 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='nodeSystemInfo', url='', help='NodeSystemInfo is a set of ids/uuids to uniquely identify the node.'), - '#withArchitecture':: d.fn(help='The Architecture reported by the node', args=[d.arg(name='architecture', type=d.T.string)]), - withArchitecture(architecture): { architecture: architecture }, - '#withBootID':: d.fn(help='Boot ID reported by the node.', args=[d.arg(name='bootID', type=d.T.string)]), - withBootID(bootID): { bootID: bootID }, - '#withContainerRuntimeVersion':: d.fn(help='ContainerRuntime Version reported by the node through runtime remote API (e.g. docker://1.5.0).', args=[d.arg(name='containerRuntimeVersion', type=d.T.string)]), - withContainerRuntimeVersion(containerRuntimeVersion): { containerRuntimeVersion: containerRuntimeVersion }, - '#withKernelVersion':: d.fn(help="Kernel Version reported by the node from 'uname -r' (e.g. 3.16.0-0.bpo.4-amd64).", args=[d.arg(name='kernelVersion', type=d.T.string)]), - withKernelVersion(kernelVersion): { kernelVersion: kernelVersion }, - '#withKubeProxyVersion':: d.fn(help='KubeProxy Version reported by the node.', args=[d.arg(name='kubeProxyVersion', type=d.T.string)]), - withKubeProxyVersion(kubeProxyVersion): { kubeProxyVersion: kubeProxyVersion }, - '#withKubeletVersion':: d.fn(help='Kubelet Version reported by the node.', args=[d.arg(name='kubeletVersion', type=d.T.string)]), - withKubeletVersion(kubeletVersion): { kubeletVersion: kubeletVersion }, - '#withMachineID':: d.fn(help='MachineID reported by the node. For unique machine identification in the cluster this field is preferred. Learn more from man(5) machine-id: http://man7.org/linux/man-pages/man5/machine-id.5.html', args=[d.arg(name='machineID', type=d.T.string)]), - withMachineID(machineID): { machineID: machineID }, - '#withOperatingSystem':: d.fn(help='The Operating System reported by the node', args=[d.arg(name='operatingSystem', type=d.T.string)]), - withOperatingSystem(operatingSystem): { operatingSystem: operatingSystem }, - '#withOsImage':: d.fn(help='OS Image reported by the node from /etc/os-release (e.g. Debian GNU/Linux 7 (wheezy)).', args=[d.arg(name='osImage', type=d.T.string)]), - withOsImage(osImage): { osImage: osImage }, - '#withSystemUUID':: d.fn(help='SystemUUID reported by the node. For unique machine identification MachineID is preferred. This field is specific to Red Hat hosts https://access.redhat.com/documentation/en-US/Red_Hat_Subscription_Management/1/html/RHSM/getting-system-uuid.html', args=[d.arg(name='systemUUID', type=d.T.string)]), - withSystemUUID(systemUUID): { systemUUID: systemUUID }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/objectFieldSelector.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/objectFieldSelector.libsonnet deleted file mode 100644 index 95c410bae6de..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/objectFieldSelector.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='objectFieldSelector', url='', help='ObjectFieldSelector selects an APIVersioned field of an object.'), - '#withFieldPath':: d.fn(help='Path of the field to select in the specified API version.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { fieldPath: fieldPath }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/objectReference.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/objectReference.libsonnet deleted file mode 100644 index 912cf2357700..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/objectReference.libsonnet +++ /dev/null @@ -1,18 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='objectReference', url='', help='ObjectReference contains enough information to let you inspect or modify the referred object.'), - '#withFieldPath':: d.fn(help='If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { fieldPath: fieldPath }, - '#withKind':: d.fn(help='Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { kind: kind }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withNamespace':: d.fn(help='Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { namespace: namespace }, - '#withResourceVersion':: d.fn(help='Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { resourceVersion: resourceVersion }, - '#withUid':: d.fn(help='UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { uid: uid }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/persistentVolume.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/persistentVolume.libsonnet deleted file mode 100644 index 7fabe38ce1e4..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/persistentVolume.libsonnet +++ /dev/null @@ -1,493 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='persistentVolume', url='', help='PersistentVolume (PV) is a storage resource provisioned by an administrator. It is analogous to a node. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Persistentvolume', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'v1', - kind: 'PersistentVolume' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='PersistentVolumeSpec is the specification of a persistent volume.'), - spec: { - '#awsElasticBlockStore':: d.obj(help='Represents a Persistent Disk resource in AWS.\n\nAn AWS EBS disk must exist before mounting to a container. The disk must also be in the same AWS zone as the kubelet. An AWS EBS disk can only be mounted as read/write once. AWS EBS volumes support ownership management and SELinux relabeling.'), - awsElasticBlockStore: { - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { awsElasticBlockStore+: { fsType: fsType } } }, - '#withPartition':: d.fn(help='The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).', args=[d.arg(name='partition', type=d.T.integer)]), - withPartition(partition): { spec+: { awsElasticBlockStore+: { partition: partition } } }, - '#withReadOnly':: d.fn(help='Specify "true" to force and set the ReadOnly property in VolumeMounts to "true". If omitted, the default is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { awsElasticBlockStore+: { readOnly: readOnly } } }, - '#withVolumeID':: d.fn(help='Unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore', args=[d.arg(name='volumeID', type=d.T.string)]), - withVolumeID(volumeID): { spec+: { awsElasticBlockStore+: { volumeID: volumeID } } } - }, - '#azureDisk':: d.obj(help='AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.'), - azureDisk: { - '#withCachingMode':: d.fn(help='Host Caching mode: None, Read Only, Read Write.', args=[d.arg(name='cachingMode', type=d.T.string)]), - withCachingMode(cachingMode): { spec+: { azureDisk+: { cachingMode: cachingMode } } }, - '#withDiskName':: d.fn(help='The Name of the data disk in the blob storage', args=[d.arg(name='diskName', type=d.T.string)]), - withDiskName(diskName): { spec+: { azureDisk+: { diskName: diskName } } }, - '#withDiskURI':: d.fn(help='The URI the data disk in the blob storage', args=[d.arg(name='diskURI', type=d.T.string)]), - withDiskURI(diskURI): { spec+: { azureDisk+: { diskURI: diskURI } } }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { azureDisk+: { fsType: fsType } } }, - '#withKind':: d.fn(help='Expected values Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { azureDisk+: { kind: kind } } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { azureDisk+: { readOnly: readOnly } } } - }, - '#azureFile':: d.obj(help='AzureFile represents an Azure File Service mount on the host and bind mount to the pod.'), - azureFile: { - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { azureFile+: { readOnly: readOnly } } }, - '#withSecretName':: d.fn(help='the name of secret that contains Azure Storage Account Name and Key', args=[d.arg(name='secretName', type=d.T.string)]), - withSecretName(secretName): { spec+: { azureFile+: { secretName: secretName } } }, - '#withSecretNamespace':: d.fn(help='the namespace of the secret that contains Azure Storage Account Name and Key default is the same as the Pod', args=[d.arg(name='secretNamespace', type=d.T.string)]), - withSecretNamespace(secretNamespace): { spec+: { azureFile+: { secretNamespace: secretNamespace } } }, - '#withShareName':: d.fn(help='Share Name', args=[d.arg(name='shareName', type=d.T.string)]), - withShareName(shareName): { spec+: { azureFile+: { shareName: shareName } } } - }, - '#cephfs':: d.obj(help='Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling.'), - cephfs: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { cephfs+: { secretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { cephfs+: { secretRef+: { namespace: namespace } } } } - }, - '#withMonitors':: d.fn(help='Required: Monitors is a collection of Ceph monitors More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitors(monitors): { spec+: { cephfs+: { monitors: if std.isArray(v=monitors) then monitors else [monitors] } } }, - '#withMonitorsMixin':: d.fn(help='Required: Monitors is a collection of Ceph monitors More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitorsMixin(monitors): { spec+: { cephfs+: { monitors+: if std.isArray(v=monitors) then monitors else [monitors] } } }, - '#withPath':: d.fn(help='Optional: Used as the mounted root, rather than the full Ceph tree, default is /', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { spec+: { cephfs+: { path: path } } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { cephfs+: { readOnly: readOnly } } }, - '#withSecretFile':: d.fn(help='Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='secretFile', type=d.T.string)]), - withSecretFile(secretFile): { spec+: { cephfs+: { secretFile: secretFile } } }, - '#withUser':: d.fn(help='Optional: User is the rados user name, default is admin More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { cephfs+: { user: user } } } - }, - '#cinder':: d.obj(help='Represents a cinder volume resource in Openstack. A Cinder volume must exist before mounting to a container. The volume must also be in the same region as the kubelet. Cinder volumes support ownership management and SELinux relabeling.'), - cinder: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { cinder+: { secretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { cinder+: { secretRef+: { namespace: namespace } } } } - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { cinder+: { fsType: fsType } } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { cinder+: { readOnly: readOnly } } }, - '#withVolumeID':: d.fn(help='volume id used to identify the volume in cinder More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md', args=[d.arg(name='volumeID', type=d.T.string)]), - withVolumeID(volumeID): { spec+: { cinder+: { volumeID: volumeID } } } - }, - '#claimRef':: d.obj(help='ObjectReference contains enough information to let you inspect or modify the referred object.'), - claimRef: { - '#withFieldPath':: d.fn(help='If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { spec+: { claimRef+: { fieldPath: fieldPath } } }, - '#withKind':: d.fn(help='Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { claimRef+: { kind: kind } } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { claimRef+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { claimRef+: { namespace: namespace } } }, - '#withResourceVersion':: d.fn(help='Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { spec+: { claimRef+: { resourceVersion: resourceVersion } } }, - '#withUid':: d.fn(help='UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { claimRef+: { uid: uid } } } - }, - '#csi':: d.obj(help='Represents storage that is managed by an external CSI volume driver (Beta feature)'), - csi: { - '#controllerPublishSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - controllerPublishSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { csi+: { controllerPublishSecretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { csi+: { controllerPublishSecretRef+: { namespace: namespace } } } } - }, - '#nodePublishSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - nodePublishSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { csi+: { nodePublishSecretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { csi+: { nodePublishSecretRef+: { namespace: namespace } } } } - }, - '#nodeStageSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - nodeStageSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { csi+: { nodeStageSecretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { csi+: { nodeStageSecretRef+: { namespace: namespace } } } } - }, - '#withDriver':: d.fn(help='Driver is the name of the driver to use for this volume. Required.', args=[d.arg(name='driver', type=d.T.string)]), - withDriver(driver): { spec+: { csi+: { driver: driver } } }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs".', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { csi+: { fsType: fsType } } }, - '#withReadOnly':: d.fn(help='Optional: The value to pass to ControllerPublishVolumeRequest. Defaults to false (read/write).', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { csi+: { readOnly: readOnly } } }, - '#withVolumeAttributes':: d.fn(help='Attributes of the volume to publish.', args=[d.arg(name='volumeAttributes', type=d.T.object)]), - withVolumeAttributes(volumeAttributes): { spec+: { csi+: { volumeAttributes: volumeAttributes } } }, - '#withVolumeAttributesMixin':: d.fn(help='Attributes of the volume to publish.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumeAttributes', type=d.T.object)]), - withVolumeAttributesMixin(volumeAttributes): { spec+: { csi+: { volumeAttributes+: volumeAttributes } } }, - '#withVolumeHandle':: d.fn(help='VolumeHandle is the unique volume name returned by the CSI volume plugin’s CreateVolume to refer to the volume on all subsequent calls. Required.', args=[d.arg(name='volumeHandle', type=d.T.string)]), - withVolumeHandle(volumeHandle): { spec+: { csi+: { volumeHandle: volumeHandle } } } - }, - '#fc':: d.obj(help='Represents a Fibre Channel volume. Fibre Channel volumes can only be mounted as read/write once. Fibre Channel volumes support ownership management and SELinux relabeling.'), - fc: { - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { fc+: { fsType: fsType } } }, - '#withLun':: d.fn(help='Optional: FC target lun number', args=[d.arg(name='lun', type=d.T.integer)]), - withLun(lun): { spec+: { fc+: { lun: lun } } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { fc+: { readOnly: readOnly } } }, - '#withTargetWWNs':: d.fn(help='Optional: FC target worldwide names (WWNs)', args=[d.arg(name='targetWWNs', type=d.T.array)]), - withTargetWWNs(targetWWNs): { spec+: { fc+: { targetWWNs: if std.isArray(v=targetWWNs) then targetWWNs else [targetWWNs] } } }, - '#withTargetWWNsMixin':: d.fn(help='Optional: FC target worldwide names (WWNs)\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='targetWWNs', type=d.T.array)]), - withTargetWWNsMixin(targetWWNs): { spec+: { fc+: { targetWWNs+: if std.isArray(v=targetWWNs) then targetWWNs else [targetWWNs] } } }, - '#withWwids':: d.fn(help='Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.', args=[d.arg(name='wwids', type=d.T.array)]), - withWwids(wwids): { spec+: { fc+: { wwids: if std.isArray(v=wwids) then wwids else [wwids] } } }, - '#withWwidsMixin':: d.fn(help='Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='wwids', type=d.T.array)]), - withWwidsMixin(wwids): { spec+: { fc+: { wwids+: if std.isArray(v=wwids) then wwids else [wwids] } } } - }, - '#flexVolume':: d.obj(help='FlexPersistentVolumeSource represents a generic persistent volume resource that is provisioned/attached using an exec based plugin.'), - flexVolume: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { flexVolume+: { secretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { flexVolume+: { secretRef+: { namespace: namespace } } } } - }, - '#withDriver':: d.fn(help='Driver is the name of the driver to use for this volume.', args=[d.arg(name='driver', type=d.T.string)]), - withDriver(driver): { spec+: { flexVolume+: { driver: driver } } }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { flexVolume+: { fsType: fsType } } }, - '#withOptions':: d.fn(help='Optional: Extra command options if any.', args=[d.arg(name='options', type=d.T.object)]), - withOptions(options): { spec+: { flexVolume+: { options: options } } }, - '#withOptionsMixin':: d.fn(help='Optional: Extra command options if any.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.object)]), - withOptionsMixin(options): { spec+: { flexVolume+: { options+: options } } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { flexVolume+: { readOnly: readOnly } } } - }, - '#flocker':: d.obj(help='Represents a Flocker volume mounted by the Flocker agent. One and only one of datasetName and datasetUUID should be set. Flocker volumes do not support ownership management or SELinux relabeling.'), - flocker: { - '#withDatasetName':: d.fn(help='Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated', args=[d.arg(name='datasetName', type=d.T.string)]), - withDatasetName(datasetName): { spec+: { flocker+: { datasetName: datasetName } } }, - '#withDatasetUUID':: d.fn(help='UUID of the dataset. This is unique identifier of a Flocker dataset', args=[d.arg(name='datasetUUID', type=d.T.string)]), - withDatasetUUID(datasetUUID): { spec+: { flocker+: { datasetUUID: datasetUUID } } } - }, - '#gcePersistentDisk':: d.obj(help='Represents a Persistent Disk resource in Google Compute Engine.\n\nA GCE PD must exist before mounting to a container. The disk must also be in the same GCE project and zone as the kubelet. A GCE PD can only be mounted as read/write once or read-only many times. GCE PDs support ownership management and SELinux relabeling.'), - gcePersistentDisk: { - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { gcePersistentDisk+: { fsType: fsType } } }, - '#withPartition':: d.fn(help='The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='partition', type=d.T.integer)]), - withPartition(partition): { spec+: { gcePersistentDisk+: { partition: partition } } }, - '#withPdName':: d.fn(help='Unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='pdName', type=d.T.string)]), - withPdName(pdName): { spec+: { gcePersistentDisk+: { pdName: pdName } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { gcePersistentDisk+: { readOnly: readOnly } } } - }, - '#glusterfs':: d.obj(help='Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling.'), - glusterfs: { - '#withEndpoints':: d.fn(help='EndpointsName is the endpoint name that details Glusterfs topology. More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='endpoints', type=d.T.string)]), - withEndpoints(endpoints): { spec+: { glusterfs+: { endpoints: endpoints } } }, - '#withEndpointsNamespace':: d.fn(help='EndpointsNamespace is the namespace that contains Glusterfs endpoint. If this field is empty, the EndpointNamespace defaults to the same namespace as the bound PVC. More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='endpointsNamespace', type=d.T.string)]), - withEndpointsNamespace(endpointsNamespace): { spec+: { glusterfs+: { endpointsNamespace: endpointsNamespace } } }, - '#withPath':: d.fn(help='Path is the Glusterfs volume path. More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { spec+: { glusterfs+: { path: path } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { glusterfs+: { readOnly: readOnly } } } - }, - '#hostPath':: d.obj(help='Represents a host path mapped into a pod. Host path volumes do not support ownership management or SELinux relabeling.'), - hostPath: { - '#withPath':: d.fn(help='Path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { spec+: { hostPath+: { path: path } } }, - '#withType':: d.fn(help='Type for HostPath Volume Defaults to "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { hostPath+: { type: type } } } - }, - '#iscsi':: d.obj(help='ISCSIPersistentVolumeSource represents an ISCSI disk. ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling.'), - iscsi: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { iscsi+: { secretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { iscsi+: { secretRef+: { namespace: namespace } } } } - }, - '#withChapAuthDiscovery':: d.fn(help='whether support iSCSI Discovery CHAP authentication', args=[d.arg(name='chapAuthDiscovery', type=d.T.boolean)]), - withChapAuthDiscovery(chapAuthDiscovery): { spec+: { iscsi+: { chapAuthDiscovery: chapAuthDiscovery } } }, - '#withChapAuthSession':: d.fn(help='whether support iSCSI Session CHAP authentication', args=[d.arg(name='chapAuthSession', type=d.T.boolean)]), - withChapAuthSession(chapAuthSession): { spec+: { iscsi+: { chapAuthSession: chapAuthSession } } }, - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { iscsi+: { fsType: fsType } } }, - '#withInitiatorName':: d.fn(help='Custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface : will be created for the connection.', args=[d.arg(name='initiatorName', type=d.T.string)]), - withInitiatorName(initiatorName): { spec+: { iscsi+: { initiatorName: initiatorName } } }, - '#withIqn':: d.fn(help='Target iSCSI Qualified Name.', args=[d.arg(name='iqn', type=d.T.string)]), - withIqn(iqn): { spec+: { iscsi+: { iqn: iqn } } }, - '#withIscsiInterface':: d.fn(help="iSCSI Interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).", args=[d.arg(name='iscsiInterface', type=d.T.string)]), - withIscsiInterface(iscsiInterface): { spec+: { iscsi+: { iscsiInterface: iscsiInterface } } }, - '#withLun':: d.fn(help='iSCSI Target Lun number.', args=[d.arg(name='lun', type=d.T.integer)]), - withLun(lun): { spec+: { iscsi+: { lun: lun } } }, - '#withPortals':: d.fn(help='iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).', args=[d.arg(name='portals', type=d.T.array)]), - withPortals(portals): { spec+: { iscsi+: { portals: if std.isArray(v=portals) then portals else [portals] } } }, - '#withPortalsMixin':: d.fn(help='iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='portals', type=d.T.array)]), - withPortalsMixin(portals): { spec+: { iscsi+: { portals+: if std.isArray(v=portals) then portals else [portals] } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { iscsi+: { readOnly: readOnly } } }, - '#withTargetPortal':: d.fn(help='iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).', args=[d.arg(name='targetPortal', type=d.T.string)]), - withTargetPortal(targetPortal): { spec+: { iscsi+: { targetPortal: targetPortal } } } - }, - '#local':: d.obj(help='Local represents directly-attached storage with node affinity (Beta feature)'), - 'local': { - '#withFsType':: d.fn(help='Filesystem type to mount. It applies only when the Path is a block device. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default value is to auto-select a fileystem if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { 'local'+: { fsType: fsType } } }, - '#withPath':: d.fn(help='The full path to the volume on the node. It can be either a directory or block device (disk, partition, ...).', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { spec+: { 'local'+: { path: path } } } - }, - '#nfs':: d.obj(help='Represents an NFS mount that lasts the lifetime of a pod. NFS volumes do not support ownership management or SELinux relabeling.'), - nfs: { - '#withPath':: d.fn(help='Path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { spec+: { nfs+: { path: path } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { nfs+: { readOnly: readOnly } } }, - '#withServer':: d.fn(help='Server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs', args=[d.arg(name='server', type=d.T.string)]), - withServer(server): { spec+: { nfs+: { server: server } } } - }, - '#nodeAffinity':: d.obj(help='VolumeNodeAffinity defines constraints that limit what nodes this volume can be accessed from.'), - nodeAffinity: { - '#required':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - required: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { spec+: { nodeAffinity+: { required+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { spec+: { nodeAffinity+: { required+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } - } - }, - '#photonPersistentDisk':: d.obj(help='Represents a Photon Controller persistent disk resource.'), - photonPersistentDisk: { - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { photonPersistentDisk+: { fsType: fsType } } }, - '#withPdID':: d.fn(help='ID that identifies Photon Controller persistent disk', args=[d.arg(name='pdID', type=d.T.string)]), - withPdID(pdID): { spec+: { photonPersistentDisk+: { pdID: pdID } } } - }, - '#portworxVolume':: d.obj(help='PortworxVolumeSource represents a Portworx volume resource.'), - portworxVolume: { - '#withFsType':: d.fn(help='FSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { portworxVolume+: { fsType: fsType } } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { portworxVolume+: { readOnly: readOnly } } }, - '#withVolumeID':: d.fn(help='VolumeID uniquely identifies a Portworx volume', args=[d.arg(name='volumeID', type=d.T.string)]), - withVolumeID(volumeID): { spec+: { portworxVolume+: { volumeID: volumeID } } } - }, - '#quobyte':: d.obj(help='Represents a Quobyte mount that lasts the lifetime of a pod. Quobyte volumes do not support ownership management or SELinux relabeling.'), - quobyte: { - '#withGroup':: d.fn(help='Group to map volume access to Default is no group', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { spec+: { quobyte+: { group: group } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { quobyte+: { readOnly: readOnly } } }, - '#withRegistry':: d.fn(help='Registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes', args=[d.arg(name='registry', type=d.T.string)]), - withRegistry(registry): { spec+: { quobyte+: { registry: registry } } }, - '#withTenant':: d.fn(help='Tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin', args=[d.arg(name='tenant', type=d.T.string)]), - withTenant(tenant): { spec+: { quobyte+: { tenant: tenant } } }, - '#withUser':: d.fn(help='User to map volume access to Defaults to serivceaccount user', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { quobyte+: { user: user } } }, - '#withVolume':: d.fn(help='Volume is a string that references an already created Quobyte volume by name.', args=[d.arg(name='volume', type=d.T.string)]), - withVolume(volume): { spec+: { quobyte+: { volume: volume } } } - }, - '#rbd':: d.obj(help='Represents a Rados Block Device mount that lasts the lifetime of a pod. RBD volumes support ownership management and SELinux relabeling.'), - rbd: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { rbd+: { secretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { rbd+: { secretRef+: { namespace: namespace } } } } - }, - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { rbd+: { fsType: fsType } } }, - '#withImage':: d.fn(help='The rados image name. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='image', type=d.T.string)]), - withImage(image): { spec+: { rbd+: { image: image } } }, - '#withKeyring':: d.fn(help='Keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='keyring', type=d.T.string)]), - withKeyring(keyring): { spec+: { rbd+: { keyring: keyring } } }, - '#withMonitors':: d.fn(help='A collection of Ceph monitors. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitors(monitors): { spec+: { rbd+: { monitors: if std.isArray(v=monitors) then monitors else [monitors] } } }, - '#withMonitorsMixin':: d.fn(help='A collection of Ceph monitors. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitorsMixin(monitors): { spec+: { rbd+: { monitors+: if std.isArray(v=monitors) then monitors else [monitors] } } }, - '#withPool':: d.fn(help='The rados pool name. Default is rbd. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='pool', type=d.T.string)]), - withPool(pool): { spec+: { rbd+: { pool: pool } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { rbd+: { readOnly: readOnly } } }, - '#withUser':: d.fn(help='The rados user name. Default is admin. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { rbd+: { user: user } } } - }, - '#scaleIO':: d.obj(help='ScaleIOPersistentVolumeSource represents a persistent ScaleIO volume'), - scaleIO: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { scaleIO+: { secretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { scaleIO+: { secretRef+: { namespace: namespace } } } } - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Default is "xfs"', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { scaleIO+: { fsType: fsType } } }, - '#withGateway':: d.fn(help='The host address of the ScaleIO API Gateway.', args=[d.arg(name='gateway', type=d.T.string)]), - withGateway(gateway): { spec+: { scaleIO+: { gateway: gateway } } }, - '#withProtectionDomain':: d.fn(help='The name of the ScaleIO Protection Domain for the configured storage.', args=[d.arg(name='protectionDomain', type=d.T.string)]), - withProtectionDomain(protectionDomain): { spec+: { scaleIO+: { protectionDomain: protectionDomain } } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { scaleIO+: { readOnly: readOnly } } }, - '#withSslEnabled':: d.fn(help='Flag to enable/disable SSL communication with Gateway, default false', args=[d.arg(name='sslEnabled', type=d.T.boolean)]), - withSslEnabled(sslEnabled): { spec+: { scaleIO+: { sslEnabled: sslEnabled } } }, - '#withStorageMode':: d.fn(help='Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.', args=[d.arg(name='storageMode', type=d.T.string)]), - withStorageMode(storageMode): { spec+: { scaleIO+: { storageMode: storageMode } } }, - '#withStoragePool':: d.fn(help='The ScaleIO Storage Pool associated with the protection domain.', args=[d.arg(name='storagePool', type=d.T.string)]), - withStoragePool(storagePool): { spec+: { scaleIO+: { storagePool: storagePool } } }, - '#withSystem':: d.fn(help='The name of the storage system as configured in ScaleIO.', args=[d.arg(name='system', type=d.T.string)]), - withSystem(system): { spec+: { scaleIO+: { system: system } } }, - '#withVolumeName':: d.fn(help='The name of a volume already created in the ScaleIO system that is associated with this volume source.', args=[d.arg(name='volumeName', type=d.T.string)]), - withVolumeName(volumeName): { spec+: { scaleIO+: { volumeName: volumeName } } } - }, - '#storageos':: d.obj(help='Represents a StorageOS persistent volume resource.'), - storageos: { - '#secretRef':: d.obj(help='ObjectReference contains enough information to let you inspect or modify the referred object.'), - secretRef: { - '#withFieldPath':: d.fn(help='If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { spec+: { storageos+: { secretRef+: { fieldPath: fieldPath } } } }, - '#withKind':: d.fn(help='Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { storageos+: { secretRef+: { kind: kind } } } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { storageos+: { secretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { storageos+: { secretRef+: { namespace: namespace } } } }, - '#withResourceVersion':: d.fn(help='Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { spec+: { storageos+: { secretRef+: { resourceVersion: resourceVersion } } } }, - '#withUid':: d.fn(help='UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { storageos+: { secretRef+: { uid: uid } } } } - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { storageos+: { fsType: fsType } } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { storageos+: { readOnly: readOnly } } }, - '#withVolumeName':: d.fn(help='VolumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.', args=[d.arg(name='volumeName', type=d.T.string)]), - withVolumeName(volumeName): { spec+: { storageos+: { volumeName: volumeName } } }, - '#withVolumeNamespace':: d.fn(help="VolumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod's namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to 'default' if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created.", args=[d.arg(name='volumeNamespace', type=d.T.string)]), - withVolumeNamespace(volumeNamespace): { spec+: { storageos+: { volumeNamespace: volumeNamespace } } } - }, - '#vsphereVolume':: d.obj(help='Represents a vSphere volume resource.'), - vsphereVolume: { - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { vsphereVolume+: { fsType: fsType } } }, - '#withStoragePolicyID':: d.fn(help='Storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.', args=[d.arg(name='storagePolicyID', type=d.T.string)]), - withStoragePolicyID(storagePolicyID): { spec+: { vsphereVolume+: { storagePolicyID: storagePolicyID } } }, - '#withStoragePolicyName':: d.fn(help='Storage Policy Based Management (SPBM) profile name.', args=[d.arg(name='storagePolicyName', type=d.T.string)]), - withStoragePolicyName(storagePolicyName): { spec+: { vsphereVolume+: { storagePolicyName: storagePolicyName } } }, - '#withVolumePath':: d.fn(help='Path that identifies vSphere volume vmdk', args=[d.arg(name='volumePath', type=d.T.string)]), - withVolumePath(volumePath): { spec+: { vsphereVolume+: { volumePath: volumePath } } } - }, - '#withAccessModes':: d.fn(help='AccessModes contains all ways the volume can be mounted. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes', args=[d.arg(name='accessModes', type=d.T.array)]), - withAccessModes(accessModes): { spec+: { accessModes: if std.isArray(v=accessModes) then accessModes else [accessModes] } }, - '#withAccessModesMixin':: d.fn(help='AccessModes contains all ways the volume can be mounted. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='accessModes', type=d.T.array)]), - withAccessModesMixin(accessModes): { spec+: { accessModes+: if std.isArray(v=accessModes) then accessModes else [accessModes] } }, - '#withCapacity':: d.fn(help="A description of the persistent volume's resources and capacity. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity", args=[d.arg(name='capacity', type=d.T.object)]), - withCapacity(capacity): { spec+: { capacity: capacity } }, - '#withCapacityMixin':: d.fn(help="A description of the persistent volume's resources and capacity. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='capacity', type=d.T.object)]), - withCapacityMixin(capacity): { spec+: { capacity+: capacity } }, - '#withMountOptions':: d.fn(help='A list of mount options, e.g. ["ro", "soft"]. Not validated - mount will simply fail if one is invalid. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options', args=[d.arg(name='mountOptions', type=d.T.array)]), - withMountOptions(mountOptions): { spec+: { mountOptions: if std.isArray(v=mountOptions) then mountOptions else [mountOptions] } }, - '#withMountOptionsMixin':: d.fn(help='A list of mount options, e.g. ["ro", "soft"]. Not validated - mount will simply fail if one is invalid. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='mountOptions', type=d.T.array)]), - withMountOptionsMixin(mountOptions): { spec+: { mountOptions+: if std.isArray(v=mountOptions) then mountOptions else [mountOptions] } }, - '#withPersistentVolumeReclaimPolicy':: d.fn(help='What happens to a persistent volume when released from its claim. Valid options are Retain (default for manually created PersistentVolumes), Delete (default for dynamically provisioned PersistentVolumes), and Recycle (deprecated). Recycle must be supported by the volume plugin underlying this PersistentVolume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#reclaiming', args=[d.arg(name='persistentVolumeReclaimPolicy', type=d.T.string)]), - withPersistentVolumeReclaimPolicy(persistentVolumeReclaimPolicy): { spec+: { persistentVolumeReclaimPolicy: persistentVolumeReclaimPolicy } }, - '#withStorageClassName':: d.fn(help='Name of StorageClass to which this persistent volume belongs. Empty value means that this volume does not belong to any StorageClass.', args=[d.arg(name='storageClassName', type=d.T.string)]), - withStorageClassName(storageClassName): { spec+: { storageClassName: storageClassName } }, - '#withVolumeMode':: d.fn(help='volumeMode defines if a volume is intended to be used with a formatted filesystem or to remain in raw block state. Value of Filesystem is implied when not included in spec. This is a beta feature.', args=[d.arg(name='volumeMode', type=d.T.string)]), - withVolumeMode(volumeMode): { spec+: { volumeMode: volumeMode } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/persistentVolumeClaim.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/persistentVolumeClaim.libsonnet deleted file mode 100644 index 1f81ec78a02a..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/persistentVolumeClaim.libsonnet +++ /dev/null @@ -1,137 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='persistentVolumeClaim', url='', help="PersistentVolumeClaim is a user's request for and claim to a persistent volume"), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Persistentvolumeclaim', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'v1', - kind: 'PersistentVolumeClaim' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='PersistentVolumeClaimSpec describes the common attributes of storage devices and allows a Source for provider-specific attributes'), - spec: { - '#dataSource':: d.obj(help='TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace.'), - dataSource: { - '#withApiGroup':: d.fn(help='APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.', args=[d.arg(name='apiGroup', type=d.T.string)]), - withApiGroup(apiGroup): { spec+: { dataSource+: { apiGroup: apiGroup } } }, - '#withKind':: d.fn(help='Kind is the type of resource being referenced', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { dataSource+: { kind: kind } } }, - '#withName':: d.fn(help='Name is the name of resource being referenced', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { dataSource+: { name: name } } } - }, - '#resources':: d.obj(help='ResourceRequirements describes the compute resource requirements.'), - resources: { - '#withLimits':: d.fn(help='Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/', args=[d.arg(name='limits', type=d.T.object)]), - withLimits(limits): { spec+: { resources+: { limits: limits } } }, - '#withLimitsMixin':: d.fn(help='Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='limits', type=d.T.object)]), - withLimitsMixin(limits): { spec+: { resources+: { limits+: limits } } }, - '#withRequests':: d.fn(help='Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/', args=[d.arg(name='requests', type=d.T.object)]), - withRequests(requests): { spec+: { resources+: { requests: requests } } }, - '#withRequestsMixin':: d.fn(help='Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requests', type=d.T.object)]), - withRequestsMixin(requests): { spec+: { resources+: { requests+: requests } } } - }, - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { spec+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { spec+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { spec+: { selector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { spec+: { selector+: { matchLabels+: matchLabels } } } - }, - '#withAccessModes':: d.fn(help='AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1', args=[d.arg(name='accessModes', type=d.T.array)]), - withAccessModes(accessModes): { spec+: { accessModes: if std.isArray(v=accessModes) then accessModes else [accessModes] } }, - '#withAccessModesMixin':: d.fn(help='AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='accessModes', type=d.T.array)]), - withAccessModesMixin(accessModes): { spec+: { accessModes+: if std.isArray(v=accessModes) then accessModes else [accessModes] } }, - '#withStorageClassName':: d.fn(help='Name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1', args=[d.arg(name='storageClassName', type=d.T.string)]), - withStorageClassName(storageClassName): { spec+: { storageClassName: storageClassName } }, - '#withVolumeMode':: d.fn(help='volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec. This is a beta feature.', args=[d.arg(name='volumeMode', type=d.T.string)]), - withVolumeMode(volumeMode): { spec+: { volumeMode: volumeMode } }, - '#withVolumeName':: d.fn(help='VolumeName is the binding reference to the PersistentVolume backing this claim.', args=[d.arg(name='volumeName', type=d.T.string)]), - withVolumeName(volumeName): { spec+: { volumeName: volumeName } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/persistentVolumeClaimCondition.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/persistentVolumeClaimCondition.libsonnet deleted file mode 100644 index ba46c377ac2d..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/persistentVolumeClaimCondition.libsonnet +++ /dev/null @@ -1,16 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='persistentVolumeClaimCondition', url='', help='PersistentVolumeClaimCondition contails details about state of pvc'), - '#withLastProbeTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastProbeTime', type=d.T.string)]), - withLastProbeTime(lastProbeTime): { lastProbeTime: lastProbeTime }, - '#withLastTransitionTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastTransitionTime', type=d.T.string)]), - withLastTransitionTime(lastTransitionTime): { lastTransitionTime: lastTransitionTime }, - '#withMessage':: d.fn(help='Human-readable message indicating details about last transition.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withReason':: d.fn(help="Unique, this should be a short, machine understandable string that gives the reason for condition's last transition. If it reports 'ResizeStarted' that means the underlying persistent volume is being resized.", args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#withType':: d.fn(help='', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/persistentVolumeClaimSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/persistentVolumeClaimSpec.libsonnet deleted file mode 100644 index 76564304311d..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/persistentVolumeClaimSpec.libsonnet +++ /dev/null @@ -1,47 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='persistentVolumeClaimSpec', url='', help='PersistentVolumeClaimSpec describes the common attributes of storage devices and allows a Source for provider-specific attributes'), - '#dataSource':: d.obj(help='TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace.'), - dataSource: { - '#withApiGroup':: d.fn(help='APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.', args=[d.arg(name='apiGroup', type=d.T.string)]), - withApiGroup(apiGroup): { dataSource+: { apiGroup: apiGroup } }, - '#withKind':: d.fn(help='Kind is the type of resource being referenced', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { dataSource+: { kind: kind } }, - '#withName':: d.fn(help='Name is the name of resource being referenced', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { dataSource+: { name: name } } - }, - '#resources':: d.obj(help='ResourceRequirements describes the compute resource requirements.'), - resources: { - '#withLimits':: d.fn(help='Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/', args=[d.arg(name='limits', type=d.T.object)]), - withLimits(limits): { resources+: { limits: limits } }, - '#withLimitsMixin':: d.fn(help='Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='limits', type=d.T.object)]), - withLimitsMixin(limits): { resources+: { limits+: limits } }, - '#withRequests':: d.fn(help='Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/', args=[d.arg(name='requests', type=d.T.object)]), - withRequests(requests): { resources+: { requests: requests } }, - '#withRequestsMixin':: d.fn(help='Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requests', type=d.T.object)]), - withRequestsMixin(requests): { resources+: { requests+: requests } } - }, - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { selector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { selector+: { matchLabels+: matchLabels } } - }, - '#withAccessModes':: d.fn(help='AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1', args=[d.arg(name='accessModes', type=d.T.array)]), - withAccessModes(accessModes): { accessModes: if std.isArray(v=accessModes) then accessModes else [accessModes] }, - '#withAccessModesMixin':: d.fn(help='AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='accessModes', type=d.T.array)]), - withAccessModesMixin(accessModes): { accessModes+: if std.isArray(v=accessModes) then accessModes else [accessModes] }, - '#withStorageClassName':: d.fn(help='Name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1', args=[d.arg(name='storageClassName', type=d.T.string)]), - withStorageClassName(storageClassName): { storageClassName: storageClassName }, - '#withVolumeMode':: d.fn(help='volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec. This is a beta feature.', args=[d.arg(name='volumeMode', type=d.T.string)]), - withVolumeMode(volumeMode): { volumeMode: volumeMode }, - '#withVolumeName':: d.fn(help='VolumeName is the binding reference to the PersistentVolume backing this claim.', args=[d.arg(name='volumeName', type=d.T.string)]), - withVolumeName(volumeName): { volumeName: volumeName }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/persistentVolumeClaimStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/persistentVolumeClaimStatus.libsonnet deleted file mode 100644 index 121782019282..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/persistentVolumeClaimStatus.libsonnet +++ /dev/null @@ -1,20 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='persistentVolumeClaimStatus', url='', help='PersistentVolumeClaimStatus is the current status of a persistent volume claim.'), - '#withAccessModes':: d.fn(help='AccessModes contains the actual access modes the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1', args=[d.arg(name='accessModes', type=d.T.array)]), - withAccessModes(accessModes): { accessModes: if std.isArray(v=accessModes) then accessModes else [accessModes] }, - '#withAccessModesMixin':: d.fn(help='AccessModes contains the actual access modes the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='accessModes', type=d.T.array)]), - withAccessModesMixin(accessModes): { accessModes+: if std.isArray(v=accessModes) then accessModes else [accessModes] }, - '#withCapacity':: d.fn(help='Represents the actual resources of the underlying volume.', args=[d.arg(name='capacity', type=d.T.object)]), - withCapacity(capacity): { capacity: capacity }, - '#withCapacityMixin':: d.fn(help='Represents the actual resources of the underlying volume.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='capacity', type=d.T.object)]), - withCapacityMixin(capacity): { capacity+: capacity }, - '#withConditions':: d.fn(help="Current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'ResizeStarted'.", args=[d.arg(name='conditions', type=d.T.array)]), - withConditions(conditions): { conditions: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withConditionsMixin':: d.fn(help="Current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'ResizeStarted'.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='conditions', type=d.T.array)]), - withConditionsMixin(conditions): { conditions+: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withPhase':: d.fn(help='Phase represents the current phase of PersistentVolumeClaim.', args=[d.arg(name='phase', type=d.T.string)]), - withPhase(phase): { phase: phase }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/persistentVolumeClaimVolumeSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/persistentVolumeClaimVolumeSource.libsonnet deleted file mode 100644 index 27efb3a59a01..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/persistentVolumeClaimVolumeSource.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='persistentVolumeClaimVolumeSource', url='', help="PersistentVolumeClaimVolumeSource references the user's PVC in the same namespace. This volume finds the bound PV and mounts that volume for the pod. A PersistentVolumeClaimVolumeSource is, essentially, a wrapper around another type of volume that is owned by someone else (the system)."), - '#withClaimName':: d.fn(help='ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims', args=[d.arg(name='claimName', type=d.T.string)]), - withClaimName(claimName): { claimName: claimName }, - '#withReadOnly':: d.fn(help='Will force the ReadOnly setting in VolumeMounts. Default false.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/persistentVolumeSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/persistentVolumeSpec.libsonnet deleted file mode 100644 index a2bc39e563e1..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/persistentVolumeSpec.libsonnet +++ /dev/null @@ -1,403 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='persistentVolumeSpec', url='', help='PersistentVolumeSpec is the specification of a persistent volume.'), - '#awsElasticBlockStore':: d.obj(help='Represents a Persistent Disk resource in AWS.\n\nAn AWS EBS disk must exist before mounting to a container. The disk must also be in the same AWS zone as the kubelet. An AWS EBS disk can only be mounted as read/write once. AWS EBS volumes support ownership management and SELinux relabeling.'), - awsElasticBlockStore: { - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { awsElasticBlockStore+: { fsType: fsType } }, - '#withPartition':: d.fn(help='The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).', args=[d.arg(name='partition', type=d.T.integer)]), - withPartition(partition): { awsElasticBlockStore+: { partition: partition } }, - '#withReadOnly':: d.fn(help='Specify "true" to force and set the ReadOnly property in VolumeMounts to "true". If omitted, the default is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { awsElasticBlockStore+: { readOnly: readOnly } }, - '#withVolumeID':: d.fn(help='Unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore', args=[d.arg(name='volumeID', type=d.T.string)]), - withVolumeID(volumeID): { awsElasticBlockStore+: { volumeID: volumeID } } - }, - '#azureDisk':: d.obj(help='AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.'), - azureDisk: { - '#withCachingMode':: d.fn(help='Host Caching mode: None, Read Only, Read Write.', args=[d.arg(name='cachingMode', type=d.T.string)]), - withCachingMode(cachingMode): { azureDisk+: { cachingMode: cachingMode } }, - '#withDiskName':: d.fn(help='The Name of the data disk in the blob storage', args=[d.arg(name='diskName', type=d.T.string)]), - withDiskName(diskName): { azureDisk+: { diskName: diskName } }, - '#withDiskURI':: d.fn(help='The URI the data disk in the blob storage', args=[d.arg(name='diskURI', type=d.T.string)]), - withDiskURI(diskURI): { azureDisk+: { diskURI: diskURI } }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { azureDisk+: { fsType: fsType } }, - '#withKind':: d.fn(help='Expected values Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { azureDisk+: { kind: kind } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { azureDisk+: { readOnly: readOnly } } - }, - '#azureFile':: d.obj(help='AzureFile represents an Azure File Service mount on the host and bind mount to the pod.'), - azureFile: { - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { azureFile+: { readOnly: readOnly } }, - '#withSecretName':: d.fn(help='the name of secret that contains Azure Storage Account Name and Key', args=[d.arg(name='secretName', type=d.T.string)]), - withSecretName(secretName): { azureFile+: { secretName: secretName } }, - '#withSecretNamespace':: d.fn(help='the namespace of the secret that contains Azure Storage Account Name and Key default is the same as the Pod', args=[d.arg(name='secretNamespace', type=d.T.string)]), - withSecretNamespace(secretNamespace): { azureFile+: { secretNamespace: secretNamespace } }, - '#withShareName':: d.fn(help='Share Name', args=[d.arg(name='shareName', type=d.T.string)]), - withShareName(shareName): { azureFile+: { shareName: shareName } } - }, - '#cephfs':: d.obj(help='Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling.'), - cephfs: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { cephfs+: { secretRef+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { cephfs+: { secretRef+: { namespace: namespace } } } - }, - '#withMonitors':: d.fn(help='Required: Monitors is a collection of Ceph monitors More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitors(monitors): { cephfs+: { monitors: if std.isArray(v=monitors) then monitors else [monitors] } }, - '#withMonitorsMixin':: d.fn(help='Required: Monitors is a collection of Ceph monitors More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitorsMixin(monitors): { cephfs+: { monitors+: if std.isArray(v=monitors) then monitors else [monitors] } }, - '#withPath':: d.fn(help='Optional: Used as the mounted root, rather than the full Ceph tree, default is /', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { cephfs+: { path: path } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { cephfs+: { readOnly: readOnly } }, - '#withSecretFile':: d.fn(help='Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='secretFile', type=d.T.string)]), - withSecretFile(secretFile): { cephfs+: { secretFile: secretFile } }, - '#withUser':: d.fn(help='Optional: User is the rados user name, default is admin More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { cephfs+: { user: user } } - }, - '#cinder':: d.obj(help='Represents a cinder volume resource in Openstack. A Cinder volume must exist before mounting to a container. The volume must also be in the same region as the kubelet. Cinder volumes support ownership management and SELinux relabeling.'), - cinder: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { cinder+: { secretRef+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { cinder+: { secretRef+: { namespace: namespace } } } - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { cinder+: { fsType: fsType } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { cinder+: { readOnly: readOnly } }, - '#withVolumeID':: d.fn(help='volume id used to identify the volume in cinder More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md', args=[d.arg(name='volumeID', type=d.T.string)]), - withVolumeID(volumeID): { cinder+: { volumeID: volumeID } } - }, - '#claimRef':: d.obj(help='ObjectReference contains enough information to let you inspect or modify the referred object.'), - claimRef: { - '#withFieldPath':: d.fn(help='If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { claimRef+: { fieldPath: fieldPath } }, - '#withKind':: d.fn(help='Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { claimRef+: { kind: kind } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { claimRef+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { claimRef+: { namespace: namespace } }, - '#withResourceVersion':: d.fn(help='Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { claimRef+: { resourceVersion: resourceVersion } }, - '#withUid':: d.fn(help='UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { claimRef+: { uid: uid } } - }, - '#csi':: d.obj(help='Represents storage that is managed by an external CSI volume driver (Beta feature)'), - csi: { - '#controllerPublishSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - controllerPublishSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { csi+: { controllerPublishSecretRef+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { csi+: { controllerPublishSecretRef+: { namespace: namespace } } } - }, - '#nodePublishSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - nodePublishSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { csi+: { nodePublishSecretRef+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { csi+: { nodePublishSecretRef+: { namespace: namespace } } } - }, - '#nodeStageSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - nodeStageSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { csi+: { nodeStageSecretRef+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { csi+: { nodeStageSecretRef+: { namespace: namespace } } } - }, - '#withDriver':: d.fn(help='Driver is the name of the driver to use for this volume. Required.', args=[d.arg(name='driver', type=d.T.string)]), - withDriver(driver): { csi+: { driver: driver } }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs".', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { csi+: { fsType: fsType } }, - '#withReadOnly':: d.fn(help='Optional: The value to pass to ControllerPublishVolumeRequest. Defaults to false (read/write).', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { csi+: { readOnly: readOnly } }, - '#withVolumeAttributes':: d.fn(help='Attributes of the volume to publish.', args=[d.arg(name='volumeAttributes', type=d.T.object)]), - withVolumeAttributes(volumeAttributes): { csi+: { volumeAttributes: volumeAttributes } }, - '#withVolumeAttributesMixin':: d.fn(help='Attributes of the volume to publish.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumeAttributes', type=d.T.object)]), - withVolumeAttributesMixin(volumeAttributes): { csi+: { volumeAttributes+: volumeAttributes } }, - '#withVolumeHandle':: d.fn(help='VolumeHandle is the unique volume name returned by the CSI volume plugin’s CreateVolume to refer to the volume on all subsequent calls. Required.', args=[d.arg(name='volumeHandle', type=d.T.string)]), - withVolumeHandle(volumeHandle): { csi+: { volumeHandle: volumeHandle } } - }, - '#fc':: d.obj(help='Represents a Fibre Channel volume. Fibre Channel volumes can only be mounted as read/write once. Fibre Channel volumes support ownership management and SELinux relabeling.'), - fc: { - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { fc+: { fsType: fsType } }, - '#withLun':: d.fn(help='Optional: FC target lun number', args=[d.arg(name='lun', type=d.T.integer)]), - withLun(lun): { fc+: { lun: lun } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { fc+: { readOnly: readOnly } }, - '#withTargetWWNs':: d.fn(help='Optional: FC target worldwide names (WWNs)', args=[d.arg(name='targetWWNs', type=d.T.array)]), - withTargetWWNs(targetWWNs): { fc+: { targetWWNs: if std.isArray(v=targetWWNs) then targetWWNs else [targetWWNs] } }, - '#withTargetWWNsMixin':: d.fn(help='Optional: FC target worldwide names (WWNs)\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='targetWWNs', type=d.T.array)]), - withTargetWWNsMixin(targetWWNs): { fc+: { targetWWNs+: if std.isArray(v=targetWWNs) then targetWWNs else [targetWWNs] } }, - '#withWwids':: d.fn(help='Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.', args=[d.arg(name='wwids', type=d.T.array)]), - withWwids(wwids): { fc+: { wwids: if std.isArray(v=wwids) then wwids else [wwids] } }, - '#withWwidsMixin':: d.fn(help='Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='wwids', type=d.T.array)]), - withWwidsMixin(wwids): { fc+: { wwids+: if std.isArray(v=wwids) then wwids else [wwids] } } - }, - '#flexVolume':: d.obj(help='FlexPersistentVolumeSource represents a generic persistent volume resource that is provisioned/attached using an exec based plugin.'), - flexVolume: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { flexVolume+: { secretRef+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { flexVolume+: { secretRef+: { namespace: namespace } } } - }, - '#withDriver':: d.fn(help='Driver is the name of the driver to use for this volume.', args=[d.arg(name='driver', type=d.T.string)]), - withDriver(driver): { flexVolume+: { driver: driver } }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { flexVolume+: { fsType: fsType } }, - '#withOptions':: d.fn(help='Optional: Extra command options if any.', args=[d.arg(name='options', type=d.T.object)]), - withOptions(options): { flexVolume+: { options: options } }, - '#withOptionsMixin':: d.fn(help='Optional: Extra command options if any.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.object)]), - withOptionsMixin(options): { flexVolume+: { options+: options } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { flexVolume+: { readOnly: readOnly } } - }, - '#flocker':: d.obj(help='Represents a Flocker volume mounted by the Flocker agent. One and only one of datasetName and datasetUUID should be set. Flocker volumes do not support ownership management or SELinux relabeling.'), - flocker: { - '#withDatasetName':: d.fn(help='Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated', args=[d.arg(name='datasetName', type=d.T.string)]), - withDatasetName(datasetName): { flocker+: { datasetName: datasetName } }, - '#withDatasetUUID':: d.fn(help='UUID of the dataset. This is unique identifier of a Flocker dataset', args=[d.arg(name='datasetUUID', type=d.T.string)]), - withDatasetUUID(datasetUUID): { flocker+: { datasetUUID: datasetUUID } } - }, - '#gcePersistentDisk':: d.obj(help='Represents a Persistent Disk resource in Google Compute Engine.\n\nA GCE PD must exist before mounting to a container. The disk must also be in the same GCE project and zone as the kubelet. A GCE PD can only be mounted as read/write once or read-only many times. GCE PDs support ownership management and SELinux relabeling.'), - gcePersistentDisk: { - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { gcePersistentDisk+: { fsType: fsType } }, - '#withPartition':: d.fn(help='The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='partition', type=d.T.integer)]), - withPartition(partition): { gcePersistentDisk+: { partition: partition } }, - '#withPdName':: d.fn(help='Unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='pdName', type=d.T.string)]), - withPdName(pdName): { gcePersistentDisk+: { pdName: pdName } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { gcePersistentDisk+: { readOnly: readOnly } } - }, - '#glusterfs':: d.obj(help='Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling.'), - glusterfs: { - '#withEndpoints':: d.fn(help='EndpointsName is the endpoint name that details Glusterfs topology. More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='endpoints', type=d.T.string)]), - withEndpoints(endpoints): { glusterfs+: { endpoints: endpoints } }, - '#withEndpointsNamespace':: d.fn(help='EndpointsNamespace is the namespace that contains Glusterfs endpoint. If this field is empty, the EndpointNamespace defaults to the same namespace as the bound PVC. More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='endpointsNamespace', type=d.T.string)]), - withEndpointsNamespace(endpointsNamespace): { glusterfs+: { endpointsNamespace: endpointsNamespace } }, - '#withPath':: d.fn(help='Path is the Glusterfs volume path. More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { glusterfs+: { path: path } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { glusterfs+: { readOnly: readOnly } } - }, - '#hostPath':: d.obj(help='Represents a host path mapped into a pod. Host path volumes do not support ownership management or SELinux relabeling.'), - hostPath: { - '#withPath':: d.fn(help='Path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { hostPath+: { path: path } }, - '#withType':: d.fn(help='Type for HostPath Volume Defaults to "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { hostPath+: { type: type } } - }, - '#iscsi':: d.obj(help='ISCSIPersistentVolumeSource represents an ISCSI disk. ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling.'), - iscsi: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { iscsi+: { secretRef+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { iscsi+: { secretRef+: { namespace: namespace } } } - }, - '#withChapAuthDiscovery':: d.fn(help='whether support iSCSI Discovery CHAP authentication', args=[d.arg(name='chapAuthDiscovery', type=d.T.boolean)]), - withChapAuthDiscovery(chapAuthDiscovery): { iscsi+: { chapAuthDiscovery: chapAuthDiscovery } }, - '#withChapAuthSession':: d.fn(help='whether support iSCSI Session CHAP authentication', args=[d.arg(name='chapAuthSession', type=d.T.boolean)]), - withChapAuthSession(chapAuthSession): { iscsi+: { chapAuthSession: chapAuthSession } }, - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { iscsi+: { fsType: fsType } }, - '#withInitiatorName':: d.fn(help='Custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface : will be created for the connection.', args=[d.arg(name='initiatorName', type=d.T.string)]), - withInitiatorName(initiatorName): { iscsi+: { initiatorName: initiatorName } }, - '#withIqn':: d.fn(help='Target iSCSI Qualified Name.', args=[d.arg(name='iqn', type=d.T.string)]), - withIqn(iqn): { iscsi+: { iqn: iqn } }, - '#withIscsiInterface':: d.fn(help="iSCSI Interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).", args=[d.arg(name='iscsiInterface', type=d.T.string)]), - withIscsiInterface(iscsiInterface): { iscsi+: { iscsiInterface: iscsiInterface } }, - '#withLun':: d.fn(help='iSCSI Target Lun number.', args=[d.arg(name='lun', type=d.T.integer)]), - withLun(lun): { iscsi+: { lun: lun } }, - '#withPortals':: d.fn(help='iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).', args=[d.arg(name='portals', type=d.T.array)]), - withPortals(portals): { iscsi+: { portals: if std.isArray(v=portals) then portals else [portals] } }, - '#withPortalsMixin':: d.fn(help='iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='portals', type=d.T.array)]), - withPortalsMixin(portals): { iscsi+: { portals+: if std.isArray(v=portals) then portals else [portals] } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { iscsi+: { readOnly: readOnly } }, - '#withTargetPortal':: d.fn(help='iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).', args=[d.arg(name='targetPortal', type=d.T.string)]), - withTargetPortal(targetPortal): { iscsi+: { targetPortal: targetPortal } } - }, - '#local':: d.obj(help='Local represents directly-attached storage with node affinity (Beta feature)'), - 'local': { - '#withFsType':: d.fn(help='Filesystem type to mount. It applies only when the Path is a block device. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default value is to auto-select a fileystem if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { 'local'+: { fsType: fsType } }, - '#withPath':: d.fn(help='The full path to the volume on the node. It can be either a directory or block device (disk, partition, ...).', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { 'local'+: { path: path } } - }, - '#nfs':: d.obj(help='Represents an NFS mount that lasts the lifetime of a pod. NFS volumes do not support ownership management or SELinux relabeling.'), - nfs: { - '#withPath':: d.fn(help='Path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { nfs+: { path: path } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { nfs+: { readOnly: readOnly } }, - '#withServer':: d.fn(help='Server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs', args=[d.arg(name='server', type=d.T.string)]), - withServer(server): { nfs+: { server: server } } - }, - '#nodeAffinity':: d.obj(help='VolumeNodeAffinity defines constraints that limit what nodes this volume can be accessed from.'), - nodeAffinity: { - '#required':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - required: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { nodeAffinity+: { required+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { nodeAffinity+: { required+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } - } - }, - '#photonPersistentDisk':: d.obj(help='Represents a Photon Controller persistent disk resource.'), - photonPersistentDisk: { - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { photonPersistentDisk+: { fsType: fsType } }, - '#withPdID':: d.fn(help='ID that identifies Photon Controller persistent disk', args=[d.arg(name='pdID', type=d.T.string)]), - withPdID(pdID): { photonPersistentDisk+: { pdID: pdID } } - }, - '#portworxVolume':: d.obj(help='PortworxVolumeSource represents a Portworx volume resource.'), - portworxVolume: { - '#withFsType':: d.fn(help='FSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { portworxVolume+: { fsType: fsType } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { portworxVolume+: { readOnly: readOnly } }, - '#withVolumeID':: d.fn(help='VolumeID uniquely identifies a Portworx volume', args=[d.arg(name='volumeID', type=d.T.string)]), - withVolumeID(volumeID): { portworxVolume+: { volumeID: volumeID } } - }, - '#quobyte':: d.obj(help='Represents a Quobyte mount that lasts the lifetime of a pod. Quobyte volumes do not support ownership management or SELinux relabeling.'), - quobyte: { - '#withGroup':: d.fn(help='Group to map volume access to Default is no group', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { quobyte+: { group: group } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { quobyte+: { readOnly: readOnly } }, - '#withRegistry':: d.fn(help='Registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes', args=[d.arg(name='registry', type=d.T.string)]), - withRegistry(registry): { quobyte+: { registry: registry } }, - '#withTenant':: d.fn(help='Tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin', args=[d.arg(name='tenant', type=d.T.string)]), - withTenant(tenant): { quobyte+: { tenant: tenant } }, - '#withUser':: d.fn(help='User to map volume access to Defaults to serivceaccount user', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { quobyte+: { user: user } }, - '#withVolume':: d.fn(help='Volume is a string that references an already created Quobyte volume by name.', args=[d.arg(name='volume', type=d.T.string)]), - withVolume(volume): { quobyte+: { volume: volume } } - }, - '#rbd':: d.obj(help='Represents a Rados Block Device mount that lasts the lifetime of a pod. RBD volumes support ownership management and SELinux relabeling.'), - rbd: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { rbd+: { secretRef+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { rbd+: { secretRef+: { namespace: namespace } } } - }, - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { rbd+: { fsType: fsType } }, - '#withImage':: d.fn(help='The rados image name. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='image', type=d.T.string)]), - withImage(image): { rbd+: { image: image } }, - '#withKeyring':: d.fn(help='Keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='keyring', type=d.T.string)]), - withKeyring(keyring): { rbd+: { keyring: keyring } }, - '#withMonitors':: d.fn(help='A collection of Ceph monitors. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitors(monitors): { rbd+: { monitors: if std.isArray(v=monitors) then monitors else [monitors] } }, - '#withMonitorsMixin':: d.fn(help='A collection of Ceph monitors. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitorsMixin(monitors): { rbd+: { monitors+: if std.isArray(v=monitors) then monitors else [monitors] } }, - '#withPool':: d.fn(help='The rados pool name. Default is rbd. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='pool', type=d.T.string)]), - withPool(pool): { rbd+: { pool: pool } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { rbd+: { readOnly: readOnly } }, - '#withUser':: d.fn(help='The rados user name. Default is admin. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { rbd+: { user: user } } - }, - '#scaleIO':: d.obj(help='ScaleIOPersistentVolumeSource represents a persistent ScaleIO volume'), - scaleIO: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { scaleIO+: { secretRef+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { scaleIO+: { secretRef+: { namespace: namespace } } } - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Default is "xfs"', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { scaleIO+: { fsType: fsType } }, - '#withGateway':: d.fn(help='The host address of the ScaleIO API Gateway.', args=[d.arg(name='gateway', type=d.T.string)]), - withGateway(gateway): { scaleIO+: { gateway: gateway } }, - '#withProtectionDomain':: d.fn(help='The name of the ScaleIO Protection Domain for the configured storage.', args=[d.arg(name='protectionDomain', type=d.T.string)]), - withProtectionDomain(protectionDomain): { scaleIO+: { protectionDomain: protectionDomain } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { scaleIO+: { readOnly: readOnly } }, - '#withSslEnabled':: d.fn(help='Flag to enable/disable SSL communication with Gateway, default false', args=[d.arg(name='sslEnabled', type=d.T.boolean)]), - withSslEnabled(sslEnabled): { scaleIO+: { sslEnabled: sslEnabled } }, - '#withStorageMode':: d.fn(help='Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.', args=[d.arg(name='storageMode', type=d.T.string)]), - withStorageMode(storageMode): { scaleIO+: { storageMode: storageMode } }, - '#withStoragePool':: d.fn(help='The ScaleIO Storage Pool associated with the protection domain.', args=[d.arg(name='storagePool', type=d.T.string)]), - withStoragePool(storagePool): { scaleIO+: { storagePool: storagePool } }, - '#withSystem':: d.fn(help='The name of the storage system as configured in ScaleIO.', args=[d.arg(name='system', type=d.T.string)]), - withSystem(system): { scaleIO+: { system: system } }, - '#withVolumeName':: d.fn(help='The name of a volume already created in the ScaleIO system that is associated with this volume source.', args=[d.arg(name='volumeName', type=d.T.string)]), - withVolumeName(volumeName): { scaleIO+: { volumeName: volumeName } } - }, - '#storageos':: d.obj(help='Represents a StorageOS persistent volume resource.'), - storageos: { - '#secretRef':: d.obj(help='ObjectReference contains enough information to let you inspect or modify the referred object.'), - secretRef: { - '#withFieldPath':: d.fn(help='If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { storageos+: { secretRef+: { fieldPath: fieldPath } } }, - '#withKind':: d.fn(help='Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { storageos+: { secretRef+: { kind: kind } } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { storageos+: { secretRef+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { storageos+: { secretRef+: { namespace: namespace } } }, - '#withResourceVersion':: d.fn(help='Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { storageos+: { secretRef+: { resourceVersion: resourceVersion } } }, - '#withUid':: d.fn(help='UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { storageos+: { secretRef+: { uid: uid } } } - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { storageos+: { fsType: fsType } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { storageos+: { readOnly: readOnly } }, - '#withVolumeName':: d.fn(help='VolumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.', args=[d.arg(name='volumeName', type=d.T.string)]), - withVolumeName(volumeName): { storageos+: { volumeName: volumeName } }, - '#withVolumeNamespace':: d.fn(help="VolumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod's namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to 'default' if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created.", args=[d.arg(name='volumeNamespace', type=d.T.string)]), - withVolumeNamespace(volumeNamespace): { storageos+: { volumeNamespace: volumeNamespace } } - }, - '#vsphereVolume':: d.obj(help='Represents a vSphere volume resource.'), - vsphereVolume: { - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { vsphereVolume+: { fsType: fsType } }, - '#withStoragePolicyID':: d.fn(help='Storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.', args=[d.arg(name='storagePolicyID', type=d.T.string)]), - withStoragePolicyID(storagePolicyID): { vsphereVolume+: { storagePolicyID: storagePolicyID } }, - '#withStoragePolicyName':: d.fn(help='Storage Policy Based Management (SPBM) profile name.', args=[d.arg(name='storagePolicyName', type=d.T.string)]), - withStoragePolicyName(storagePolicyName): { vsphereVolume+: { storagePolicyName: storagePolicyName } }, - '#withVolumePath':: d.fn(help='Path that identifies vSphere volume vmdk', args=[d.arg(name='volumePath', type=d.T.string)]), - withVolumePath(volumePath): { vsphereVolume+: { volumePath: volumePath } } - }, - '#withAccessModes':: d.fn(help='AccessModes contains all ways the volume can be mounted. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes', args=[d.arg(name='accessModes', type=d.T.array)]), - withAccessModes(accessModes): { accessModes: if std.isArray(v=accessModes) then accessModes else [accessModes] }, - '#withAccessModesMixin':: d.fn(help='AccessModes contains all ways the volume can be mounted. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='accessModes', type=d.T.array)]), - withAccessModesMixin(accessModes): { accessModes+: if std.isArray(v=accessModes) then accessModes else [accessModes] }, - '#withCapacity':: d.fn(help="A description of the persistent volume's resources and capacity. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity", args=[d.arg(name='capacity', type=d.T.object)]), - withCapacity(capacity): { capacity: capacity }, - '#withCapacityMixin':: d.fn(help="A description of the persistent volume's resources and capacity. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='capacity', type=d.T.object)]), - withCapacityMixin(capacity): { capacity+: capacity }, - '#withMountOptions':: d.fn(help='A list of mount options, e.g. ["ro", "soft"]. Not validated - mount will simply fail if one is invalid. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options', args=[d.arg(name='mountOptions', type=d.T.array)]), - withMountOptions(mountOptions): { mountOptions: if std.isArray(v=mountOptions) then mountOptions else [mountOptions] }, - '#withMountOptionsMixin':: d.fn(help='A list of mount options, e.g. ["ro", "soft"]. Not validated - mount will simply fail if one is invalid. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='mountOptions', type=d.T.array)]), - withMountOptionsMixin(mountOptions): { mountOptions+: if std.isArray(v=mountOptions) then mountOptions else [mountOptions] }, - '#withPersistentVolumeReclaimPolicy':: d.fn(help='What happens to a persistent volume when released from its claim. Valid options are Retain (default for manually created PersistentVolumes), Delete (default for dynamically provisioned PersistentVolumes), and Recycle (deprecated). Recycle must be supported by the volume plugin underlying this PersistentVolume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#reclaiming', args=[d.arg(name='persistentVolumeReclaimPolicy', type=d.T.string)]), - withPersistentVolumeReclaimPolicy(persistentVolumeReclaimPolicy): { persistentVolumeReclaimPolicy: persistentVolumeReclaimPolicy }, - '#withStorageClassName':: d.fn(help='Name of StorageClass to which this persistent volume belongs. Empty value means that this volume does not belong to any StorageClass.', args=[d.arg(name='storageClassName', type=d.T.string)]), - withStorageClassName(storageClassName): { storageClassName: storageClassName }, - '#withVolumeMode':: d.fn(help='volumeMode defines if a volume is intended to be used with a formatted filesystem or to remain in raw block state. Value of Filesystem is implied when not included in spec. This is a beta feature.', args=[d.arg(name='volumeMode', type=d.T.string)]), - withVolumeMode(volumeMode): { volumeMode: volumeMode }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/persistentVolumeStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/persistentVolumeStatus.libsonnet deleted file mode 100644 index e6c166504e19..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/persistentVolumeStatus.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='persistentVolumeStatus', url='', help='PersistentVolumeStatus is the current status of a persistent volume.'), - '#withMessage':: d.fn(help='A human-readable message indicating details about why the volume is in this state.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withPhase':: d.fn(help='Phase indicates if a volume is available, bound to a claim, or released by a claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#phase', args=[d.arg(name='phase', type=d.T.string)]), - withPhase(phase): { phase: phase }, - '#withReason':: d.fn(help='Reason is a brief CamelCase string that describes any failure and is meant for machine parsing and tidy display in the CLI.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/photonPersistentDiskVolumeSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/photonPersistentDiskVolumeSource.libsonnet deleted file mode 100644 index d2e3c308f892..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/photonPersistentDiskVolumeSource.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='photonPersistentDiskVolumeSource', url='', help='Represents a Photon Controller persistent disk resource.'), - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { fsType: fsType }, - '#withPdID':: d.fn(help='ID that identifies Photon Controller persistent disk', args=[d.arg(name='pdID', type=d.T.string)]), - withPdID(pdID): { pdID: pdID }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/pod.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/pod.libsonnet deleted file mode 100644 index 49db909243f8..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/pod.libsonnet +++ /dev/null @@ -1,250 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='pod', url='', help='Pod is a collection of containers that can run on a host. This resource is created by clients and scheduled onto hosts.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Pod', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'v1', - kind: 'Pod' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } - } - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { spec+: { securityContext+: { fsGroup: fsGroup } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { spec+: { securityContext+: { runAsGroup: runAsGroup } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { spec+: { securityContext+: { runAsUser: runAsUser } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { spec+: { automountServiceAccountToken: automountServiceAccountToken } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { spec+: { dnsPolicy: dnsPolicy } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { spec+: { enableServiceLinks: enableServiceLinks } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { spec+: { hostIPC: hostIPC } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { spec+: { hostNetwork: hostNetwork } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { spec+: { hostPID: hostPID } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { spec+: { hostname: hostname } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { spec+: { nodeName: nodeName } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { spec+: { nodeSelector: nodeSelector } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { spec+: { nodeSelector+: nodeSelector } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { spec+: { priority: priority } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { spec+: { priorityClassName: priorityClassName } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { spec+: { restartPolicy: restartPolicy } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is an alpha feature and may change in the future.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { spec+: { runtimeClassName: runtimeClassName } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { spec+: { schedulerName: schedulerName } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { spec+: { serviceAccount: serviceAccount } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { spec+: { serviceAccountName: serviceAccountName } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false. This field is beta-level and may be disabled with the PodShareProcessNamespace feature.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { spec+: { shareProcessNamespace: shareProcessNamespace } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { spec+: { subdomain: subdomain } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/podAffinity.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/podAffinity.libsonnet deleted file mode 100644 index 58118df68970..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/podAffinity.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='podAffinity', url='', help='Pod affinity is a group of inter pod affinity scheduling rules.'), - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/podAffinityTerm.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/podAffinityTerm.libsonnet deleted file mode 100644 index b5b816e33b84..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/podAffinityTerm.libsonnet +++ /dev/null @@ -1,23 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='podAffinityTerm', url='', help='Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running'), - '#labelSelector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - labelSelector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { labelSelector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { labelSelector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { labelSelector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { labelSelector+: { matchLabels+: matchLabels } } - }, - '#withNamespaces':: d.fn(help="namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means 'this pod's namespace'", args=[d.arg(name='namespaces', type=d.T.array)]), - withNamespaces(namespaces): { namespaces: if std.isArray(v=namespaces) then namespaces else [namespaces] }, - '#withNamespacesMixin':: d.fn(help="namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means 'this pod's namespace'\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='namespaces', type=d.T.array)]), - withNamespacesMixin(namespaces): { namespaces+: if std.isArray(v=namespaces) then namespaces else [namespaces] }, - '#withTopologyKey':: d.fn(help='This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.', args=[d.arg(name='topologyKey', type=d.T.string)]), - withTopologyKey(topologyKey): { topologyKey: topologyKey }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/podAntiAffinity.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/podAntiAffinity.libsonnet deleted file mode 100644 index c7a0587556b8..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/podAntiAffinity.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='podAntiAffinity', url='', help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/podCondition.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/podCondition.libsonnet deleted file mode 100644 index 8df3ddd3ec08..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/podCondition.libsonnet +++ /dev/null @@ -1,16 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='podCondition', url='', help='PodCondition contains details for the current condition of this pod.'), - '#withLastProbeTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastProbeTime', type=d.T.string)]), - withLastProbeTime(lastProbeTime): { lastProbeTime: lastProbeTime }, - '#withLastTransitionTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastTransitionTime', type=d.T.string)]), - withLastTransitionTime(lastTransitionTime): { lastTransitionTime: lastTransitionTime }, - '#withMessage':: d.fn(help='Human-readable message indicating details about last transition.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withReason':: d.fn(help="Unique, one-word, CamelCase reason for the condition's last transition.", args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#withType':: d.fn(help='Type is the type of the condition. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/podDNSConfig.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/podDNSConfig.libsonnet deleted file mode 100644 index e14432487912..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/podDNSConfig.libsonnet +++ /dev/null @@ -1,18 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='podDNSConfig', url='', help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { options: if std.isArray(v=options) then options else [options] }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { options+: if std.isArray(v=options) then options else [options] }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { searches: if std.isArray(v=searches) then searches else [searches] }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { searches+: if std.isArray(v=searches) then searches else [searches] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/podDNSConfigOption.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/podDNSConfigOption.libsonnet deleted file mode 100644 index 7e45464c5651..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/podDNSConfigOption.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='podDNSConfigOption', url='', help='PodDNSConfigOption defines DNS resolver options of a pod.'), - '#withName':: d.fn(help='Required.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withValue':: d.fn(help='', args=[d.arg(name='value', type=d.T.string)]), - withValue(value): { value: value }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/podReadinessGate.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/podReadinessGate.libsonnet deleted file mode 100644 index b409338792e1..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/podReadinessGate.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='podReadinessGate', url='', help='PodReadinessGate contains the reference to a pod condition'), - '#withConditionType':: d.fn(help="ConditionType refers to a condition in the pod's condition list with matching type.", args=[d.arg(name='conditionType', type=d.T.string)]), - withConditionType(conditionType): { conditionType: conditionType }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/podSecurityContext.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/podSecurityContext.libsonnet deleted file mode 100644 index e46267ae7e10..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/podSecurityContext.libsonnet +++ /dev/null @@ -1,33 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='podSecurityContext', url='', help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { seLinuxOptions+: { level: level } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { seLinuxOptions+: { role: role } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { seLinuxOptions+: { type: type } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { seLinuxOptions+: { user: user } } - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { fsGroup: fsGroup }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { runAsGroup: runAsGroup }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { runAsNonRoot: runAsNonRoot }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { runAsUser: runAsUser }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/podSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/podSpec.libsonnet deleted file mode 100644 index 7a03ee29dee4..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/podSpec.libsonnet +++ /dev/null @@ -1,160 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='podSpec', url='', help='PodSpec is a description of a pod.'), - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } - } - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { securityContext+: { seLinuxOptions+: { level: level } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { securityContext+: { seLinuxOptions+: { role: role } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { securityContext+: { seLinuxOptions+: { type: type } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { securityContext+: { seLinuxOptions+: { user: user } } } - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { securityContext+: { fsGroup: fsGroup } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { securityContext+: { runAsGroup: runAsGroup } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { securityContext+: { runAsNonRoot: runAsNonRoot } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { securityContext+: { runAsUser: runAsUser } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { activeDeadlineSeconds: activeDeadlineSeconds }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { automountServiceAccountToken: automountServiceAccountToken }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { containers: if std.isArray(v=containers) then containers else [containers] }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { containers+: if std.isArray(v=containers) then containers else [containers] }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { dnsPolicy: dnsPolicy }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { enableServiceLinks: enableServiceLinks }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { hostIPC: hostIPC }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { hostNetwork: hostNetwork }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { hostPID: hostPID }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { hostname: hostname }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { nodeName: nodeName }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { nodeSelector: nodeSelector }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { nodeSelector+: nodeSelector }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { priority: priority }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { priorityClassName: priorityClassName }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { restartPolicy: restartPolicy }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is an alpha feature and may change in the future.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { runtimeClassName: runtimeClassName }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { schedulerName: schedulerName }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { serviceAccount: serviceAccount }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { serviceAccountName: serviceAccountName }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false. This field is beta-level and may be disabled with the PodShareProcessNamespace feature.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { shareProcessNamespace: shareProcessNamespace }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { subdomain: subdomain }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { terminationGracePeriodSeconds: terminationGracePeriodSeconds }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { volumes: if std.isArray(v=volumes) then volumes else [volumes] }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { volumes+: if std.isArray(v=volumes) then volumes else [volumes] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/podStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/podStatus.libsonnet deleted file mode 100644 index 56ded02b8c52..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/podStatus.libsonnet +++ /dev/null @@ -1,34 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='podStatus', url='', help='PodStatus represents information about the status of a pod. Status may trail the actual state of a system, especially if the node that hosts the pod cannot contact the control plane.'), - '#withConditions':: d.fn(help='Current service state of pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions', args=[d.arg(name='conditions', type=d.T.array)]), - withConditions(conditions): { conditions: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withConditionsMixin':: d.fn(help='Current service state of pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='conditions', type=d.T.array)]), - withConditionsMixin(conditions): { conditions+: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withContainerStatuses':: d.fn(help='The list has one entry per container in the manifest. Each entry is currently the output of `docker inspect`. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status', args=[d.arg(name='containerStatuses', type=d.T.array)]), - withContainerStatuses(containerStatuses): { containerStatuses: if std.isArray(v=containerStatuses) then containerStatuses else [containerStatuses] }, - '#withContainerStatusesMixin':: d.fn(help='The list has one entry per container in the manifest. Each entry is currently the output of `docker inspect`. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containerStatuses', type=d.T.array)]), - withContainerStatusesMixin(containerStatuses): { containerStatuses+: if std.isArray(v=containerStatuses) then containerStatuses else [containerStatuses] }, - '#withHostIP':: d.fn(help='IP address of the host to which the pod is assigned. Empty if not yet scheduled.', args=[d.arg(name='hostIP', type=d.T.string)]), - withHostIP(hostIP): { hostIP: hostIP }, - '#withInitContainerStatuses':: d.fn(help='The list has one entry per init container in the manifest. The most recent successful init container will have ready = true, the most recently started container will have startTime set. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status', args=[d.arg(name='initContainerStatuses', type=d.T.array)]), - withInitContainerStatuses(initContainerStatuses): { initContainerStatuses: if std.isArray(v=initContainerStatuses) then initContainerStatuses else [initContainerStatuses] }, - '#withInitContainerStatusesMixin':: d.fn(help='The list has one entry per init container in the manifest. The most recent successful init container will have ready = true, the most recently started container will have startTime set. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainerStatuses', type=d.T.array)]), - withInitContainerStatusesMixin(initContainerStatuses): { initContainerStatuses+: if std.isArray(v=initContainerStatuses) then initContainerStatuses else [initContainerStatuses] }, - '#withMessage':: d.fn(help='A human readable message indicating details about why the pod is in this condition.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withNominatedNodeName':: d.fn(help='nominatedNodeName is set only when this pod preempts other pods on the node, but it cannot be scheduled right away as preemption victims receive their graceful termination periods. This field does not guarantee that the pod will be scheduled on this node. Scheduler may decide to place the pod elsewhere if other nodes become available sooner. Scheduler may also decide to give the resources on this node to a higher priority pod that is created after preemption. As a result, this field may be different than PodSpec.nodeName when the pod is scheduled.', args=[d.arg(name='nominatedNodeName', type=d.T.string)]), - withNominatedNodeName(nominatedNodeName): { nominatedNodeName: nominatedNodeName }, - '#withPhase':: d.fn(help="The phase of a Pod is a simple, high-level summary of where the Pod is in its lifecycle. The conditions array, the reason and message fields, and the individual container status arrays contain more detail about the pod's status. There are five possible phase values:\n\nPending: The pod has been accepted by the Kubernetes system, but one or more of the container images has not been created. This includes time before being scheduled as well as time spent downloading images over the network, which could take a while. Running: The pod has been bound to a node, and all of the containers have been created. At least one container is still running, or is in the process of starting or restarting. Succeeded: All containers in the pod have terminated in success, and will not be restarted. Failed: All containers in the pod have terminated, and at least one container has terminated in failure. The container either exited with non-zero status or was terminated by the system. Unknown: For some reason the state of the pod could not be obtained, typically due to an error in communicating with the host of the pod.\n\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-phase", args=[d.arg(name='phase', type=d.T.string)]), - withPhase(phase): { phase: phase }, - '#withPodIP':: d.fn(help='IP address allocated to the pod. Routable at least within the cluster. Empty if not yet allocated.', args=[d.arg(name='podIP', type=d.T.string)]), - withPodIP(podIP): { podIP: podIP }, - '#withQosClass':: d.fn(help='The Quality of Service (QOS) classification assigned to the pod based on resource requirements See PodQOSClass type for available QOS classes More info: https://git.k8s.io/community/contributors/design-proposals/node/resource-qos.md', args=[d.arg(name='qosClass', type=d.T.string)]), - withQosClass(qosClass): { qosClass: qosClass }, - '#withReason':: d.fn(help="A brief CamelCase message indicating details about why the pod is in this state. e.g. 'Evicted'", args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#withStartTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='startTime', type=d.T.string)]), - withStartTime(startTime): { startTime: startTime }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/podTemplate.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/podTemplate.libsonnet deleted file mode 100644 index 1391e7fdf220..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/podTemplate.libsonnet +++ /dev/null @@ -1,335 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='podTemplate', url='', help='PodTemplate describes a template for creating copies of a predefined pod.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Podtemplate', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'v1', - kind: 'PodTemplate' - } + self.metadata.withName(name=name), - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { template+: { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { template+: { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { template+: { metadata+: { initializers+: { result+: { details+: { group: group } } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { template+: { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { template+: { metadata+: { initializers+: { result+: { details+: { name: name } } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { template+: { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { template+: { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { template+: { metadata+: { initializers+: { result+: { code: code } } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { template+: { metadata+: { initializers+: { result+: { kind: kind } } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { template+: { metadata+: { initializers+: { result+: { message: message } } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { template+: { metadata+: { initializers+: { result+: { metadata: metadata } } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { template+: { metadata+: { initializers+: { result+: { reason: reason } } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { template+: { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { template+: { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { template+: { metadata+: { annotations: annotations } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { template+: { metadata+: { annotations+: annotations } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { template+: { metadata+: { clusterName: clusterName } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { template+: { metadata+: { creationTimestamp: creationTimestamp } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { template+: { metadata+: { generateName: generateName } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { template+: { metadata+: { generation: generation } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { template+: { metadata+: { labels: labels } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { template+: { metadata+: { labels+: labels } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { template+: { metadata+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { template+: { metadata+: { namespace: namespace } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { template+: { metadata+: { resourceVersion: resourceVersion } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { template+: { metadata+: { selfLink: selfLink } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { template+: { metadata+: { uid: uid } } } - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } - } - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } } - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } } - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { template+: { spec+: { dnsPolicy: dnsPolicy } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { template+: { spec+: { enableServiceLinks: enableServiceLinks } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { template+: { spec+: { hostIPC: hostIPC } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { template+: { spec+: { hostNetwork: hostNetwork } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { template+: { spec+: { hostPID: hostPID } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { template+: { spec+: { hostname: hostname } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { template+: { spec+: { nodeName: nodeName } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { template+: { spec+: { nodeSelector: nodeSelector } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { template+: { spec+: { nodeSelector+: nodeSelector } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { template+: { spec+: { priority: priority } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { template+: { spec+: { priorityClassName: priorityClassName } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { template+: { spec+: { restartPolicy: restartPolicy } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is an alpha feature and may change in the future.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { template+: { spec+: { runtimeClassName: runtimeClassName } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { template+: { spec+: { schedulerName: schedulerName } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { template+: { spec+: { serviceAccount: serviceAccount } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { template+: { spec+: { serviceAccountName: serviceAccountName } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false. This field is beta-level and may be disabled with the PodShareProcessNamespace feature.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { template+: { spec+: { subdomain: subdomain } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } } - } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/podTemplateSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/podTemplateSpec.libsonnet deleted file mode 100644 index f8671f9a584a..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/podTemplateSpec.libsonnet +++ /dev/null @@ -1,245 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='podTemplateSpec', url='', help='PodTemplateSpec describes the data a pod should have when created from a template'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } - } - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { spec+: { securityContext+: { fsGroup: fsGroup } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { spec+: { securityContext+: { runAsGroup: runAsGroup } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { spec+: { securityContext+: { runAsUser: runAsUser } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { spec+: { automountServiceAccountToken: automountServiceAccountToken } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { spec+: { dnsPolicy: dnsPolicy } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { spec+: { enableServiceLinks: enableServiceLinks } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { spec+: { hostIPC: hostIPC } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { spec+: { hostNetwork: hostNetwork } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { spec+: { hostPID: hostPID } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { spec+: { hostname: hostname } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { spec+: { nodeName: nodeName } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { spec+: { nodeSelector: nodeSelector } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { spec+: { nodeSelector+: nodeSelector } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { spec+: { priority: priority } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { spec+: { priorityClassName: priorityClassName } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { spec+: { restartPolicy: restartPolicy } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is an alpha feature and may change in the future.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { spec+: { runtimeClassName: runtimeClassName } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { spec+: { schedulerName: schedulerName } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { spec+: { serviceAccount: serviceAccount } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { spec+: { serviceAccountName: serviceAccountName } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false. This field is beta-level and may be disabled with the PodShareProcessNamespace feature.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { spec+: { shareProcessNamespace: shareProcessNamespace } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { spec+: { subdomain: subdomain } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/portworxVolumeSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/portworxVolumeSource.libsonnet deleted file mode 100644 index 880eb12ead9c..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/portworxVolumeSource.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='portworxVolumeSource', url='', help='PortworxVolumeSource represents a Portworx volume resource.'), - '#withFsType':: d.fn(help='FSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { fsType: fsType }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#withVolumeID':: d.fn(help='VolumeID uniquely identifies a Portworx volume', args=[d.arg(name='volumeID', type=d.T.string)]), - withVolumeID(volumeID): { volumeID: volumeID }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/preferredSchedulingTerm.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/preferredSchedulingTerm.libsonnet deleted file mode 100644 index f6df22b735fa..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/preferredSchedulingTerm.libsonnet +++ /dev/null @@ -1,19 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='preferredSchedulingTerm', url='', help="An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op)."), - '#preference':: d.obj(help='A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.'), - preference: { - '#withMatchExpressions':: d.fn(help="A list of node selector requirements by node's labels.", args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { preference+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help="A list of node selector requirements by node's labels.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { preference+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchFields':: d.fn(help="A list of node selector requirements by node's fields.", args=[d.arg(name='matchFields', type=d.T.array)]), - withMatchFields(matchFields): { preference+: { matchFields: if std.isArray(v=matchFields) then matchFields else [matchFields] } }, - '#withMatchFieldsMixin':: d.fn(help="A list of node selector requirements by node's fields.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='matchFields', type=d.T.array)]), - withMatchFieldsMixin(matchFields): { preference+: { matchFields+: if std.isArray(v=matchFields) then matchFields else [matchFields] } } - }, - '#withWeight':: d.fn(help='Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.', args=[d.arg(name='weight', type=d.T.integer)]), - withWeight(weight): { weight: weight }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/probe.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/probe.libsonnet deleted file mode 100644 index c8849f8abdbf..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/probe.libsonnet +++ /dev/null @@ -1,45 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='probe', url='', help='Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.'), - '#exec':: d.obj(help='ExecAction describes a "run in container" action.'), - exec: { - '#withCommand':: d.fn(help="Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.", args=[d.arg(name='command', type=d.T.array)]), - withCommand(command): { exec+: { command: if std.isArray(v=command) then command else [command] } }, - '#withCommandMixin':: d.fn(help="Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='command', type=d.T.array)]), - withCommandMixin(command): { exec+: { command+: if std.isArray(v=command) then command else [command] } } - }, - '#httpGet':: d.obj(help='HTTPGetAction describes an action based on HTTP Get requests.'), - httpGet: { - '#withHost':: d.fn(help='Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { httpGet+: { host: host } }, - '#withHttpHeaders':: d.fn(help='Custom headers to set in the request. HTTP allows repeated headers.', args=[d.arg(name='httpHeaders', type=d.T.array)]), - withHttpHeaders(httpHeaders): { httpGet+: { httpHeaders: if std.isArray(v=httpHeaders) then httpHeaders else [httpHeaders] } }, - '#withHttpHeadersMixin':: d.fn(help='Custom headers to set in the request. HTTP allows repeated headers.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='httpHeaders', type=d.T.array)]), - withHttpHeadersMixin(httpHeaders): { httpGet+: { httpHeaders+: if std.isArray(v=httpHeaders) then httpHeaders else [httpHeaders] } }, - '#withPath':: d.fn(help='Path to access on the HTTP server.', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { httpGet+: { path: path } }, - '#withPort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='port', type=d.T.string)]), - withPort(port): { httpGet+: { port: port } }, - '#withScheme':: d.fn(help='Scheme to use for connecting to the host. Defaults to HTTP.', args=[d.arg(name='scheme', type=d.T.string)]), - withScheme(scheme): { httpGet+: { scheme: scheme } } - }, - '#tcpSocket':: d.obj(help='TCPSocketAction describes an action based on opening a socket'), - tcpSocket: { - '#withHost':: d.fn(help='Optional: Host name to connect to, defaults to the pod IP.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { tcpSocket+: { host: host } }, - '#withPort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='port', type=d.T.string)]), - withPort(port): { tcpSocket+: { port: port } } - }, - '#withFailureThreshold':: d.fn(help='Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.', args=[d.arg(name='failureThreshold', type=d.T.integer)]), - withFailureThreshold(failureThreshold): { failureThreshold: failureThreshold }, - '#withInitialDelaySeconds':: d.fn(help='Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes', args=[d.arg(name='initialDelaySeconds', type=d.T.integer)]), - withInitialDelaySeconds(initialDelaySeconds): { initialDelaySeconds: initialDelaySeconds }, - '#withPeriodSeconds':: d.fn(help='How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.', args=[d.arg(name='periodSeconds', type=d.T.integer)]), - withPeriodSeconds(periodSeconds): { periodSeconds: periodSeconds }, - '#withSuccessThreshold':: d.fn(help='Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1.', args=[d.arg(name='successThreshold', type=d.T.integer)]), - withSuccessThreshold(successThreshold): { successThreshold: successThreshold }, - '#withTimeoutSeconds':: d.fn(help='Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes', args=[d.arg(name='timeoutSeconds', type=d.T.integer)]), - withTimeoutSeconds(timeoutSeconds): { timeoutSeconds: timeoutSeconds }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/projectedVolumeSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/projectedVolumeSource.libsonnet deleted file mode 100644 index 513447ae7c8a..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/projectedVolumeSource.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='projectedVolumeSource', url='', help='Represents a projected volume source'), - '#withDefaultMode':: d.fn(help='Mode bits to use on created files by default. Must be a value between 0 and 0777. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.', args=[d.arg(name='defaultMode', type=d.T.integer)]), - withDefaultMode(defaultMode): { defaultMode: defaultMode }, - '#withSources':: d.fn(help='list of volume projections', args=[d.arg(name='sources', type=d.T.array)]), - withSources(sources): { sources: if std.isArray(v=sources) then sources else [sources] }, - '#withSourcesMixin':: d.fn(help='list of volume projections\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sources', type=d.T.array)]), - withSourcesMixin(sources): { sources+: if std.isArray(v=sources) then sources else [sources] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/quobyteVolumeSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/quobyteVolumeSource.libsonnet deleted file mode 100644 index 4582746e2731..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/quobyteVolumeSource.libsonnet +++ /dev/null @@ -1,18 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='quobyteVolumeSource', url='', help='Represents a Quobyte mount that lasts the lifetime of a pod. Quobyte volumes do not support ownership management or SELinux relabeling.'), - '#withGroup':: d.fn(help='Group to map volume access to Default is no group', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { group: group }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#withRegistry':: d.fn(help='Registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes', args=[d.arg(name='registry', type=d.T.string)]), - withRegistry(registry): { registry: registry }, - '#withTenant':: d.fn(help='Tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin', args=[d.arg(name='tenant', type=d.T.string)]), - withTenant(tenant): { tenant: tenant }, - '#withUser':: d.fn(help='User to map volume access to Defaults to serivceaccount user', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { user: user }, - '#withVolume':: d.fn(help='Volume is a string that references an already created Quobyte volume by name.', args=[d.arg(name='volume', type=d.T.string)]), - withVolume(volume): { volume: volume }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/rbdPersistentVolumeSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/rbdPersistentVolumeSource.libsonnet deleted file mode 100644 index b851df709c2e..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/rbdPersistentVolumeSource.libsonnet +++ /dev/null @@ -1,29 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='rbdPersistentVolumeSource', url='', help='Represents a Rados Block Device mount that lasts the lifetime of a pod. RBD volumes support ownership management and SELinux relabeling.'), - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { secretRef+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { secretRef+: { namespace: namespace } } - }, - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { fsType: fsType }, - '#withImage':: d.fn(help='The rados image name. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='image', type=d.T.string)]), - withImage(image): { image: image }, - '#withKeyring':: d.fn(help='Keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='keyring', type=d.T.string)]), - withKeyring(keyring): { keyring: keyring }, - '#withMonitors':: d.fn(help='A collection of Ceph monitors. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitors(monitors): { monitors: if std.isArray(v=monitors) then monitors else [monitors] }, - '#withMonitorsMixin':: d.fn(help='A collection of Ceph monitors. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitorsMixin(monitors): { monitors+: if std.isArray(v=monitors) then monitors else [monitors] }, - '#withPool':: d.fn(help='The rados pool name. Default is rbd. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='pool', type=d.T.string)]), - withPool(pool): { pool: pool }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#withUser':: d.fn(help='The rados user name. Default is admin. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { user: user }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/rbdVolumeSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/rbdVolumeSource.libsonnet deleted file mode 100644 index 9dc4dcb379aa..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/rbdVolumeSource.libsonnet +++ /dev/null @@ -1,27 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='rbdVolumeSource', url='', help='Represents a Rados Block Device mount that lasts the lifetime of a pod. RBD volumes support ownership management and SELinux relabeling.'), - '#secretRef':: d.obj(help='LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.'), - secretRef: { - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { secretRef+: { name: name } } - }, - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { fsType: fsType }, - '#withImage':: d.fn(help='The rados image name. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='image', type=d.T.string)]), - withImage(image): { image: image }, - '#withKeyring':: d.fn(help='Keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='keyring', type=d.T.string)]), - withKeyring(keyring): { keyring: keyring }, - '#withMonitors':: d.fn(help='A collection of Ceph monitors. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitors(monitors): { monitors: if std.isArray(v=monitors) then monitors else [monitors] }, - '#withMonitorsMixin':: d.fn(help='A collection of Ceph monitors. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitorsMixin(monitors): { monitors+: if std.isArray(v=monitors) then monitors else [monitors] }, - '#withPool':: d.fn(help='The rados pool name. Default is rbd. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='pool', type=d.T.string)]), - withPool(pool): { pool: pool }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#withUser':: d.fn(help='The rados user name. Default is admin. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { user: user }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/replicationController.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/replicationController.libsonnet deleted file mode 100644 index fc4467adeb51..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/replicationController.libsonnet +++ /dev/null @@ -1,346 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='replicationController', url='', help='ReplicationController represents the configuration of a replication controller.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Replicationcontroller', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'v1', - kind: 'ReplicationController' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='ReplicationControllerSpec is the specification of a replication controller.'), - spec: { - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { group: group } } } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { name: name } } } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { spec+: { template+: { metadata+: { initializers+: { result+: { code: code } } } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { template+: { metadata+: { initializers+: { result+: { kind: kind } } } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { spec+: { template+: { metadata+: { initializers+: { result+: { message: message } } } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { spec+: { template+: { metadata+: { initializers+: { result+: { metadata: metadata } } } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { spec+: { template+: { metadata+: { initializers+: { result+: { reason: reason } } } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { spec+: { template+: { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { spec+: { template+: { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { spec+: { template+: { metadata+: { annotations: annotations } } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { spec+: { template+: { metadata+: { annotations+: annotations } } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { spec+: { template+: { metadata+: { clusterName: clusterName } } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { spec+: { template+: { metadata+: { creationTimestamp: creationTimestamp } } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { spec+: { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { spec+: { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { spec+: { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { spec+: { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { spec+: { template+: { metadata+: { generateName: generateName } } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { spec+: { template+: { metadata+: { generation: generation } } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { spec+: { template+: { metadata+: { labels: labels } } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { spec+: { template+: { metadata+: { labels+: labels } } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { spec+: { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { spec+: { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { template+: { metadata+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { template+: { metadata+: { namespace: namespace } } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { spec+: { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { spec+: { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { spec+: { template+: { metadata+: { resourceVersion: resourceVersion } } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { spec+: { template+: { metadata+: { selfLink: selfLink } } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { template+: { metadata+: { uid: uid } } } } - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } } - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } - } - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { spec+: { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { spec+: { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { spec+: { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { spec+: { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { spec+: { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { spec+: { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } } } - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } } } - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { spec+: { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { spec+: { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { spec+: { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { spec+: { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { spec+: { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { spec+: { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { spec+: { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { spec+: { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } } - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { spec+: { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { spec+: { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { spec+: { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { spec+: { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { spec+: { template+: { spec+: { dnsPolicy: dnsPolicy } } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { spec+: { template+: { spec+: { enableServiceLinks: enableServiceLinks } } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { spec+: { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { spec+: { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { spec+: { template+: { spec+: { hostIPC: hostIPC } } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { spec+: { template+: { spec+: { hostNetwork: hostNetwork } } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { spec+: { template+: { spec+: { hostPID: hostPID } } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { spec+: { template+: { spec+: { hostname: hostname } } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { spec+: { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { spec+: { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { spec+: { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { spec+: { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { spec+: { template+: { spec+: { nodeName: nodeName } } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { spec+: { template+: { spec+: { nodeSelector: nodeSelector } } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { spec+: { template+: { spec+: { nodeSelector+: nodeSelector } } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { spec+: { template+: { spec+: { priority: priority } } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { spec+: { template+: { spec+: { priorityClassName: priorityClassName } } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { spec+: { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { spec+: { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { spec+: { template+: { spec+: { restartPolicy: restartPolicy } } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is an alpha feature and may change in the future.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { spec+: { template+: { spec+: { runtimeClassName: runtimeClassName } } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { spec+: { template+: { spec+: { schedulerName: schedulerName } } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { spec+: { template+: { spec+: { serviceAccount: serviceAccount } } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { spec+: { template+: { spec+: { serviceAccountName: serviceAccountName } } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false. This field is beta-level and may be disabled with the PodShareProcessNamespace feature.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { spec+: { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { spec+: { template+: { spec+: { subdomain: subdomain } } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { spec+: { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { spec+: { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { spec+: { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { spec+: { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { spec+: { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } } } - } - }, - '#withMinReadySeconds':: d.fn(help='Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)', args=[d.arg(name='minReadySeconds', type=d.T.integer)]), - withMinReadySeconds(minReadySeconds): { spec+: { minReadySeconds: minReadySeconds } }, - '#withReplicas':: d.fn(help='Replicas is the number of desired replicas. This is a pointer to distinguish between explicit zero and unspecified. Defaults to 1. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { spec+: { replicas: replicas } }, - '#withSelector':: d.fn(help='Selector is a label query over pods that should match the Replicas count. If Selector is empty, it is defaulted to the labels present on the Pod template. Label keys and values that must match in order to be controlled by this replication controller, if empty defaulted to labels on Pod template. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors', args=[d.arg(name='selector', type=d.T.object)]), - withSelector(selector): { spec+: { selector: selector } }, - '#withSelectorMixin':: d.fn(help='Selector is a label query over pods that should match the Replicas count. If Selector is empty, it is defaulted to the labels present on the Pod template. Label keys and values that must match in order to be controlled by this replication controller, if empty defaulted to labels on Pod template. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='selector', type=d.T.object)]), - withSelectorMixin(selector): { spec+: { selector+: selector } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/replicationControllerCondition.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/replicationControllerCondition.libsonnet deleted file mode 100644 index f38410129cc9..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/replicationControllerCondition.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='replicationControllerCondition', url='', help='ReplicationControllerCondition describes the state of a replication controller at a certain point.'), - '#withLastTransitionTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastTransitionTime', type=d.T.string)]), - withLastTransitionTime(lastTransitionTime): { lastTransitionTime: lastTransitionTime }, - '#withMessage':: d.fn(help='A human readable message indicating details about the transition.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withReason':: d.fn(help="The reason for the condition's last transition.", args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#withType':: d.fn(help='Type of replication controller condition.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/replicationControllerSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/replicationControllerSpec.libsonnet deleted file mode 100644 index 4bd2e25f1078..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/replicationControllerSpec.libsonnet +++ /dev/null @@ -1,256 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='replicationControllerSpec', url='', help='ReplicationControllerSpec is the specification of a replication controller.'), - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { template+: { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { template+: { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { template+: { metadata+: { initializers+: { result+: { details+: { group: group } } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { template+: { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { template+: { metadata+: { initializers+: { result+: { details+: { name: name } } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { template+: { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { template+: { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { template+: { metadata+: { initializers+: { result+: { code: code } } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { template+: { metadata+: { initializers+: { result+: { kind: kind } } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { template+: { metadata+: { initializers+: { result+: { message: message } } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { template+: { metadata+: { initializers+: { result+: { metadata: metadata } } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { template+: { metadata+: { initializers+: { result+: { reason: reason } } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { template+: { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { template+: { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { template+: { metadata+: { annotations: annotations } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { template+: { metadata+: { annotations+: annotations } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { template+: { metadata+: { clusterName: clusterName } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { template+: { metadata+: { creationTimestamp: creationTimestamp } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { template+: { metadata+: { generateName: generateName } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { template+: { metadata+: { generation: generation } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { template+: { metadata+: { labels: labels } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { template+: { metadata+: { labels+: labels } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { template+: { metadata+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { template+: { metadata+: { namespace: namespace } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { template+: { metadata+: { resourceVersion: resourceVersion } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { template+: { metadata+: { selfLink: selfLink } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { template+: { metadata+: { uid: uid } } } - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } - } - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } } - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } } - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { template+: { spec+: { dnsPolicy: dnsPolicy } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { template+: { spec+: { enableServiceLinks: enableServiceLinks } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { template+: { spec+: { hostIPC: hostIPC } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { template+: { spec+: { hostNetwork: hostNetwork } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { template+: { spec+: { hostPID: hostPID } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { template+: { spec+: { hostname: hostname } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { template+: { spec+: { nodeName: nodeName } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { template+: { spec+: { nodeSelector: nodeSelector } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { template+: { spec+: { nodeSelector+: nodeSelector } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { template+: { spec+: { priority: priority } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { template+: { spec+: { priorityClassName: priorityClassName } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { template+: { spec+: { restartPolicy: restartPolicy } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is an alpha feature and may change in the future.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { template+: { spec+: { runtimeClassName: runtimeClassName } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { template+: { spec+: { schedulerName: schedulerName } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { template+: { spec+: { serviceAccount: serviceAccount } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { template+: { spec+: { serviceAccountName: serviceAccountName } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false. This field is beta-level and may be disabled with the PodShareProcessNamespace feature.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { template+: { spec+: { subdomain: subdomain } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } } - } - }, - '#withMinReadySeconds':: d.fn(help='Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)', args=[d.arg(name='minReadySeconds', type=d.T.integer)]), - withMinReadySeconds(minReadySeconds): { minReadySeconds: minReadySeconds }, - '#withReplicas':: d.fn(help='Replicas is the number of desired replicas. This is a pointer to distinguish between explicit zero and unspecified. Defaults to 1. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { replicas: replicas }, - '#withSelector':: d.fn(help='Selector is a label query over pods that should match the Replicas count. If Selector is empty, it is defaulted to the labels present on the Pod template. Label keys and values that must match in order to be controlled by this replication controller, if empty defaulted to labels on Pod template. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors', args=[d.arg(name='selector', type=d.T.object)]), - withSelector(selector): { selector: selector }, - '#withSelectorMixin':: d.fn(help='Selector is a label query over pods that should match the Replicas count. If Selector is empty, it is defaulted to the labels present on the Pod template. Label keys and values that must match in order to be controlled by this replication controller, if empty defaulted to labels on Pod template. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='selector', type=d.T.object)]), - withSelectorMixin(selector): { selector+: selector }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/replicationControllerStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/replicationControllerStatus.libsonnet deleted file mode 100644 index b9e4e32cf8f5..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/replicationControllerStatus.libsonnet +++ /dev/null @@ -1,20 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='replicationControllerStatus', url='', help='ReplicationControllerStatus represents the current status of a replication controller.'), - '#withAvailableReplicas':: d.fn(help='The number of available replicas (ready for at least minReadySeconds) for this replication controller.', args=[d.arg(name='availableReplicas', type=d.T.integer)]), - withAvailableReplicas(availableReplicas): { availableReplicas: availableReplicas }, - '#withConditions':: d.fn(help="Represents the latest available observations of a replication controller's current state.", args=[d.arg(name='conditions', type=d.T.array)]), - withConditions(conditions): { conditions: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withConditionsMixin':: d.fn(help="Represents the latest available observations of a replication controller's current state.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='conditions', type=d.T.array)]), - withConditionsMixin(conditions): { conditions+: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withFullyLabeledReplicas':: d.fn(help='The number of pods that have labels matching the labels of the pod template of the replication controller.', args=[d.arg(name='fullyLabeledReplicas', type=d.T.integer)]), - withFullyLabeledReplicas(fullyLabeledReplicas): { fullyLabeledReplicas: fullyLabeledReplicas }, - '#withObservedGeneration':: d.fn(help='ObservedGeneration reflects the generation of the most recently observed replication controller.', args=[d.arg(name='observedGeneration', type=d.T.integer)]), - withObservedGeneration(observedGeneration): { observedGeneration: observedGeneration }, - '#withReadyReplicas':: d.fn(help='The number of ready replicas for this replication controller.', args=[d.arg(name='readyReplicas', type=d.T.integer)]), - withReadyReplicas(readyReplicas): { readyReplicas: readyReplicas }, - '#withReplicas':: d.fn(help='Replicas is the most recently oberved number of replicas. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { replicas: replicas }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/resourceFieldSelector.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/resourceFieldSelector.libsonnet deleted file mode 100644 index 96a2fcd7c960..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/resourceFieldSelector.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='resourceFieldSelector', url='', help='ResourceFieldSelector represents container resources (cpu, memory) and their output format'), - '#withContainerName':: d.fn(help='Container name: required for volumes, optional for env vars', args=[d.arg(name='containerName', type=d.T.string)]), - withContainerName(containerName): { containerName: containerName }, - '#withDivisor':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='divisor', type=d.T.string)]), - withDivisor(divisor): { divisor: divisor }, - '#withResource':: d.fn(help='Required: resource to select', args=[d.arg(name='resource', type=d.T.string)]), - withResource(resource): { resource: resource }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/resourceQuota.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/resourceQuota.libsonnet deleted file mode 100644 index 4dbb47c9836a..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/resourceQuota.libsonnet +++ /dev/null @@ -1,111 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='resourceQuota', url='', help='ResourceQuota sets aggregate quota restrictions enforced per namespace'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Resourcequota', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'v1', - kind: 'ResourceQuota' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='ResourceQuotaSpec defines the desired hard limits to enforce for Quota.'), - spec: { - '#scopeSelector':: d.obj(help='A scope selector represents the AND of the selectors represented by the scoped-resource selector requirements.'), - scopeSelector: { - '#withMatchExpressions':: d.fn(help='A list of scope selector requirements by scope of the resources.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { spec+: { scopeSelector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='A list of scope selector requirements by scope of the resources.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { spec+: { scopeSelector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } } - }, - '#withHard':: d.fn(help='hard is the set of desired hard limits for each named resource. More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/', args=[d.arg(name='hard', type=d.T.object)]), - withHard(hard): { spec+: { hard: hard } }, - '#withHardMixin':: d.fn(help='hard is the set of desired hard limits for each named resource. More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='hard', type=d.T.object)]), - withHardMixin(hard): { spec+: { hard+: hard } }, - '#withScopes':: d.fn(help='A collection of filters that must match each object tracked by a quota. If not specified, the quota matches all objects.', args=[d.arg(name='scopes', type=d.T.array)]), - withScopes(scopes): { spec+: { scopes: if std.isArray(v=scopes) then scopes else [scopes] } }, - '#withScopesMixin':: d.fn(help='A collection of filters that must match each object tracked by a quota. If not specified, the quota matches all objects.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='scopes', type=d.T.array)]), - withScopesMixin(scopes): { spec+: { scopes+: if std.isArray(v=scopes) then scopes else [scopes] } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/resourceQuotaSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/resourceQuotaSpec.libsonnet deleted file mode 100644 index 5bd53363cb32..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/resourceQuotaSpec.libsonnet +++ /dev/null @@ -1,21 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='resourceQuotaSpec', url='', help='ResourceQuotaSpec defines the desired hard limits to enforce for Quota.'), - '#scopeSelector':: d.obj(help='A scope selector represents the AND of the selectors represented by the scoped-resource selector requirements.'), - scopeSelector: { - '#withMatchExpressions':: d.fn(help='A list of scope selector requirements by scope of the resources.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { scopeSelector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='A list of scope selector requirements by scope of the resources.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { scopeSelector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } - }, - '#withHard':: d.fn(help='hard is the set of desired hard limits for each named resource. More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/', args=[d.arg(name='hard', type=d.T.object)]), - withHard(hard): { hard: hard }, - '#withHardMixin':: d.fn(help='hard is the set of desired hard limits for each named resource. More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='hard', type=d.T.object)]), - withHardMixin(hard): { hard+: hard }, - '#withScopes':: d.fn(help='A collection of filters that must match each object tracked by a quota. If not specified, the quota matches all objects.', args=[d.arg(name='scopes', type=d.T.array)]), - withScopes(scopes): { scopes: if std.isArray(v=scopes) then scopes else [scopes] }, - '#withScopesMixin':: d.fn(help='A collection of filters that must match each object tracked by a quota. If not specified, the quota matches all objects.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='scopes', type=d.T.array)]), - withScopesMixin(scopes): { scopes+: if std.isArray(v=scopes) then scopes else [scopes] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/resourceQuotaStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/resourceQuotaStatus.libsonnet deleted file mode 100644 index 46e3e98eecae..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/resourceQuotaStatus.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='resourceQuotaStatus', url='', help='ResourceQuotaStatus defines the enforced hard limits and observed use.'), - '#withHard':: d.fn(help='Hard is the set of enforced hard limits for each named resource. More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/', args=[d.arg(name='hard', type=d.T.object)]), - withHard(hard): { hard: hard }, - '#withHardMixin':: d.fn(help='Hard is the set of enforced hard limits for each named resource. More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='hard', type=d.T.object)]), - withHardMixin(hard): { hard+: hard }, - '#withUsed':: d.fn(help='Used is the current observed total usage of the resource in the namespace.', args=[d.arg(name='used', type=d.T.object)]), - withUsed(used): { used: used }, - '#withUsedMixin':: d.fn(help='Used is the current observed total usage of the resource in the namespace.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='used', type=d.T.object)]), - withUsedMixin(used): { used+: used }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/resourceRequirements.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/resourceRequirements.libsonnet deleted file mode 100644 index 6cd87e4cd5ff..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/resourceRequirements.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='resourceRequirements', url='', help='ResourceRequirements describes the compute resource requirements.'), - '#withLimits':: d.fn(help='Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/', args=[d.arg(name='limits', type=d.T.object)]), - withLimits(limits): { limits: limits }, - '#withLimitsMixin':: d.fn(help='Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='limits', type=d.T.object)]), - withLimitsMixin(limits): { limits+: limits }, - '#withRequests':: d.fn(help='Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/', args=[d.arg(name='requests', type=d.T.object)]), - withRequests(requests): { requests: requests }, - '#withRequestsMixin':: d.fn(help='Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requests', type=d.T.object)]), - withRequestsMixin(requests): { requests+: requests }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/scaleIOPersistentVolumeSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/scaleIOPersistentVolumeSource.libsonnet deleted file mode 100644 index 70417fa2a0a1..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/scaleIOPersistentVolumeSource.libsonnet +++ /dev/null @@ -1,31 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='scaleIOPersistentVolumeSource', url='', help='ScaleIOPersistentVolumeSource represents a persistent ScaleIO volume'), - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { secretRef+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { secretRef+: { namespace: namespace } } - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Default is "xfs"', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { fsType: fsType }, - '#withGateway':: d.fn(help='The host address of the ScaleIO API Gateway.', args=[d.arg(name='gateway', type=d.T.string)]), - withGateway(gateway): { gateway: gateway }, - '#withProtectionDomain':: d.fn(help='The name of the ScaleIO Protection Domain for the configured storage.', args=[d.arg(name='protectionDomain', type=d.T.string)]), - withProtectionDomain(protectionDomain): { protectionDomain: protectionDomain }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#withSslEnabled':: d.fn(help='Flag to enable/disable SSL communication with Gateway, default false', args=[d.arg(name='sslEnabled', type=d.T.boolean)]), - withSslEnabled(sslEnabled): { sslEnabled: sslEnabled }, - '#withStorageMode':: d.fn(help='Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.', args=[d.arg(name='storageMode', type=d.T.string)]), - withStorageMode(storageMode): { storageMode: storageMode }, - '#withStoragePool':: d.fn(help='The ScaleIO Storage Pool associated with the protection domain.', args=[d.arg(name='storagePool', type=d.T.string)]), - withStoragePool(storagePool): { storagePool: storagePool }, - '#withSystem':: d.fn(help='The name of the storage system as configured in ScaleIO.', args=[d.arg(name='system', type=d.T.string)]), - withSystem(system): { system: system }, - '#withVolumeName':: d.fn(help='The name of a volume already created in the ScaleIO system that is associated with this volume source.', args=[d.arg(name='volumeName', type=d.T.string)]), - withVolumeName(volumeName): { volumeName: volumeName }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/scaleIOVolumeSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/scaleIOVolumeSource.libsonnet deleted file mode 100644 index db2eee8a8ee6..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/scaleIOVolumeSource.libsonnet +++ /dev/null @@ -1,29 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='scaleIOVolumeSource', url='', help='ScaleIOVolumeSource represents a persistent ScaleIO volume'), - '#secretRef':: d.obj(help='LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.'), - secretRef: { - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { secretRef+: { name: name } } - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Default is "xfs".', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { fsType: fsType }, - '#withGateway':: d.fn(help='The host address of the ScaleIO API Gateway.', args=[d.arg(name='gateway', type=d.T.string)]), - withGateway(gateway): { gateway: gateway }, - '#withProtectionDomain':: d.fn(help='The name of the ScaleIO Protection Domain for the configured storage.', args=[d.arg(name='protectionDomain', type=d.T.string)]), - withProtectionDomain(protectionDomain): { protectionDomain: protectionDomain }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#withSslEnabled':: d.fn(help='Flag to enable/disable SSL communication with Gateway, default false', args=[d.arg(name='sslEnabled', type=d.T.boolean)]), - withSslEnabled(sslEnabled): { sslEnabled: sslEnabled }, - '#withStorageMode':: d.fn(help='Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.', args=[d.arg(name='storageMode', type=d.T.string)]), - withStorageMode(storageMode): { storageMode: storageMode }, - '#withStoragePool':: d.fn(help='The ScaleIO Storage Pool associated with the protection domain.', args=[d.arg(name='storagePool', type=d.T.string)]), - withStoragePool(storagePool): { storagePool: storagePool }, - '#withSystem':: d.fn(help='The name of the storage system as configured in ScaleIO.', args=[d.arg(name='system', type=d.T.string)]), - withSystem(system): { system: system }, - '#withVolumeName':: d.fn(help='The name of a volume already created in the ScaleIO system that is associated with this volume source.', args=[d.arg(name='volumeName', type=d.T.string)]), - withVolumeName(volumeName): { volumeName: volumeName }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/scopeSelector.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/scopeSelector.libsonnet deleted file mode 100644 index 49b21801d6ec..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/scopeSelector.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='scopeSelector', url='', help='A scope selector represents the AND of the selectors represented by the scoped-resource selector requirements.'), - '#withMatchExpressions':: d.fn(help='A list of scope selector requirements by scope of the resources.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] }, - '#withMatchExpressionsMixin':: d.fn(help='A list of scope selector requirements by scope of the resources.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/scopedResourceSelectorRequirement.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/scopedResourceSelectorRequirement.libsonnet deleted file mode 100644 index ceb5a2f4d5aa..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/scopedResourceSelectorRequirement.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='scopedResourceSelectorRequirement', url='', help='A scoped-resource selector requirement is a selector that contains values, a scope name, and an operator that relates the scope name and values.'), - '#withOperator':: d.fn(help="Represents a scope's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist.", args=[d.arg(name='operator', type=d.T.string)]), - withOperator(operator): { operator: operator }, - '#withScopeName':: d.fn(help='The name of the scope that the selector applies to.', args=[d.arg(name='scopeName', type=d.T.string)]), - withScopeName(scopeName): { scopeName: scopeName }, - '#withValues':: d.fn(help='An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.', args=[d.arg(name='values', type=d.T.array)]), - withValues(values): { values: if std.isArray(v=values) then values else [values] }, - '#withValuesMixin':: d.fn(help='An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='values', type=d.T.array)]), - withValuesMixin(values): { values+: if std.isArray(v=values) then values else [values] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/seLinuxOptions.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/seLinuxOptions.libsonnet deleted file mode 100644 index f0842c816103..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/seLinuxOptions.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='seLinuxOptions', url='', help='SELinuxOptions are the labels to be applied to the container'), - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { level: level }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { role: role }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { user: user }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/secret.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/secret.libsonnet deleted file mode 100644 index a2fb4e0974b3..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/secret.libsonnet +++ /dev/null @@ -1,103 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='secret', url='', help='Secret holds secret data of a certain type. The total bytes of the values in the Data field must be less than MaxSecretSize bytes.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Secret', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'v1', - kind: 'Secret' - } + self.metadata.withName(name=name), - '#withData':: d.fn(help="Data contains the secret data. Each key must consist of alphanumeric characters, '-', '_' or '.'. The serialized form of the secret data is a base64 encoded string, representing the arbitrary (possibly non-string) data value here. Described in https://tools.ietf.org/html/rfc4648#section-4", args=[d.arg(name='data', type=d.T.object)]), - withData(data): { data: data }, - '#withDataMixin':: d.fn(help="Data contains the secret data. Each key must consist of alphanumeric characters, '-', '_' or '.'. The serialized form of the secret data is a base64 encoded string, representing the arbitrary (possibly non-string) data value here. Described in https://tools.ietf.org/html/rfc4648#section-4\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='data', type=d.T.object)]), - withDataMixin(data): { data+: data }, - '#withStringData':: d.fn(help='stringData allows specifying non-binary secret data in string form. It is provided as a write-only convenience method. All keys and values are merged into the data field on write, overwriting any existing values. It is never output when reading from the API.', args=[d.arg(name='stringData', type=d.T.object)]), - withStringData(stringData): { stringData: stringData }, - '#withStringDataMixin':: d.fn(help='stringData allows specifying non-binary secret data in string form. It is provided as a write-only convenience method. All keys and values are merged into the data field on write, overwriting any existing values. It is never output when reading from the API.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='stringData', type=d.T.object)]), - withStringDataMixin(stringData): { stringData+: stringData }, - '#withType':: d.fn(help='Used to facilitate programmatic handling of secret data.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/secretEnvSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/secretEnvSource.libsonnet deleted file mode 100644 index b0f84065feca..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/secretEnvSource.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='secretEnvSource', url='', help="SecretEnvSource selects a Secret to populate the environment variables with.\n\nThe contents of the target Secret's Data field will represent the key-value pairs as environment variables."), - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withOptional':: d.fn(help='Specify whether the Secret must be defined', args=[d.arg(name='optional', type=d.T.boolean)]), - withOptional(optional): { optional: optional }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/secretKeySelector.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/secretKeySelector.libsonnet deleted file mode 100644 index 0b189ec88c79..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/secretKeySelector.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='secretKeySelector', url='', help='SecretKeySelector selects a key of a Secret.'), - '#withKey':: d.fn(help='The key of the secret to select from. Must be a valid secret key.', args=[d.arg(name='key', type=d.T.string)]), - withKey(key): { key: key }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withOptional':: d.fn(help="Specify whether the Secret or it's key must be defined", args=[d.arg(name='optional', type=d.T.boolean)]), - withOptional(optional): { optional: optional }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/secretProjection.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/secretProjection.libsonnet deleted file mode 100644 index 86588ae4aa80..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/secretProjection.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='secretProjection', url='', help="Adapts a secret into a projected volume.\n\nThe contents of the target Secret's Data field will be presented in a projected volume as files using the keys in the Data field as the file names. Note that this is identical to a secret volume source without the default mode."), - '#withItems':: d.fn(help="If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.", args=[d.arg(name='items', type=d.T.array)]), - withItems(items): { items: if std.isArray(v=items) then items else [items] }, - '#withItemsMixin':: d.fn(help="If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='items', type=d.T.array)]), - withItemsMixin(items): { items+: if std.isArray(v=items) then items else [items] }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withOptional':: d.fn(help='Specify whether the Secret or its key must be defined', args=[d.arg(name='optional', type=d.T.boolean)]), - withOptional(optional): { optional: optional }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/secretReference.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/secretReference.libsonnet deleted file mode 100644 index e22fda3ce64e..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/secretReference.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='secretReference', url='', help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { namespace: namespace }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/secretVolumeSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/secretVolumeSource.libsonnet deleted file mode 100644 index 0633ef9aa8c3..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/secretVolumeSource.libsonnet +++ /dev/null @@ -1,16 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='secretVolumeSource', url='', help="Adapts a Secret into a volume.\n\nThe contents of the target Secret's Data field will be presented in a volume as files using the keys in the Data field as the file names. Secret volumes support ownership management and SELinux relabeling."), - '#withDefaultMode':: d.fn(help='Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.', args=[d.arg(name='defaultMode', type=d.T.integer)]), - withDefaultMode(defaultMode): { defaultMode: defaultMode }, - '#withItems':: d.fn(help="If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.", args=[d.arg(name='items', type=d.T.array)]), - withItems(items): { items: if std.isArray(v=items) then items else [items] }, - '#withItemsMixin':: d.fn(help="If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='items', type=d.T.array)]), - withItemsMixin(items): { items+: if std.isArray(v=items) then items else [items] }, - '#withOptional':: d.fn(help="Specify whether the Secret or it's keys must be defined", args=[d.arg(name='optional', type=d.T.boolean)]), - withOptional(optional): { optional: optional }, - '#withSecretName':: d.fn(help="Name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret", args=[d.arg(name='secretName', type=d.T.string)]), - withSecretName(secretName): { secretName: secretName }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/securityContext.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/securityContext.libsonnet deleted file mode 100644 index b4fbeb2bf7ec..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/securityContext.libsonnet +++ /dev/null @@ -1,42 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='securityContext', url='', help='SecurityContext holds security configuration that will be applied to a container. Some fields are present in both SecurityContext and PodSecurityContext. When both are set, the values in SecurityContext take precedence.'), - '#capabilities':: d.obj(help='Adds and removes POSIX capabilities from running containers.'), - capabilities: { - '#withAdd':: d.fn(help='Added capabilities', args=[d.arg(name='add', type=d.T.array)]), - withAdd(add): { capabilities+: { add: if std.isArray(v=add) then add else [add] } }, - '#withAddMixin':: d.fn(help='Added capabilities\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='add', type=d.T.array)]), - withAddMixin(add): { capabilities+: { add+: if std.isArray(v=add) then add else [add] } }, - '#withDrop':: d.fn(help='Removed capabilities', args=[d.arg(name='drop', type=d.T.array)]), - withDrop(drop): { capabilities+: { drop: if std.isArray(v=drop) then drop else [drop] } }, - '#withDropMixin':: d.fn(help='Removed capabilities\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='drop', type=d.T.array)]), - withDropMixin(drop): { capabilities+: { drop+: if std.isArray(v=drop) then drop else [drop] } } - }, - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { seLinuxOptions+: { level: level } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { seLinuxOptions+: { role: role } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { seLinuxOptions+: { type: type } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { seLinuxOptions+: { user: user } } - }, - '#withAllowPrivilegeEscalation':: d.fn(help='AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN', args=[d.arg(name='allowPrivilegeEscalation', type=d.T.boolean)]), - withAllowPrivilegeEscalation(allowPrivilegeEscalation): { allowPrivilegeEscalation: allowPrivilegeEscalation }, - '#withPrivileged':: d.fn(help='Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false.', args=[d.arg(name='privileged', type=d.T.boolean)]), - withPrivileged(privileged): { privileged: privileged }, - '#withProcMount':: d.fn(help='procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled.', args=[d.arg(name='procMount', type=d.T.string)]), - withProcMount(procMount): { procMount: procMount }, - '#withReadOnlyRootFilesystem':: d.fn(help='Whether this container has a read-only root filesystem. Default is false.', args=[d.arg(name='readOnlyRootFilesystem', type=d.T.boolean)]), - withReadOnlyRootFilesystem(readOnlyRootFilesystem): { readOnlyRootFilesystem: readOnlyRootFilesystem }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { runAsGroup: runAsGroup }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { runAsNonRoot: runAsNonRoot }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { runAsUser: runAsUser }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/service.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/service.libsonnet deleted file mode 100644 index af0744b9c936..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/service.libsonnet +++ /dev/null @@ -1,136 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='service', url='', help='Service is a named abstraction of software service (for example, mysql) consisting of local port (for example 3306) that the proxy listens on, and the selector that determines which pods will answer requests sent through the proxy.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Service', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'v1', - kind: 'Service' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='ServiceSpec describes the attributes that a user creates on a service.'), - spec: { - '#sessionAffinityConfig':: d.obj(help='SessionAffinityConfig represents the configurations of session affinity.'), - sessionAffinityConfig: { - '#clientIP':: d.obj(help='ClientIPConfig represents the configurations of Client IP based session affinity.'), - clientIP: { - '#withTimeoutSeconds':: d.fn(help='timeoutSeconds specifies the seconds of ClientIP type session sticky time. The value must be >0 && <=86400(for 1 day) if ServiceAffinity == "ClientIP". Default value is 10800(for 3 hours).', args=[d.arg(name='timeoutSeconds', type=d.T.integer)]), - withTimeoutSeconds(timeoutSeconds): { spec+: { sessionAffinityConfig+: { clientIP+: { timeoutSeconds: timeoutSeconds } } } } - } - }, - '#withClusterIP':: d.fn(help='clusterIP is the IP address of the service and is usually assigned randomly by the master. If an address is specified manually and is not in use by others, it will be allocated to the service; otherwise, creation of the service will fail. This field can not be changed through updates. Valid values are "None", empty string (""), or a valid IP address. "None" can be specified for headless services when proxying is not required. Only applies to types ClusterIP, NodePort, and LoadBalancer. Ignored if type is ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies', args=[d.arg(name='clusterIP', type=d.T.string)]), - withClusterIP(clusterIP): { spec+: { clusterIP: clusterIP } }, - '#withExternalIPs':: d.fn(help='externalIPs is a list of IP addresses for which nodes in the cluster will also accept traffic for this service. These IPs are not managed by Kubernetes. The user is responsible for ensuring that traffic arrives at a node with this IP. A common example is external load-balancers that are not part of the Kubernetes system.', args=[d.arg(name='externalIPs', type=d.T.array)]), - withExternalIPs(externalIPs): { spec+: { externalIPs: if std.isArray(v=externalIPs) then externalIPs else [externalIPs] } }, - '#withExternalIPsMixin':: d.fn(help='externalIPs is a list of IP addresses for which nodes in the cluster will also accept traffic for this service. These IPs are not managed by Kubernetes. The user is responsible for ensuring that traffic arrives at a node with this IP. A common example is external load-balancers that are not part of the Kubernetes system.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='externalIPs', type=d.T.array)]), - withExternalIPsMixin(externalIPs): { spec+: { externalIPs+: if std.isArray(v=externalIPs) then externalIPs else [externalIPs] } }, - '#withExternalName':: d.fn(help='externalName is the external reference that kubedns or equivalent will return as a CNAME record for this service. No proxying will be involved. Must be a valid RFC-1123 hostname (https://tools.ietf.org/html/rfc1123) and requires Type to be ExternalName.', args=[d.arg(name='externalName', type=d.T.string)]), - withExternalName(externalName): { spec+: { externalName: externalName } }, - '#withExternalTrafficPolicy':: d.fn(help='externalTrafficPolicy denotes if this Service desires to route external traffic to node-local or cluster-wide endpoints. "Local" preserves the client source IP and avoids a second hop for LoadBalancer and Nodeport type services, but risks potentially imbalanced traffic spreading. "Cluster" obscures the client source IP and may cause a second hop to another node, but should have good overall load-spreading.', args=[d.arg(name='externalTrafficPolicy', type=d.T.string)]), - withExternalTrafficPolicy(externalTrafficPolicy): { spec+: { externalTrafficPolicy: externalTrafficPolicy } }, - '#withHealthCheckNodePort':: d.fn(help='healthCheckNodePort specifies the healthcheck nodePort for the service. If not specified, HealthCheckNodePort is created by the service api backend with the allocated nodePort. Will use user-specified nodePort value if specified by the client. Only effects when Type is set to LoadBalancer and ExternalTrafficPolicy is set to Local.', args=[d.arg(name='healthCheckNodePort', type=d.T.integer)]), - withHealthCheckNodePort(healthCheckNodePort): { spec+: { healthCheckNodePort: healthCheckNodePort } }, - '#withLoadBalancerIP':: d.fn(help='Only applies to Service Type: LoadBalancer LoadBalancer will get created with the IP specified in this field. This feature depends on whether the underlying cloud-provider supports specifying the loadBalancerIP when a load balancer is created. This field will be ignored if the cloud-provider does not support the feature.', args=[d.arg(name='loadBalancerIP', type=d.T.string)]), - withLoadBalancerIP(loadBalancerIP): { spec+: { loadBalancerIP: loadBalancerIP } }, - '#withLoadBalancerSourceRanges':: d.fn(help='If specified and supported by the platform, this will restrict traffic through the cloud-provider load-balancer will be restricted to the specified client IPs. This field will be ignored if the cloud-provider does not support the feature." More info: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/', args=[d.arg(name='loadBalancerSourceRanges', type=d.T.array)]), - withLoadBalancerSourceRanges(loadBalancerSourceRanges): { spec+: { loadBalancerSourceRanges: if std.isArray(v=loadBalancerSourceRanges) then loadBalancerSourceRanges else [loadBalancerSourceRanges] } }, - '#withLoadBalancerSourceRangesMixin':: d.fn(help='If specified and supported by the platform, this will restrict traffic through the cloud-provider load-balancer will be restricted to the specified client IPs. This field will be ignored if the cloud-provider does not support the feature." More info: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='loadBalancerSourceRanges', type=d.T.array)]), - withLoadBalancerSourceRangesMixin(loadBalancerSourceRanges): { spec+: { loadBalancerSourceRanges+: if std.isArray(v=loadBalancerSourceRanges) then loadBalancerSourceRanges else [loadBalancerSourceRanges] } }, - '#withPorts':: d.fn(help='The list of ports that are exposed by this service. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies', args=[d.arg(name='ports', type=d.T.array)]), - withPorts(ports): { spec+: { ports: if std.isArray(v=ports) then ports else [ports] } }, - '#withPortsMixin':: d.fn(help='The list of ports that are exposed by this service. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ports', type=d.T.array)]), - withPortsMixin(ports): { spec+: { ports+: if std.isArray(v=ports) then ports else [ports] } }, - '#withPublishNotReadyAddresses':: d.fn(help="publishNotReadyAddresses, when set to true, indicates that DNS implementations must publish the notReadyAddresses of subsets for the Endpoints associated with the Service. The default value is false. The primary use case for setting this field is to use a StatefulSet's Headless Service to propagate SRV records for its Pods without respect to their readiness for purpose of peer discovery.", args=[d.arg(name='publishNotReadyAddresses', type=d.T.boolean)]), - withPublishNotReadyAddresses(publishNotReadyAddresses): { spec+: { publishNotReadyAddresses: publishNotReadyAddresses } }, - '#withSelector':: d.fn(help='Route service traffic to pods with label keys and values matching this selector. If empty or not present, the service is assumed to have an external process managing its endpoints, which Kubernetes will not modify. Only applies to types ClusterIP, NodePort, and LoadBalancer. Ignored if type is ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/', args=[d.arg(name='selector', type=d.T.object)]), - withSelector(selector): { spec+: { selector: selector } }, - '#withSelectorMixin':: d.fn(help='Route service traffic to pods with label keys and values matching this selector. If empty or not present, the service is assumed to have an external process managing its endpoints, which Kubernetes will not modify. Only applies to types ClusterIP, NodePort, and LoadBalancer. Ignored if type is ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='selector', type=d.T.object)]), - withSelectorMixin(selector): { spec+: { selector+: selector } }, - '#withSessionAffinity':: d.fn(help='Supports "ClientIP" and "None". Used to maintain session affinity. Enable client IP based session affinity. Must be ClientIP or None. Defaults to None. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies', args=[d.arg(name='sessionAffinity', type=d.T.string)]), - withSessionAffinity(sessionAffinity): { spec+: { sessionAffinity: sessionAffinity } }, - '#withType':: d.fn(help='type determines how the Service is exposed. Defaults to ClusterIP. Valid options are ExternalName, ClusterIP, NodePort, and LoadBalancer. "ExternalName" maps to the specified externalName. "ClusterIP" allocates a cluster-internal IP address for load-balancing to endpoints. Endpoints are determined by the selector or if that is not specified, by manual construction of an Endpoints object. If clusterIP is "None", no virtual IP is allocated and the endpoints are published as a set of endpoints rather than a stable IP. "NodePort" builds on ClusterIP and allocates a port on every node which routes to the clusterIP. "LoadBalancer" builds on NodePort and creates an external load-balancer (if supported in the current cloud) which routes to the clusterIP. More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { type: type } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/serviceAccount.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/serviceAccount.libsonnet deleted file mode 100644 index c6c08e04b750..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/serviceAccount.libsonnet +++ /dev/null @@ -1,103 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='serviceAccount', url='', help='ServiceAccount binds together: * a name, understood by users, and perhaps by peripheral systems, for an identity * a principal that can be authenticated and authorized * a set of secrets'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Serviceaccount', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'v1', - kind: 'ServiceAccount' - } + self.metadata.withName(name=name), - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether pods running as this service account should have an API token automatically mounted. Can be overridden at the pod level.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { automountServiceAccountToken: automountServiceAccountToken }, - '#withImagePullSecrets':: d.fn(help='ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet. More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] }, - '#withImagePullSecretsMixin':: d.fn(help='ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet. More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] }, - '#withSecrets':: d.fn(help='Secrets is the list of secrets allowed to be used by pods running using this ServiceAccount. More info: https://kubernetes.io/docs/concepts/configuration/secret', args=[d.arg(name='secrets', type=d.T.array)]), - withSecrets(secrets): { secrets: if std.isArray(v=secrets) then secrets else [secrets] }, - '#withSecretsMixin':: d.fn(help='Secrets is the list of secrets allowed to be used by pods running using this ServiceAccount. More info: https://kubernetes.io/docs/concepts/configuration/secret\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='secrets', type=d.T.array)]), - withSecretsMixin(secrets): { secrets+: if std.isArray(v=secrets) then secrets else [secrets] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/serviceAccountTokenProjection.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/serviceAccountTokenProjection.libsonnet deleted file mode 100644 index 9c63c1c58930..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/serviceAccountTokenProjection.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='serviceAccountTokenProjection', url='', help='ServiceAccountTokenProjection represents a projected service account token volume. This projection can be used to insert a service account token into the pods runtime filesystem for use against APIs (Kubernetes API Server or otherwise).'), - '#withAudience':: d.fn(help='Audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver.', args=[d.arg(name='audience', type=d.T.string)]), - withAudience(audience): { audience: audience }, - '#withExpirationSeconds':: d.fn(help='ExpirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes.', args=[d.arg(name='expirationSeconds', type=d.T.integer)]), - withExpirationSeconds(expirationSeconds): { expirationSeconds: expirationSeconds }, - '#withPath':: d.fn(help='Path is the path relative to the mount point of the file to project the token into.', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { path: path }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/servicePort.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/servicePort.libsonnet deleted file mode 100644 index 93771784c176..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/servicePort.libsonnet +++ /dev/null @@ -1,16 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='servicePort', url='', help="ServicePort contains information on service's port."), - '#withName':: d.fn(help="The name of this port within the service. This must be a DNS_LABEL. All ports within a ServiceSpec must have unique names. This maps to the 'Name' field in EndpointPort objects. Optional if only one ServicePort is defined on this service.", args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withNodePort':: d.fn(help='The port on each node on which this service is exposed when type=NodePort or LoadBalancer. Usually assigned by the system. If specified, it will be allocated to the service if unused or else creation of the service will fail. Default is to auto-allocate a port if the ServiceType of this Service requires one. More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport', args=[d.arg(name='nodePort', type=d.T.integer)]), - withNodePort(nodePort): { nodePort: nodePort }, - '#withPort':: d.fn(help='The port that will be exposed by this service.', args=[d.arg(name='port', type=d.T.integer)]), - withPort(port): { port: port }, - '#withProtocol':: d.fn(help='The IP protocol for this port. Supports "TCP", "UDP", and "SCTP". Default is TCP.', args=[d.arg(name='protocol', type=d.T.string)]), - withProtocol(protocol): { protocol: protocol }, - '#withTargetPort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='targetPort', type=d.T.string)]), - withTargetPort(targetPort): { targetPort: targetPort }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/serviceSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/serviceSpec.libsonnet deleted file mode 100644 index 0048b71986be..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/serviceSpec.libsonnet +++ /dev/null @@ -1,46 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='serviceSpec', url='', help='ServiceSpec describes the attributes that a user creates on a service.'), - '#sessionAffinityConfig':: d.obj(help='SessionAffinityConfig represents the configurations of session affinity.'), - sessionAffinityConfig: { - '#clientIP':: d.obj(help='ClientIPConfig represents the configurations of Client IP based session affinity.'), - clientIP: { - '#withTimeoutSeconds':: d.fn(help='timeoutSeconds specifies the seconds of ClientIP type session sticky time. The value must be >0 && <=86400(for 1 day) if ServiceAffinity == "ClientIP". Default value is 10800(for 3 hours).', args=[d.arg(name='timeoutSeconds', type=d.T.integer)]), - withTimeoutSeconds(timeoutSeconds): { sessionAffinityConfig+: { clientIP+: { timeoutSeconds: timeoutSeconds } } } - } - }, - '#withClusterIP':: d.fn(help='clusterIP is the IP address of the service and is usually assigned randomly by the master. If an address is specified manually and is not in use by others, it will be allocated to the service; otherwise, creation of the service will fail. This field can not be changed through updates. Valid values are "None", empty string (""), or a valid IP address. "None" can be specified for headless services when proxying is not required. Only applies to types ClusterIP, NodePort, and LoadBalancer. Ignored if type is ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies', args=[d.arg(name='clusterIP', type=d.T.string)]), - withClusterIP(clusterIP): { clusterIP: clusterIP }, - '#withExternalIPs':: d.fn(help='externalIPs is a list of IP addresses for which nodes in the cluster will also accept traffic for this service. These IPs are not managed by Kubernetes. The user is responsible for ensuring that traffic arrives at a node with this IP. A common example is external load-balancers that are not part of the Kubernetes system.', args=[d.arg(name='externalIPs', type=d.T.array)]), - withExternalIPs(externalIPs): { externalIPs: if std.isArray(v=externalIPs) then externalIPs else [externalIPs] }, - '#withExternalIPsMixin':: d.fn(help='externalIPs is a list of IP addresses for which nodes in the cluster will also accept traffic for this service. These IPs are not managed by Kubernetes. The user is responsible for ensuring that traffic arrives at a node with this IP. A common example is external load-balancers that are not part of the Kubernetes system.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='externalIPs', type=d.T.array)]), - withExternalIPsMixin(externalIPs): { externalIPs+: if std.isArray(v=externalIPs) then externalIPs else [externalIPs] }, - '#withExternalName':: d.fn(help='externalName is the external reference that kubedns or equivalent will return as a CNAME record for this service. No proxying will be involved. Must be a valid RFC-1123 hostname (https://tools.ietf.org/html/rfc1123) and requires Type to be ExternalName.', args=[d.arg(name='externalName', type=d.T.string)]), - withExternalName(externalName): { externalName: externalName }, - '#withExternalTrafficPolicy':: d.fn(help='externalTrafficPolicy denotes if this Service desires to route external traffic to node-local or cluster-wide endpoints. "Local" preserves the client source IP and avoids a second hop for LoadBalancer and Nodeport type services, but risks potentially imbalanced traffic spreading. "Cluster" obscures the client source IP and may cause a second hop to another node, but should have good overall load-spreading.', args=[d.arg(name='externalTrafficPolicy', type=d.T.string)]), - withExternalTrafficPolicy(externalTrafficPolicy): { externalTrafficPolicy: externalTrafficPolicy }, - '#withHealthCheckNodePort':: d.fn(help='healthCheckNodePort specifies the healthcheck nodePort for the service. If not specified, HealthCheckNodePort is created by the service api backend with the allocated nodePort. Will use user-specified nodePort value if specified by the client. Only effects when Type is set to LoadBalancer and ExternalTrafficPolicy is set to Local.', args=[d.arg(name='healthCheckNodePort', type=d.T.integer)]), - withHealthCheckNodePort(healthCheckNodePort): { healthCheckNodePort: healthCheckNodePort }, - '#withLoadBalancerIP':: d.fn(help='Only applies to Service Type: LoadBalancer LoadBalancer will get created with the IP specified in this field. This feature depends on whether the underlying cloud-provider supports specifying the loadBalancerIP when a load balancer is created. This field will be ignored if the cloud-provider does not support the feature.', args=[d.arg(name='loadBalancerIP', type=d.T.string)]), - withLoadBalancerIP(loadBalancerIP): { loadBalancerIP: loadBalancerIP }, - '#withLoadBalancerSourceRanges':: d.fn(help='If specified and supported by the platform, this will restrict traffic through the cloud-provider load-balancer will be restricted to the specified client IPs. This field will be ignored if the cloud-provider does not support the feature." More info: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/', args=[d.arg(name='loadBalancerSourceRanges', type=d.T.array)]), - withLoadBalancerSourceRanges(loadBalancerSourceRanges): { loadBalancerSourceRanges: if std.isArray(v=loadBalancerSourceRanges) then loadBalancerSourceRanges else [loadBalancerSourceRanges] }, - '#withLoadBalancerSourceRangesMixin':: d.fn(help='If specified and supported by the platform, this will restrict traffic through the cloud-provider load-balancer will be restricted to the specified client IPs. This field will be ignored if the cloud-provider does not support the feature." More info: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='loadBalancerSourceRanges', type=d.T.array)]), - withLoadBalancerSourceRangesMixin(loadBalancerSourceRanges): { loadBalancerSourceRanges+: if std.isArray(v=loadBalancerSourceRanges) then loadBalancerSourceRanges else [loadBalancerSourceRanges] }, - '#withPorts':: d.fn(help='The list of ports that are exposed by this service. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies', args=[d.arg(name='ports', type=d.T.array)]), - withPorts(ports): { ports: if std.isArray(v=ports) then ports else [ports] }, - '#withPortsMixin':: d.fn(help='The list of ports that are exposed by this service. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ports', type=d.T.array)]), - withPortsMixin(ports): { ports+: if std.isArray(v=ports) then ports else [ports] }, - '#withPublishNotReadyAddresses':: d.fn(help="publishNotReadyAddresses, when set to true, indicates that DNS implementations must publish the notReadyAddresses of subsets for the Endpoints associated with the Service. The default value is false. The primary use case for setting this field is to use a StatefulSet's Headless Service to propagate SRV records for its Pods without respect to their readiness for purpose of peer discovery.", args=[d.arg(name='publishNotReadyAddresses', type=d.T.boolean)]), - withPublishNotReadyAddresses(publishNotReadyAddresses): { publishNotReadyAddresses: publishNotReadyAddresses }, - '#withSelector':: d.fn(help='Route service traffic to pods with label keys and values matching this selector. If empty or not present, the service is assumed to have an external process managing its endpoints, which Kubernetes will not modify. Only applies to types ClusterIP, NodePort, and LoadBalancer. Ignored if type is ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/', args=[d.arg(name='selector', type=d.T.object)]), - withSelector(selector): { selector: selector }, - '#withSelectorMixin':: d.fn(help='Route service traffic to pods with label keys and values matching this selector. If empty or not present, the service is assumed to have an external process managing its endpoints, which Kubernetes will not modify. Only applies to types ClusterIP, NodePort, and LoadBalancer. Ignored if type is ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='selector', type=d.T.object)]), - withSelectorMixin(selector): { selector+: selector }, - '#withSessionAffinity':: d.fn(help='Supports "ClientIP" and "None". Used to maintain session affinity. Enable client IP based session affinity. Must be ClientIP or None. Defaults to None. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies', args=[d.arg(name='sessionAffinity', type=d.T.string)]), - withSessionAffinity(sessionAffinity): { sessionAffinity: sessionAffinity }, - '#withType':: d.fn(help='type determines how the Service is exposed. Defaults to ClusterIP. Valid options are ExternalName, ClusterIP, NodePort, and LoadBalancer. "ExternalName" maps to the specified externalName. "ClusterIP" allocates a cluster-internal IP address for load-balancing to endpoints. Endpoints are determined by the selector or if that is not specified, by manual construction of an Endpoints object. If clusterIP is "None", no virtual IP is allocated and the endpoints are published as a set of endpoints rather than a stable IP. "NodePort" builds on ClusterIP and allocates a port on every node which routes to the clusterIP. "LoadBalancer" builds on NodePort and creates an external load-balancer (if supported in the current cloud) which routes to the clusterIP. More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/serviceStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/serviceStatus.libsonnet deleted file mode 100644 index d3e302c2ccef..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/serviceStatus.libsonnet +++ /dev/null @@ -1,13 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='serviceStatus', url='', help='ServiceStatus represents the current status of a service.'), - '#loadBalancer':: d.obj(help='LoadBalancerStatus represents the status of a load-balancer.'), - loadBalancer: { - '#withIngress':: d.fn(help='Ingress is a list containing ingress points for the load-balancer. Traffic intended for the service should be sent to these ingress points.', args=[d.arg(name='ingress', type=d.T.array)]), - withIngress(ingress): { loadBalancer+: { ingress: if std.isArray(v=ingress) then ingress else [ingress] } }, - '#withIngressMixin':: d.fn(help='Ingress is a list containing ingress points for the load-balancer. Traffic intended for the service should be sent to these ingress points.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ingress', type=d.T.array)]), - withIngressMixin(ingress): { loadBalancer+: { ingress+: if std.isArray(v=ingress) then ingress else [ingress] } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/sessionAffinityConfig.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/sessionAffinityConfig.libsonnet deleted file mode 100644 index b5062fe596c1..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/sessionAffinityConfig.libsonnet +++ /dev/null @@ -1,11 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='sessionAffinityConfig', url='', help='SessionAffinityConfig represents the configurations of session affinity.'), - '#clientIP':: d.obj(help='ClientIPConfig represents the configurations of Client IP based session affinity.'), - clientIP: { - '#withTimeoutSeconds':: d.fn(help='timeoutSeconds specifies the seconds of ClientIP type session sticky time. The value must be >0 && <=86400(for 1 day) if ServiceAffinity == "ClientIP". Default value is 10800(for 3 hours).', args=[d.arg(name='timeoutSeconds', type=d.T.integer)]), - withTimeoutSeconds(timeoutSeconds): { clientIP+: { timeoutSeconds: timeoutSeconds } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/storageOSPersistentVolumeSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/storageOSPersistentVolumeSource.libsonnet deleted file mode 100644 index f3599a2d3cb1..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/storageOSPersistentVolumeSource.libsonnet +++ /dev/null @@ -1,29 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='storageOSPersistentVolumeSource', url='', help='Represents a StorageOS persistent volume resource.'), - '#secretRef':: d.obj(help='ObjectReference contains enough information to let you inspect or modify the referred object.'), - secretRef: { - '#withFieldPath':: d.fn(help='If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { secretRef+: { fieldPath: fieldPath } }, - '#withKind':: d.fn(help='Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { secretRef+: { kind: kind } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { secretRef+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { secretRef+: { namespace: namespace } }, - '#withResourceVersion':: d.fn(help='Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { secretRef+: { resourceVersion: resourceVersion } }, - '#withUid':: d.fn(help='UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { secretRef+: { uid: uid } } - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { fsType: fsType }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#withVolumeName':: d.fn(help='VolumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.', args=[d.arg(name='volumeName', type=d.T.string)]), - withVolumeName(volumeName): { volumeName: volumeName }, - '#withVolumeNamespace':: d.fn(help="VolumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod's namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to 'default' if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created.", args=[d.arg(name='volumeNamespace', type=d.T.string)]), - withVolumeNamespace(volumeNamespace): { volumeNamespace: volumeNamespace }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/storageOSVolumeSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/storageOSVolumeSource.libsonnet deleted file mode 100644 index 3557ae60ea04..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/storageOSVolumeSource.libsonnet +++ /dev/null @@ -1,19 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='storageOSVolumeSource', url='', help='Represents a StorageOS persistent volume resource.'), - '#secretRef':: d.obj(help='LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.'), - secretRef: { - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { secretRef+: { name: name } } - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { fsType: fsType }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#withVolumeName':: d.fn(help='VolumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.', args=[d.arg(name='volumeName', type=d.T.string)]), - withVolumeName(volumeName): { volumeName: volumeName }, - '#withVolumeNamespace':: d.fn(help="VolumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod's namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to 'default' if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created.", args=[d.arg(name='volumeNamespace', type=d.T.string)]), - withVolumeNamespace(volumeNamespace): { volumeNamespace: volumeNamespace }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/sysctl.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/sysctl.libsonnet deleted file mode 100644 index cee904ab2767..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/sysctl.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='sysctl', url='', help='Sysctl defines a kernel parameter to be set'), - '#withName':: d.fn(help='Name of a property to set', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withValue':: d.fn(help='Value of a property to set', args=[d.arg(name='value', type=d.T.string)]), - withValue(value): { value: value }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/taint.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/taint.libsonnet deleted file mode 100644 index a5370cafa17c..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/taint.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='taint', url='', help='The node this Taint is attached to has the "effect" on any pod that does not tolerate the Taint.'), - '#withEffect':: d.fn(help='Required. The effect of the taint on pods that do not tolerate the taint. Valid effects are NoSchedule, PreferNoSchedule and NoExecute.', args=[d.arg(name='effect', type=d.T.string)]), - withEffect(effect): { effect: effect }, - '#withKey':: d.fn(help='Required. The taint key to be applied to a node.', args=[d.arg(name='key', type=d.T.string)]), - withKey(key): { key: key }, - '#withTimeAdded':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='timeAdded', type=d.T.string)]), - withTimeAdded(timeAdded): { timeAdded: timeAdded }, - '#withValue':: d.fn(help='Required. The taint value corresponding to the taint key.', args=[d.arg(name='value', type=d.T.string)]), - withValue(value): { value: value }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/tcpSocketAction.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/tcpSocketAction.libsonnet deleted file mode 100644 index 2cae99b89b11..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/tcpSocketAction.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='tcpSocketAction', url='', help='TCPSocketAction describes an action based on opening a socket'), - '#withHost':: d.fn(help='Optional: Host name to connect to, defaults to the pod IP.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { host: host }, - '#withPort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='port', type=d.T.string)]), - withPort(port): { port: port }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/toleration.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/toleration.libsonnet deleted file mode 100644 index 06233fe2f71b..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/toleration.libsonnet +++ /dev/null @@ -1,16 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='toleration', url='', help='The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator .'), - '#withEffect':: d.fn(help='Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.', args=[d.arg(name='effect', type=d.T.string)]), - withEffect(effect): { effect: effect }, - '#withKey':: d.fn(help='Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.', args=[d.arg(name='key', type=d.T.string)]), - withKey(key): { key: key }, - '#withOperator':: d.fn(help="Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.", args=[d.arg(name='operator', type=d.T.string)]), - withOperator(operator): { operator: operator }, - '#withTolerationSeconds':: d.fn(help='TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.', args=[d.arg(name='tolerationSeconds', type=d.T.integer)]), - withTolerationSeconds(tolerationSeconds): { tolerationSeconds: tolerationSeconds }, - '#withValue':: d.fn(help='Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.', args=[d.arg(name='value', type=d.T.string)]), - withValue(value): { value: value }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/topologySelectorLabelRequirement.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/topologySelectorLabelRequirement.libsonnet deleted file mode 100644 index 65852f539c47..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/topologySelectorLabelRequirement.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='topologySelectorLabelRequirement', url='', help='A topology selector requirement is a selector that matches given label. This is an alpha feature and may change in the future.'), - '#withKey':: d.fn(help='The label key that the selector applies to.', args=[d.arg(name='key', type=d.T.string)]), - withKey(key): { key: key }, - '#withValues':: d.fn(help='An array of string values. One value must match the label to be selected. Each entry in Values is ORed.', args=[d.arg(name='values', type=d.T.array)]), - withValues(values): { values: if std.isArray(v=values) then values else [values] }, - '#withValuesMixin':: d.fn(help='An array of string values. One value must match the label to be selected. Each entry in Values is ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='values', type=d.T.array)]), - withValuesMixin(values): { values+: if std.isArray(v=values) then values else [values] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/topologySelectorTerm.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/topologySelectorTerm.libsonnet deleted file mode 100644 index cd006b0eadb6..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/topologySelectorTerm.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='topologySelectorTerm', url='', help='A topology selector term represents the result of label queries. A null or empty topology selector term matches no objects. The requirements of them are ANDed. It provides a subset of functionality as NodeSelectorTerm. This is an alpha feature and may change in the future.'), - '#withMatchLabelExpressions':: d.fn(help='A list of topology selector requirements by labels.', args=[d.arg(name='matchLabelExpressions', type=d.T.array)]), - withMatchLabelExpressions(matchLabelExpressions): { matchLabelExpressions: if std.isArray(v=matchLabelExpressions) then matchLabelExpressions else [matchLabelExpressions] }, - '#withMatchLabelExpressionsMixin':: d.fn(help='A list of topology selector requirements by labels.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabelExpressions', type=d.T.array)]), - withMatchLabelExpressionsMixin(matchLabelExpressions): { matchLabelExpressions+: if std.isArray(v=matchLabelExpressions) then matchLabelExpressions else [matchLabelExpressions] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/typedLocalObjectReference.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/typedLocalObjectReference.libsonnet deleted file mode 100644 index 81cf09b87e93..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/typedLocalObjectReference.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='typedLocalObjectReference', url='', help='TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace.'), - '#withApiGroup':: d.fn(help='APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.', args=[d.arg(name='apiGroup', type=d.T.string)]), - withApiGroup(apiGroup): { apiGroup: apiGroup }, - '#withKind':: d.fn(help='Kind is the type of resource being referenced', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { kind: kind }, - '#withName':: d.fn(help='Name is the name of resource being referenced', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/volume.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/volume.libsonnet deleted file mode 100644 index 503b9251c013..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/volume.libsonnet +++ /dev/null @@ -1,378 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='volume', url='', help='Volume represents a named volume in a pod that may be accessed by any container in the pod.'), - '#awsElasticBlockStore':: d.obj(help='Represents a Persistent Disk resource in AWS.\n\nAn AWS EBS disk must exist before mounting to a container. The disk must also be in the same AWS zone as the kubelet. An AWS EBS disk can only be mounted as read/write once. AWS EBS volumes support ownership management and SELinux relabeling.'), - awsElasticBlockStore: { - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { awsElasticBlockStore+: { fsType: fsType } }, - '#withPartition':: d.fn(help='The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).', args=[d.arg(name='partition', type=d.T.integer)]), - withPartition(partition): { awsElasticBlockStore+: { partition: partition } }, - '#withReadOnly':: d.fn(help='Specify "true" to force and set the ReadOnly property in VolumeMounts to "true". If omitted, the default is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { awsElasticBlockStore+: { readOnly: readOnly } }, - '#withVolumeID':: d.fn(help='Unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore', args=[d.arg(name='volumeID', type=d.T.string)]), - withVolumeID(volumeID): { awsElasticBlockStore+: { volumeID: volumeID } } - }, - '#azureDisk':: d.obj(help='AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.'), - azureDisk: { - '#withCachingMode':: d.fn(help='Host Caching mode: None, Read Only, Read Write.', args=[d.arg(name='cachingMode', type=d.T.string)]), - withCachingMode(cachingMode): { azureDisk+: { cachingMode: cachingMode } }, - '#withDiskName':: d.fn(help='The Name of the data disk in the blob storage', args=[d.arg(name='diskName', type=d.T.string)]), - withDiskName(diskName): { azureDisk+: { diskName: diskName } }, - '#withDiskURI':: d.fn(help='The URI the data disk in the blob storage', args=[d.arg(name='diskURI', type=d.T.string)]), - withDiskURI(diskURI): { azureDisk+: { diskURI: diskURI } }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { azureDisk+: { fsType: fsType } }, - '#withKind':: d.fn(help='Expected values Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { azureDisk+: { kind: kind } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { azureDisk+: { readOnly: readOnly } } - }, - '#azureFile':: d.obj(help='AzureFile represents an Azure File Service mount on the host and bind mount to the pod.'), - azureFile: { - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { azureFile+: { readOnly: readOnly } }, - '#withSecretName':: d.fn(help='the name of secret that contains Azure Storage Account Name and Key', args=[d.arg(name='secretName', type=d.T.string)]), - withSecretName(secretName): { azureFile+: { secretName: secretName } }, - '#withShareName':: d.fn(help='Share Name', args=[d.arg(name='shareName', type=d.T.string)]), - withShareName(shareName): { azureFile+: { shareName: shareName } } - }, - '#cephfs':: d.obj(help='Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling.'), - cephfs: { - '#secretRef':: d.obj(help='LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.'), - secretRef: { - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { cephfs+: { secretRef+: { name: name } } } - }, - '#withMonitors':: d.fn(help='Required: Monitors is a collection of Ceph monitors More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitors(monitors): { cephfs+: { monitors: if std.isArray(v=monitors) then monitors else [monitors] } }, - '#withMonitorsMixin':: d.fn(help='Required: Monitors is a collection of Ceph monitors More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitorsMixin(monitors): { cephfs+: { monitors+: if std.isArray(v=monitors) then monitors else [monitors] } }, - '#withPath':: d.fn(help='Optional: Used as the mounted root, rather than the full Ceph tree, default is /', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { cephfs+: { path: path } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { cephfs+: { readOnly: readOnly } }, - '#withSecretFile':: d.fn(help='Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='secretFile', type=d.T.string)]), - withSecretFile(secretFile): { cephfs+: { secretFile: secretFile } }, - '#withUser':: d.fn(help='Optional: User is the rados user name, default is admin More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { cephfs+: { user: user } } - }, - '#cinder':: d.obj(help='Represents a cinder volume resource in Openstack. A Cinder volume must exist before mounting to a container. The volume must also be in the same region as the kubelet. Cinder volumes support ownership management and SELinux relabeling.'), - cinder: { - '#secretRef':: d.obj(help='LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.'), - secretRef: { - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { cinder+: { secretRef+: { name: name } } } - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { cinder+: { fsType: fsType } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { cinder+: { readOnly: readOnly } }, - '#withVolumeID':: d.fn(help='volume id used to identify the volume in cinder More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md', args=[d.arg(name='volumeID', type=d.T.string)]), - withVolumeID(volumeID): { cinder+: { volumeID: volumeID } } - }, - '#configMap':: d.obj(help="Adapts a ConfigMap into a volume.\n\nThe contents of the target ConfigMap's Data field will be presented in a volume as files using the keys in the Data field as the file names, unless the items element is populated with specific mappings of keys to paths. ConfigMap volumes support ownership management and SELinux relabeling."), - configMap: { - '#withDefaultMode':: d.fn(help='Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.', args=[d.arg(name='defaultMode', type=d.T.integer)]), - withDefaultMode(defaultMode): { configMap+: { defaultMode: defaultMode } }, - '#withItems':: d.fn(help="If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.", args=[d.arg(name='items', type=d.T.array)]), - withItems(items): { configMap+: { items: if std.isArray(v=items) then items else [items] } }, - '#withItemsMixin':: d.fn(help="If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='items', type=d.T.array)]), - withItemsMixin(items): { configMap+: { items+: if std.isArray(v=items) then items else [items] } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { configMap+: { name: name } }, - '#withOptional':: d.fn(help="Specify whether the ConfigMap or it's keys must be defined", args=[d.arg(name='optional', type=d.T.boolean)]), - withOptional(optional): { configMap+: { optional: optional } } - }, - '#csi':: d.obj(help='Represents a source location of a volume to mount, managed by an external CSI driver'), - csi: { - '#nodePublishSecretRef':: d.obj(help='LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.'), - nodePublishSecretRef: { - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { csi+: { nodePublishSecretRef+: { name: name } } } - }, - '#withDriver':: d.fn(help='Driver is the name of the CSI driver that handles this volume. Consult with your admin for the correct name as registered in the cluster.', args=[d.arg(name='driver', type=d.T.string)]), - withDriver(driver): { csi+: { driver: driver } }, - '#withFsType':: d.fn(help='Filesystem type to mount. Ex. "ext4", "xfs", "ntfs". If not provided, the empty value is passed to the associated CSI driver which will determine the default filesystem to apply.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { csi+: { fsType: fsType } }, - '#withReadOnly':: d.fn(help='Specifies a read-only configuration for the volume. Defaults to false (read/write).', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { csi+: { readOnly: readOnly } }, - '#withVolumeAttributes':: d.fn(help="VolumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values.", args=[d.arg(name='volumeAttributes', type=d.T.object)]), - withVolumeAttributes(volumeAttributes): { csi+: { volumeAttributes: volumeAttributes } }, - '#withVolumeAttributesMixin':: d.fn(help="VolumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='volumeAttributes', type=d.T.object)]), - withVolumeAttributesMixin(volumeAttributes): { csi+: { volumeAttributes+: volumeAttributes } } - }, - '#downwardAPI':: d.obj(help='DownwardAPIVolumeSource represents a volume containing downward API info. Downward API volumes support ownership management and SELinux relabeling.'), - downwardAPI: { - '#withDefaultMode':: d.fn(help='Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.', args=[d.arg(name='defaultMode', type=d.T.integer)]), - withDefaultMode(defaultMode): { downwardAPI+: { defaultMode: defaultMode } }, - '#withItems':: d.fn(help='Items is a list of downward API volume file', args=[d.arg(name='items', type=d.T.array)]), - withItems(items): { downwardAPI+: { items: if std.isArray(v=items) then items else [items] } }, - '#withItemsMixin':: d.fn(help='Items is a list of downward API volume file\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='items', type=d.T.array)]), - withItemsMixin(items): { downwardAPI+: { items+: if std.isArray(v=items) then items else [items] } } - }, - '#emptyDir':: d.obj(help='Represents an empty directory for a pod. Empty directory volumes support ownership management and SELinux relabeling.'), - emptyDir: { - '#withMedium':: d.fn(help="What type of storage medium should back this directory. The default is '' which means to use the node's default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir", args=[d.arg(name='medium', type=d.T.string)]), - withMedium(medium): { emptyDir+: { medium: medium } }, - '#withSizeLimit':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='sizeLimit', type=d.T.string)]), - withSizeLimit(sizeLimit): { emptyDir+: { sizeLimit: sizeLimit } } - }, - '#fc':: d.obj(help='Represents a Fibre Channel volume. Fibre Channel volumes can only be mounted as read/write once. Fibre Channel volumes support ownership management and SELinux relabeling.'), - fc: { - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { fc+: { fsType: fsType } }, - '#withLun':: d.fn(help='Optional: FC target lun number', args=[d.arg(name='lun', type=d.T.integer)]), - withLun(lun): { fc+: { lun: lun } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { fc+: { readOnly: readOnly } }, - '#withTargetWWNs':: d.fn(help='Optional: FC target worldwide names (WWNs)', args=[d.arg(name='targetWWNs', type=d.T.array)]), - withTargetWWNs(targetWWNs): { fc+: { targetWWNs: if std.isArray(v=targetWWNs) then targetWWNs else [targetWWNs] } }, - '#withTargetWWNsMixin':: d.fn(help='Optional: FC target worldwide names (WWNs)\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='targetWWNs', type=d.T.array)]), - withTargetWWNsMixin(targetWWNs): { fc+: { targetWWNs+: if std.isArray(v=targetWWNs) then targetWWNs else [targetWWNs] } }, - '#withWwids':: d.fn(help='Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.', args=[d.arg(name='wwids', type=d.T.array)]), - withWwids(wwids): { fc+: { wwids: if std.isArray(v=wwids) then wwids else [wwids] } }, - '#withWwidsMixin':: d.fn(help='Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='wwids', type=d.T.array)]), - withWwidsMixin(wwids): { fc+: { wwids+: if std.isArray(v=wwids) then wwids else [wwids] } } - }, - '#flexVolume':: d.obj(help='FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.'), - flexVolume: { - '#secretRef':: d.obj(help='LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.'), - secretRef: { - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { flexVolume+: { secretRef+: { name: name } } } - }, - '#withDriver':: d.fn(help='Driver is the name of the driver to use for this volume.', args=[d.arg(name='driver', type=d.T.string)]), - withDriver(driver): { flexVolume+: { driver: driver } }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { flexVolume+: { fsType: fsType } }, - '#withOptions':: d.fn(help='Optional: Extra command options if any.', args=[d.arg(name='options', type=d.T.object)]), - withOptions(options): { flexVolume+: { options: options } }, - '#withOptionsMixin':: d.fn(help='Optional: Extra command options if any.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.object)]), - withOptionsMixin(options): { flexVolume+: { options+: options } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { flexVolume+: { readOnly: readOnly } } - }, - '#flocker':: d.obj(help='Represents a Flocker volume mounted by the Flocker agent. One and only one of datasetName and datasetUUID should be set. Flocker volumes do not support ownership management or SELinux relabeling.'), - flocker: { - '#withDatasetName':: d.fn(help='Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated', args=[d.arg(name='datasetName', type=d.T.string)]), - withDatasetName(datasetName): { flocker+: { datasetName: datasetName } }, - '#withDatasetUUID':: d.fn(help='UUID of the dataset. This is unique identifier of a Flocker dataset', args=[d.arg(name='datasetUUID', type=d.T.string)]), - withDatasetUUID(datasetUUID): { flocker+: { datasetUUID: datasetUUID } } - }, - '#gcePersistentDisk':: d.obj(help='Represents a Persistent Disk resource in Google Compute Engine.\n\nA GCE PD must exist before mounting to a container. The disk must also be in the same GCE project and zone as the kubelet. A GCE PD can only be mounted as read/write once or read-only many times. GCE PDs support ownership management and SELinux relabeling.'), - gcePersistentDisk: { - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { gcePersistentDisk+: { fsType: fsType } }, - '#withPartition':: d.fn(help='The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='partition', type=d.T.integer)]), - withPartition(partition): { gcePersistentDisk+: { partition: partition } }, - '#withPdName':: d.fn(help='Unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='pdName', type=d.T.string)]), - withPdName(pdName): { gcePersistentDisk+: { pdName: pdName } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { gcePersistentDisk+: { readOnly: readOnly } } - }, - '#gitRepo':: d.obj(help="Represents a volume that is populated with the contents of a git repository. Git repo volumes do not support ownership management. Git repo volumes support SELinux relabeling.\n\nDEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod's container."), - gitRepo: { - '#withDirectory':: d.fn(help="Target directory name. Must not contain or start with '..'. If '.' is supplied, the volume directory will be the git repository. Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name.", args=[d.arg(name='directory', type=d.T.string)]), - withDirectory(directory): { gitRepo+: { directory: directory } }, - '#withRepository':: d.fn(help='Repository URL', args=[d.arg(name='repository', type=d.T.string)]), - withRepository(repository): { gitRepo+: { repository: repository } }, - '#withRevision':: d.fn(help='Commit hash for the specified revision.', args=[d.arg(name='revision', type=d.T.string)]), - withRevision(revision): { gitRepo+: { revision: revision } } - }, - '#glusterfs':: d.obj(help='Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling.'), - glusterfs: { - '#withEndpoints':: d.fn(help='EndpointsName is the endpoint name that details Glusterfs topology. More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='endpoints', type=d.T.string)]), - withEndpoints(endpoints): { glusterfs+: { endpoints: endpoints } }, - '#withPath':: d.fn(help='Path is the Glusterfs volume path. More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { glusterfs+: { path: path } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { glusterfs+: { readOnly: readOnly } } - }, - '#hostPath':: d.obj(help='Represents a host path mapped into a pod. Host path volumes do not support ownership management or SELinux relabeling.'), - hostPath: { - '#withPath':: d.fn(help='Path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { hostPath+: { path: path } }, - '#withType':: d.fn(help='Type for HostPath Volume Defaults to "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { hostPath+: { type: type } } - }, - '#iscsi':: d.obj(help='Represents an ISCSI disk. ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling.'), - iscsi: { - '#secretRef':: d.obj(help='LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.'), - secretRef: { - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { iscsi+: { secretRef+: { name: name } } } - }, - '#withChapAuthDiscovery':: d.fn(help='whether support iSCSI Discovery CHAP authentication', args=[d.arg(name='chapAuthDiscovery', type=d.T.boolean)]), - withChapAuthDiscovery(chapAuthDiscovery): { iscsi+: { chapAuthDiscovery: chapAuthDiscovery } }, - '#withChapAuthSession':: d.fn(help='whether support iSCSI Session CHAP authentication', args=[d.arg(name='chapAuthSession', type=d.T.boolean)]), - withChapAuthSession(chapAuthSession): { iscsi+: { chapAuthSession: chapAuthSession } }, - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { iscsi+: { fsType: fsType } }, - '#withInitiatorName':: d.fn(help='Custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface : will be created for the connection.', args=[d.arg(name='initiatorName', type=d.T.string)]), - withInitiatorName(initiatorName): { iscsi+: { initiatorName: initiatorName } }, - '#withIqn':: d.fn(help='Target iSCSI Qualified Name.', args=[d.arg(name='iqn', type=d.T.string)]), - withIqn(iqn): { iscsi+: { iqn: iqn } }, - '#withIscsiInterface':: d.fn(help="iSCSI Interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).", args=[d.arg(name='iscsiInterface', type=d.T.string)]), - withIscsiInterface(iscsiInterface): { iscsi+: { iscsiInterface: iscsiInterface } }, - '#withLun':: d.fn(help='iSCSI Target Lun number.', args=[d.arg(name='lun', type=d.T.integer)]), - withLun(lun): { iscsi+: { lun: lun } }, - '#withPortals':: d.fn(help='iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).', args=[d.arg(name='portals', type=d.T.array)]), - withPortals(portals): { iscsi+: { portals: if std.isArray(v=portals) then portals else [portals] } }, - '#withPortalsMixin':: d.fn(help='iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='portals', type=d.T.array)]), - withPortalsMixin(portals): { iscsi+: { portals+: if std.isArray(v=portals) then portals else [portals] } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { iscsi+: { readOnly: readOnly } }, - '#withTargetPortal':: d.fn(help='iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).', args=[d.arg(name='targetPortal', type=d.T.string)]), - withTargetPortal(targetPortal): { iscsi+: { targetPortal: targetPortal } } - }, - '#nfs':: d.obj(help='Represents an NFS mount that lasts the lifetime of a pod. NFS volumes do not support ownership management or SELinux relabeling.'), - nfs: { - '#withPath':: d.fn(help='Path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { nfs+: { path: path } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { nfs+: { readOnly: readOnly } }, - '#withServer':: d.fn(help='Server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs', args=[d.arg(name='server', type=d.T.string)]), - withServer(server): { nfs+: { server: server } } - }, - '#persistentVolumeClaim':: d.obj(help="PersistentVolumeClaimVolumeSource references the user's PVC in the same namespace. This volume finds the bound PV and mounts that volume for the pod. A PersistentVolumeClaimVolumeSource is, essentially, a wrapper around another type of volume that is owned by someone else (the system)."), - persistentVolumeClaim: { - '#withClaimName':: d.fn(help='ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims', args=[d.arg(name='claimName', type=d.T.string)]), - withClaimName(claimName): { persistentVolumeClaim+: { claimName: claimName } }, - '#withReadOnly':: d.fn(help='Will force the ReadOnly setting in VolumeMounts. Default false.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { persistentVolumeClaim+: { readOnly: readOnly } } - }, - '#photonPersistentDisk':: d.obj(help='Represents a Photon Controller persistent disk resource.'), - photonPersistentDisk: { - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { photonPersistentDisk+: { fsType: fsType } }, - '#withPdID':: d.fn(help='ID that identifies Photon Controller persistent disk', args=[d.arg(name='pdID', type=d.T.string)]), - withPdID(pdID): { photonPersistentDisk+: { pdID: pdID } } - }, - '#portworxVolume':: d.obj(help='PortworxVolumeSource represents a Portworx volume resource.'), - portworxVolume: { - '#withFsType':: d.fn(help='FSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { portworxVolume+: { fsType: fsType } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { portworxVolume+: { readOnly: readOnly } }, - '#withVolumeID':: d.fn(help='VolumeID uniquely identifies a Portworx volume', args=[d.arg(name='volumeID', type=d.T.string)]), - withVolumeID(volumeID): { portworxVolume+: { volumeID: volumeID } } - }, - '#projected':: d.obj(help='Represents a projected volume source'), - projected: { - '#withDefaultMode':: d.fn(help='Mode bits to use on created files by default. Must be a value between 0 and 0777. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.', args=[d.arg(name='defaultMode', type=d.T.integer)]), - withDefaultMode(defaultMode): { projected+: { defaultMode: defaultMode } }, - '#withSources':: d.fn(help='list of volume projections', args=[d.arg(name='sources', type=d.T.array)]), - withSources(sources): { projected+: { sources: if std.isArray(v=sources) then sources else [sources] } }, - '#withSourcesMixin':: d.fn(help='list of volume projections\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sources', type=d.T.array)]), - withSourcesMixin(sources): { projected+: { sources+: if std.isArray(v=sources) then sources else [sources] } } - }, - '#quobyte':: d.obj(help='Represents a Quobyte mount that lasts the lifetime of a pod. Quobyte volumes do not support ownership management or SELinux relabeling.'), - quobyte: { - '#withGroup':: d.fn(help='Group to map volume access to Default is no group', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { quobyte+: { group: group } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { quobyte+: { readOnly: readOnly } }, - '#withRegistry':: d.fn(help='Registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes', args=[d.arg(name='registry', type=d.T.string)]), - withRegistry(registry): { quobyte+: { registry: registry } }, - '#withTenant':: d.fn(help='Tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin', args=[d.arg(name='tenant', type=d.T.string)]), - withTenant(tenant): { quobyte+: { tenant: tenant } }, - '#withUser':: d.fn(help='User to map volume access to Defaults to serivceaccount user', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { quobyte+: { user: user } }, - '#withVolume':: d.fn(help='Volume is a string that references an already created Quobyte volume by name.', args=[d.arg(name='volume', type=d.T.string)]), - withVolume(volume): { quobyte+: { volume: volume } } - }, - '#rbd':: d.obj(help='Represents a Rados Block Device mount that lasts the lifetime of a pod. RBD volumes support ownership management and SELinux relabeling.'), - rbd: { - '#secretRef':: d.obj(help='LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.'), - secretRef: { - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { rbd+: { secretRef+: { name: name } } } - }, - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { rbd+: { fsType: fsType } }, - '#withImage':: d.fn(help='The rados image name. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='image', type=d.T.string)]), - withImage(image): { rbd+: { image: image } }, - '#withKeyring':: d.fn(help='Keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='keyring', type=d.T.string)]), - withKeyring(keyring): { rbd+: { keyring: keyring } }, - '#withMonitors':: d.fn(help='A collection of Ceph monitors. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitors(monitors): { rbd+: { monitors: if std.isArray(v=monitors) then monitors else [monitors] } }, - '#withMonitorsMixin':: d.fn(help='A collection of Ceph monitors. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitorsMixin(monitors): { rbd+: { monitors+: if std.isArray(v=monitors) then monitors else [monitors] } }, - '#withPool':: d.fn(help='The rados pool name. Default is rbd. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='pool', type=d.T.string)]), - withPool(pool): { rbd+: { pool: pool } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { rbd+: { readOnly: readOnly } }, - '#withUser':: d.fn(help='The rados user name. Default is admin. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { rbd+: { user: user } } - }, - '#scaleIO':: d.obj(help='ScaleIOVolumeSource represents a persistent ScaleIO volume'), - scaleIO: { - '#secretRef':: d.obj(help='LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.'), - secretRef: { - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { scaleIO+: { secretRef+: { name: name } } } - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Default is "xfs".', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { scaleIO+: { fsType: fsType } }, - '#withGateway':: d.fn(help='The host address of the ScaleIO API Gateway.', args=[d.arg(name='gateway', type=d.T.string)]), - withGateway(gateway): { scaleIO+: { gateway: gateway } }, - '#withProtectionDomain':: d.fn(help='The name of the ScaleIO Protection Domain for the configured storage.', args=[d.arg(name='protectionDomain', type=d.T.string)]), - withProtectionDomain(protectionDomain): { scaleIO+: { protectionDomain: protectionDomain } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { scaleIO+: { readOnly: readOnly } }, - '#withSslEnabled':: d.fn(help='Flag to enable/disable SSL communication with Gateway, default false', args=[d.arg(name='sslEnabled', type=d.T.boolean)]), - withSslEnabled(sslEnabled): { scaleIO+: { sslEnabled: sslEnabled } }, - '#withStorageMode':: d.fn(help='Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.', args=[d.arg(name='storageMode', type=d.T.string)]), - withStorageMode(storageMode): { scaleIO+: { storageMode: storageMode } }, - '#withStoragePool':: d.fn(help='The ScaleIO Storage Pool associated with the protection domain.', args=[d.arg(name='storagePool', type=d.T.string)]), - withStoragePool(storagePool): { scaleIO+: { storagePool: storagePool } }, - '#withSystem':: d.fn(help='The name of the storage system as configured in ScaleIO.', args=[d.arg(name='system', type=d.T.string)]), - withSystem(system): { scaleIO+: { system: system } }, - '#withVolumeName':: d.fn(help='The name of a volume already created in the ScaleIO system that is associated with this volume source.', args=[d.arg(name='volumeName', type=d.T.string)]), - withVolumeName(volumeName): { scaleIO+: { volumeName: volumeName } } - }, - '#secret':: d.obj(help="Adapts a Secret into a volume.\n\nThe contents of the target Secret's Data field will be presented in a volume as files using the keys in the Data field as the file names. Secret volumes support ownership management and SELinux relabeling."), - secret: { - '#withDefaultMode':: d.fn(help='Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.', args=[d.arg(name='defaultMode', type=d.T.integer)]), - withDefaultMode(defaultMode): { secret+: { defaultMode: defaultMode } }, - '#withItems':: d.fn(help="If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.", args=[d.arg(name='items', type=d.T.array)]), - withItems(items): { secret+: { items: if std.isArray(v=items) then items else [items] } }, - '#withItemsMixin':: d.fn(help="If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='items', type=d.T.array)]), - withItemsMixin(items): { secret+: { items+: if std.isArray(v=items) then items else [items] } }, - '#withOptional':: d.fn(help="Specify whether the Secret or it's keys must be defined", args=[d.arg(name='optional', type=d.T.boolean)]), - withOptional(optional): { secret+: { optional: optional } }, - '#withSecretName':: d.fn(help="Name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret", args=[d.arg(name='secretName', type=d.T.string)]), - withSecretName(secretName): { secret+: { secretName: secretName } } - }, - '#storageos':: d.obj(help='Represents a StorageOS persistent volume resource.'), - storageos: { - '#secretRef':: d.obj(help='LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.'), - secretRef: { - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { storageos+: { secretRef+: { name: name } } } - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { storageos+: { fsType: fsType } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { storageos+: { readOnly: readOnly } }, - '#withVolumeName':: d.fn(help='VolumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.', args=[d.arg(name='volumeName', type=d.T.string)]), - withVolumeName(volumeName): { storageos+: { volumeName: volumeName } }, - '#withVolumeNamespace':: d.fn(help="VolumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod's namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to 'default' if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created.", args=[d.arg(name='volumeNamespace', type=d.T.string)]), - withVolumeNamespace(volumeNamespace): { storageos+: { volumeNamespace: volumeNamespace } } - }, - '#vsphereVolume':: d.obj(help='Represents a vSphere volume resource.'), - vsphereVolume: { - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { vsphereVolume+: { fsType: fsType } }, - '#withStoragePolicyID':: d.fn(help='Storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.', args=[d.arg(name='storagePolicyID', type=d.T.string)]), - withStoragePolicyID(storagePolicyID): { vsphereVolume+: { storagePolicyID: storagePolicyID } }, - '#withStoragePolicyName':: d.fn(help='Storage Policy Based Management (SPBM) profile name.', args=[d.arg(name='storagePolicyName', type=d.T.string)]), - withStoragePolicyName(storagePolicyName): { vsphereVolume+: { storagePolicyName: storagePolicyName } }, - '#withVolumePath':: d.fn(help='Path that identifies vSphere volume vmdk', args=[d.arg(name='volumePath', type=d.T.string)]), - withVolumePath(volumePath): { vsphereVolume+: { volumePath: volumePath } } - }, - '#withName':: d.fn(help="Volume's name. Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/volumeDevice.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/volumeDevice.libsonnet deleted file mode 100644 index 2c943e7e4765..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/volumeDevice.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='volumeDevice', url='', help='volumeDevice describes a mapping of a raw block device within a container.'), - '#withDevicePath':: d.fn(help='devicePath is the path inside of the container that the device will be mapped to.', args=[d.arg(name='devicePath', type=d.T.string)]), - withDevicePath(devicePath): { devicePath: devicePath }, - '#withName':: d.fn(help='name must match the name of a persistentVolumeClaim in the pod', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/volumeMount.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/volumeMount.libsonnet deleted file mode 100644 index d6d6b224480c..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/volumeMount.libsonnet +++ /dev/null @@ -1,18 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='volumeMount', url='', help='VolumeMount describes a mounting of a Volume within a container.'), - '#withMountPath':: d.fn(help="Path within the container at which the volume should be mounted. Must not contain ':'.", args=[d.arg(name='mountPath', type=d.T.string)]), - withMountPath(mountPath): { mountPath: mountPath }, - '#withMountPropagation':: d.fn(help='mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10.', args=[d.arg(name='mountPropagation', type=d.T.string)]), - withMountPropagation(mountPropagation): { mountPropagation: mountPropagation }, - '#withName':: d.fn(help='This must match the Name of a Volume.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withReadOnly':: d.fn(help='Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#withSubPath':: d.fn(help="Path within the volume from which the container's volume should be mounted. Defaults to '' (volume's root).", args=[d.arg(name='subPath', type=d.T.string)]), - withSubPath(subPath): { subPath: subPath }, - '#withSubPathExpr':: d.fn(help="Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to '' (volume's root). SubPathExpr and SubPath are mutually exclusive. This field is alpha in 1.14.", args=[d.arg(name='subPathExpr', type=d.T.string)]), - withSubPathExpr(subPathExpr): { subPathExpr: subPathExpr }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/volumeNodeAffinity.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/volumeNodeAffinity.libsonnet deleted file mode 100644 index 67ae96943b84..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/volumeNodeAffinity.libsonnet +++ /dev/null @@ -1,13 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='volumeNodeAffinity', url='', help='VolumeNodeAffinity defines constraints that limit what nodes this volume can be accessed from.'), - '#required':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - required: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { required+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { required+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/volumeProjection.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/volumeProjection.libsonnet deleted file mode 100644 index ed62b422b2eb..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/volumeProjection.libsonnet +++ /dev/null @@ -1,44 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='volumeProjection', url='', help='Projection that may be projected along with other supported volume types'), - '#configMap':: d.obj(help="Adapts a ConfigMap into a projected volume.\n\nThe contents of the target ConfigMap's Data field will be presented in a projected volume as files using the keys in the Data field as the file names, unless the items element is populated with specific mappings of keys to paths. Note that this is identical to a configmap volume source without the default mode."), - configMap: { - '#withItems':: d.fn(help="If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.", args=[d.arg(name='items', type=d.T.array)]), - withItems(items): { configMap+: { items: if std.isArray(v=items) then items else [items] } }, - '#withItemsMixin':: d.fn(help="If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='items', type=d.T.array)]), - withItemsMixin(items): { configMap+: { items+: if std.isArray(v=items) then items else [items] } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { configMap+: { name: name } }, - '#withOptional':: d.fn(help="Specify whether the ConfigMap or it's keys must be defined", args=[d.arg(name='optional', type=d.T.boolean)]), - withOptional(optional): { configMap+: { optional: optional } } - }, - '#downwardAPI':: d.obj(help='Represents downward API info for projecting into a projected volume. Note that this is identical to a downwardAPI volume source without the default mode.'), - downwardAPI: { - '#withItems':: d.fn(help='Items is a list of DownwardAPIVolume file', args=[d.arg(name='items', type=d.T.array)]), - withItems(items): { downwardAPI+: { items: if std.isArray(v=items) then items else [items] } }, - '#withItemsMixin':: d.fn(help='Items is a list of DownwardAPIVolume file\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='items', type=d.T.array)]), - withItemsMixin(items): { downwardAPI+: { items+: if std.isArray(v=items) then items else [items] } } - }, - '#secret':: d.obj(help="Adapts a secret into a projected volume.\n\nThe contents of the target Secret's Data field will be presented in a projected volume as files using the keys in the Data field as the file names. Note that this is identical to a secret volume source without the default mode."), - secret: { - '#withItems':: d.fn(help="If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.", args=[d.arg(name='items', type=d.T.array)]), - withItems(items): { secret+: { items: if std.isArray(v=items) then items else [items] } }, - '#withItemsMixin':: d.fn(help="If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='items', type=d.T.array)]), - withItemsMixin(items): { secret+: { items+: if std.isArray(v=items) then items else [items] } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { secret+: { name: name } }, - '#withOptional':: d.fn(help='Specify whether the Secret or its key must be defined', args=[d.arg(name='optional', type=d.T.boolean)]), - withOptional(optional): { secret+: { optional: optional } } - }, - '#serviceAccountToken':: d.obj(help='ServiceAccountTokenProjection represents a projected service account token volume. This projection can be used to insert a service account token into the pods runtime filesystem for use against APIs (Kubernetes API Server or otherwise).'), - serviceAccountToken: { - '#withAudience':: d.fn(help='Audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver.', args=[d.arg(name='audience', type=d.T.string)]), - withAudience(audience): { serviceAccountToken+: { audience: audience } }, - '#withExpirationSeconds':: d.fn(help='ExpirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes.', args=[d.arg(name='expirationSeconds', type=d.T.integer)]), - withExpirationSeconds(expirationSeconds): { serviceAccountToken+: { expirationSeconds: expirationSeconds } }, - '#withPath':: d.fn(help='Path is the path relative to the mount point of the file to project the token into.', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { serviceAccountToken+: { path: path } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/vsphereVirtualDiskVolumeSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/vsphereVirtualDiskVolumeSource.libsonnet deleted file mode 100644 index 1ed4c5a45de7..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/vsphereVirtualDiskVolumeSource.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='vsphereVirtualDiskVolumeSource', url='', help='Represents a vSphere volume resource.'), - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { fsType: fsType }, - '#withStoragePolicyID':: d.fn(help='Storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.', args=[d.arg(name='storagePolicyID', type=d.T.string)]), - withStoragePolicyID(storagePolicyID): { storagePolicyID: storagePolicyID }, - '#withStoragePolicyName':: d.fn(help='Storage Policy Based Management (SPBM) profile name.', args=[d.arg(name='storagePolicyName', type=d.T.string)]), - withStoragePolicyName(storagePolicyName): { storagePolicyName: storagePolicyName }, - '#withVolumePath':: d.fn(help='Path that identifies vSphere volume vmdk', args=[d.arg(name='volumePath', type=d.T.string)]), - withVolumePath(volumePath): { volumePath: volumePath }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/weightedPodAffinityTerm.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/weightedPodAffinityTerm.libsonnet deleted file mode 100644 index 468ffb9dec21..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/core/v1/weightedPodAffinityTerm.libsonnet +++ /dev/null @@ -1,28 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='weightedPodAffinityTerm', url='', help='The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)'), - '#podAffinityTerm':: d.obj(help='Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running'), - podAffinityTerm: { - '#labelSelector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - labelSelector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { podAffinityTerm+: { labelSelector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { podAffinityTerm+: { labelSelector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { podAffinityTerm+: { labelSelector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { podAffinityTerm+: { labelSelector+: { matchLabels+: matchLabels } } } - }, - '#withNamespaces':: d.fn(help="namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means 'this pod's namespace'", args=[d.arg(name='namespaces', type=d.T.array)]), - withNamespaces(namespaces): { podAffinityTerm+: { namespaces: if std.isArray(v=namespaces) then namespaces else [namespaces] } }, - '#withNamespacesMixin':: d.fn(help="namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means 'this pod's namespace'\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='namespaces', type=d.T.array)]), - withNamespacesMixin(namespaces): { podAffinityTerm+: { namespaces+: if std.isArray(v=namespaces) then namespaces else [namespaces] } }, - '#withTopologyKey':: d.fn(help='This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.', args=[d.arg(name='topologyKey', type=d.T.string)]), - withTopologyKey(topologyKey): { podAffinityTerm+: { topologyKey: topologyKey } } - }, - '#withWeight':: d.fn(help='weight associated with matching the corresponding podAffinityTerm, in the range 1-100.', args=[d.arg(name='weight', type=d.T.integer)]), - withWeight(weight): { weight: weight }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/events/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/events/main.libsonnet deleted file mode 100644 index cef5bc193935..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/events/main.libsonnet +++ /dev/null @@ -1,5 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='events', url='', help=''), - v1beta1: (import 'v1beta1/main.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/events/v1beta1/event.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/events/v1beta1/event.libsonnet deleted file mode 100644 index 392756da9c50..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/events/v1beta1/event.libsonnet +++ /dev/null @@ -1,159 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='event', url='', help='Event is a report of an event somewhere in the cluster. It generally denotes some state change in the system.'), - '#deprecatedSource':: d.obj(help='EventSource contains information for an event.'), - deprecatedSource: { - '#withComponent':: d.fn(help='Component from which the event is generated.', args=[d.arg(name='component', type=d.T.string)]), - withComponent(component): { deprecatedSource+: { component: component } }, - '#withHost':: d.fn(help='Node name on which the event is generated.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { deprecatedSource+: { host: host } } - }, - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Event', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'events.k8s.io/v1beta1', - kind: 'Event' - } + self.metadata.withName(name=name), - '#regarding':: d.obj(help='ObjectReference contains enough information to let you inspect or modify the referred object.'), - regarding: { - '#withFieldPath':: d.fn(help='If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { regarding+: { fieldPath: fieldPath } }, - '#withKind':: d.fn(help='Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { regarding+: { kind: kind } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { regarding+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { regarding+: { namespace: namespace } }, - '#withResourceVersion':: d.fn(help='Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { regarding+: { resourceVersion: resourceVersion } }, - '#withUid':: d.fn(help='UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { regarding+: { uid: uid } } - }, - '#related':: d.obj(help='ObjectReference contains enough information to let you inspect or modify the referred object.'), - related: { - '#withFieldPath':: d.fn(help='If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { related+: { fieldPath: fieldPath } }, - '#withKind':: d.fn(help='Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { related+: { kind: kind } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { related+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { related+: { namespace: namespace } }, - '#withResourceVersion':: d.fn(help='Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { related+: { resourceVersion: resourceVersion } }, - '#withUid':: d.fn(help='UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { related+: { uid: uid } } - }, - '#series':: d.obj(help='EventSeries contain information on series of events, i.e. thing that was/is happening continuously for some time.'), - series: { - '#withCount':: d.fn(help='Number of occurrences in this series up to the last heartbeat time', args=[d.arg(name='count', type=d.T.integer)]), - withCount(count): { series+: { count: count } }, - '#withLastObservedTime':: d.fn(help='MicroTime is version of Time with microsecond level precision.', args=[d.arg(name='lastObservedTime', type=d.T.string)]), - withLastObservedTime(lastObservedTime): { series+: { lastObservedTime: lastObservedTime } }, - '#withState':: d.fn(help='Information whether this series is ongoing or finished.', args=[d.arg(name='state', type=d.T.string)]), - withState(state): { series+: { state: state } } - }, - '#withAction':: d.fn(help='What action was taken/failed regarding to the regarding object.', args=[d.arg(name='action', type=d.T.string)]), - withAction(action): { action: action }, - '#withDeprecatedCount':: d.fn(help='Deprecated field assuring backward compatibility with core.v1 Event type', args=[d.arg(name='deprecatedCount', type=d.T.integer)]), - withDeprecatedCount(deprecatedCount): { deprecatedCount: deprecatedCount }, - '#withDeprecatedFirstTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deprecatedFirstTimestamp', type=d.T.string)]), - withDeprecatedFirstTimestamp(deprecatedFirstTimestamp): { deprecatedFirstTimestamp: deprecatedFirstTimestamp }, - '#withDeprecatedLastTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deprecatedLastTimestamp', type=d.T.string)]), - withDeprecatedLastTimestamp(deprecatedLastTimestamp): { deprecatedLastTimestamp: deprecatedLastTimestamp }, - '#withEventTime':: d.fn(help='MicroTime is version of Time with microsecond level precision.', args=[d.arg(name='eventTime', type=d.T.string)]), - withEventTime(eventTime): { eventTime: eventTime }, - '#withNote':: d.fn(help='Optional. A human-readable description of the status of this operation. Maximal length of the note is 1kB, but libraries should be prepared to handle values up to 64kB.', args=[d.arg(name='note', type=d.T.string)]), - withNote(note): { note: note }, - '#withReason':: d.fn(help='Why the action was taken.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#withReportingController':: d.fn(help='Name of the controller that emitted this Event, e.g. `kubernetes.io/kubelet`.', args=[d.arg(name='reportingController', type=d.T.string)]), - withReportingController(reportingController): { reportingController: reportingController }, - '#withReportingInstance':: d.fn(help='ID of the controller instance, e.g. `kubelet-xyzf`.', args=[d.arg(name='reportingInstance', type=d.T.string)]), - withReportingInstance(reportingInstance): { reportingInstance: reportingInstance }, - '#withType':: d.fn(help='Type of this event (Normal, Warning), new types could be added in the future.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/events/v1beta1/eventSeries.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/events/v1beta1/eventSeries.libsonnet deleted file mode 100644 index 9c6ba17f6223..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/events/v1beta1/eventSeries.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='eventSeries', url='', help='EventSeries contain information on series of events, i.e. thing that was/is happening continuously for some time.'), - '#withCount':: d.fn(help='Number of occurrences in this series up to the last heartbeat time', args=[d.arg(name='count', type=d.T.integer)]), - withCount(count): { count: count }, - '#withLastObservedTime':: d.fn(help='MicroTime is version of Time with microsecond level precision.', args=[d.arg(name='lastObservedTime', type=d.T.string)]), - withLastObservedTime(lastObservedTime): { lastObservedTime: lastObservedTime }, - '#withState':: d.fn(help='Information whether this series is ongoing or finished.', args=[d.arg(name='state', type=d.T.string)]), - withState(state): { state: state }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/events/v1beta1/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/events/v1beta1/main.libsonnet deleted file mode 100644 index 8276b80ffdef..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/events/v1beta1/main.libsonnet +++ /dev/null @@ -1,6 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1beta1', url='', help=''), - event: (import 'event.libsonnet'), - eventSeries: (import 'eventSeries.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/main.libsonnet deleted file mode 100644 index eae12552137e..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/main.libsonnet +++ /dev/null @@ -1,5 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='extensions', url='', help=''), - v1beta1: (import 'v1beta1/main.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/allowedCSIDriver.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/allowedCSIDriver.libsonnet deleted file mode 100644 index 8560c3b73432..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/allowedCSIDriver.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='allowedCSIDriver', url='', help='AllowedCSIDriver represents a single inline CSI Driver that is allowed to be used.'), - '#withName':: d.fn(help='Name is the registered name of the CSI driver', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/allowedFlexVolume.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/allowedFlexVolume.libsonnet deleted file mode 100644 index 4a71ae58f8b4..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/allowedFlexVolume.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='allowedFlexVolume', url='', help='AllowedFlexVolume represents a single Flexvolume that is allowed to be used. Deprecated: use AllowedFlexVolume from policy API Group instead.'), - '#withDriver':: d.fn(help='driver is the name of the Flexvolume driver.', args=[d.arg(name='driver', type=d.T.string)]), - withDriver(driver): { driver: driver }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/allowedHostPath.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/allowedHostPath.libsonnet deleted file mode 100644 index 13e92c870453..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/allowedHostPath.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='allowedHostPath', url='', help='AllowedHostPath defines the host volume conditions that will be enabled by a policy for pods to use. It requires the path prefix to be defined. Deprecated: use AllowedHostPath from policy API Group instead.'), - '#withPathPrefix':: d.fn(help='pathPrefix is the path prefix that the host volume must match. It does not support `*`. Trailing slashes are trimmed when validating the path prefix with a host path.\n\nExamples: `/foo` would allow `/foo`, `/foo/` and `/foo/bar` `/foo` would not allow `/food` or `/etc/foo`', args=[d.arg(name='pathPrefix', type=d.T.string)]), - withPathPrefix(pathPrefix): { pathPrefix: pathPrefix }, - '#withReadOnly':: d.fn(help='when set to true, will allow host volumes matching the pathPrefix only if all volume mounts are readOnly.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/daemonSet.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/daemonSet.libsonnet deleted file mode 100644 index 66e350bd16ae..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/daemonSet.libsonnet +++ /dev/null @@ -1,365 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='daemonSet', url='', help='DEPRECATED - This group version of DaemonSet is deprecated by apps/v1beta2/DaemonSet. See the release notes for more information. DaemonSet represents the configuration of a daemon set.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Daemonset', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'extensions/v1beta1', - kind: 'DaemonSet' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='DaemonSetSpec is the specification of a daemon set.'), - spec: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { spec+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { spec+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { spec+: { selector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { spec+: { selector+: { matchLabels+: matchLabels } } } - }, - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { group: group } } } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { name: name } } } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { spec+: { template+: { metadata+: { initializers+: { result+: { code: code } } } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { template+: { metadata+: { initializers+: { result+: { kind: kind } } } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { spec+: { template+: { metadata+: { initializers+: { result+: { message: message } } } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { spec+: { template+: { metadata+: { initializers+: { result+: { metadata: metadata } } } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { spec+: { template+: { metadata+: { initializers+: { result+: { reason: reason } } } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { spec+: { template+: { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { spec+: { template+: { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { spec+: { template+: { metadata+: { annotations: annotations } } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { spec+: { template+: { metadata+: { annotations+: annotations } } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { spec+: { template+: { metadata+: { clusterName: clusterName } } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { spec+: { template+: { metadata+: { creationTimestamp: creationTimestamp } } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { spec+: { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { spec+: { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { spec+: { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { spec+: { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { spec+: { template+: { metadata+: { generateName: generateName } } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { spec+: { template+: { metadata+: { generation: generation } } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { spec+: { template+: { metadata+: { labels: labels } } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { spec+: { template+: { metadata+: { labels+: labels } } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { spec+: { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { spec+: { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { template+: { metadata+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { template+: { metadata+: { namespace: namespace } } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { spec+: { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { spec+: { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { spec+: { template+: { metadata+: { resourceVersion: resourceVersion } } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { spec+: { template+: { metadata+: { selfLink: selfLink } } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { template+: { metadata+: { uid: uid } } } } - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } } - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } - } - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { spec+: { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { spec+: { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { spec+: { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { spec+: { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { spec+: { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { spec+: { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } } } - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } } } - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { spec+: { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { spec+: { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { spec+: { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { spec+: { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { spec+: { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { spec+: { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { spec+: { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { spec+: { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } } - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { spec+: { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { spec+: { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { spec+: { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { spec+: { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { spec+: { template+: { spec+: { dnsPolicy: dnsPolicy } } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { spec+: { template+: { spec+: { enableServiceLinks: enableServiceLinks } } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { spec+: { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { spec+: { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { spec+: { template+: { spec+: { hostIPC: hostIPC } } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { spec+: { template+: { spec+: { hostNetwork: hostNetwork } } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { spec+: { template+: { spec+: { hostPID: hostPID } } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { spec+: { template+: { spec+: { hostname: hostname } } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { spec+: { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { spec+: { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { spec+: { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { spec+: { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { spec+: { template+: { spec+: { nodeName: nodeName } } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { spec+: { template+: { spec+: { nodeSelector: nodeSelector } } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { spec+: { template+: { spec+: { nodeSelector+: nodeSelector } } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { spec+: { template+: { spec+: { priority: priority } } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { spec+: { template+: { spec+: { priorityClassName: priorityClassName } } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { spec+: { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { spec+: { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { spec+: { template+: { spec+: { restartPolicy: restartPolicy } } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is an alpha feature and may change in the future.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { spec+: { template+: { spec+: { runtimeClassName: runtimeClassName } } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { spec+: { template+: { spec+: { schedulerName: schedulerName } } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { spec+: { template+: { spec+: { serviceAccount: serviceAccount } } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { spec+: { template+: { spec+: { serviceAccountName: serviceAccountName } } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false. This field is beta-level and may be disabled with the PodShareProcessNamespace feature.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { spec+: { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { spec+: { template+: { spec+: { subdomain: subdomain } } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { spec+: { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { spec+: { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { spec+: { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { spec+: { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { spec+: { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } } } - } - }, - '#updateStrategy':: d.obj(help=''), - updateStrategy: { - '#rollingUpdate':: d.obj(help='Spec to control the desired behavior of daemon set rolling update.'), - rollingUpdate: { - '#withMaxUnavailable':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxUnavailable', type=d.T.string)]), - withMaxUnavailable(maxUnavailable): { spec+: { updateStrategy+: { rollingUpdate+: { maxUnavailable: maxUnavailable } } } } - }, - '#withType':: d.fn(help='Type of daemon set update. Can be "RollingUpdate" or "OnDelete". Default is OnDelete.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { updateStrategy+: { type: type } } } - }, - '#withMinReadySeconds':: d.fn(help='The minimum number of seconds for which a newly created DaemonSet pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready).', args=[d.arg(name='minReadySeconds', type=d.T.integer)]), - withMinReadySeconds(minReadySeconds): { spec+: { minReadySeconds: minReadySeconds } }, - '#withRevisionHistoryLimit':: d.fn(help='The number of old history to retain to allow rollback. This is a pointer to distinguish between explicit zero and not specified. Defaults to 10.', args=[d.arg(name='revisionHistoryLimit', type=d.T.integer)]), - withRevisionHistoryLimit(revisionHistoryLimit): { spec+: { revisionHistoryLimit: revisionHistoryLimit } }, - '#withTemplateGeneration':: d.fn(help='DEPRECATED. A sequence number representing a specific generation of the template. Populated by the system. It can be set only during the creation.', args=[d.arg(name='templateGeneration', type=d.T.integer)]), - withTemplateGeneration(templateGeneration): { spec+: { templateGeneration: templateGeneration } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/daemonSetCondition.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/daemonSetCondition.libsonnet deleted file mode 100644 index b00356552154..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/daemonSetCondition.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='daemonSetCondition', url='', help='DaemonSetCondition describes the state of a DaemonSet at a certain point.'), - '#withLastTransitionTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastTransitionTime', type=d.T.string)]), - withLastTransitionTime(lastTransitionTime): { lastTransitionTime: lastTransitionTime }, - '#withMessage':: d.fn(help='A human readable message indicating details about the transition.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withReason':: d.fn(help="The reason for the condition's last transition.", args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#withType':: d.fn(help='Type of DaemonSet condition.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/daemonSetSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/daemonSetSpec.libsonnet deleted file mode 100644 index fffc1449c538..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/daemonSetSpec.libsonnet +++ /dev/null @@ -1,275 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='daemonSetSpec', url='', help='DaemonSetSpec is the specification of a daemon set.'), - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { selector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { selector+: { matchLabels+: matchLabels } } - }, - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { template+: { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { template+: { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { template+: { metadata+: { initializers+: { result+: { details+: { group: group } } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { template+: { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { template+: { metadata+: { initializers+: { result+: { details+: { name: name } } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { template+: { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { template+: { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { template+: { metadata+: { initializers+: { result+: { code: code } } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { template+: { metadata+: { initializers+: { result+: { kind: kind } } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { template+: { metadata+: { initializers+: { result+: { message: message } } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { template+: { metadata+: { initializers+: { result+: { metadata: metadata } } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { template+: { metadata+: { initializers+: { result+: { reason: reason } } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { template+: { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { template+: { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { template+: { metadata+: { annotations: annotations } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { template+: { metadata+: { annotations+: annotations } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { template+: { metadata+: { clusterName: clusterName } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { template+: { metadata+: { creationTimestamp: creationTimestamp } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { template+: { metadata+: { generateName: generateName } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { template+: { metadata+: { generation: generation } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { template+: { metadata+: { labels: labels } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { template+: { metadata+: { labels+: labels } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { template+: { metadata+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { template+: { metadata+: { namespace: namespace } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { template+: { metadata+: { resourceVersion: resourceVersion } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { template+: { metadata+: { selfLink: selfLink } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { template+: { metadata+: { uid: uid } } } - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } - } - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } } - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } } - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { template+: { spec+: { dnsPolicy: dnsPolicy } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { template+: { spec+: { enableServiceLinks: enableServiceLinks } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { template+: { spec+: { hostIPC: hostIPC } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { template+: { spec+: { hostNetwork: hostNetwork } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { template+: { spec+: { hostPID: hostPID } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { template+: { spec+: { hostname: hostname } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { template+: { spec+: { nodeName: nodeName } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { template+: { spec+: { nodeSelector: nodeSelector } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { template+: { spec+: { nodeSelector+: nodeSelector } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { template+: { spec+: { priority: priority } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { template+: { spec+: { priorityClassName: priorityClassName } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { template+: { spec+: { restartPolicy: restartPolicy } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is an alpha feature and may change in the future.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { template+: { spec+: { runtimeClassName: runtimeClassName } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { template+: { spec+: { schedulerName: schedulerName } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { template+: { spec+: { serviceAccount: serviceAccount } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { template+: { spec+: { serviceAccountName: serviceAccountName } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false. This field is beta-level and may be disabled with the PodShareProcessNamespace feature.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { template+: { spec+: { subdomain: subdomain } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } } - } - }, - '#updateStrategy':: d.obj(help=''), - updateStrategy: { - '#rollingUpdate':: d.obj(help='Spec to control the desired behavior of daemon set rolling update.'), - rollingUpdate: { - '#withMaxUnavailable':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxUnavailable', type=d.T.string)]), - withMaxUnavailable(maxUnavailable): { updateStrategy+: { rollingUpdate+: { maxUnavailable: maxUnavailable } } } - }, - '#withType':: d.fn(help='Type of daemon set update. Can be "RollingUpdate" or "OnDelete". Default is OnDelete.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { updateStrategy+: { type: type } } - }, - '#withMinReadySeconds':: d.fn(help='The minimum number of seconds for which a newly created DaemonSet pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready).', args=[d.arg(name='minReadySeconds', type=d.T.integer)]), - withMinReadySeconds(minReadySeconds): { minReadySeconds: minReadySeconds }, - '#withRevisionHistoryLimit':: d.fn(help='The number of old history to retain to allow rollback. This is a pointer to distinguish between explicit zero and not specified. Defaults to 10.', args=[d.arg(name='revisionHistoryLimit', type=d.T.integer)]), - withRevisionHistoryLimit(revisionHistoryLimit): { revisionHistoryLimit: revisionHistoryLimit }, - '#withTemplateGeneration':: d.fn(help='DEPRECATED. A sequence number representing a specific generation of the template. Populated by the system. It can be set only during the creation.', args=[d.arg(name='templateGeneration', type=d.T.integer)]), - withTemplateGeneration(templateGeneration): { templateGeneration: templateGeneration }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/daemonSetStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/daemonSetStatus.libsonnet deleted file mode 100644 index 75fee2193203..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/daemonSetStatus.libsonnet +++ /dev/null @@ -1,28 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='daemonSetStatus', url='', help='DaemonSetStatus represents the current status of a daemon set.'), - '#withCollisionCount':: d.fn(help='Count of hash collisions for the DaemonSet. The DaemonSet controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ControllerRevision.', args=[d.arg(name='collisionCount', type=d.T.integer)]), - withCollisionCount(collisionCount): { collisionCount: collisionCount }, - '#withConditions':: d.fn(help="Represents the latest available observations of a DaemonSet's current state.", args=[d.arg(name='conditions', type=d.T.array)]), - withConditions(conditions): { conditions: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withConditionsMixin':: d.fn(help="Represents the latest available observations of a DaemonSet's current state.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='conditions', type=d.T.array)]), - withConditionsMixin(conditions): { conditions+: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withCurrentNumberScheduled':: d.fn(help='The number of nodes that are running at least 1 daemon pod and are supposed to run the daemon pod. More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/', args=[d.arg(name='currentNumberScheduled', type=d.T.integer)]), - withCurrentNumberScheduled(currentNumberScheduled): { currentNumberScheduled: currentNumberScheduled }, - '#withDesiredNumberScheduled':: d.fn(help='The total number of nodes that should be running the daemon pod (including nodes correctly running the daemon pod). More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/', args=[d.arg(name='desiredNumberScheduled', type=d.T.integer)]), - withDesiredNumberScheduled(desiredNumberScheduled): { desiredNumberScheduled: desiredNumberScheduled }, - '#withNumberAvailable':: d.fn(help='The number of nodes that should be running the daemon pod and have one or more of the daemon pod running and available (ready for at least spec.minReadySeconds)', args=[d.arg(name='numberAvailable', type=d.T.integer)]), - withNumberAvailable(numberAvailable): { numberAvailable: numberAvailable }, - '#withNumberMisscheduled':: d.fn(help='The number of nodes that are running the daemon pod, but are not supposed to run the daemon pod. More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/', args=[d.arg(name='numberMisscheduled', type=d.T.integer)]), - withNumberMisscheduled(numberMisscheduled): { numberMisscheduled: numberMisscheduled }, - '#withNumberReady':: d.fn(help='The number of nodes that should be running the daemon pod and have one or more of the daemon pod running and ready.', args=[d.arg(name='numberReady', type=d.T.integer)]), - withNumberReady(numberReady): { numberReady: numberReady }, - '#withNumberUnavailable':: d.fn(help='The number of nodes that should be running the daemon pod and have none of the daemon pod running and available (ready for at least spec.minReadySeconds)', args=[d.arg(name='numberUnavailable', type=d.T.integer)]), - withNumberUnavailable(numberUnavailable): { numberUnavailable: numberUnavailable }, - '#withObservedGeneration':: d.fn(help='The most recent generation observed by the daemon set controller.', args=[d.arg(name='observedGeneration', type=d.T.integer)]), - withObservedGeneration(observedGeneration): { observedGeneration: observedGeneration }, - '#withUpdatedNumberScheduled':: d.fn(help='The total number of nodes that are running updated daemon pod', args=[d.arg(name='updatedNumberScheduled', type=d.T.integer)]), - withUpdatedNumberScheduled(updatedNumberScheduled): { updatedNumberScheduled: updatedNumberScheduled }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/daemonSetUpdateStrategy.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/daemonSetUpdateStrategy.libsonnet deleted file mode 100644 index 96b0d2985df6..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/daemonSetUpdateStrategy.libsonnet +++ /dev/null @@ -1,13 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='daemonSetUpdateStrategy', url='', help=''), - '#rollingUpdate':: d.obj(help='Spec to control the desired behavior of daemon set rolling update.'), - rollingUpdate: { - '#withMaxUnavailable':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxUnavailable', type=d.T.string)]), - withMaxUnavailable(maxUnavailable): { rollingUpdate+: { maxUnavailable: maxUnavailable } } - }, - '#withType':: d.fn(help='Type of daemon set update. Can be "RollingUpdate" or "OnDelete". Default is OnDelete.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/deployment.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/deployment.libsonnet deleted file mode 100644 index f14bb084881c..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/deployment.libsonnet +++ /dev/null @@ -1,376 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='deployment', url='', help='DEPRECATED - This group version of Deployment is deprecated by apps/v1beta2/Deployment. See the release notes for more information. Deployment enables declarative updates for Pods and ReplicaSets.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Deployment', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'extensions/v1beta1', - kind: 'Deployment' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='DeploymentSpec is the specification of the desired behavior of the Deployment.'), - spec: { - '#rollbackTo':: d.obj(help='DEPRECATED.'), - rollbackTo: { - '#withRevision':: d.fn(help='The revision to rollback to. If set to 0, rollback to the last revision.', args=[d.arg(name='revision', type=d.T.integer)]), - withRevision(revision): { spec+: { rollbackTo+: { revision: revision } } } - }, - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { spec+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { spec+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { spec+: { selector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { spec+: { selector+: { matchLabels+: matchLabels } } } - }, - '#strategy':: d.obj(help='DeploymentStrategy describes how to replace existing pods with new ones.'), - strategy: { - '#rollingUpdate':: d.obj(help='Spec to control the desired behavior of rolling update.'), - rollingUpdate: { - '#withMaxSurge':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxSurge', type=d.T.string)]), - withMaxSurge(maxSurge): { spec+: { strategy+: { rollingUpdate+: { maxSurge: maxSurge } } } }, - '#withMaxUnavailable':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxUnavailable', type=d.T.string)]), - withMaxUnavailable(maxUnavailable): { spec+: { strategy+: { rollingUpdate+: { maxUnavailable: maxUnavailable } } } } - }, - '#withType':: d.fn(help='Type of deployment. Can be "Recreate" or "RollingUpdate". Default is RollingUpdate.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { strategy+: { type: type } } } - }, - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { group: group } } } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { name: name } } } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { spec+: { template+: { metadata+: { initializers+: { result+: { code: code } } } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { template+: { metadata+: { initializers+: { result+: { kind: kind } } } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { spec+: { template+: { metadata+: { initializers+: { result+: { message: message } } } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { spec+: { template+: { metadata+: { initializers+: { result+: { metadata: metadata } } } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { spec+: { template+: { metadata+: { initializers+: { result+: { reason: reason } } } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { spec+: { template+: { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { spec+: { template+: { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { spec+: { template+: { metadata+: { annotations: annotations } } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { spec+: { template+: { metadata+: { annotations+: annotations } } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { spec+: { template+: { metadata+: { clusterName: clusterName } } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { spec+: { template+: { metadata+: { creationTimestamp: creationTimestamp } } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { spec+: { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { spec+: { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { spec+: { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { spec+: { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { spec+: { template+: { metadata+: { generateName: generateName } } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { spec+: { template+: { metadata+: { generation: generation } } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { spec+: { template+: { metadata+: { labels: labels } } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { spec+: { template+: { metadata+: { labels+: labels } } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { spec+: { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { spec+: { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { template+: { metadata+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { template+: { metadata+: { namespace: namespace } } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { spec+: { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { spec+: { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { spec+: { template+: { metadata+: { resourceVersion: resourceVersion } } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { spec+: { template+: { metadata+: { selfLink: selfLink } } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { template+: { metadata+: { uid: uid } } } } - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } } - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } - } - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { spec+: { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { spec+: { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { spec+: { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { spec+: { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { spec+: { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { spec+: { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } } } - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } } } - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { spec+: { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { spec+: { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { spec+: { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { spec+: { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { spec+: { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { spec+: { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { spec+: { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { spec+: { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } } - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { spec+: { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { spec+: { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { spec+: { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { spec+: { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { spec+: { template+: { spec+: { dnsPolicy: dnsPolicy } } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { spec+: { template+: { spec+: { enableServiceLinks: enableServiceLinks } } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { spec+: { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { spec+: { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { spec+: { template+: { spec+: { hostIPC: hostIPC } } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { spec+: { template+: { spec+: { hostNetwork: hostNetwork } } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { spec+: { template+: { spec+: { hostPID: hostPID } } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { spec+: { template+: { spec+: { hostname: hostname } } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { spec+: { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { spec+: { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { spec+: { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { spec+: { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { spec+: { template+: { spec+: { nodeName: nodeName } } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { spec+: { template+: { spec+: { nodeSelector: nodeSelector } } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { spec+: { template+: { spec+: { nodeSelector+: nodeSelector } } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { spec+: { template+: { spec+: { priority: priority } } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { spec+: { template+: { spec+: { priorityClassName: priorityClassName } } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { spec+: { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { spec+: { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { spec+: { template+: { spec+: { restartPolicy: restartPolicy } } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is an alpha feature and may change in the future.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { spec+: { template+: { spec+: { runtimeClassName: runtimeClassName } } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { spec+: { template+: { spec+: { schedulerName: schedulerName } } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { spec+: { template+: { spec+: { serviceAccount: serviceAccount } } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { spec+: { template+: { spec+: { serviceAccountName: serviceAccountName } } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false. This field is beta-level and may be disabled with the PodShareProcessNamespace feature.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { spec+: { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { spec+: { template+: { spec+: { subdomain: subdomain } } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { spec+: { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { spec+: { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { spec+: { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { spec+: { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { spec+: { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } } } - } - }, - '#withMinReadySeconds':: d.fn(help='Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)', args=[d.arg(name='minReadySeconds', type=d.T.integer)]), - withMinReadySeconds(minReadySeconds): { spec+: { minReadySeconds: minReadySeconds } }, - '#withPaused':: d.fn(help='Indicates that the deployment is paused and will not be processed by the deployment controller.', args=[d.arg(name='paused', type=d.T.boolean)]), - withPaused(paused): { spec+: { paused: paused } }, - '#withProgressDeadlineSeconds':: d.fn(help='The maximum time in seconds for a deployment to make progress before it is considered to be failed. The deployment controller will continue to process failed deployments and a condition with a ProgressDeadlineExceeded reason will be surfaced in the deployment status. Note that progress will not be estimated during the time a deployment is paused. This is set to the max value of int32 (i.e. 2147483647) by default, which means "no deadline".', args=[d.arg(name='progressDeadlineSeconds', type=d.T.integer)]), - withProgressDeadlineSeconds(progressDeadlineSeconds): { spec+: { progressDeadlineSeconds: progressDeadlineSeconds } }, - '#withReplicas':: d.fn(help='Number of desired pods. This is a pointer to distinguish between explicit zero and not specified. Defaults to 1.', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { spec+: { replicas: replicas } }, - '#withRevisionHistoryLimit':: d.fn(help='The number of old ReplicaSets to retain to allow rollback. This is a pointer to distinguish between explicit zero and not specified. This is set to the max value of int32 (i.e. 2147483647) by default, which means "retaining all old RelicaSets".', args=[d.arg(name='revisionHistoryLimit', type=d.T.integer)]), - withRevisionHistoryLimit(revisionHistoryLimit): { spec+: { revisionHistoryLimit: revisionHistoryLimit } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/deploymentCondition.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/deploymentCondition.libsonnet deleted file mode 100644 index f4716c97d4c6..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/deploymentCondition.libsonnet +++ /dev/null @@ -1,16 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='deploymentCondition', url='', help='DeploymentCondition describes the state of a deployment at a certain point.'), - '#withLastTransitionTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastTransitionTime', type=d.T.string)]), - withLastTransitionTime(lastTransitionTime): { lastTransitionTime: lastTransitionTime }, - '#withLastUpdateTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastUpdateTime', type=d.T.string)]), - withLastUpdateTime(lastUpdateTime): { lastUpdateTime: lastUpdateTime }, - '#withMessage':: d.fn(help='A human readable message indicating details about the transition.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withReason':: d.fn(help="The reason for the condition's last transition.", args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#withType':: d.fn(help='Type of deployment condition.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/deploymentRollback.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/deploymentRollback.libsonnet deleted file mode 100644 index a340cd2bbdee..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/deploymentRollback.libsonnet +++ /dev/null @@ -1,22 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='deploymentRollback', url='', help='DEPRECATED. DeploymentRollback stores the information required to rollback a deployment.'), - '#new':: d.fn(help='new returns an instance of Deploymentrollback', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'extensions/v1beta1', - kind: 'DeploymentRollback' - } + self.metadata.withName(name=name), - '#rollbackTo':: d.obj(help='DEPRECATED.'), - rollbackTo: { - '#withRevision':: d.fn(help='The revision to rollback to. If set to 0, rollback to the last revision.', args=[d.arg(name='revision', type=d.T.integer)]), - withRevision(revision): { rollbackTo+: { revision: revision } } - }, - '#withName':: d.fn(help='Required: This must match the Name of a deployment.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withUpdatedAnnotations':: d.fn(help='The annotations to be updated to a deployment', args=[d.arg(name='updatedAnnotations', type=d.T.object)]), - withUpdatedAnnotations(updatedAnnotations): { updatedAnnotations: updatedAnnotations }, - '#withUpdatedAnnotationsMixin':: d.fn(help='The annotations to be updated to a deployment\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='updatedAnnotations', type=d.T.object)]), - withUpdatedAnnotationsMixin(updatedAnnotations): { updatedAnnotations+: updatedAnnotations }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/deploymentSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/deploymentSpec.libsonnet deleted file mode 100644 index 29cd326873e5..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/deploymentSpec.libsonnet +++ /dev/null @@ -1,286 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='deploymentSpec', url='', help='DeploymentSpec is the specification of the desired behavior of the Deployment.'), - '#rollbackTo':: d.obj(help='DEPRECATED.'), - rollbackTo: { - '#withRevision':: d.fn(help='The revision to rollback to. If set to 0, rollback to the last revision.', args=[d.arg(name='revision', type=d.T.integer)]), - withRevision(revision): { rollbackTo+: { revision: revision } } - }, - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { selector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { selector+: { matchLabels+: matchLabels } } - }, - '#strategy':: d.obj(help='DeploymentStrategy describes how to replace existing pods with new ones.'), - strategy: { - '#rollingUpdate':: d.obj(help='Spec to control the desired behavior of rolling update.'), - rollingUpdate: { - '#withMaxSurge':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxSurge', type=d.T.string)]), - withMaxSurge(maxSurge): { strategy+: { rollingUpdate+: { maxSurge: maxSurge } } }, - '#withMaxUnavailable':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxUnavailable', type=d.T.string)]), - withMaxUnavailable(maxUnavailable): { strategy+: { rollingUpdate+: { maxUnavailable: maxUnavailable } } } - }, - '#withType':: d.fn(help='Type of deployment. Can be "Recreate" or "RollingUpdate". Default is RollingUpdate.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { strategy+: { type: type } } - }, - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { template+: { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { template+: { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { template+: { metadata+: { initializers+: { result+: { details+: { group: group } } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { template+: { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { template+: { metadata+: { initializers+: { result+: { details+: { name: name } } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { template+: { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { template+: { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { template+: { metadata+: { initializers+: { result+: { code: code } } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { template+: { metadata+: { initializers+: { result+: { kind: kind } } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { template+: { metadata+: { initializers+: { result+: { message: message } } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { template+: { metadata+: { initializers+: { result+: { metadata: metadata } } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { template+: { metadata+: { initializers+: { result+: { reason: reason } } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { template+: { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { template+: { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { template+: { metadata+: { annotations: annotations } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { template+: { metadata+: { annotations+: annotations } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { template+: { metadata+: { clusterName: clusterName } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { template+: { metadata+: { creationTimestamp: creationTimestamp } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { template+: { metadata+: { generateName: generateName } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { template+: { metadata+: { generation: generation } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { template+: { metadata+: { labels: labels } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { template+: { metadata+: { labels+: labels } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { template+: { metadata+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { template+: { metadata+: { namespace: namespace } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { template+: { metadata+: { resourceVersion: resourceVersion } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { template+: { metadata+: { selfLink: selfLink } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { template+: { metadata+: { uid: uid } } } - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } - } - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } } - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } } - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { template+: { spec+: { dnsPolicy: dnsPolicy } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { template+: { spec+: { enableServiceLinks: enableServiceLinks } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { template+: { spec+: { hostIPC: hostIPC } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { template+: { spec+: { hostNetwork: hostNetwork } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { template+: { spec+: { hostPID: hostPID } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { template+: { spec+: { hostname: hostname } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { template+: { spec+: { nodeName: nodeName } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { template+: { spec+: { nodeSelector: nodeSelector } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { template+: { spec+: { nodeSelector+: nodeSelector } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { template+: { spec+: { priority: priority } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { template+: { spec+: { priorityClassName: priorityClassName } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { template+: { spec+: { restartPolicy: restartPolicy } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is an alpha feature and may change in the future.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { template+: { spec+: { runtimeClassName: runtimeClassName } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { template+: { spec+: { schedulerName: schedulerName } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { template+: { spec+: { serviceAccount: serviceAccount } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { template+: { spec+: { serviceAccountName: serviceAccountName } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false. This field is beta-level and may be disabled with the PodShareProcessNamespace feature.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { template+: { spec+: { subdomain: subdomain } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } } - } - }, - '#withMinReadySeconds':: d.fn(help='Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)', args=[d.arg(name='minReadySeconds', type=d.T.integer)]), - withMinReadySeconds(minReadySeconds): { minReadySeconds: minReadySeconds }, - '#withPaused':: d.fn(help='Indicates that the deployment is paused and will not be processed by the deployment controller.', args=[d.arg(name='paused', type=d.T.boolean)]), - withPaused(paused): { paused: paused }, - '#withProgressDeadlineSeconds':: d.fn(help='The maximum time in seconds for a deployment to make progress before it is considered to be failed. The deployment controller will continue to process failed deployments and a condition with a ProgressDeadlineExceeded reason will be surfaced in the deployment status. Note that progress will not be estimated during the time a deployment is paused. This is set to the max value of int32 (i.e. 2147483647) by default, which means "no deadline".', args=[d.arg(name='progressDeadlineSeconds', type=d.T.integer)]), - withProgressDeadlineSeconds(progressDeadlineSeconds): { progressDeadlineSeconds: progressDeadlineSeconds }, - '#withReplicas':: d.fn(help='Number of desired pods. This is a pointer to distinguish between explicit zero and not specified. Defaults to 1.', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { replicas: replicas }, - '#withRevisionHistoryLimit':: d.fn(help='The number of old ReplicaSets to retain to allow rollback. This is a pointer to distinguish between explicit zero and not specified. This is set to the max value of int32 (i.e. 2147483647) by default, which means "retaining all old RelicaSets".', args=[d.arg(name='revisionHistoryLimit', type=d.T.integer)]), - withRevisionHistoryLimit(revisionHistoryLimit): { revisionHistoryLimit: revisionHistoryLimit }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/deploymentStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/deploymentStatus.libsonnet deleted file mode 100644 index 6d01c63020f4..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/deploymentStatus.libsonnet +++ /dev/null @@ -1,24 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='deploymentStatus', url='', help='DeploymentStatus is the most recently observed status of the Deployment.'), - '#withAvailableReplicas':: d.fn(help='Total number of available pods (ready for at least minReadySeconds) targeted by this deployment.', args=[d.arg(name='availableReplicas', type=d.T.integer)]), - withAvailableReplicas(availableReplicas): { availableReplicas: availableReplicas }, - '#withCollisionCount':: d.fn(help='Count of hash collisions for the Deployment. The Deployment controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ReplicaSet.', args=[d.arg(name='collisionCount', type=d.T.integer)]), - withCollisionCount(collisionCount): { collisionCount: collisionCount }, - '#withConditions':: d.fn(help="Represents the latest available observations of a deployment's current state.", args=[d.arg(name='conditions', type=d.T.array)]), - withConditions(conditions): { conditions: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withConditionsMixin':: d.fn(help="Represents the latest available observations of a deployment's current state.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='conditions', type=d.T.array)]), - withConditionsMixin(conditions): { conditions+: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withObservedGeneration':: d.fn(help='The generation observed by the deployment controller.', args=[d.arg(name='observedGeneration', type=d.T.integer)]), - withObservedGeneration(observedGeneration): { observedGeneration: observedGeneration }, - '#withReadyReplicas':: d.fn(help='Total number of ready pods targeted by this deployment.', args=[d.arg(name='readyReplicas', type=d.T.integer)]), - withReadyReplicas(readyReplicas): { readyReplicas: readyReplicas }, - '#withReplicas':: d.fn(help='Total number of non-terminated pods targeted by this deployment (their labels match the selector).', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { replicas: replicas }, - '#withUnavailableReplicas':: d.fn(help='Total number of unavailable pods targeted by this deployment. This is the total number of pods that are still required for the deployment to have 100% available capacity. They may either be pods that are running but not yet available or pods that still have not been created.', args=[d.arg(name='unavailableReplicas', type=d.T.integer)]), - withUnavailableReplicas(unavailableReplicas): { unavailableReplicas: unavailableReplicas }, - '#withUpdatedReplicas':: d.fn(help='Total number of non-terminated pods targeted by this deployment that have the desired template spec.', args=[d.arg(name='updatedReplicas', type=d.T.integer)]), - withUpdatedReplicas(updatedReplicas): { updatedReplicas: updatedReplicas }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/deploymentStrategy.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/deploymentStrategy.libsonnet deleted file mode 100644 index 36f6460da406..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/deploymentStrategy.libsonnet +++ /dev/null @@ -1,15 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='deploymentStrategy', url='', help='DeploymentStrategy describes how to replace existing pods with new ones.'), - '#rollingUpdate':: d.obj(help='Spec to control the desired behavior of rolling update.'), - rollingUpdate: { - '#withMaxSurge':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxSurge', type=d.T.string)]), - withMaxSurge(maxSurge): { rollingUpdate+: { maxSurge: maxSurge } }, - '#withMaxUnavailable':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxUnavailable', type=d.T.string)]), - withMaxUnavailable(maxUnavailable): { rollingUpdate+: { maxUnavailable: maxUnavailable } } - }, - '#withType':: d.fn(help='Type of deployment. Can be "Recreate" or "RollingUpdate". Default is RollingUpdate.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/fsGroupStrategyOptions.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/fsGroupStrategyOptions.libsonnet deleted file mode 100644 index 559326201448..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/fsGroupStrategyOptions.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='fsGroupStrategyOptions', url='', help='FSGroupStrategyOptions defines the strategy type and options used to create the strategy. Deprecated: use FSGroupStrategyOptions from policy API Group instead.'), - '#withRanges':: d.fn(help='ranges are the allowed ranges of fs groups. If you would like to force a single fs group then supply a single range with the same start and end. Required for MustRunAs.', args=[d.arg(name='ranges', type=d.T.array)]), - withRanges(ranges): { ranges: if std.isArray(v=ranges) then ranges else [ranges] }, - '#withRangesMixin':: d.fn(help='ranges are the allowed ranges of fs groups. If you would like to force a single fs group then supply a single range with the same start and end. Required for MustRunAs.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ranges', type=d.T.array)]), - withRangesMixin(ranges): { ranges+: if std.isArray(v=ranges) then ranges else [ranges] }, - '#withRule':: d.fn(help='rule is the strategy that will dictate what FSGroup is used in the SecurityContext.', args=[d.arg(name='rule', type=d.T.string)]), - withRule(rule): { rule: rule }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/hostPortRange.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/hostPortRange.libsonnet deleted file mode 100644 index 8bcd6ed61209..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/hostPortRange.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='hostPortRange', url='', help='HostPortRange defines a range of host ports that will be enabled by a policy for pods to use. It requires both the start and end to be defined. Deprecated: use HostPortRange from policy API Group instead.'), - '#withMax':: d.fn(help='max is the end of the range, inclusive.', args=[d.arg(name='max', type=d.T.integer)]), - withMax(max): { max: max }, - '#withMin':: d.fn(help='min is the start of the range, inclusive.', args=[d.arg(name='min', type=d.T.integer)]), - withMin(min): { min: min }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/httpIngressPath.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/httpIngressPath.libsonnet deleted file mode 100644 index 27115ee89a45..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/httpIngressPath.libsonnet +++ /dev/null @@ -1,15 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='httpIngressPath', url='', help='HTTPIngressPath associates a path regex with a backend. Incoming urls matching the path are forwarded to the backend.'), - '#backend':: d.obj(help='IngressBackend describes all endpoints for a given service and port.'), - backend: { - '#withServiceName':: d.fn(help='Specifies the name of the referenced service.', args=[d.arg(name='serviceName', type=d.T.string)]), - withServiceName(serviceName): { backend+: { serviceName: serviceName } }, - '#withServicePort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='servicePort', type=d.T.string)]), - withServicePort(servicePort): { backend+: { servicePort: servicePort } } - }, - '#withPath':: d.fn(help="Path is an extended POSIX regex as defined by IEEE Std 1003.1, (i.e this follows the egrep/unix syntax, not the perl syntax) matched against the path of an incoming request. Currently it can contain characters disallowed from the conventional 'path' part of a URL as defined by RFC 3986. Paths must begin with a '/'. If unspecified, the path defaults to a catch all sending traffic to the backend.", args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { path: path }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/httpIngressRuleValue.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/httpIngressRuleValue.libsonnet deleted file mode 100644 index 5599236f31e6..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/httpIngressRuleValue.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='httpIngressRuleValue', url='', help="HTTPIngressRuleValue is a list of http selectors pointing to backends. In the example: http:///? -> backend where where parts of the url correspond to RFC 3986, this resource will be used to match against everything after the last '/' and before the first '?' or '#'."), - '#withPaths':: d.fn(help='A collection of paths that map requests to backends.', args=[d.arg(name='paths', type=d.T.array)]), - withPaths(paths): { paths: if std.isArray(v=paths) then paths else [paths] }, - '#withPathsMixin':: d.fn(help='A collection of paths that map requests to backends.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='paths', type=d.T.array)]), - withPathsMixin(paths): { paths+: if std.isArray(v=paths) then paths else [paths] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/idRange.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/idRange.libsonnet deleted file mode 100644 index 9b43d73846de..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/idRange.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='idRange', url='', help='IDRange provides a min/max of an allowed range of IDs. Deprecated: use IDRange from policy API Group instead.'), - '#withMax':: d.fn(help='max is the end of the range, inclusive.', args=[d.arg(name='max', type=d.T.integer)]), - withMax(max): { max: max }, - '#withMin':: d.fn(help='min is the start of the range, inclusive.', args=[d.arg(name='min', type=d.T.integer)]), - withMin(min): { min: min }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/ingress.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/ingress.libsonnet deleted file mode 100644 index f2bcb9ba74f9..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/ingress.libsonnet +++ /dev/null @@ -1,111 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='ingress', url='', help='Ingress is a collection of rules that allow inbound connections to reach the endpoints defined by a backend. An Ingress can be configured to give services externally-reachable urls, load balance traffic, terminate SSL, offer name based virtual hosting etc. DEPRECATED - This group version of Ingress is deprecated by networking.k8s.io/v1beta1 Ingress. See the release notes for more information.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Ingress', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'extensions/v1beta1', - kind: 'Ingress' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='IngressSpec describes the Ingress the user wishes to exist.'), - spec: { - '#backend':: d.obj(help='IngressBackend describes all endpoints for a given service and port.'), - backend: { - '#withServiceName':: d.fn(help='Specifies the name of the referenced service.', args=[d.arg(name='serviceName', type=d.T.string)]), - withServiceName(serviceName): { spec+: { backend+: { serviceName: serviceName } } }, - '#withServicePort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='servicePort', type=d.T.string)]), - withServicePort(servicePort): { spec+: { backend+: { servicePort: servicePort } } } - }, - '#withRules':: d.fn(help='A list of host rules used to configure the Ingress. If unspecified, or no rule matches, all traffic is sent to the default backend.', args=[d.arg(name='rules', type=d.T.array)]), - withRules(rules): { spec+: { rules: if std.isArray(v=rules) then rules else [rules] } }, - '#withRulesMixin':: d.fn(help='A list of host rules used to configure the Ingress. If unspecified, or no rule matches, all traffic is sent to the default backend.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='rules', type=d.T.array)]), - withRulesMixin(rules): { spec+: { rules+: if std.isArray(v=rules) then rules else [rules] } }, - '#withTls':: d.fn(help='TLS configuration. Currently the Ingress only supports a single TLS port, 443. If multiple members of this list specify different hosts, they will be multiplexed on the same port according to the hostname specified through the SNI TLS extension, if the ingress controller fulfilling the ingress supports SNI.', args=[d.arg(name='tls', type=d.T.array)]), - withTls(tls): { spec+: { tls: if std.isArray(v=tls) then tls else [tls] } }, - '#withTlsMixin':: d.fn(help='TLS configuration. Currently the Ingress only supports a single TLS port, 443. If multiple members of this list specify different hosts, they will be multiplexed on the same port according to the hostname specified through the SNI TLS extension, if the ingress controller fulfilling the ingress supports SNI.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='tls', type=d.T.array)]), - withTlsMixin(tls): { spec+: { tls+: if std.isArray(v=tls) then tls else [tls] } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/ingressBackend.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/ingressBackend.libsonnet deleted file mode 100644 index 1984ab1c1e5f..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/ingressBackend.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='ingressBackend', url='', help='IngressBackend describes all endpoints for a given service and port.'), - '#withServiceName':: d.fn(help='Specifies the name of the referenced service.', args=[d.arg(name='serviceName', type=d.T.string)]), - withServiceName(serviceName): { serviceName: serviceName }, - '#withServicePort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='servicePort', type=d.T.string)]), - withServicePort(servicePort): { servicePort: servicePort }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/ingressRule.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/ingressRule.libsonnet deleted file mode 100644 index b44a9d72cc3a..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/ingressRule.libsonnet +++ /dev/null @@ -1,15 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='ingressRule', url='', help='IngressRule represents the rules mapping the paths under a specified host to the related backend services. Incoming requests are first evaluated for a host match, then routed to the backend associated with the matching IngressRuleValue.'), - '#http':: d.obj(help="HTTPIngressRuleValue is a list of http selectors pointing to backends. In the example: http:///? -> backend where where parts of the url correspond to RFC 3986, this resource will be used to match against everything after the last '/' and before the first '?' or '#'."), - http: { - '#withPaths':: d.fn(help='A collection of paths that map requests to backends.', args=[d.arg(name='paths', type=d.T.array)]), - withPaths(paths): { http+: { paths: if std.isArray(v=paths) then paths else [paths] } }, - '#withPathsMixin':: d.fn(help='A collection of paths that map requests to backends.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='paths', type=d.T.array)]), - withPathsMixin(paths): { http+: { paths+: if std.isArray(v=paths) then paths else [paths] } } - }, - '#withHost':: d.fn(help='Host is the fully qualified domain name of a network host, as defined by RFC 3986. Note the following deviations from the "host" part of the URI as defined in the RFC: 1. IPs are not allowed. Currently an IngressRuleValue can only apply to the\n IP in the Spec of the parent Ingress.\n2. The `:` delimiter is not respected because ports are not allowed.\n Currently the port of an Ingress is implicitly :80 for http and\n :443 for https.\nBoth these may change in the future. Incoming requests are matched against the host before the IngressRuleValue. If the host is unspecified, the Ingress routes all traffic based on the specified IngressRuleValue.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { host: host }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/ingressSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/ingressSpec.libsonnet deleted file mode 100644 index 3c7084e48c80..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/ingressSpec.libsonnet +++ /dev/null @@ -1,21 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='ingressSpec', url='', help='IngressSpec describes the Ingress the user wishes to exist.'), - '#backend':: d.obj(help='IngressBackend describes all endpoints for a given service and port.'), - backend: { - '#withServiceName':: d.fn(help='Specifies the name of the referenced service.', args=[d.arg(name='serviceName', type=d.T.string)]), - withServiceName(serviceName): { backend+: { serviceName: serviceName } }, - '#withServicePort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='servicePort', type=d.T.string)]), - withServicePort(servicePort): { backend+: { servicePort: servicePort } } - }, - '#withRules':: d.fn(help='A list of host rules used to configure the Ingress. If unspecified, or no rule matches, all traffic is sent to the default backend.', args=[d.arg(name='rules', type=d.T.array)]), - withRules(rules): { rules: if std.isArray(v=rules) then rules else [rules] }, - '#withRulesMixin':: d.fn(help='A list of host rules used to configure the Ingress. If unspecified, or no rule matches, all traffic is sent to the default backend.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='rules', type=d.T.array)]), - withRulesMixin(rules): { rules+: if std.isArray(v=rules) then rules else [rules] }, - '#withTls':: d.fn(help='TLS configuration. Currently the Ingress only supports a single TLS port, 443. If multiple members of this list specify different hosts, they will be multiplexed on the same port according to the hostname specified through the SNI TLS extension, if the ingress controller fulfilling the ingress supports SNI.', args=[d.arg(name='tls', type=d.T.array)]), - withTls(tls): { tls: if std.isArray(v=tls) then tls else [tls] }, - '#withTlsMixin':: d.fn(help='TLS configuration. Currently the Ingress only supports a single TLS port, 443. If multiple members of this list specify different hosts, they will be multiplexed on the same port according to the hostname specified through the SNI TLS extension, if the ingress controller fulfilling the ingress supports SNI.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='tls', type=d.T.array)]), - withTlsMixin(tls): { tls+: if std.isArray(v=tls) then tls else [tls] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/ingressStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/ingressStatus.libsonnet deleted file mode 100644 index 9ac4394af31a..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/ingressStatus.libsonnet +++ /dev/null @@ -1,13 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='ingressStatus', url='', help='IngressStatus describe the current state of the Ingress.'), - '#loadBalancer':: d.obj(help='LoadBalancerStatus represents the status of a load-balancer.'), - loadBalancer: { - '#withIngress':: d.fn(help='Ingress is a list containing ingress points for the load-balancer. Traffic intended for the service should be sent to these ingress points.', args=[d.arg(name='ingress', type=d.T.array)]), - withIngress(ingress): { loadBalancer+: { ingress: if std.isArray(v=ingress) then ingress else [ingress] } }, - '#withIngressMixin':: d.fn(help='Ingress is a list containing ingress points for the load-balancer. Traffic intended for the service should be sent to these ingress points.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ingress', type=d.T.array)]), - withIngressMixin(ingress): { loadBalancer+: { ingress+: if std.isArray(v=ingress) then ingress else [ingress] } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/ingressTLS.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/ingressTLS.libsonnet deleted file mode 100644 index b277e4d33232..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/ingressTLS.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='ingressTLS', url='', help='IngressTLS describes the transport layer security associated with an Ingress.'), - '#withHosts':: d.fn(help='Hosts are a list of hosts included in the TLS certificate. The values in this list must match the name/s used in the tlsSecret. Defaults to the wildcard host setting for the loadbalancer controller fulfilling this Ingress, if left unspecified.', args=[d.arg(name='hosts', type=d.T.array)]), - withHosts(hosts): { hosts: if std.isArray(v=hosts) then hosts else [hosts] }, - '#withHostsMixin':: d.fn(help='Hosts are a list of hosts included in the TLS certificate. The values in this list must match the name/s used in the tlsSecret. Defaults to the wildcard host setting for the loadbalancer controller fulfilling this Ingress, if left unspecified.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='hosts', type=d.T.array)]), - withHostsMixin(hosts): { hosts+: if std.isArray(v=hosts) then hosts else [hosts] }, - '#withSecretName':: d.fn(help='SecretName is the name of the secret used to terminate SSL traffic on 443. Field is left optional to allow SSL routing based on SNI hostname alone. If the SNI host in a listener conflicts with the "Host" header field used by an IngressRule, the SNI host is used for termination and value of the Host header is used for routing.', args=[d.arg(name='secretName', type=d.T.string)]), - withSecretName(secretName): { secretName: secretName }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/ipBlock.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/ipBlock.libsonnet deleted file mode 100644 index 87063ba4efd5..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/ipBlock.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='ipBlock', url='', help="DEPRECATED 1.9 - This group version of IPBlock is deprecated by networking/v1/IPBlock. IPBlock describes a particular CIDR (Ex. '192.168.1.1/24') that is allowed to the pods matched by a NetworkPolicySpec's podSelector. The except entry describes CIDRs that should not be included within this rule."), - '#withCidr':: d.fn(help='CIDR is a string representing the IP Block Valid examples are "192.168.1.1/24"', args=[d.arg(name='cidr', type=d.T.string)]), - withCidr(cidr): { cidr: cidr }, - '#withExcept':: d.fn(help='Except is a slice of CIDRs that should not be included within an IP Block Valid examples are "192.168.1.1/24" Except values will be rejected if they are outside the CIDR range', args=[d.arg(name='except', type=d.T.array)]), - withExcept(except): { except: if std.isArray(v=except) then except else [except] }, - '#withExceptMixin':: d.fn(help='Except is a slice of CIDRs that should not be included within an IP Block Valid examples are "192.168.1.1/24" Except values will be rejected if they are outside the CIDR range\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='except', type=d.T.array)]), - withExceptMixin(except): { except+: if std.isArray(v=except) then except else [except] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/main.libsonnet deleted file mode 100644 index 455f96e52bf3..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/main.libsonnet +++ /dev/null @@ -1,52 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1beta1', url='', help=''), - allowedCSIDriver: (import 'allowedCSIDriver.libsonnet'), - allowedFlexVolume: (import 'allowedFlexVolume.libsonnet'), - allowedHostPath: (import 'allowedHostPath.libsonnet'), - daemonSet: (import 'daemonSet.libsonnet'), - daemonSetCondition: (import 'daemonSetCondition.libsonnet'), - daemonSetSpec: (import 'daemonSetSpec.libsonnet'), - daemonSetStatus: (import 'daemonSetStatus.libsonnet'), - daemonSetUpdateStrategy: (import 'daemonSetUpdateStrategy.libsonnet'), - deployment: (import 'deployment.libsonnet'), - deploymentCondition: (import 'deploymentCondition.libsonnet'), - deploymentRollback: (import 'deploymentRollback.libsonnet'), - deploymentSpec: (import 'deploymentSpec.libsonnet'), - deploymentStatus: (import 'deploymentStatus.libsonnet'), - deploymentStrategy: (import 'deploymentStrategy.libsonnet'), - fsGroupStrategyOptions: (import 'fsGroupStrategyOptions.libsonnet'), - hostPortRange: (import 'hostPortRange.libsonnet'), - httpIngressPath: (import 'httpIngressPath.libsonnet'), - httpIngressRuleValue: (import 'httpIngressRuleValue.libsonnet'), - idRange: (import 'idRange.libsonnet'), - ingress: (import 'ingress.libsonnet'), - ingressBackend: (import 'ingressBackend.libsonnet'), - ingressRule: (import 'ingressRule.libsonnet'), - ingressSpec: (import 'ingressSpec.libsonnet'), - ingressStatus: (import 'ingressStatus.libsonnet'), - ingressTLS: (import 'ingressTLS.libsonnet'), - ipBlock: (import 'ipBlock.libsonnet'), - networkPolicy: (import 'networkPolicy.libsonnet'), - networkPolicyEgressRule: (import 'networkPolicyEgressRule.libsonnet'), - networkPolicyIngressRule: (import 'networkPolicyIngressRule.libsonnet'), - networkPolicyPeer: (import 'networkPolicyPeer.libsonnet'), - networkPolicyPort: (import 'networkPolicyPort.libsonnet'), - networkPolicySpec: (import 'networkPolicySpec.libsonnet'), - podSecurityPolicy: (import 'podSecurityPolicy.libsonnet'), - podSecurityPolicySpec: (import 'podSecurityPolicySpec.libsonnet'), - replicaSet: (import 'replicaSet.libsonnet'), - replicaSetCondition: (import 'replicaSetCondition.libsonnet'), - replicaSetSpec: (import 'replicaSetSpec.libsonnet'), - replicaSetStatus: (import 'replicaSetStatus.libsonnet'), - rollbackConfig: (import 'rollbackConfig.libsonnet'), - rollingUpdateDaemonSet: (import 'rollingUpdateDaemonSet.libsonnet'), - rollingUpdateDeployment: (import 'rollingUpdateDeployment.libsonnet'), - runAsGroupStrategyOptions: (import 'runAsGroupStrategyOptions.libsonnet'), - runAsUserStrategyOptions: (import 'runAsUserStrategyOptions.libsonnet'), - scale: (import 'scale.libsonnet'), - scaleSpec: (import 'scaleSpec.libsonnet'), - scaleStatus: (import 'scaleStatus.libsonnet'), - seLinuxStrategyOptions: (import 'seLinuxStrategyOptions.libsonnet'), - supplementalGroupsStrategyOptions: (import 'supplementalGroupsStrategyOptions.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/networkPolicy.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/networkPolicy.libsonnet deleted file mode 100644 index 3d8f5c7f710f..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/networkPolicy.libsonnet +++ /dev/null @@ -1,119 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='networkPolicy', url='', help='DEPRECATED 1.9 - This group version of NetworkPolicy is deprecated by networking/v1/NetworkPolicy. NetworkPolicy describes what network traffic is allowed for a set of Pods'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Networkpolicy', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'extensions/v1beta1', - kind: 'NetworkPolicy' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='DEPRECATED 1.9 - This group version of NetworkPolicySpec is deprecated by networking/v1/NetworkPolicySpec.'), - spec: { - '#podSelector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - podSelector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { spec+: { podSelector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { spec+: { podSelector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { spec+: { podSelector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { spec+: { podSelector+: { matchLabels+: matchLabels } } } - }, - '#withEgress':: d.fn(help='List of egress rules to be applied to the selected pods. Outgoing traffic is allowed if there are no NetworkPolicies selecting the pod (and cluster policy otherwise allows the traffic), OR if the traffic matches at least one egress rule across all of the NetworkPolicy objects whose podSelector matches the pod. If this field is empty then this NetworkPolicy limits all outgoing traffic (and serves solely to ensure that the pods it selects are isolated by default). This field is beta-level in 1.8', args=[d.arg(name='egress', type=d.T.array)]), - withEgress(egress): { spec+: { egress: if std.isArray(v=egress) then egress else [egress] } }, - '#withEgressMixin':: d.fn(help='List of egress rules to be applied to the selected pods. Outgoing traffic is allowed if there are no NetworkPolicies selecting the pod (and cluster policy otherwise allows the traffic), OR if the traffic matches at least one egress rule across all of the NetworkPolicy objects whose podSelector matches the pod. If this field is empty then this NetworkPolicy limits all outgoing traffic (and serves solely to ensure that the pods it selects are isolated by default). This field is beta-level in 1.8\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='egress', type=d.T.array)]), - withEgressMixin(egress): { spec+: { egress+: if std.isArray(v=egress) then egress else [egress] } }, - '#withIngress':: d.fn(help="List of ingress rules to be applied to the selected pods. Traffic is allowed to a pod if there are no NetworkPolicies selecting the pod OR if the traffic source is the pod's local node, OR if the traffic matches at least one ingress rule across all of the NetworkPolicy objects whose podSelector matches the pod. If this field is empty then this NetworkPolicy does not allow any traffic (and serves solely to ensure that the pods it selects are isolated by default).", args=[d.arg(name='ingress', type=d.T.array)]), - withIngress(ingress): { spec+: { ingress: if std.isArray(v=ingress) then ingress else [ingress] } }, - '#withIngressMixin':: d.fn(help="List of ingress rules to be applied to the selected pods. Traffic is allowed to a pod if there are no NetworkPolicies selecting the pod OR if the traffic source is the pod's local node, OR if the traffic matches at least one ingress rule across all of the NetworkPolicy objects whose podSelector matches the pod. If this field is empty then this NetworkPolicy does not allow any traffic (and serves solely to ensure that the pods it selects are isolated by default).\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='ingress', type=d.T.array)]), - withIngressMixin(ingress): { spec+: { ingress+: if std.isArray(v=ingress) then ingress else [ingress] } }, - '#withPolicyTypes':: d.fn(help='List of rule types that the NetworkPolicy relates to. Valid options are "Ingress", "Egress", or "Ingress,Egress". If this field is not specified, it will default based on the existence of Ingress or Egress rules; policies that contain an Egress section are assumed to affect Egress, and all policies (whether or not they contain an Ingress section) are assumed to affect Ingress. If you want to write an egress-only policy, you must explicitly specify policyTypes [ "Egress" ]. Likewise, if you want to write a policy that specifies that no egress is allowed, you must specify a policyTypes value that include "Egress" (since such a policy would not include an Egress section and would otherwise default to just [ "Ingress" ]). This field is beta-level in 1.8', args=[d.arg(name='policyTypes', type=d.T.array)]), - withPolicyTypes(policyTypes): { spec+: { policyTypes: if std.isArray(v=policyTypes) then policyTypes else [policyTypes] } }, - '#withPolicyTypesMixin':: d.fn(help='List of rule types that the NetworkPolicy relates to. Valid options are "Ingress", "Egress", or "Ingress,Egress". If this field is not specified, it will default based on the existence of Ingress or Egress rules; policies that contain an Egress section are assumed to affect Egress, and all policies (whether or not they contain an Ingress section) are assumed to affect Ingress. If you want to write an egress-only policy, you must explicitly specify policyTypes [ "Egress" ]. Likewise, if you want to write a policy that specifies that no egress is allowed, you must specify a policyTypes value that include "Egress" (since such a policy would not include an Egress section and would otherwise default to just [ "Ingress" ]). This field is beta-level in 1.8\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='policyTypes', type=d.T.array)]), - withPolicyTypesMixin(policyTypes): { spec+: { policyTypes+: if std.isArray(v=policyTypes) then policyTypes else [policyTypes] } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/networkPolicyEgressRule.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/networkPolicyEgressRule.libsonnet deleted file mode 100644 index da990bca8e1e..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/networkPolicyEgressRule.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='networkPolicyEgressRule', url='', help="DEPRECATED 1.9 - This group version of NetworkPolicyEgressRule is deprecated by networking/v1/NetworkPolicyEgressRule. NetworkPolicyEgressRule describes a particular set of traffic that is allowed out of pods matched by a NetworkPolicySpec's podSelector. The traffic must match both ports and to. This type is beta-level in 1.8"), - '#withPorts':: d.fn(help='List of destination ports for outgoing traffic. Each item in this list is combined using a logical OR. If this field is empty or missing, this rule matches all ports (traffic not restricted by port). If this field is present and contains at least one item, then this rule allows traffic only if the traffic matches at least one port in the list.', args=[d.arg(name='ports', type=d.T.array)]), - withPorts(ports): { ports: if std.isArray(v=ports) then ports else [ports] }, - '#withPortsMixin':: d.fn(help='List of destination ports for outgoing traffic. Each item in this list is combined using a logical OR. If this field is empty or missing, this rule matches all ports (traffic not restricted by port). If this field is present and contains at least one item, then this rule allows traffic only if the traffic matches at least one port in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ports', type=d.T.array)]), - withPortsMixin(ports): { ports+: if std.isArray(v=ports) then ports else [ports] }, - '#withTo':: d.fn(help='List of destinations for outgoing traffic of pods selected for this rule. Items in this list are combined using a logical OR operation. If this field is empty or missing, this rule matches all destinations (traffic not restricted by destination). If this field is present and contains at least one item, this rule allows traffic only if the traffic matches at least one item in the to list.', args=[d.arg(name='to', type=d.T.array)]), - withTo(to): { to: if std.isArray(v=to) then to else [to] }, - '#withToMixin':: d.fn(help='List of destinations for outgoing traffic of pods selected for this rule. Items in this list are combined using a logical OR operation. If this field is empty or missing, this rule matches all destinations (traffic not restricted by destination). If this field is present and contains at least one item, this rule allows traffic only if the traffic matches at least one item in the to list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='to', type=d.T.array)]), - withToMixin(to): { to+: if std.isArray(v=to) then to else [to] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/networkPolicyIngressRule.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/networkPolicyIngressRule.libsonnet deleted file mode 100644 index 842493a1cc9c..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/networkPolicyIngressRule.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='networkPolicyIngressRule', url='', help='DEPRECATED 1.9 - This group version of NetworkPolicyIngressRule is deprecated by networking/v1/NetworkPolicyIngressRule. This NetworkPolicyIngressRule matches traffic if and only if the traffic matches both ports AND from.'), - '#withFrom':: d.fn(help='List of sources which should be able to access the pods selected for this rule. Items in this list are combined using a logical OR operation. If this field is empty or missing, this rule matches all sources (traffic not restricted by source). If this field is present and contains at least on item, this rule allows traffic only if the traffic matches at least one item in the from list.', args=[d.arg(name='from', type=d.T.array)]), - withFrom(from): { from: if std.isArray(v=from) then from else [from] }, - '#withFromMixin':: d.fn(help='List of sources which should be able to access the pods selected for this rule. Items in this list are combined using a logical OR operation. If this field is empty or missing, this rule matches all sources (traffic not restricted by source). If this field is present and contains at least on item, this rule allows traffic only if the traffic matches at least one item in the from list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='from', type=d.T.array)]), - withFromMixin(from): { from+: if std.isArray(v=from) then from else [from] }, - '#withPorts':: d.fn(help='List of ports which should be made accessible on the pods selected for this rule. Each item in this list is combined using a logical OR. If this field is empty or missing, this rule matches all ports (traffic not restricted by port). If this field is present and contains at least one item, then this rule allows traffic only if the traffic matches at least one port in the list.', args=[d.arg(name='ports', type=d.T.array)]), - withPorts(ports): { ports: if std.isArray(v=ports) then ports else [ports] }, - '#withPortsMixin':: d.fn(help='List of ports which should be made accessible on the pods selected for this rule. Each item in this list is combined using a logical OR. If this field is empty or missing, this rule matches all ports (traffic not restricted by port). If this field is present and contains at least one item, then this rule allows traffic only if the traffic matches at least one port in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ports', type=d.T.array)]), - withPortsMixin(ports): { ports+: if std.isArray(v=ports) then ports else [ports] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/networkPolicyPeer.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/networkPolicyPeer.libsonnet deleted file mode 100644 index 71589e373500..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/networkPolicyPeer.libsonnet +++ /dev/null @@ -1,37 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='networkPolicyPeer', url='', help='DEPRECATED 1.9 - This group version of NetworkPolicyPeer is deprecated by networking/v1/NetworkPolicyPeer.'), - '#ipBlock':: d.obj(help="DEPRECATED 1.9 - This group version of IPBlock is deprecated by networking/v1/IPBlock. IPBlock describes a particular CIDR (Ex. '192.168.1.1/24') that is allowed to the pods matched by a NetworkPolicySpec's podSelector. The except entry describes CIDRs that should not be included within this rule."), - ipBlock: { - '#withCidr':: d.fn(help='CIDR is a string representing the IP Block Valid examples are "192.168.1.1/24"', args=[d.arg(name='cidr', type=d.T.string)]), - withCidr(cidr): { ipBlock+: { cidr: cidr } }, - '#withExcept':: d.fn(help='Except is a slice of CIDRs that should not be included within an IP Block Valid examples are "192.168.1.1/24" Except values will be rejected if they are outside the CIDR range', args=[d.arg(name='except', type=d.T.array)]), - withExcept(except): { ipBlock+: { except: if std.isArray(v=except) then except else [except] } }, - '#withExceptMixin':: d.fn(help='Except is a slice of CIDRs that should not be included within an IP Block Valid examples are "192.168.1.1/24" Except values will be rejected if they are outside the CIDR range\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='except', type=d.T.array)]), - withExceptMixin(except): { ipBlock+: { except+: if std.isArray(v=except) then except else [except] } } - }, - '#namespaceSelector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - namespaceSelector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { namespaceSelector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { namespaceSelector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { namespaceSelector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { namespaceSelector+: { matchLabels+: matchLabels } } - }, - '#podSelector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - podSelector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { podSelector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { podSelector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { podSelector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { podSelector+: { matchLabels+: matchLabels } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/networkPolicyPort.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/networkPolicyPort.libsonnet deleted file mode 100644 index 12a82676d1fb..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/networkPolicyPort.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='networkPolicyPort', url='', help='DEPRECATED 1.9 - This group version of NetworkPolicyPort is deprecated by networking/v1/NetworkPolicyPort.'), - '#withPort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='port', type=d.T.string)]), - withPort(port): { port: port }, - '#withProtocol':: d.fn(help='Optional. The protocol (TCP, UDP, or SCTP) which traffic must match. If not specified, this field defaults to TCP.', args=[d.arg(name='protocol', type=d.T.string)]), - withProtocol(protocol): { protocol: protocol }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/networkPolicySpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/networkPolicySpec.libsonnet deleted file mode 100644 index 91f4a8b5b7db..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/networkPolicySpec.libsonnet +++ /dev/null @@ -1,29 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='networkPolicySpec', url='', help='DEPRECATED 1.9 - This group version of NetworkPolicySpec is deprecated by networking/v1/NetworkPolicySpec.'), - '#podSelector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - podSelector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { podSelector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { podSelector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { podSelector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { podSelector+: { matchLabels+: matchLabels } } - }, - '#withEgress':: d.fn(help='List of egress rules to be applied to the selected pods. Outgoing traffic is allowed if there are no NetworkPolicies selecting the pod (and cluster policy otherwise allows the traffic), OR if the traffic matches at least one egress rule across all of the NetworkPolicy objects whose podSelector matches the pod. If this field is empty then this NetworkPolicy limits all outgoing traffic (and serves solely to ensure that the pods it selects are isolated by default). This field is beta-level in 1.8', args=[d.arg(name='egress', type=d.T.array)]), - withEgress(egress): { egress: if std.isArray(v=egress) then egress else [egress] }, - '#withEgressMixin':: d.fn(help='List of egress rules to be applied to the selected pods. Outgoing traffic is allowed if there are no NetworkPolicies selecting the pod (and cluster policy otherwise allows the traffic), OR if the traffic matches at least one egress rule across all of the NetworkPolicy objects whose podSelector matches the pod. If this field is empty then this NetworkPolicy limits all outgoing traffic (and serves solely to ensure that the pods it selects are isolated by default). This field is beta-level in 1.8\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='egress', type=d.T.array)]), - withEgressMixin(egress): { egress+: if std.isArray(v=egress) then egress else [egress] }, - '#withIngress':: d.fn(help="List of ingress rules to be applied to the selected pods. Traffic is allowed to a pod if there are no NetworkPolicies selecting the pod OR if the traffic source is the pod's local node, OR if the traffic matches at least one ingress rule across all of the NetworkPolicy objects whose podSelector matches the pod. If this field is empty then this NetworkPolicy does not allow any traffic (and serves solely to ensure that the pods it selects are isolated by default).", args=[d.arg(name='ingress', type=d.T.array)]), - withIngress(ingress): { ingress: if std.isArray(v=ingress) then ingress else [ingress] }, - '#withIngressMixin':: d.fn(help="List of ingress rules to be applied to the selected pods. Traffic is allowed to a pod if there are no NetworkPolicies selecting the pod OR if the traffic source is the pod's local node, OR if the traffic matches at least one ingress rule across all of the NetworkPolicy objects whose podSelector matches the pod. If this field is empty then this NetworkPolicy does not allow any traffic (and serves solely to ensure that the pods it selects are isolated by default).\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='ingress', type=d.T.array)]), - withIngressMixin(ingress): { ingress+: if std.isArray(v=ingress) then ingress else [ingress] }, - '#withPolicyTypes':: d.fn(help='List of rule types that the NetworkPolicy relates to. Valid options are "Ingress", "Egress", or "Ingress,Egress". If this field is not specified, it will default based on the existence of Ingress or Egress rules; policies that contain an Egress section are assumed to affect Egress, and all policies (whether or not they contain an Ingress section) are assumed to affect Ingress. If you want to write an egress-only policy, you must explicitly specify policyTypes [ "Egress" ]. Likewise, if you want to write a policy that specifies that no egress is allowed, you must specify a policyTypes value that include "Egress" (since such a policy would not include an Egress section and would otherwise default to just [ "Ingress" ]). This field is beta-level in 1.8', args=[d.arg(name='policyTypes', type=d.T.array)]), - withPolicyTypes(policyTypes): { policyTypes: if std.isArray(v=policyTypes) then policyTypes else [policyTypes] }, - '#withPolicyTypesMixin':: d.fn(help='List of rule types that the NetworkPolicy relates to. Valid options are "Ingress", "Egress", or "Ingress,Egress". If this field is not specified, it will default based on the existence of Ingress or Egress rules; policies that contain an Egress section are assumed to affect Egress, and all policies (whether or not they contain an Ingress section) are assumed to affect Ingress. If you want to write an egress-only policy, you must explicitly specify policyTypes [ "Egress" ]. Likewise, if you want to write a policy that specifies that no egress is allowed, you must specify a policyTypes value that include "Egress" (since such a policy would not include an Egress section and would otherwise default to just [ "Ingress" ]). This field is beta-level in 1.8\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='policyTypes', type=d.T.array)]), - withPolicyTypesMixin(policyTypes): { policyTypes+: if std.isArray(v=policyTypes) then policyTypes else [policyTypes] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/podSecurityPolicy.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/podSecurityPolicy.libsonnet deleted file mode 100644 index 85d9ee641a7f..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/podSecurityPolicy.libsonnet +++ /dev/null @@ -1,206 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='podSecurityPolicy', url='', help='PodSecurityPolicy governs the ability to make requests that affect the Security Context that will be applied to a pod and container. Deprecated: use PodSecurityPolicy from policy API Group instead.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Podsecuritypolicy', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'extensions/v1beta1', - kind: 'PodSecurityPolicy' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='PodSecurityPolicySpec defines the policy enforced. Deprecated: use PodSecurityPolicySpec from policy API Group instead.'), - spec: { - '#fsGroup':: d.obj(help='FSGroupStrategyOptions defines the strategy type and options used to create the strategy. Deprecated: use FSGroupStrategyOptions from policy API Group instead.'), - fsGroup: { - '#withRanges':: d.fn(help='ranges are the allowed ranges of fs groups. If you would like to force a single fs group then supply a single range with the same start and end. Required for MustRunAs.', args=[d.arg(name='ranges', type=d.T.array)]), - withRanges(ranges): { spec+: { fsGroup+: { ranges: if std.isArray(v=ranges) then ranges else [ranges] } } }, - '#withRangesMixin':: d.fn(help='ranges are the allowed ranges of fs groups. If you would like to force a single fs group then supply a single range with the same start and end. Required for MustRunAs.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ranges', type=d.T.array)]), - withRangesMixin(ranges): { spec+: { fsGroup+: { ranges+: if std.isArray(v=ranges) then ranges else [ranges] } } }, - '#withRule':: d.fn(help='rule is the strategy that will dictate what FSGroup is used in the SecurityContext.', args=[d.arg(name='rule', type=d.T.string)]), - withRule(rule): { spec+: { fsGroup+: { rule: rule } } } - }, - '#runAsGroup':: d.obj(help='RunAsGroupStrategyOptions defines the strategy type and any options used to create the strategy. Deprecated: use RunAsGroupStrategyOptions from policy API Group instead.'), - runAsGroup: { - '#withRanges':: d.fn(help='ranges are the allowed ranges of gids that may be used. If you would like to force a single gid then supply a single range with the same start and end. Required for MustRunAs.', args=[d.arg(name='ranges', type=d.T.array)]), - withRanges(ranges): { spec+: { runAsGroup+: { ranges: if std.isArray(v=ranges) then ranges else [ranges] } } }, - '#withRangesMixin':: d.fn(help='ranges are the allowed ranges of gids that may be used. If you would like to force a single gid then supply a single range with the same start and end. Required for MustRunAs.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ranges', type=d.T.array)]), - withRangesMixin(ranges): { spec+: { runAsGroup+: { ranges+: if std.isArray(v=ranges) then ranges else [ranges] } } }, - '#withRule':: d.fn(help='rule is the strategy that will dictate the allowable RunAsGroup values that may be set.', args=[d.arg(name='rule', type=d.T.string)]), - withRule(rule): { spec+: { runAsGroup+: { rule: rule } } } - }, - '#runAsUser':: d.obj(help='RunAsUserStrategyOptions defines the strategy type and any options used to create the strategy. Deprecated: use RunAsUserStrategyOptions from policy API Group instead.'), - runAsUser: { - '#withRanges':: d.fn(help='ranges are the allowed ranges of uids that may be used. If you would like to force a single uid then supply a single range with the same start and end. Required for MustRunAs.', args=[d.arg(name='ranges', type=d.T.array)]), - withRanges(ranges): { spec+: { runAsUser+: { ranges: if std.isArray(v=ranges) then ranges else [ranges] } } }, - '#withRangesMixin':: d.fn(help='ranges are the allowed ranges of uids that may be used. If you would like to force a single uid then supply a single range with the same start and end. Required for MustRunAs.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ranges', type=d.T.array)]), - withRangesMixin(ranges): { spec+: { runAsUser+: { ranges+: if std.isArray(v=ranges) then ranges else [ranges] } } }, - '#withRule':: d.fn(help='rule is the strategy that will dictate the allowable RunAsUser values that may be set.', args=[d.arg(name='rule', type=d.T.string)]), - withRule(rule): { spec+: { runAsUser+: { rule: rule } } } - }, - '#seLinux':: d.obj(help='SELinuxStrategyOptions defines the strategy type and any options used to create the strategy. Deprecated: use SELinuxStrategyOptions from policy API Group instead.'), - seLinux: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { spec+: { seLinux+: { seLinuxOptions+: { level: level } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { spec+: { seLinux+: { seLinuxOptions+: { role: role } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { seLinux+: { seLinuxOptions+: { type: type } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { seLinux+: { seLinuxOptions+: { user: user } } } } - }, - '#withRule':: d.fn(help='rule is the strategy that will dictate the allowable labels that may be set.', args=[d.arg(name='rule', type=d.T.string)]), - withRule(rule): { spec+: { seLinux+: { rule: rule } } } - }, - '#supplementalGroups':: d.obj(help='SupplementalGroupsStrategyOptions defines the strategy type and options used to create the strategy. Deprecated: use SupplementalGroupsStrategyOptions from policy API Group instead.'), - supplementalGroups: { - '#withRanges':: d.fn(help='ranges are the allowed ranges of supplemental groups. If you would like to force a single supplemental group then supply a single range with the same start and end. Required for MustRunAs.', args=[d.arg(name='ranges', type=d.T.array)]), - withRanges(ranges): { spec+: { supplementalGroups+: { ranges: if std.isArray(v=ranges) then ranges else [ranges] } } }, - '#withRangesMixin':: d.fn(help='ranges are the allowed ranges of supplemental groups. If you would like to force a single supplemental group then supply a single range with the same start and end. Required for MustRunAs.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ranges', type=d.T.array)]), - withRangesMixin(ranges): { spec+: { supplementalGroups+: { ranges+: if std.isArray(v=ranges) then ranges else [ranges] } } }, - '#withRule':: d.fn(help='rule is the strategy that will dictate what supplemental groups is used in the SecurityContext.', args=[d.arg(name='rule', type=d.T.string)]), - withRule(rule): { spec+: { supplementalGroups+: { rule: rule } } } - }, - '#withAllowPrivilegeEscalation':: d.fn(help='allowPrivilegeEscalation determines if a pod can request to allow privilege escalation. If unspecified, defaults to true.', args=[d.arg(name='allowPrivilegeEscalation', type=d.T.boolean)]), - withAllowPrivilegeEscalation(allowPrivilegeEscalation): { spec+: { allowPrivilegeEscalation: allowPrivilegeEscalation } }, - '#withAllowedCSIDrivers':: d.fn(help='AllowedCSIDrivers is a whitelist of inline CSI drivers that must be explicitly set to be embedded within a pod spec. An empty value means no CSI drivers can run inline within a pod spec.', args=[d.arg(name='allowedCSIDrivers', type=d.T.array)]), - withAllowedCSIDrivers(allowedCSIDrivers): { spec+: { allowedCSIDrivers: if std.isArray(v=allowedCSIDrivers) then allowedCSIDrivers else [allowedCSIDrivers] } }, - '#withAllowedCSIDriversMixin':: d.fn(help='AllowedCSIDrivers is a whitelist of inline CSI drivers that must be explicitly set to be embedded within a pod spec. An empty value means no CSI drivers can run inline within a pod spec.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='allowedCSIDrivers', type=d.T.array)]), - withAllowedCSIDriversMixin(allowedCSIDrivers): { spec+: { allowedCSIDrivers+: if std.isArray(v=allowedCSIDrivers) then allowedCSIDrivers else [allowedCSIDrivers] } }, - '#withAllowedCapabilities':: d.fn(help="allowedCapabilities is a list of capabilities that can be requested to add to the container. Capabilities in this field may be added at the pod author's discretion. You must not list a capability in both allowedCapabilities and requiredDropCapabilities.", args=[d.arg(name='allowedCapabilities', type=d.T.array)]), - withAllowedCapabilities(allowedCapabilities): { spec+: { allowedCapabilities: if std.isArray(v=allowedCapabilities) then allowedCapabilities else [allowedCapabilities] } }, - '#withAllowedCapabilitiesMixin':: d.fn(help="allowedCapabilities is a list of capabilities that can be requested to add to the container. Capabilities in this field may be added at the pod author's discretion. You must not list a capability in both allowedCapabilities and requiredDropCapabilities.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='allowedCapabilities', type=d.T.array)]), - withAllowedCapabilitiesMixin(allowedCapabilities): { spec+: { allowedCapabilities+: if std.isArray(v=allowedCapabilities) then allowedCapabilities else [allowedCapabilities] } }, - '#withAllowedFlexVolumes':: d.fn(help='allowedFlexVolumes is a whitelist of allowed Flexvolumes. Empty or nil indicates that all Flexvolumes may be used. This parameter is effective only when the usage of the Flexvolumes is allowed in the "volumes" field.', args=[d.arg(name='allowedFlexVolumes', type=d.T.array)]), - withAllowedFlexVolumes(allowedFlexVolumes): { spec+: { allowedFlexVolumes: if std.isArray(v=allowedFlexVolumes) then allowedFlexVolumes else [allowedFlexVolumes] } }, - '#withAllowedFlexVolumesMixin':: d.fn(help='allowedFlexVolumes is a whitelist of allowed Flexvolumes. Empty or nil indicates that all Flexvolumes may be used. This parameter is effective only when the usage of the Flexvolumes is allowed in the "volumes" field.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='allowedFlexVolumes', type=d.T.array)]), - withAllowedFlexVolumesMixin(allowedFlexVolumes): { spec+: { allowedFlexVolumes+: if std.isArray(v=allowedFlexVolumes) then allowedFlexVolumes else [allowedFlexVolumes] } }, - '#withAllowedHostPaths':: d.fn(help='allowedHostPaths is a white list of allowed host paths. Empty indicates that all host paths may be used.', args=[d.arg(name='allowedHostPaths', type=d.T.array)]), - withAllowedHostPaths(allowedHostPaths): { spec+: { allowedHostPaths: if std.isArray(v=allowedHostPaths) then allowedHostPaths else [allowedHostPaths] } }, - '#withAllowedHostPathsMixin':: d.fn(help='allowedHostPaths is a white list of allowed host paths. Empty indicates that all host paths may be used.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='allowedHostPaths', type=d.T.array)]), - withAllowedHostPathsMixin(allowedHostPaths): { spec+: { allowedHostPaths+: if std.isArray(v=allowedHostPaths) then allowedHostPaths else [allowedHostPaths] } }, - '#withAllowedProcMountTypes':: d.fn(help='AllowedProcMountTypes is a whitelist of allowed ProcMountTypes. Empty or nil indicates that only the DefaultProcMountType may be used. This requires the ProcMountType feature flag to be enabled.', args=[d.arg(name='allowedProcMountTypes', type=d.T.array)]), - withAllowedProcMountTypes(allowedProcMountTypes): { spec+: { allowedProcMountTypes: if std.isArray(v=allowedProcMountTypes) then allowedProcMountTypes else [allowedProcMountTypes] } }, - '#withAllowedProcMountTypesMixin':: d.fn(help='AllowedProcMountTypes is a whitelist of allowed ProcMountTypes. Empty or nil indicates that only the DefaultProcMountType may be used. This requires the ProcMountType feature flag to be enabled.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='allowedProcMountTypes', type=d.T.array)]), - withAllowedProcMountTypesMixin(allowedProcMountTypes): { spec+: { allowedProcMountTypes+: if std.isArray(v=allowedProcMountTypes) then allowedProcMountTypes else [allowedProcMountTypes] } }, - '#withAllowedUnsafeSysctls':: d.fn(help='allowedUnsafeSysctls is a list of explicitly allowed unsafe sysctls, defaults to none. Each entry is either a plain sysctl name or ends in "*" in which case it is considered as a prefix of allowed sysctls. Single * means all unsafe sysctls are allowed. Kubelet has to whitelist all allowed unsafe sysctls explicitly to avoid rejection.\n\nExamples: e.g. "foo/*" allows "foo/bar", "foo/baz", etc. e.g. "foo.*" allows "foo.bar", "foo.baz", etc.', args=[d.arg(name='allowedUnsafeSysctls', type=d.T.array)]), - withAllowedUnsafeSysctls(allowedUnsafeSysctls): { spec+: { allowedUnsafeSysctls: if std.isArray(v=allowedUnsafeSysctls) then allowedUnsafeSysctls else [allowedUnsafeSysctls] } }, - '#withAllowedUnsafeSysctlsMixin':: d.fn(help='allowedUnsafeSysctls is a list of explicitly allowed unsafe sysctls, defaults to none. Each entry is either a plain sysctl name or ends in "*" in which case it is considered as a prefix of allowed sysctls. Single * means all unsafe sysctls are allowed. Kubelet has to whitelist all allowed unsafe sysctls explicitly to avoid rejection.\n\nExamples: e.g. "foo/*" allows "foo/bar", "foo/baz", etc. e.g. "foo.*" allows "foo.bar", "foo.baz", etc.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='allowedUnsafeSysctls', type=d.T.array)]), - withAllowedUnsafeSysctlsMixin(allowedUnsafeSysctls): { spec+: { allowedUnsafeSysctls+: if std.isArray(v=allowedUnsafeSysctls) then allowedUnsafeSysctls else [allowedUnsafeSysctls] } }, - '#withDefaultAddCapabilities':: d.fn(help='defaultAddCapabilities is the default set of capabilities that will be added to the container unless the pod spec specifically drops the capability. You may not list a capability in both defaultAddCapabilities and requiredDropCapabilities. Capabilities added here are implicitly allowed, and need not be included in the allowedCapabilities list.', args=[d.arg(name='defaultAddCapabilities', type=d.T.array)]), - withDefaultAddCapabilities(defaultAddCapabilities): { spec+: { defaultAddCapabilities: if std.isArray(v=defaultAddCapabilities) then defaultAddCapabilities else [defaultAddCapabilities] } }, - '#withDefaultAddCapabilitiesMixin':: d.fn(help='defaultAddCapabilities is the default set of capabilities that will be added to the container unless the pod spec specifically drops the capability. You may not list a capability in both defaultAddCapabilities and requiredDropCapabilities. Capabilities added here are implicitly allowed, and need not be included in the allowedCapabilities list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='defaultAddCapabilities', type=d.T.array)]), - withDefaultAddCapabilitiesMixin(defaultAddCapabilities): { spec+: { defaultAddCapabilities+: if std.isArray(v=defaultAddCapabilities) then defaultAddCapabilities else [defaultAddCapabilities] } }, - '#withDefaultAllowPrivilegeEscalation':: d.fn(help='defaultAllowPrivilegeEscalation controls the default setting for whether a process can gain more privileges than its parent process.', args=[d.arg(name='defaultAllowPrivilegeEscalation', type=d.T.boolean)]), - withDefaultAllowPrivilegeEscalation(defaultAllowPrivilegeEscalation): { spec+: { defaultAllowPrivilegeEscalation: defaultAllowPrivilegeEscalation } }, - '#withForbiddenSysctls':: d.fn(help='forbiddenSysctls is a list of explicitly forbidden sysctls, defaults to none. Each entry is either a plain sysctl name or ends in "*" in which case it is considered as a prefix of forbidden sysctls. Single * means all sysctls are forbidden.\n\nExamples: e.g. "foo/*" forbids "foo/bar", "foo/baz", etc. e.g. "foo.*" forbids "foo.bar", "foo.baz", etc.', args=[d.arg(name='forbiddenSysctls', type=d.T.array)]), - withForbiddenSysctls(forbiddenSysctls): { spec+: { forbiddenSysctls: if std.isArray(v=forbiddenSysctls) then forbiddenSysctls else [forbiddenSysctls] } }, - '#withForbiddenSysctlsMixin':: d.fn(help='forbiddenSysctls is a list of explicitly forbidden sysctls, defaults to none. Each entry is either a plain sysctl name or ends in "*" in which case it is considered as a prefix of forbidden sysctls. Single * means all sysctls are forbidden.\n\nExamples: e.g. "foo/*" forbids "foo/bar", "foo/baz", etc. e.g. "foo.*" forbids "foo.bar", "foo.baz", etc.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='forbiddenSysctls', type=d.T.array)]), - withForbiddenSysctlsMixin(forbiddenSysctls): { spec+: { forbiddenSysctls+: if std.isArray(v=forbiddenSysctls) then forbiddenSysctls else [forbiddenSysctls] } }, - '#withHostIPC':: d.fn(help='hostIPC determines if the policy allows the use of HostIPC in the pod spec.', args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { spec+: { hostIPC: hostIPC } }, - '#withHostNetwork':: d.fn(help='hostNetwork determines if the policy allows the use of HostNetwork in the pod spec.', args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { spec+: { hostNetwork: hostNetwork } }, - '#withHostPID':: d.fn(help='hostPID determines if the policy allows the use of HostPID in the pod spec.', args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { spec+: { hostPID: hostPID } }, - '#withHostPorts':: d.fn(help='hostPorts determines which host port ranges are allowed to be exposed.', args=[d.arg(name='hostPorts', type=d.T.array)]), - withHostPorts(hostPorts): { spec+: { hostPorts: if std.isArray(v=hostPorts) then hostPorts else [hostPorts] } }, - '#withHostPortsMixin':: d.fn(help='hostPorts determines which host port ranges are allowed to be exposed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='hostPorts', type=d.T.array)]), - withHostPortsMixin(hostPorts): { spec+: { hostPorts+: if std.isArray(v=hostPorts) then hostPorts else [hostPorts] } }, - '#withPrivileged':: d.fn(help='privileged determines if a pod can request to be run as privileged.', args=[d.arg(name='privileged', type=d.T.boolean)]), - withPrivileged(privileged): { spec+: { privileged: privileged } }, - '#withReadOnlyRootFilesystem':: d.fn(help='readOnlyRootFilesystem when set to true will force containers to run with a read only root file system. If the container specifically requests to run with a non-read only root file system the PSP should deny the pod. If set to false the container may run with a read only root file system if it wishes but it will not be forced to.', args=[d.arg(name='readOnlyRootFilesystem', type=d.T.boolean)]), - withReadOnlyRootFilesystem(readOnlyRootFilesystem): { spec+: { readOnlyRootFilesystem: readOnlyRootFilesystem } }, - '#withRequiredDropCapabilities':: d.fn(help='requiredDropCapabilities are the capabilities that will be dropped from the container. These are required to be dropped and cannot be added.', args=[d.arg(name='requiredDropCapabilities', type=d.T.array)]), - withRequiredDropCapabilities(requiredDropCapabilities): { spec+: { requiredDropCapabilities: if std.isArray(v=requiredDropCapabilities) then requiredDropCapabilities else [requiredDropCapabilities] } }, - '#withRequiredDropCapabilitiesMixin':: d.fn(help='requiredDropCapabilities are the capabilities that will be dropped from the container. These are required to be dropped and cannot be added.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDropCapabilities', type=d.T.array)]), - withRequiredDropCapabilitiesMixin(requiredDropCapabilities): { spec+: { requiredDropCapabilities+: if std.isArray(v=requiredDropCapabilities) then requiredDropCapabilities else [requiredDropCapabilities] } }, - '#withVolumes':: d.fn(help="volumes is a white list of allowed volume plugins. Empty indicates that no volumes may be used. To allow all volumes you may use '*'.", args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } }, - '#withVolumesMixin':: d.fn(help="volumes is a white list of allowed volume plugins. Empty indicates that no volumes may be used. To allow all volumes you may use '*'.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/podSecurityPolicySpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/podSecurityPolicySpec.libsonnet deleted file mode 100644 index ac438f8c891b..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/podSecurityPolicySpec.libsonnet +++ /dev/null @@ -1,116 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='podSecurityPolicySpec', url='', help='PodSecurityPolicySpec defines the policy enforced. Deprecated: use PodSecurityPolicySpec from policy API Group instead.'), - '#fsGroup':: d.obj(help='FSGroupStrategyOptions defines the strategy type and options used to create the strategy. Deprecated: use FSGroupStrategyOptions from policy API Group instead.'), - fsGroup: { - '#withRanges':: d.fn(help='ranges are the allowed ranges of fs groups. If you would like to force a single fs group then supply a single range with the same start and end. Required for MustRunAs.', args=[d.arg(name='ranges', type=d.T.array)]), - withRanges(ranges): { fsGroup+: { ranges: if std.isArray(v=ranges) then ranges else [ranges] } }, - '#withRangesMixin':: d.fn(help='ranges are the allowed ranges of fs groups. If you would like to force a single fs group then supply a single range with the same start and end. Required for MustRunAs.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ranges', type=d.T.array)]), - withRangesMixin(ranges): { fsGroup+: { ranges+: if std.isArray(v=ranges) then ranges else [ranges] } }, - '#withRule':: d.fn(help='rule is the strategy that will dictate what FSGroup is used in the SecurityContext.', args=[d.arg(name='rule', type=d.T.string)]), - withRule(rule): { fsGroup+: { rule: rule } } - }, - '#runAsGroup':: d.obj(help='RunAsGroupStrategyOptions defines the strategy type and any options used to create the strategy. Deprecated: use RunAsGroupStrategyOptions from policy API Group instead.'), - runAsGroup: { - '#withRanges':: d.fn(help='ranges are the allowed ranges of gids that may be used. If you would like to force a single gid then supply a single range with the same start and end. Required for MustRunAs.', args=[d.arg(name='ranges', type=d.T.array)]), - withRanges(ranges): { runAsGroup+: { ranges: if std.isArray(v=ranges) then ranges else [ranges] } }, - '#withRangesMixin':: d.fn(help='ranges are the allowed ranges of gids that may be used. If you would like to force a single gid then supply a single range with the same start and end. Required for MustRunAs.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ranges', type=d.T.array)]), - withRangesMixin(ranges): { runAsGroup+: { ranges+: if std.isArray(v=ranges) then ranges else [ranges] } }, - '#withRule':: d.fn(help='rule is the strategy that will dictate the allowable RunAsGroup values that may be set.', args=[d.arg(name='rule', type=d.T.string)]), - withRule(rule): { runAsGroup+: { rule: rule } } - }, - '#runAsUser':: d.obj(help='RunAsUserStrategyOptions defines the strategy type and any options used to create the strategy. Deprecated: use RunAsUserStrategyOptions from policy API Group instead.'), - runAsUser: { - '#withRanges':: d.fn(help='ranges are the allowed ranges of uids that may be used. If you would like to force a single uid then supply a single range with the same start and end. Required for MustRunAs.', args=[d.arg(name='ranges', type=d.T.array)]), - withRanges(ranges): { runAsUser+: { ranges: if std.isArray(v=ranges) then ranges else [ranges] } }, - '#withRangesMixin':: d.fn(help='ranges are the allowed ranges of uids that may be used. If you would like to force a single uid then supply a single range with the same start and end. Required for MustRunAs.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ranges', type=d.T.array)]), - withRangesMixin(ranges): { runAsUser+: { ranges+: if std.isArray(v=ranges) then ranges else [ranges] } }, - '#withRule':: d.fn(help='rule is the strategy that will dictate the allowable RunAsUser values that may be set.', args=[d.arg(name='rule', type=d.T.string)]), - withRule(rule): { runAsUser+: { rule: rule } } - }, - '#seLinux':: d.obj(help='SELinuxStrategyOptions defines the strategy type and any options used to create the strategy. Deprecated: use SELinuxStrategyOptions from policy API Group instead.'), - seLinux: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { seLinux+: { seLinuxOptions+: { level: level } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { seLinux+: { seLinuxOptions+: { role: role } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { seLinux+: { seLinuxOptions+: { type: type } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { seLinux+: { seLinuxOptions+: { user: user } } } - }, - '#withRule':: d.fn(help='rule is the strategy that will dictate the allowable labels that may be set.', args=[d.arg(name='rule', type=d.T.string)]), - withRule(rule): { seLinux+: { rule: rule } } - }, - '#supplementalGroups':: d.obj(help='SupplementalGroupsStrategyOptions defines the strategy type and options used to create the strategy. Deprecated: use SupplementalGroupsStrategyOptions from policy API Group instead.'), - supplementalGroups: { - '#withRanges':: d.fn(help='ranges are the allowed ranges of supplemental groups. If you would like to force a single supplemental group then supply a single range with the same start and end. Required for MustRunAs.', args=[d.arg(name='ranges', type=d.T.array)]), - withRanges(ranges): { supplementalGroups+: { ranges: if std.isArray(v=ranges) then ranges else [ranges] } }, - '#withRangesMixin':: d.fn(help='ranges are the allowed ranges of supplemental groups. If you would like to force a single supplemental group then supply a single range with the same start and end. Required for MustRunAs.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ranges', type=d.T.array)]), - withRangesMixin(ranges): { supplementalGroups+: { ranges+: if std.isArray(v=ranges) then ranges else [ranges] } }, - '#withRule':: d.fn(help='rule is the strategy that will dictate what supplemental groups is used in the SecurityContext.', args=[d.arg(name='rule', type=d.T.string)]), - withRule(rule): { supplementalGroups+: { rule: rule } } - }, - '#withAllowPrivilegeEscalation':: d.fn(help='allowPrivilegeEscalation determines if a pod can request to allow privilege escalation. If unspecified, defaults to true.', args=[d.arg(name='allowPrivilegeEscalation', type=d.T.boolean)]), - withAllowPrivilegeEscalation(allowPrivilegeEscalation): { allowPrivilegeEscalation: allowPrivilegeEscalation }, - '#withAllowedCSIDrivers':: d.fn(help='AllowedCSIDrivers is a whitelist of inline CSI drivers that must be explicitly set to be embedded within a pod spec. An empty value means no CSI drivers can run inline within a pod spec.', args=[d.arg(name='allowedCSIDrivers', type=d.T.array)]), - withAllowedCSIDrivers(allowedCSIDrivers): { allowedCSIDrivers: if std.isArray(v=allowedCSIDrivers) then allowedCSIDrivers else [allowedCSIDrivers] }, - '#withAllowedCSIDriversMixin':: d.fn(help='AllowedCSIDrivers is a whitelist of inline CSI drivers that must be explicitly set to be embedded within a pod spec. An empty value means no CSI drivers can run inline within a pod spec.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='allowedCSIDrivers', type=d.T.array)]), - withAllowedCSIDriversMixin(allowedCSIDrivers): { allowedCSIDrivers+: if std.isArray(v=allowedCSIDrivers) then allowedCSIDrivers else [allowedCSIDrivers] }, - '#withAllowedCapabilities':: d.fn(help="allowedCapabilities is a list of capabilities that can be requested to add to the container. Capabilities in this field may be added at the pod author's discretion. You must not list a capability in both allowedCapabilities and requiredDropCapabilities.", args=[d.arg(name='allowedCapabilities', type=d.T.array)]), - withAllowedCapabilities(allowedCapabilities): { allowedCapabilities: if std.isArray(v=allowedCapabilities) then allowedCapabilities else [allowedCapabilities] }, - '#withAllowedCapabilitiesMixin':: d.fn(help="allowedCapabilities is a list of capabilities that can be requested to add to the container. Capabilities in this field may be added at the pod author's discretion. You must not list a capability in both allowedCapabilities and requiredDropCapabilities.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='allowedCapabilities', type=d.T.array)]), - withAllowedCapabilitiesMixin(allowedCapabilities): { allowedCapabilities+: if std.isArray(v=allowedCapabilities) then allowedCapabilities else [allowedCapabilities] }, - '#withAllowedFlexVolumes':: d.fn(help='allowedFlexVolumes is a whitelist of allowed Flexvolumes. Empty or nil indicates that all Flexvolumes may be used. This parameter is effective only when the usage of the Flexvolumes is allowed in the "volumes" field.', args=[d.arg(name='allowedFlexVolumes', type=d.T.array)]), - withAllowedFlexVolumes(allowedFlexVolumes): { allowedFlexVolumes: if std.isArray(v=allowedFlexVolumes) then allowedFlexVolumes else [allowedFlexVolumes] }, - '#withAllowedFlexVolumesMixin':: d.fn(help='allowedFlexVolumes is a whitelist of allowed Flexvolumes. Empty or nil indicates that all Flexvolumes may be used. This parameter is effective only when the usage of the Flexvolumes is allowed in the "volumes" field.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='allowedFlexVolumes', type=d.T.array)]), - withAllowedFlexVolumesMixin(allowedFlexVolumes): { allowedFlexVolumes+: if std.isArray(v=allowedFlexVolumes) then allowedFlexVolumes else [allowedFlexVolumes] }, - '#withAllowedHostPaths':: d.fn(help='allowedHostPaths is a white list of allowed host paths. Empty indicates that all host paths may be used.', args=[d.arg(name='allowedHostPaths', type=d.T.array)]), - withAllowedHostPaths(allowedHostPaths): { allowedHostPaths: if std.isArray(v=allowedHostPaths) then allowedHostPaths else [allowedHostPaths] }, - '#withAllowedHostPathsMixin':: d.fn(help='allowedHostPaths is a white list of allowed host paths. Empty indicates that all host paths may be used.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='allowedHostPaths', type=d.T.array)]), - withAllowedHostPathsMixin(allowedHostPaths): { allowedHostPaths+: if std.isArray(v=allowedHostPaths) then allowedHostPaths else [allowedHostPaths] }, - '#withAllowedProcMountTypes':: d.fn(help='AllowedProcMountTypes is a whitelist of allowed ProcMountTypes. Empty or nil indicates that only the DefaultProcMountType may be used. This requires the ProcMountType feature flag to be enabled.', args=[d.arg(name='allowedProcMountTypes', type=d.T.array)]), - withAllowedProcMountTypes(allowedProcMountTypes): { allowedProcMountTypes: if std.isArray(v=allowedProcMountTypes) then allowedProcMountTypes else [allowedProcMountTypes] }, - '#withAllowedProcMountTypesMixin':: d.fn(help='AllowedProcMountTypes is a whitelist of allowed ProcMountTypes. Empty or nil indicates that only the DefaultProcMountType may be used. This requires the ProcMountType feature flag to be enabled.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='allowedProcMountTypes', type=d.T.array)]), - withAllowedProcMountTypesMixin(allowedProcMountTypes): { allowedProcMountTypes+: if std.isArray(v=allowedProcMountTypes) then allowedProcMountTypes else [allowedProcMountTypes] }, - '#withAllowedUnsafeSysctls':: d.fn(help='allowedUnsafeSysctls is a list of explicitly allowed unsafe sysctls, defaults to none. Each entry is either a plain sysctl name or ends in "*" in which case it is considered as a prefix of allowed sysctls. Single * means all unsafe sysctls are allowed. Kubelet has to whitelist all allowed unsafe sysctls explicitly to avoid rejection.\n\nExamples: e.g. "foo/*" allows "foo/bar", "foo/baz", etc. e.g. "foo.*" allows "foo.bar", "foo.baz", etc.', args=[d.arg(name='allowedUnsafeSysctls', type=d.T.array)]), - withAllowedUnsafeSysctls(allowedUnsafeSysctls): { allowedUnsafeSysctls: if std.isArray(v=allowedUnsafeSysctls) then allowedUnsafeSysctls else [allowedUnsafeSysctls] }, - '#withAllowedUnsafeSysctlsMixin':: d.fn(help='allowedUnsafeSysctls is a list of explicitly allowed unsafe sysctls, defaults to none. Each entry is either a plain sysctl name or ends in "*" in which case it is considered as a prefix of allowed sysctls. Single * means all unsafe sysctls are allowed. Kubelet has to whitelist all allowed unsafe sysctls explicitly to avoid rejection.\n\nExamples: e.g. "foo/*" allows "foo/bar", "foo/baz", etc. e.g. "foo.*" allows "foo.bar", "foo.baz", etc.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='allowedUnsafeSysctls', type=d.T.array)]), - withAllowedUnsafeSysctlsMixin(allowedUnsafeSysctls): { allowedUnsafeSysctls+: if std.isArray(v=allowedUnsafeSysctls) then allowedUnsafeSysctls else [allowedUnsafeSysctls] }, - '#withDefaultAddCapabilities':: d.fn(help='defaultAddCapabilities is the default set of capabilities that will be added to the container unless the pod spec specifically drops the capability. You may not list a capability in both defaultAddCapabilities and requiredDropCapabilities. Capabilities added here are implicitly allowed, and need not be included in the allowedCapabilities list.', args=[d.arg(name='defaultAddCapabilities', type=d.T.array)]), - withDefaultAddCapabilities(defaultAddCapabilities): { defaultAddCapabilities: if std.isArray(v=defaultAddCapabilities) then defaultAddCapabilities else [defaultAddCapabilities] }, - '#withDefaultAddCapabilitiesMixin':: d.fn(help='defaultAddCapabilities is the default set of capabilities that will be added to the container unless the pod spec specifically drops the capability. You may not list a capability in both defaultAddCapabilities and requiredDropCapabilities. Capabilities added here are implicitly allowed, and need not be included in the allowedCapabilities list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='defaultAddCapabilities', type=d.T.array)]), - withDefaultAddCapabilitiesMixin(defaultAddCapabilities): { defaultAddCapabilities+: if std.isArray(v=defaultAddCapabilities) then defaultAddCapabilities else [defaultAddCapabilities] }, - '#withDefaultAllowPrivilegeEscalation':: d.fn(help='defaultAllowPrivilegeEscalation controls the default setting for whether a process can gain more privileges than its parent process.', args=[d.arg(name='defaultAllowPrivilegeEscalation', type=d.T.boolean)]), - withDefaultAllowPrivilegeEscalation(defaultAllowPrivilegeEscalation): { defaultAllowPrivilegeEscalation: defaultAllowPrivilegeEscalation }, - '#withForbiddenSysctls':: d.fn(help='forbiddenSysctls is a list of explicitly forbidden sysctls, defaults to none. Each entry is either a plain sysctl name or ends in "*" in which case it is considered as a prefix of forbidden sysctls. Single * means all sysctls are forbidden.\n\nExamples: e.g. "foo/*" forbids "foo/bar", "foo/baz", etc. e.g. "foo.*" forbids "foo.bar", "foo.baz", etc.', args=[d.arg(name='forbiddenSysctls', type=d.T.array)]), - withForbiddenSysctls(forbiddenSysctls): { forbiddenSysctls: if std.isArray(v=forbiddenSysctls) then forbiddenSysctls else [forbiddenSysctls] }, - '#withForbiddenSysctlsMixin':: d.fn(help='forbiddenSysctls is a list of explicitly forbidden sysctls, defaults to none. Each entry is either a plain sysctl name or ends in "*" in which case it is considered as a prefix of forbidden sysctls. Single * means all sysctls are forbidden.\n\nExamples: e.g. "foo/*" forbids "foo/bar", "foo/baz", etc. e.g. "foo.*" forbids "foo.bar", "foo.baz", etc.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='forbiddenSysctls', type=d.T.array)]), - withForbiddenSysctlsMixin(forbiddenSysctls): { forbiddenSysctls+: if std.isArray(v=forbiddenSysctls) then forbiddenSysctls else [forbiddenSysctls] }, - '#withHostIPC':: d.fn(help='hostIPC determines if the policy allows the use of HostIPC in the pod spec.', args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { hostIPC: hostIPC }, - '#withHostNetwork':: d.fn(help='hostNetwork determines if the policy allows the use of HostNetwork in the pod spec.', args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { hostNetwork: hostNetwork }, - '#withHostPID':: d.fn(help='hostPID determines if the policy allows the use of HostPID in the pod spec.', args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { hostPID: hostPID }, - '#withHostPorts':: d.fn(help='hostPorts determines which host port ranges are allowed to be exposed.', args=[d.arg(name='hostPorts', type=d.T.array)]), - withHostPorts(hostPorts): { hostPorts: if std.isArray(v=hostPorts) then hostPorts else [hostPorts] }, - '#withHostPortsMixin':: d.fn(help='hostPorts determines which host port ranges are allowed to be exposed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='hostPorts', type=d.T.array)]), - withHostPortsMixin(hostPorts): { hostPorts+: if std.isArray(v=hostPorts) then hostPorts else [hostPorts] }, - '#withPrivileged':: d.fn(help='privileged determines if a pod can request to be run as privileged.', args=[d.arg(name='privileged', type=d.T.boolean)]), - withPrivileged(privileged): { privileged: privileged }, - '#withReadOnlyRootFilesystem':: d.fn(help='readOnlyRootFilesystem when set to true will force containers to run with a read only root file system. If the container specifically requests to run with a non-read only root file system the PSP should deny the pod. If set to false the container may run with a read only root file system if it wishes but it will not be forced to.', args=[d.arg(name='readOnlyRootFilesystem', type=d.T.boolean)]), - withReadOnlyRootFilesystem(readOnlyRootFilesystem): { readOnlyRootFilesystem: readOnlyRootFilesystem }, - '#withRequiredDropCapabilities':: d.fn(help='requiredDropCapabilities are the capabilities that will be dropped from the container. These are required to be dropped and cannot be added.', args=[d.arg(name='requiredDropCapabilities', type=d.T.array)]), - withRequiredDropCapabilities(requiredDropCapabilities): { requiredDropCapabilities: if std.isArray(v=requiredDropCapabilities) then requiredDropCapabilities else [requiredDropCapabilities] }, - '#withRequiredDropCapabilitiesMixin':: d.fn(help='requiredDropCapabilities are the capabilities that will be dropped from the container. These are required to be dropped and cannot be added.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDropCapabilities', type=d.T.array)]), - withRequiredDropCapabilitiesMixin(requiredDropCapabilities): { requiredDropCapabilities+: if std.isArray(v=requiredDropCapabilities) then requiredDropCapabilities else [requiredDropCapabilities] }, - '#withVolumes':: d.fn(help="volumes is a white list of allowed volume plugins. Empty indicates that no volumes may be used. To allow all volumes you may use '*'.", args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { volumes: if std.isArray(v=volumes) then volumes else [volumes] }, - '#withVolumesMixin':: d.fn(help="volumes is a white list of allowed volume plugins. Empty indicates that no volumes may be used. To allow all volumes you may use '*'.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { volumes+: if std.isArray(v=volumes) then volumes else [volumes] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/replicaSet.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/replicaSet.libsonnet deleted file mode 100644 index 5772af6107d6..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/replicaSet.libsonnet +++ /dev/null @@ -1,353 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='replicaSet', url='', help='DEPRECATED - This group version of ReplicaSet is deprecated by apps/v1beta2/ReplicaSet. See the release notes for more information. ReplicaSet ensures that a specified number of pod replicas are running at any given time.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Replicaset', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'extensions/v1beta1', - kind: 'ReplicaSet' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='ReplicaSetSpec is the specification of a ReplicaSet.'), - spec: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { spec+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { spec+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { spec+: { selector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { spec+: { selector+: { matchLabels+: matchLabels } } } - }, - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { group: group } } } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { name: name } } } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { template+: { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { spec+: { template+: { metadata+: { initializers+: { result+: { code: code } } } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { template+: { metadata+: { initializers+: { result+: { kind: kind } } } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { spec+: { template+: { metadata+: { initializers+: { result+: { message: message } } } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { spec+: { template+: { metadata+: { initializers+: { result+: { metadata: metadata } } } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { spec+: { template+: { metadata+: { initializers+: { result+: { reason: reason } } } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { spec+: { template+: { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { spec+: { template+: { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { spec+: { template+: { metadata+: { annotations: annotations } } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { spec+: { template+: { metadata+: { annotations+: annotations } } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { spec+: { template+: { metadata+: { clusterName: clusterName } } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { spec+: { template+: { metadata+: { creationTimestamp: creationTimestamp } } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { spec+: { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { spec+: { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { spec+: { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { spec+: { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { spec+: { template+: { metadata+: { generateName: generateName } } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { spec+: { template+: { metadata+: { generation: generation } } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { spec+: { template+: { metadata+: { labels: labels } } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { spec+: { template+: { metadata+: { labels+: labels } } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { spec+: { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { spec+: { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { template+: { metadata+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { template+: { metadata+: { namespace: namespace } } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { spec+: { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { spec+: { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { spec+: { template+: { metadata+: { resourceVersion: resourceVersion } } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { spec+: { template+: { metadata+: { selfLink: selfLink } } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { template+: { metadata+: { uid: uid } } } } - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } } - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } - } - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { spec+: { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { spec+: { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { spec+: { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { spec+: { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { spec+: { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { spec+: { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } } } - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } } } - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { spec+: { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { spec+: { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { spec+: { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { spec+: { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { spec+: { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { spec+: { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { spec+: { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { spec+: { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } } - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { spec+: { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { spec+: { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { spec+: { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { spec+: { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { spec+: { template+: { spec+: { dnsPolicy: dnsPolicy } } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { spec+: { template+: { spec+: { enableServiceLinks: enableServiceLinks } } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { spec+: { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { spec+: { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { spec+: { template+: { spec+: { hostIPC: hostIPC } } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { spec+: { template+: { spec+: { hostNetwork: hostNetwork } } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { spec+: { template+: { spec+: { hostPID: hostPID } } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { spec+: { template+: { spec+: { hostname: hostname } } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { spec+: { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { spec+: { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { spec+: { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { spec+: { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { spec+: { template+: { spec+: { nodeName: nodeName } } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { spec+: { template+: { spec+: { nodeSelector: nodeSelector } } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { spec+: { template+: { spec+: { nodeSelector+: nodeSelector } } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { spec+: { template+: { spec+: { priority: priority } } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { spec+: { template+: { spec+: { priorityClassName: priorityClassName } } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { spec+: { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { spec+: { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { spec+: { template+: { spec+: { restartPolicy: restartPolicy } } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is an alpha feature and may change in the future.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { spec+: { template+: { spec+: { runtimeClassName: runtimeClassName } } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { spec+: { template+: { spec+: { schedulerName: schedulerName } } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { spec+: { template+: { spec+: { serviceAccount: serviceAccount } } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { spec+: { template+: { spec+: { serviceAccountName: serviceAccountName } } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false. This field is beta-level and may be disabled with the PodShareProcessNamespace feature.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { spec+: { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { spec+: { template+: { spec+: { subdomain: subdomain } } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { spec+: { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { spec+: { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { spec+: { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { spec+: { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { spec+: { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } } } - } - }, - '#withMinReadySeconds':: d.fn(help='Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)', args=[d.arg(name='minReadySeconds', type=d.T.integer)]), - withMinReadySeconds(minReadySeconds): { spec+: { minReadySeconds: minReadySeconds } }, - '#withReplicas':: d.fn(help='Replicas is the number of desired replicas. This is a pointer to distinguish between explicit zero and unspecified. Defaults to 1. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { spec+: { replicas: replicas } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/replicaSetCondition.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/replicaSetCondition.libsonnet deleted file mode 100644 index 581bbfa9c69b..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/replicaSetCondition.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='replicaSetCondition', url='', help='ReplicaSetCondition describes the state of a replica set at a certain point.'), - '#withLastTransitionTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastTransitionTime', type=d.T.string)]), - withLastTransitionTime(lastTransitionTime): { lastTransitionTime: lastTransitionTime }, - '#withMessage':: d.fn(help='A human readable message indicating details about the transition.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withReason':: d.fn(help="The reason for the condition's last transition.", args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#withType':: d.fn(help='Type of replica set condition.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/replicaSetSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/replicaSetSpec.libsonnet deleted file mode 100644 index 933b7ffbd53a..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/replicaSetSpec.libsonnet +++ /dev/null @@ -1,263 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='replicaSetSpec', url='', help='ReplicaSetSpec is the specification of a ReplicaSet.'), - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { selector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { selector+: { matchLabels+: matchLabels } } - }, - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { template+: { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { template+: { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { template+: { metadata+: { initializers+: { result+: { details+: { group: group } } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { template+: { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { template+: { metadata+: { initializers+: { result+: { details+: { name: name } } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { template+: { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { template+: { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { template+: { metadata+: { initializers+: { result+: { code: code } } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { template+: { metadata+: { initializers+: { result+: { kind: kind } } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { template+: { metadata+: { initializers+: { result+: { message: message } } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { template+: { metadata+: { initializers+: { result+: { metadata: metadata } } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { template+: { metadata+: { initializers+: { result+: { reason: reason } } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { template+: { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { template+: { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { template+: { metadata+: { annotations: annotations } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { template+: { metadata+: { annotations+: annotations } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { template+: { metadata+: { clusterName: clusterName } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { template+: { metadata+: { creationTimestamp: creationTimestamp } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { template+: { metadata+: { generateName: generateName } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { template+: { metadata+: { generation: generation } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { template+: { metadata+: { labels: labels } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { template+: { metadata+: { labels+: labels } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { template+: { metadata+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { template+: { metadata+: { namespace: namespace } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { template+: { metadata+: { resourceVersion: resourceVersion } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { template+: { metadata+: { selfLink: selfLink } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { template+: { metadata+: { uid: uid } } } - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } - } - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } } - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } } - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { template+: { spec+: { dnsPolicy: dnsPolicy } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { template+: { spec+: { enableServiceLinks: enableServiceLinks } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { template+: { spec+: { hostIPC: hostIPC } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { template+: { spec+: { hostNetwork: hostNetwork } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { template+: { spec+: { hostPID: hostPID } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { template+: { spec+: { hostname: hostname } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { template+: { spec+: { nodeName: nodeName } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { template+: { spec+: { nodeSelector: nodeSelector } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { template+: { spec+: { nodeSelector+: nodeSelector } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { template+: { spec+: { priority: priority } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { template+: { spec+: { priorityClassName: priorityClassName } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { template+: { spec+: { restartPolicy: restartPolicy } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is an alpha feature and may change in the future.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { template+: { spec+: { runtimeClassName: runtimeClassName } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { template+: { spec+: { schedulerName: schedulerName } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { template+: { spec+: { serviceAccount: serviceAccount } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { template+: { spec+: { serviceAccountName: serviceAccountName } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false. This field is beta-level and may be disabled with the PodShareProcessNamespace feature.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { template+: { spec+: { subdomain: subdomain } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } } - } - }, - '#withMinReadySeconds':: d.fn(help='Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)', args=[d.arg(name='minReadySeconds', type=d.T.integer)]), - withMinReadySeconds(minReadySeconds): { minReadySeconds: minReadySeconds }, - '#withReplicas':: d.fn(help='Replicas is the number of desired replicas. This is a pointer to distinguish between explicit zero and unspecified. Defaults to 1. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { replicas: replicas }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/replicaSetStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/replicaSetStatus.libsonnet deleted file mode 100644 index e959f877d008..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/replicaSetStatus.libsonnet +++ /dev/null @@ -1,20 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='replicaSetStatus', url='', help='ReplicaSetStatus represents the current status of a ReplicaSet.'), - '#withAvailableReplicas':: d.fn(help='The number of available replicas (ready for at least minReadySeconds) for this replica set.', args=[d.arg(name='availableReplicas', type=d.T.integer)]), - withAvailableReplicas(availableReplicas): { availableReplicas: availableReplicas }, - '#withConditions':: d.fn(help="Represents the latest available observations of a replica set's current state.", args=[d.arg(name='conditions', type=d.T.array)]), - withConditions(conditions): { conditions: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withConditionsMixin':: d.fn(help="Represents the latest available observations of a replica set's current state.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='conditions', type=d.T.array)]), - withConditionsMixin(conditions): { conditions+: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withFullyLabeledReplicas':: d.fn(help='The number of pods that have labels matching the labels of the pod template of the replicaset.', args=[d.arg(name='fullyLabeledReplicas', type=d.T.integer)]), - withFullyLabeledReplicas(fullyLabeledReplicas): { fullyLabeledReplicas: fullyLabeledReplicas }, - '#withObservedGeneration':: d.fn(help='ObservedGeneration reflects the generation of the most recently observed ReplicaSet.', args=[d.arg(name='observedGeneration', type=d.T.integer)]), - withObservedGeneration(observedGeneration): { observedGeneration: observedGeneration }, - '#withReadyReplicas':: d.fn(help='The number of ready replicas for this replica set.', args=[d.arg(name='readyReplicas', type=d.T.integer)]), - withReadyReplicas(readyReplicas): { readyReplicas: readyReplicas }, - '#withReplicas':: d.fn(help='Replicas is the most recently oberved number of replicas. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { replicas: replicas }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/rollbackConfig.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/rollbackConfig.libsonnet deleted file mode 100644 index c4e6018de696..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/rollbackConfig.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='rollbackConfig', url='', help='DEPRECATED.'), - '#withRevision':: d.fn(help='The revision to rollback to. If set to 0, rollback to the last revision.', args=[d.arg(name='revision', type=d.T.integer)]), - withRevision(revision): { revision: revision }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/rollingUpdateDaemonSet.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/rollingUpdateDaemonSet.libsonnet deleted file mode 100644 index 9d349cef4825..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/rollingUpdateDaemonSet.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='rollingUpdateDaemonSet', url='', help='Spec to control the desired behavior of daemon set rolling update.'), - '#withMaxUnavailable':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxUnavailable', type=d.T.string)]), - withMaxUnavailable(maxUnavailable): { maxUnavailable: maxUnavailable }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/rollingUpdateDeployment.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/rollingUpdateDeployment.libsonnet deleted file mode 100644 index cd8cadb0f964..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/rollingUpdateDeployment.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='rollingUpdateDeployment', url='', help='Spec to control the desired behavior of rolling update.'), - '#withMaxSurge':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxSurge', type=d.T.string)]), - withMaxSurge(maxSurge): { maxSurge: maxSurge }, - '#withMaxUnavailable':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxUnavailable', type=d.T.string)]), - withMaxUnavailable(maxUnavailable): { maxUnavailable: maxUnavailable }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/runAsGroupStrategyOptions.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/runAsGroupStrategyOptions.libsonnet deleted file mode 100644 index c25f2bf1f9cd..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/runAsGroupStrategyOptions.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='runAsGroupStrategyOptions', url='', help='RunAsGroupStrategyOptions defines the strategy type and any options used to create the strategy. Deprecated: use RunAsGroupStrategyOptions from policy API Group instead.'), - '#withRanges':: d.fn(help='ranges are the allowed ranges of gids that may be used. If you would like to force a single gid then supply a single range with the same start and end. Required for MustRunAs.', args=[d.arg(name='ranges', type=d.T.array)]), - withRanges(ranges): { ranges: if std.isArray(v=ranges) then ranges else [ranges] }, - '#withRangesMixin':: d.fn(help='ranges are the allowed ranges of gids that may be used. If you would like to force a single gid then supply a single range with the same start and end. Required for MustRunAs.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ranges', type=d.T.array)]), - withRangesMixin(ranges): { ranges+: if std.isArray(v=ranges) then ranges else [ranges] }, - '#withRule':: d.fn(help='rule is the strategy that will dictate the allowable RunAsGroup values that may be set.', args=[d.arg(name='rule', type=d.T.string)]), - withRule(rule): { rule: rule }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/runAsUserStrategyOptions.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/runAsUserStrategyOptions.libsonnet deleted file mode 100644 index 19d7fb0e4df2..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/runAsUserStrategyOptions.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='runAsUserStrategyOptions', url='', help='RunAsUserStrategyOptions defines the strategy type and any options used to create the strategy. Deprecated: use RunAsUserStrategyOptions from policy API Group instead.'), - '#withRanges':: d.fn(help='ranges are the allowed ranges of uids that may be used. If you would like to force a single uid then supply a single range with the same start and end. Required for MustRunAs.', args=[d.arg(name='ranges', type=d.T.array)]), - withRanges(ranges): { ranges: if std.isArray(v=ranges) then ranges else [ranges] }, - '#withRangesMixin':: d.fn(help='ranges are the allowed ranges of uids that may be used. If you would like to force a single uid then supply a single range with the same start and end. Required for MustRunAs.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ranges', type=d.T.array)]), - withRangesMixin(ranges): { ranges+: if std.isArray(v=ranges) then ranges else [ranges] }, - '#withRule':: d.fn(help='rule is the strategy that will dictate the allowable RunAsUser values that may be set.', args=[d.arg(name='rule', type=d.T.string)]), - withRule(rule): { rule: rule }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/scale.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/scale.libsonnet deleted file mode 100644 index e1b9a5292a12..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/scale.libsonnet +++ /dev/null @@ -1,98 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='scale', url='', help='represents a scaling request for a resource.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Scale', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'extensions/v1beta1', - kind: 'Scale' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='describes the attributes of a scale subresource'), - spec: { - '#withReplicas':: d.fn(help='desired number of instances for the scaled object.', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { spec+: { replicas: replicas } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/scaleSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/scaleSpec.libsonnet deleted file mode 100644 index 7630815ddbf8..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/scaleSpec.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='scaleSpec', url='', help='describes the attributes of a scale subresource'), - '#withReplicas':: d.fn(help='desired number of instances for the scaled object.', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { replicas: replicas }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/scaleStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/scaleStatus.libsonnet deleted file mode 100644 index 7fd8f09a66a4..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/scaleStatus.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='scaleStatus', url='', help='represents the current status of a scale subresource.'), - '#withReplicas':: d.fn(help='actual number of observed instances of the scaled object.', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { replicas: replicas }, - '#withSelector':: d.fn(help='label query over pods that should match the replicas count. More info: http://kubernetes.io/docs/user-guide/labels#label-selectors', args=[d.arg(name='selector', type=d.T.object)]), - withSelector(selector): { selector: selector }, - '#withSelectorMixin':: d.fn(help='label query over pods that should match the replicas count. More info: http://kubernetes.io/docs/user-guide/labels#label-selectors\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='selector', type=d.T.object)]), - withSelectorMixin(selector): { selector+: selector }, - '#withTargetSelector':: d.fn(help='label selector for pods that should match the replicas count. This is a serializated version of both map-based and more expressive set-based selectors. This is done to avoid introspection in the clients. The string will be in the same format as the query-param syntax. If the target type only supports map-based selectors, both this field and map-based selector field are populated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors', args=[d.arg(name='targetSelector', type=d.T.string)]), - withTargetSelector(targetSelector): { targetSelector: targetSelector }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/seLinuxStrategyOptions.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/seLinuxStrategyOptions.libsonnet deleted file mode 100644 index c00e69acab3f..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/seLinuxStrategyOptions.libsonnet +++ /dev/null @@ -1,19 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='seLinuxStrategyOptions', url='', help='SELinuxStrategyOptions defines the strategy type and any options used to create the strategy. Deprecated: use SELinuxStrategyOptions from policy API Group instead.'), - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { seLinuxOptions+: { level: level } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { seLinuxOptions+: { role: role } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { seLinuxOptions+: { type: type } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { seLinuxOptions+: { user: user } } - }, - '#withRule':: d.fn(help='rule is the strategy that will dictate the allowable labels that may be set.', args=[d.arg(name='rule', type=d.T.string)]), - withRule(rule): { rule: rule }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/supplementalGroupsStrategyOptions.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/supplementalGroupsStrategyOptions.libsonnet deleted file mode 100644 index d1bdfd462434..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/extensions/v1beta1/supplementalGroupsStrategyOptions.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='supplementalGroupsStrategyOptions', url='', help='SupplementalGroupsStrategyOptions defines the strategy type and options used to create the strategy. Deprecated: use SupplementalGroupsStrategyOptions from policy API Group instead.'), - '#withRanges':: d.fn(help='ranges are the allowed ranges of supplemental groups. If you would like to force a single supplemental group then supply a single range with the same start and end. Required for MustRunAs.', args=[d.arg(name='ranges', type=d.T.array)]), - withRanges(ranges): { ranges: if std.isArray(v=ranges) then ranges else [ranges] }, - '#withRangesMixin':: d.fn(help='ranges are the allowed ranges of supplemental groups. If you would like to force a single supplemental group then supply a single range with the same start and end. Required for MustRunAs.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ranges', type=d.T.array)]), - withRangesMixin(ranges): { ranges+: if std.isArray(v=ranges) then ranges else [ranges] }, - '#withRule':: d.fn(help='rule is the strategy that will dictate what supplemental groups is used in the SecurityContext.', args=[d.arg(name='rule', type=d.T.string)]), - withRule(rule): { rule: rule }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/main.libsonnet deleted file mode 100644 index df56c3b58e16..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/main.libsonnet +++ /dev/null @@ -1,6 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='networking', url='', help=''), - v1: (import 'v1/main.libsonnet'), - v1beta1: (import 'v1beta1/main.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1/ipBlock.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1/ipBlock.libsonnet deleted file mode 100644 index 52362fefeca2..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1/ipBlock.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='ipBlock', url='', help="IPBlock describes a particular CIDR (Ex. '192.168.1.1/24') that is allowed to the pods matched by a NetworkPolicySpec's podSelector. The except entry describes CIDRs that should not be included within this rule."), - '#withCidr':: d.fn(help='CIDR is a string representing the IP Block Valid examples are "192.168.1.1/24"', args=[d.arg(name='cidr', type=d.T.string)]), - withCidr(cidr): { cidr: cidr }, - '#withExcept':: d.fn(help='Except is a slice of CIDRs that should not be included within an IP Block Valid examples are "192.168.1.1/24" Except values will be rejected if they are outside the CIDR range', args=[d.arg(name='except', type=d.T.array)]), - withExcept(except): { except: if std.isArray(v=except) then except else [except] }, - '#withExceptMixin':: d.fn(help='Except is a slice of CIDRs that should not be included within an IP Block Valid examples are "192.168.1.1/24" Except values will be rejected if they are outside the CIDR range\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='except', type=d.T.array)]), - withExceptMixin(except): { except+: if std.isArray(v=except) then except else [except] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1/main.libsonnet deleted file mode 100644 index 9e788381588a..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1/main.libsonnet +++ /dev/null @@ -1,11 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1', url='', help=''), - ipBlock: (import 'ipBlock.libsonnet'), - networkPolicy: (import 'networkPolicy.libsonnet'), - networkPolicyEgressRule: (import 'networkPolicyEgressRule.libsonnet'), - networkPolicyIngressRule: (import 'networkPolicyIngressRule.libsonnet'), - networkPolicyPeer: (import 'networkPolicyPeer.libsonnet'), - networkPolicyPort: (import 'networkPolicyPort.libsonnet'), - networkPolicySpec: (import 'networkPolicySpec.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1/networkPolicy.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1/networkPolicy.libsonnet deleted file mode 100644 index 4a5d8683b004..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1/networkPolicy.libsonnet +++ /dev/null @@ -1,119 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='networkPolicy', url='', help='NetworkPolicy describes what network traffic is allowed for a set of Pods'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Networkpolicy', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'networking.k8s.io/v1', - kind: 'NetworkPolicy' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='NetworkPolicySpec provides the specification of a NetworkPolicy'), - spec: { - '#podSelector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - podSelector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { spec+: { podSelector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { spec+: { podSelector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { spec+: { podSelector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { spec+: { podSelector+: { matchLabels+: matchLabels } } } - }, - '#withEgress':: d.fn(help='List of egress rules to be applied to the selected pods. Outgoing traffic is allowed if there are no NetworkPolicies selecting the pod (and cluster policy otherwise allows the traffic), OR if the traffic matches at least one egress rule across all of the NetworkPolicy objects whose podSelector matches the pod. If this field is empty then this NetworkPolicy limits all outgoing traffic (and serves solely to ensure that the pods it selects are isolated by default). This field is beta-level in 1.8', args=[d.arg(name='egress', type=d.T.array)]), - withEgress(egress): { spec+: { egress: if std.isArray(v=egress) then egress else [egress] } }, - '#withEgressMixin':: d.fn(help='List of egress rules to be applied to the selected pods. Outgoing traffic is allowed if there are no NetworkPolicies selecting the pod (and cluster policy otherwise allows the traffic), OR if the traffic matches at least one egress rule across all of the NetworkPolicy objects whose podSelector matches the pod. If this field is empty then this NetworkPolicy limits all outgoing traffic (and serves solely to ensure that the pods it selects are isolated by default). This field is beta-level in 1.8\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='egress', type=d.T.array)]), - withEgressMixin(egress): { spec+: { egress+: if std.isArray(v=egress) then egress else [egress] } }, - '#withIngress':: d.fn(help="List of ingress rules to be applied to the selected pods. Traffic is allowed to a pod if there are no NetworkPolicies selecting the pod (and cluster policy otherwise allows the traffic), OR if the traffic source is the pod's local node, OR if the traffic matches at least one ingress rule across all of the NetworkPolicy objects whose podSelector matches the pod. If this field is empty then this NetworkPolicy does not allow any traffic (and serves solely to ensure that the pods it selects are isolated by default)", args=[d.arg(name='ingress', type=d.T.array)]), - withIngress(ingress): { spec+: { ingress: if std.isArray(v=ingress) then ingress else [ingress] } }, - '#withIngressMixin':: d.fn(help="List of ingress rules to be applied to the selected pods. Traffic is allowed to a pod if there are no NetworkPolicies selecting the pod (and cluster policy otherwise allows the traffic), OR if the traffic source is the pod's local node, OR if the traffic matches at least one ingress rule across all of the NetworkPolicy objects whose podSelector matches the pod. If this field is empty then this NetworkPolicy does not allow any traffic (and serves solely to ensure that the pods it selects are isolated by default)\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='ingress', type=d.T.array)]), - withIngressMixin(ingress): { spec+: { ingress+: if std.isArray(v=ingress) then ingress else [ingress] } }, - '#withPolicyTypes':: d.fn(help='List of rule types that the NetworkPolicy relates to. Valid options are "Ingress", "Egress", or "Ingress,Egress". If this field is not specified, it will default based on the existence of Ingress or Egress rules; policies that contain an Egress section are assumed to affect Egress, and all policies (whether or not they contain an Ingress section) are assumed to affect Ingress. If you want to write an egress-only policy, you must explicitly specify policyTypes [ "Egress" ]. Likewise, if you want to write a policy that specifies that no egress is allowed, you must specify a policyTypes value that include "Egress" (since such a policy would not include an Egress section and would otherwise default to just [ "Ingress" ]). This field is beta-level in 1.8', args=[d.arg(name='policyTypes', type=d.T.array)]), - withPolicyTypes(policyTypes): { spec+: { policyTypes: if std.isArray(v=policyTypes) then policyTypes else [policyTypes] } }, - '#withPolicyTypesMixin':: d.fn(help='List of rule types that the NetworkPolicy relates to. Valid options are "Ingress", "Egress", or "Ingress,Egress". If this field is not specified, it will default based on the existence of Ingress or Egress rules; policies that contain an Egress section are assumed to affect Egress, and all policies (whether or not they contain an Ingress section) are assumed to affect Ingress. If you want to write an egress-only policy, you must explicitly specify policyTypes [ "Egress" ]. Likewise, if you want to write a policy that specifies that no egress is allowed, you must specify a policyTypes value that include "Egress" (since such a policy would not include an Egress section and would otherwise default to just [ "Ingress" ]). This field is beta-level in 1.8\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='policyTypes', type=d.T.array)]), - withPolicyTypesMixin(policyTypes): { spec+: { policyTypes+: if std.isArray(v=policyTypes) then policyTypes else [policyTypes] } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1/networkPolicyEgressRule.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1/networkPolicyEgressRule.libsonnet deleted file mode 100644 index e4c149e9087c..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1/networkPolicyEgressRule.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='networkPolicyEgressRule', url='', help="NetworkPolicyEgressRule describes a particular set of traffic that is allowed out of pods matched by a NetworkPolicySpec's podSelector. The traffic must match both ports and to. This type is beta-level in 1.8"), - '#withPorts':: d.fn(help='List of destination ports for outgoing traffic. Each item in this list is combined using a logical OR. If this field is empty or missing, this rule matches all ports (traffic not restricted by port). If this field is present and contains at least one item, then this rule allows traffic only if the traffic matches at least one port in the list.', args=[d.arg(name='ports', type=d.T.array)]), - withPorts(ports): { ports: if std.isArray(v=ports) then ports else [ports] }, - '#withPortsMixin':: d.fn(help='List of destination ports for outgoing traffic. Each item in this list is combined using a logical OR. If this field is empty or missing, this rule matches all ports (traffic not restricted by port). If this field is present and contains at least one item, then this rule allows traffic only if the traffic matches at least one port in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ports', type=d.T.array)]), - withPortsMixin(ports): { ports+: if std.isArray(v=ports) then ports else [ports] }, - '#withTo':: d.fn(help='List of destinations for outgoing traffic of pods selected for this rule. Items in this list are combined using a logical OR operation. If this field is empty or missing, this rule matches all destinations (traffic not restricted by destination). If this field is present and contains at least one item, this rule allows traffic only if the traffic matches at least one item in the to list.', args=[d.arg(name='to', type=d.T.array)]), - withTo(to): { to: if std.isArray(v=to) then to else [to] }, - '#withToMixin':: d.fn(help='List of destinations for outgoing traffic of pods selected for this rule. Items in this list are combined using a logical OR operation. If this field is empty or missing, this rule matches all destinations (traffic not restricted by destination). If this field is present and contains at least one item, this rule allows traffic only if the traffic matches at least one item in the to list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='to', type=d.T.array)]), - withToMixin(to): { to+: if std.isArray(v=to) then to else [to] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1/networkPolicyIngressRule.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1/networkPolicyIngressRule.libsonnet deleted file mode 100644 index d03435fec04a..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1/networkPolicyIngressRule.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='networkPolicyIngressRule', url='', help="NetworkPolicyIngressRule describes a particular set of traffic that is allowed to the pods matched by a NetworkPolicySpec's podSelector. The traffic must match both ports and from."), - '#withFrom':: d.fn(help='List of sources which should be able to access the pods selected for this rule. Items in this list are combined using a logical OR operation. If this field is empty or missing, this rule matches all sources (traffic not restricted by source). If this field is present and contains at least on item, this rule allows traffic only if the traffic matches at least one item in the from list.', args=[d.arg(name='from', type=d.T.array)]), - withFrom(from): { from: if std.isArray(v=from) then from else [from] }, - '#withFromMixin':: d.fn(help='List of sources which should be able to access the pods selected for this rule. Items in this list are combined using a logical OR operation. If this field is empty or missing, this rule matches all sources (traffic not restricted by source). If this field is present and contains at least on item, this rule allows traffic only if the traffic matches at least one item in the from list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='from', type=d.T.array)]), - withFromMixin(from): { from+: if std.isArray(v=from) then from else [from] }, - '#withPorts':: d.fn(help='List of ports which should be made accessible on the pods selected for this rule. Each item in this list is combined using a logical OR. If this field is empty or missing, this rule matches all ports (traffic not restricted by port). If this field is present and contains at least one item, then this rule allows traffic only if the traffic matches at least one port in the list.', args=[d.arg(name='ports', type=d.T.array)]), - withPorts(ports): { ports: if std.isArray(v=ports) then ports else [ports] }, - '#withPortsMixin':: d.fn(help='List of ports which should be made accessible on the pods selected for this rule. Each item in this list is combined using a logical OR. If this field is empty or missing, this rule matches all ports (traffic not restricted by port). If this field is present and contains at least one item, then this rule allows traffic only if the traffic matches at least one port in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ports', type=d.T.array)]), - withPortsMixin(ports): { ports+: if std.isArray(v=ports) then ports else [ports] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1/networkPolicyPeer.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1/networkPolicyPeer.libsonnet deleted file mode 100644 index b829530a29f6..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1/networkPolicyPeer.libsonnet +++ /dev/null @@ -1,37 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='networkPolicyPeer', url='', help='NetworkPolicyPeer describes a peer to allow traffic from. Only certain combinations of fields are allowed'), - '#ipBlock':: d.obj(help="IPBlock describes a particular CIDR (Ex. '192.168.1.1/24') that is allowed to the pods matched by a NetworkPolicySpec's podSelector. The except entry describes CIDRs that should not be included within this rule."), - ipBlock: { - '#withCidr':: d.fn(help='CIDR is a string representing the IP Block Valid examples are "192.168.1.1/24"', args=[d.arg(name='cidr', type=d.T.string)]), - withCidr(cidr): { ipBlock+: { cidr: cidr } }, - '#withExcept':: d.fn(help='Except is a slice of CIDRs that should not be included within an IP Block Valid examples are "192.168.1.1/24" Except values will be rejected if they are outside the CIDR range', args=[d.arg(name='except', type=d.T.array)]), - withExcept(except): { ipBlock+: { except: if std.isArray(v=except) then except else [except] } }, - '#withExceptMixin':: d.fn(help='Except is a slice of CIDRs that should not be included within an IP Block Valid examples are "192.168.1.1/24" Except values will be rejected if they are outside the CIDR range\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='except', type=d.T.array)]), - withExceptMixin(except): { ipBlock+: { except+: if std.isArray(v=except) then except else [except] } } - }, - '#namespaceSelector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - namespaceSelector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { namespaceSelector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { namespaceSelector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { namespaceSelector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { namespaceSelector+: { matchLabels+: matchLabels } } - }, - '#podSelector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - podSelector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { podSelector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { podSelector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { podSelector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { podSelector+: { matchLabels+: matchLabels } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1/networkPolicyPort.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1/networkPolicyPort.libsonnet deleted file mode 100644 index 78d3de2980bc..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1/networkPolicyPort.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='networkPolicyPort', url='', help='NetworkPolicyPort describes a port to allow traffic on'), - '#withPort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='port', type=d.T.string)]), - withPort(port): { port: port }, - '#withProtocol':: d.fn(help='The protocol (TCP, UDP, or SCTP) which traffic must match. If not specified, this field defaults to TCP.', args=[d.arg(name='protocol', type=d.T.string)]), - withProtocol(protocol): { protocol: protocol }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1/networkPolicySpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1/networkPolicySpec.libsonnet deleted file mode 100644 index 860f07e9d7d6..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1/networkPolicySpec.libsonnet +++ /dev/null @@ -1,29 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='networkPolicySpec', url='', help='NetworkPolicySpec provides the specification of a NetworkPolicy'), - '#podSelector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - podSelector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { podSelector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { podSelector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { podSelector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { podSelector+: { matchLabels+: matchLabels } } - }, - '#withEgress':: d.fn(help='List of egress rules to be applied to the selected pods. Outgoing traffic is allowed if there are no NetworkPolicies selecting the pod (and cluster policy otherwise allows the traffic), OR if the traffic matches at least one egress rule across all of the NetworkPolicy objects whose podSelector matches the pod. If this field is empty then this NetworkPolicy limits all outgoing traffic (and serves solely to ensure that the pods it selects are isolated by default). This field is beta-level in 1.8', args=[d.arg(name='egress', type=d.T.array)]), - withEgress(egress): { egress: if std.isArray(v=egress) then egress else [egress] }, - '#withEgressMixin':: d.fn(help='List of egress rules to be applied to the selected pods. Outgoing traffic is allowed if there are no NetworkPolicies selecting the pod (and cluster policy otherwise allows the traffic), OR if the traffic matches at least one egress rule across all of the NetworkPolicy objects whose podSelector matches the pod. If this field is empty then this NetworkPolicy limits all outgoing traffic (and serves solely to ensure that the pods it selects are isolated by default). This field is beta-level in 1.8\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='egress', type=d.T.array)]), - withEgressMixin(egress): { egress+: if std.isArray(v=egress) then egress else [egress] }, - '#withIngress':: d.fn(help="List of ingress rules to be applied to the selected pods. Traffic is allowed to a pod if there are no NetworkPolicies selecting the pod (and cluster policy otherwise allows the traffic), OR if the traffic source is the pod's local node, OR if the traffic matches at least one ingress rule across all of the NetworkPolicy objects whose podSelector matches the pod. If this field is empty then this NetworkPolicy does not allow any traffic (and serves solely to ensure that the pods it selects are isolated by default)", args=[d.arg(name='ingress', type=d.T.array)]), - withIngress(ingress): { ingress: if std.isArray(v=ingress) then ingress else [ingress] }, - '#withIngressMixin':: d.fn(help="List of ingress rules to be applied to the selected pods. Traffic is allowed to a pod if there are no NetworkPolicies selecting the pod (and cluster policy otherwise allows the traffic), OR if the traffic source is the pod's local node, OR if the traffic matches at least one ingress rule across all of the NetworkPolicy objects whose podSelector matches the pod. If this field is empty then this NetworkPolicy does not allow any traffic (and serves solely to ensure that the pods it selects are isolated by default)\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='ingress', type=d.T.array)]), - withIngressMixin(ingress): { ingress+: if std.isArray(v=ingress) then ingress else [ingress] }, - '#withPolicyTypes':: d.fn(help='List of rule types that the NetworkPolicy relates to. Valid options are "Ingress", "Egress", or "Ingress,Egress". If this field is not specified, it will default based on the existence of Ingress or Egress rules; policies that contain an Egress section are assumed to affect Egress, and all policies (whether or not they contain an Ingress section) are assumed to affect Ingress. If you want to write an egress-only policy, you must explicitly specify policyTypes [ "Egress" ]. Likewise, if you want to write a policy that specifies that no egress is allowed, you must specify a policyTypes value that include "Egress" (since such a policy would not include an Egress section and would otherwise default to just [ "Ingress" ]). This field is beta-level in 1.8', args=[d.arg(name='policyTypes', type=d.T.array)]), - withPolicyTypes(policyTypes): { policyTypes: if std.isArray(v=policyTypes) then policyTypes else [policyTypes] }, - '#withPolicyTypesMixin':: d.fn(help='List of rule types that the NetworkPolicy relates to. Valid options are "Ingress", "Egress", or "Ingress,Egress". If this field is not specified, it will default based on the existence of Ingress or Egress rules; policies that contain an Egress section are assumed to affect Egress, and all policies (whether or not they contain an Ingress section) are assumed to affect Ingress. If you want to write an egress-only policy, you must explicitly specify policyTypes [ "Egress" ]. Likewise, if you want to write a policy that specifies that no egress is allowed, you must specify a policyTypes value that include "Egress" (since such a policy would not include an Egress section and would otherwise default to just [ "Ingress" ]). This field is beta-level in 1.8\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='policyTypes', type=d.T.array)]), - withPolicyTypesMixin(policyTypes): { policyTypes+: if std.isArray(v=policyTypes) then policyTypes else [policyTypes] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1beta1/httpIngressPath.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1beta1/httpIngressPath.libsonnet deleted file mode 100644 index 27115ee89a45..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1beta1/httpIngressPath.libsonnet +++ /dev/null @@ -1,15 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='httpIngressPath', url='', help='HTTPIngressPath associates a path regex with a backend. Incoming urls matching the path are forwarded to the backend.'), - '#backend':: d.obj(help='IngressBackend describes all endpoints for a given service and port.'), - backend: { - '#withServiceName':: d.fn(help='Specifies the name of the referenced service.', args=[d.arg(name='serviceName', type=d.T.string)]), - withServiceName(serviceName): { backend+: { serviceName: serviceName } }, - '#withServicePort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='servicePort', type=d.T.string)]), - withServicePort(servicePort): { backend+: { servicePort: servicePort } } - }, - '#withPath':: d.fn(help="Path is an extended POSIX regex as defined by IEEE Std 1003.1, (i.e this follows the egrep/unix syntax, not the perl syntax) matched against the path of an incoming request. Currently it can contain characters disallowed from the conventional 'path' part of a URL as defined by RFC 3986. Paths must begin with a '/'. If unspecified, the path defaults to a catch all sending traffic to the backend.", args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { path: path }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1beta1/httpIngressRuleValue.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1beta1/httpIngressRuleValue.libsonnet deleted file mode 100644 index 5599236f31e6..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1beta1/httpIngressRuleValue.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='httpIngressRuleValue', url='', help="HTTPIngressRuleValue is a list of http selectors pointing to backends. In the example: http:///? -> backend where where parts of the url correspond to RFC 3986, this resource will be used to match against everything after the last '/' and before the first '?' or '#'."), - '#withPaths':: d.fn(help='A collection of paths that map requests to backends.', args=[d.arg(name='paths', type=d.T.array)]), - withPaths(paths): { paths: if std.isArray(v=paths) then paths else [paths] }, - '#withPathsMixin':: d.fn(help='A collection of paths that map requests to backends.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='paths', type=d.T.array)]), - withPathsMixin(paths): { paths+: if std.isArray(v=paths) then paths else [paths] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1beta1/ingress.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1beta1/ingress.libsonnet deleted file mode 100644 index 734b582af646..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1beta1/ingress.libsonnet +++ /dev/null @@ -1,111 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='ingress', url='', help='Ingress is a collection of rules that allow inbound connections to reach the endpoints defined by a backend. An Ingress can be configured to give services externally-reachable urls, load balance traffic, terminate SSL, offer name based virtual hosting etc.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Ingress', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'networking.k8s.io/v1beta1', - kind: 'Ingress' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='IngressSpec describes the Ingress the user wishes to exist.'), - spec: { - '#backend':: d.obj(help='IngressBackend describes all endpoints for a given service and port.'), - backend: { - '#withServiceName':: d.fn(help='Specifies the name of the referenced service.', args=[d.arg(name='serviceName', type=d.T.string)]), - withServiceName(serviceName): { spec+: { backend+: { serviceName: serviceName } } }, - '#withServicePort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='servicePort', type=d.T.string)]), - withServicePort(servicePort): { spec+: { backend+: { servicePort: servicePort } } } - }, - '#withRules':: d.fn(help='A list of host rules used to configure the Ingress. If unspecified, or no rule matches, all traffic is sent to the default backend.', args=[d.arg(name='rules', type=d.T.array)]), - withRules(rules): { spec+: { rules: if std.isArray(v=rules) then rules else [rules] } }, - '#withRulesMixin':: d.fn(help='A list of host rules used to configure the Ingress. If unspecified, or no rule matches, all traffic is sent to the default backend.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='rules', type=d.T.array)]), - withRulesMixin(rules): { spec+: { rules+: if std.isArray(v=rules) then rules else [rules] } }, - '#withTls':: d.fn(help='TLS configuration. Currently the Ingress only supports a single TLS port, 443. If multiple members of this list specify different hosts, they will be multiplexed on the same port according to the hostname specified through the SNI TLS extension, if the ingress controller fulfilling the ingress supports SNI.', args=[d.arg(name='tls', type=d.T.array)]), - withTls(tls): { spec+: { tls: if std.isArray(v=tls) then tls else [tls] } }, - '#withTlsMixin':: d.fn(help='TLS configuration. Currently the Ingress only supports a single TLS port, 443. If multiple members of this list specify different hosts, they will be multiplexed on the same port according to the hostname specified through the SNI TLS extension, if the ingress controller fulfilling the ingress supports SNI.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='tls', type=d.T.array)]), - withTlsMixin(tls): { spec+: { tls+: if std.isArray(v=tls) then tls else [tls] } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1beta1/ingressBackend.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1beta1/ingressBackend.libsonnet deleted file mode 100644 index 1984ab1c1e5f..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1beta1/ingressBackend.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='ingressBackend', url='', help='IngressBackend describes all endpoints for a given service and port.'), - '#withServiceName':: d.fn(help='Specifies the name of the referenced service.', args=[d.arg(name='serviceName', type=d.T.string)]), - withServiceName(serviceName): { serviceName: serviceName }, - '#withServicePort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='servicePort', type=d.T.string)]), - withServicePort(servicePort): { servicePort: servicePort }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1beta1/ingressRule.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1beta1/ingressRule.libsonnet deleted file mode 100644 index b44a9d72cc3a..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1beta1/ingressRule.libsonnet +++ /dev/null @@ -1,15 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='ingressRule', url='', help='IngressRule represents the rules mapping the paths under a specified host to the related backend services. Incoming requests are first evaluated for a host match, then routed to the backend associated with the matching IngressRuleValue.'), - '#http':: d.obj(help="HTTPIngressRuleValue is a list of http selectors pointing to backends. In the example: http:///? -> backend where where parts of the url correspond to RFC 3986, this resource will be used to match against everything after the last '/' and before the first '?' or '#'."), - http: { - '#withPaths':: d.fn(help='A collection of paths that map requests to backends.', args=[d.arg(name='paths', type=d.T.array)]), - withPaths(paths): { http+: { paths: if std.isArray(v=paths) then paths else [paths] } }, - '#withPathsMixin':: d.fn(help='A collection of paths that map requests to backends.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='paths', type=d.T.array)]), - withPathsMixin(paths): { http+: { paths+: if std.isArray(v=paths) then paths else [paths] } } - }, - '#withHost':: d.fn(help='Host is the fully qualified domain name of a network host, as defined by RFC 3986. Note the following deviations from the "host" part of the URI as defined in the RFC: 1. IPs are not allowed. Currently an IngressRuleValue can only apply to the\n IP in the Spec of the parent Ingress.\n2. The `:` delimiter is not respected because ports are not allowed.\n Currently the port of an Ingress is implicitly :80 for http and\n :443 for https.\nBoth these may change in the future. Incoming requests are matched against the host before the IngressRuleValue. If the host is unspecified, the Ingress routes all traffic based on the specified IngressRuleValue.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { host: host }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1beta1/ingressSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1beta1/ingressSpec.libsonnet deleted file mode 100644 index 3c7084e48c80..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1beta1/ingressSpec.libsonnet +++ /dev/null @@ -1,21 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='ingressSpec', url='', help='IngressSpec describes the Ingress the user wishes to exist.'), - '#backend':: d.obj(help='IngressBackend describes all endpoints for a given service and port.'), - backend: { - '#withServiceName':: d.fn(help='Specifies the name of the referenced service.', args=[d.arg(name='serviceName', type=d.T.string)]), - withServiceName(serviceName): { backend+: { serviceName: serviceName } }, - '#withServicePort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='servicePort', type=d.T.string)]), - withServicePort(servicePort): { backend+: { servicePort: servicePort } } - }, - '#withRules':: d.fn(help='A list of host rules used to configure the Ingress. If unspecified, or no rule matches, all traffic is sent to the default backend.', args=[d.arg(name='rules', type=d.T.array)]), - withRules(rules): { rules: if std.isArray(v=rules) then rules else [rules] }, - '#withRulesMixin':: d.fn(help='A list of host rules used to configure the Ingress. If unspecified, or no rule matches, all traffic is sent to the default backend.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='rules', type=d.T.array)]), - withRulesMixin(rules): { rules+: if std.isArray(v=rules) then rules else [rules] }, - '#withTls':: d.fn(help='TLS configuration. Currently the Ingress only supports a single TLS port, 443. If multiple members of this list specify different hosts, they will be multiplexed on the same port according to the hostname specified through the SNI TLS extension, if the ingress controller fulfilling the ingress supports SNI.', args=[d.arg(name='tls', type=d.T.array)]), - withTls(tls): { tls: if std.isArray(v=tls) then tls else [tls] }, - '#withTlsMixin':: d.fn(help='TLS configuration. Currently the Ingress only supports a single TLS port, 443. If multiple members of this list specify different hosts, they will be multiplexed on the same port according to the hostname specified through the SNI TLS extension, if the ingress controller fulfilling the ingress supports SNI.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='tls', type=d.T.array)]), - withTlsMixin(tls): { tls+: if std.isArray(v=tls) then tls else [tls] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1beta1/ingressStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1beta1/ingressStatus.libsonnet deleted file mode 100644 index 9ac4394af31a..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1beta1/ingressStatus.libsonnet +++ /dev/null @@ -1,13 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='ingressStatus', url='', help='IngressStatus describe the current state of the Ingress.'), - '#loadBalancer':: d.obj(help='LoadBalancerStatus represents the status of a load-balancer.'), - loadBalancer: { - '#withIngress':: d.fn(help='Ingress is a list containing ingress points for the load-balancer. Traffic intended for the service should be sent to these ingress points.', args=[d.arg(name='ingress', type=d.T.array)]), - withIngress(ingress): { loadBalancer+: { ingress: if std.isArray(v=ingress) then ingress else [ingress] } }, - '#withIngressMixin':: d.fn(help='Ingress is a list containing ingress points for the load-balancer. Traffic intended for the service should be sent to these ingress points.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ingress', type=d.T.array)]), - withIngressMixin(ingress): { loadBalancer+: { ingress+: if std.isArray(v=ingress) then ingress else [ingress] } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1beta1/ingressTLS.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1beta1/ingressTLS.libsonnet deleted file mode 100644 index b277e4d33232..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1beta1/ingressTLS.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='ingressTLS', url='', help='IngressTLS describes the transport layer security associated with an Ingress.'), - '#withHosts':: d.fn(help='Hosts are a list of hosts included in the TLS certificate. The values in this list must match the name/s used in the tlsSecret. Defaults to the wildcard host setting for the loadbalancer controller fulfilling this Ingress, if left unspecified.', args=[d.arg(name='hosts', type=d.T.array)]), - withHosts(hosts): { hosts: if std.isArray(v=hosts) then hosts else [hosts] }, - '#withHostsMixin':: d.fn(help='Hosts are a list of hosts included in the TLS certificate. The values in this list must match the name/s used in the tlsSecret. Defaults to the wildcard host setting for the loadbalancer controller fulfilling this Ingress, if left unspecified.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='hosts', type=d.T.array)]), - withHostsMixin(hosts): { hosts+: if std.isArray(v=hosts) then hosts else [hosts] }, - '#withSecretName':: d.fn(help='SecretName is the name of the secret used to terminate SSL traffic on 443. Field is left optional to allow SSL routing based on SNI hostname alone. If the SNI host in a listener conflicts with the "Host" header field used by an IngressRule, the SNI host is used for termination and value of the Host header is used for routing.', args=[d.arg(name='secretName', type=d.T.string)]), - withSecretName(secretName): { secretName: secretName }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1beta1/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1beta1/main.libsonnet deleted file mode 100644 index 1ae2b59f63f2..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/networking/v1beta1/main.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1beta1', url='', help=''), - httpIngressPath: (import 'httpIngressPath.libsonnet'), - httpIngressRuleValue: (import 'httpIngressRuleValue.libsonnet'), - ingress: (import 'ingress.libsonnet'), - ingressBackend: (import 'ingressBackend.libsonnet'), - ingressRule: (import 'ingressRule.libsonnet'), - ingressSpec: (import 'ingressSpec.libsonnet'), - ingressStatus: (import 'ingressStatus.libsonnet'), - ingressTLS: (import 'ingressTLS.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/node/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/node/main.libsonnet deleted file mode 100644 index 716d4bfc0da7..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/node/main.libsonnet +++ /dev/null @@ -1,6 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='node', url='', help=''), - v1alpha1: (import 'v1alpha1/main.libsonnet'), - v1beta1: (import 'v1beta1/main.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/node/v1alpha1/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/node/v1alpha1/main.libsonnet deleted file mode 100644 index 3bde77318fd8..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/node/v1alpha1/main.libsonnet +++ /dev/null @@ -1,6 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1alpha1', url='', help=''), - runtimeClass: (import 'runtimeClass.libsonnet'), - runtimeClassSpec: (import 'runtimeClassSpec.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/node/v1alpha1/runtimeClass.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/node/v1alpha1/runtimeClass.libsonnet deleted file mode 100644 index 81b116dc385d..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/node/v1alpha1/runtimeClass.libsonnet +++ /dev/null @@ -1,98 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='runtimeClass', url='', help='RuntimeClass defines a class of container runtime supported in the cluster. The RuntimeClass is used to determine which container runtime is used to run all containers in a pod. RuntimeClasses are (currently) manually defined by a user or cluster provisioner, and referenced in the PodSpec. The Kubelet is responsible for resolving the RuntimeClassName reference before running the pod. For more details, see https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Runtimeclass', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'node.k8s.io/v1alpha1', - kind: 'RuntimeClass' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='RuntimeClassSpec is a specification of a RuntimeClass. It contains parameters that are required to describe the RuntimeClass to the Container Runtime Interface (CRI) implementation, as well as any other components that need to understand how the pod will be run. The RuntimeClassSpec is immutable.'), - spec: { - '#withRuntimeHandler':: d.fn(help='RuntimeHandler specifies the underlying runtime and configuration that the CRI implementation will use to handle pods of this class. The possible values are specific to the node & CRI configuration. It is assumed that all handlers are available on every node, and handlers of the same name are equivalent on every node. For example, a handler called "runc" might specify that the runc OCI runtime (using native Linux containers) will be used to run the containers in a pod. The RuntimeHandler must conform to the DNS Label (RFC 1123) requirements and is immutable.', args=[d.arg(name='runtimeHandler', type=d.T.string)]), - withRuntimeHandler(runtimeHandler): { spec+: { runtimeHandler: runtimeHandler } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/node/v1alpha1/runtimeClassSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/node/v1alpha1/runtimeClassSpec.libsonnet deleted file mode 100644 index 46354fe08422..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/node/v1alpha1/runtimeClassSpec.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='runtimeClassSpec', url='', help='RuntimeClassSpec is a specification of a RuntimeClass. It contains parameters that are required to describe the RuntimeClass to the Container Runtime Interface (CRI) implementation, as well as any other components that need to understand how the pod will be run. The RuntimeClassSpec is immutable.'), - '#withRuntimeHandler':: d.fn(help='RuntimeHandler specifies the underlying runtime and configuration that the CRI implementation will use to handle pods of this class. The possible values are specific to the node & CRI configuration. It is assumed that all handlers are available on every node, and handlers of the same name are equivalent on every node. For example, a handler called "runc" might specify that the runc OCI runtime (using native Linux containers) will be used to run the containers in a pod. The RuntimeHandler must conform to the DNS Label (RFC 1123) requirements and is immutable.', args=[d.arg(name='runtimeHandler', type=d.T.string)]), - withRuntimeHandler(runtimeHandler): { runtimeHandler: runtimeHandler }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/node/v1beta1/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/node/v1beta1/main.libsonnet deleted file mode 100644 index 0e4f49c96272..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/node/v1beta1/main.libsonnet +++ /dev/null @@ -1,5 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1beta1', url='', help=''), - runtimeClass: (import 'runtimeClass.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/node/v1beta1/runtimeClass.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/node/v1beta1/runtimeClass.libsonnet deleted file mode 100644 index 626b99a6e479..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/node/v1beta1/runtimeClass.libsonnet +++ /dev/null @@ -1,95 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='runtimeClass', url='', help='RuntimeClass defines a class of container runtime supported in the cluster. The RuntimeClass is used to determine which container runtime is used to run all containers in a pod. RuntimeClasses are (currently) manually defined by a user or cluster provisioner, and referenced in the PodSpec. The Kubelet is responsible for resolving the RuntimeClassName reference before running the pod. For more details, see https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Runtimeclass', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'node.k8s.io/v1beta1', - kind: 'RuntimeClass' - } + self.metadata.withName(name=name), - '#withHandler':: d.fn(help='Handler specifies the underlying runtime and configuration that the CRI implementation will use to handle pods of this class. The possible values are specific to the node & CRI configuration. It is assumed that all handlers are available on every node, and handlers of the same name are equivalent on every node. For example, a handler called "runc" might specify that the runc OCI runtime (using native Linux containers) will be used to run the containers in a pod. The Handler must conform to the DNS Label (RFC 1123) requirements, and is immutable.', args=[d.arg(name='handler', type=d.T.string)]), - withHandler(handler): { handler: handler }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/main.libsonnet deleted file mode 100644 index 4c366406f3ee..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/main.libsonnet +++ /dev/null @@ -1,5 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='policy', url='', help=''), - v1beta1: (import 'v1beta1/main.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/allowedCSIDriver.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/allowedCSIDriver.libsonnet deleted file mode 100644 index 8560c3b73432..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/allowedCSIDriver.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='allowedCSIDriver', url='', help='AllowedCSIDriver represents a single inline CSI Driver that is allowed to be used.'), - '#withName':: d.fn(help='Name is the registered name of the CSI driver', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/allowedFlexVolume.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/allowedFlexVolume.libsonnet deleted file mode 100644 index 11fafa710fef..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/allowedFlexVolume.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='allowedFlexVolume', url='', help='AllowedFlexVolume represents a single Flexvolume that is allowed to be used.'), - '#withDriver':: d.fn(help='driver is the name of the Flexvolume driver.', args=[d.arg(name='driver', type=d.T.string)]), - withDriver(driver): { driver: driver }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/allowedHostPath.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/allowedHostPath.libsonnet deleted file mode 100644 index a02e4e078e14..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/allowedHostPath.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='allowedHostPath', url='', help='AllowedHostPath defines the host volume conditions that will be enabled by a policy for pods to use. It requires the path prefix to be defined.'), - '#withPathPrefix':: d.fn(help='pathPrefix is the path prefix that the host volume must match. It does not support `*`. Trailing slashes are trimmed when validating the path prefix with a host path.\n\nExamples: `/foo` would allow `/foo`, `/foo/` and `/foo/bar` `/foo` would not allow `/food` or `/etc/foo`', args=[d.arg(name='pathPrefix', type=d.T.string)]), - withPathPrefix(pathPrefix): { pathPrefix: pathPrefix }, - '#withReadOnly':: d.fn(help='when set to true, will allow host volumes matching the pathPrefix only if all volume mounts are readOnly.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/eviction.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/eviction.libsonnet deleted file mode 100644 index 1c50a1bb0aa3..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/eviction.libsonnet +++ /dev/null @@ -1,115 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='eviction', url='', help='Eviction evicts a pod from its node subject to certain policies and safety constraints. This is a subresource of Pod. A request to cause such an eviction is created by POSTing to .../pods//evictions.'), - '#deleteOptions':: d.obj(help='DeleteOptions may be provided when deleting an API object.'), - deleteOptions: { - '#preconditions':: d.obj(help='Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out.'), - preconditions: { - '#withResourceVersion':: d.fn(help='Specifies the target ResourceVersion', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { deleteOptions+: { preconditions+: { resourceVersion: resourceVersion } } }, - '#withUid':: d.fn(help='Specifies the target UID.', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { deleteOptions+: { preconditions+: { uid: uid } } } - }, - '#withDryRun':: d.fn(help='When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed', args=[d.arg(name='dryRun', type=d.T.array)]), - withDryRun(dryRun): { deleteOptions+: { dryRun: if std.isArray(v=dryRun) then dryRun else [dryRun] } }, - '#withDryRunMixin':: d.fn(help='When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='dryRun', type=d.T.array)]), - withDryRunMixin(dryRun): { deleteOptions+: { dryRun+: if std.isArray(v=dryRun) then dryRun else [dryRun] } }, - '#withGracePeriodSeconds':: d.fn(help='The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.', args=[d.arg(name='gracePeriodSeconds', type=d.T.integer)]), - withGracePeriodSeconds(gracePeriodSeconds): { deleteOptions+: { gracePeriodSeconds: gracePeriodSeconds } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { deleteOptions+: { kind: kind } }, - '#withOrphanDependents':: d.fn(help="Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the 'orphan' finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", args=[d.arg(name='orphanDependents', type=d.T.boolean)]), - withOrphanDependents(orphanDependents): { deleteOptions+: { orphanDependents: orphanDependents } }, - '#withPropagationPolicy':: d.fn(help="Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground.", args=[d.arg(name='propagationPolicy', type=d.T.string)]), - withPropagationPolicy(propagationPolicy): { deleteOptions+: { propagationPolicy: propagationPolicy } } - }, - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Eviction', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'policy/v1beta1', - kind: 'Eviction' - } + self.metadata.withName(name=name), - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/fsGroupStrategyOptions.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/fsGroupStrategyOptions.libsonnet deleted file mode 100644 index 4e7390d4553d..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/fsGroupStrategyOptions.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='fsGroupStrategyOptions', url='', help='FSGroupStrategyOptions defines the strategy type and options used to create the strategy.'), - '#withRanges':: d.fn(help='ranges are the allowed ranges of fs groups. If you would like to force a single fs group then supply a single range with the same start and end. Required for MustRunAs.', args=[d.arg(name='ranges', type=d.T.array)]), - withRanges(ranges): { ranges: if std.isArray(v=ranges) then ranges else [ranges] }, - '#withRangesMixin':: d.fn(help='ranges are the allowed ranges of fs groups. If you would like to force a single fs group then supply a single range with the same start and end. Required for MustRunAs.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ranges', type=d.T.array)]), - withRangesMixin(ranges): { ranges+: if std.isArray(v=ranges) then ranges else [ranges] }, - '#withRule':: d.fn(help='rule is the strategy that will dictate what FSGroup is used in the SecurityContext.', args=[d.arg(name='rule', type=d.T.string)]), - withRule(rule): { rule: rule }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/hostPortRange.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/hostPortRange.libsonnet deleted file mode 100644 index fb91cf6c1d61..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/hostPortRange.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='hostPortRange', url='', help='HostPortRange defines a range of host ports that will be enabled by a policy for pods to use. It requires both the start and end to be defined.'), - '#withMax':: d.fn(help='max is the end of the range, inclusive.', args=[d.arg(name='max', type=d.T.integer)]), - withMax(max): { max: max }, - '#withMin':: d.fn(help='min is the start of the range, inclusive.', args=[d.arg(name='min', type=d.T.integer)]), - withMin(min): { min: min }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/idRange.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/idRange.libsonnet deleted file mode 100644 index bbf332e772d3..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/idRange.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='idRange', url='', help='IDRange provides a min/max of an allowed range of IDs.'), - '#withMax':: d.fn(help='max is the end of the range, inclusive.', args=[d.arg(name='max', type=d.T.integer)]), - withMax(max): { max: max }, - '#withMin':: d.fn(help='min is the start of the range, inclusive.', args=[d.arg(name='min', type=d.T.integer)]), - withMin(min): { min: min }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/main.libsonnet deleted file mode 100644 index c999dd3250fb..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/main.libsonnet +++ /dev/null @@ -1,20 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1beta1', url='', help=''), - allowedCSIDriver: (import 'allowedCSIDriver.libsonnet'), - allowedFlexVolume: (import 'allowedFlexVolume.libsonnet'), - allowedHostPath: (import 'allowedHostPath.libsonnet'), - eviction: (import 'eviction.libsonnet'), - fsGroupStrategyOptions: (import 'fsGroupStrategyOptions.libsonnet'), - hostPortRange: (import 'hostPortRange.libsonnet'), - idRange: (import 'idRange.libsonnet'), - podDisruptionBudget: (import 'podDisruptionBudget.libsonnet'), - podDisruptionBudgetSpec: (import 'podDisruptionBudgetSpec.libsonnet'), - podDisruptionBudgetStatus: (import 'podDisruptionBudgetStatus.libsonnet'), - podSecurityPolicy: (import 'podSecurityPolicy.libsonnet'), - podSecurityPolicySpec: (import 'podSecurityPolicySpec.libsonnet'), - runAsGroupStrategyOptions: (import 'runAsGroupStrategyOptions.libsonnet'), - runAsUserStrategyOptions: (import 'runAsUserStrategyOptions.libsonnet'), - seLinuxStrategyOptions: (import 'seLinuxStrategyOptions.libsonnet'), - supplementalGroupsStrategyOptions: (import 'supplementalGroupsStrategyOptions.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/podDisruptionBudget.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/podDisruptionBudget.libsonnet deleted file mode 100644 index 275b8e9221b2..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/podDisruptionBudget.libsonnet +++ /dev/null @@ -1,111 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='podDisruptionBudget', url='', help='PodDisruptionBudget is an object to define the max disruption that can be caused to a collection of pods'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Poddisruptionbudget', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'policy/v1beta1', - kind: 'PodDisruptionBudget' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='PodDisruptionBudgetSpec is a description of a PodDisruptionBudget.'), - spec: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { spec+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { spec+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { spec+: { selector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { spec+: { selector+: { matchLabels+: matchLabels } } } - }, - '#withMaxUnavailable':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxUnavailable', type=d.T.string)]), - withMaxUnavailable(maxUnavailable): { spec+: { maxUnavailable: maxUnavailable } }, - '#withMinAvailable':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='minAvailable', type=d.T.string)]), - withMinAvailable(minAvailable): { spec+: { minAvailable: minAvailable } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/podDisruptionBudgetSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/podDisruptionBudgetSpec.libsonnet deleted file mode 100644 index 702ad91c94f5..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/podDisruptionBudgetSpec.libsonnet +++ /dev/null @@ -1,21 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='podDisruptionBudgetSpec', url='', help='PodDisruptionBudgetSpec is a description of a PodDisruptionBudget.'), - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { selector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { selector+: { matchLabels+: matchLabels } } - }, - '#withMaxUnavailable':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxUnavailable', type=d.T.string)]), - withMaxUnavailable(maxUnavailable): { maxUnavailable: maxUnavailable }, - '#withMinAvailable':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='minAvailable', type=d.T.string)]), - withMinAvailable(minAvailable): { minAvailable: minAvailable }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/podDisruptionBudgetStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/podDisruptionBudgetStatus.libsonnet deleted file mode 100644 index ee8af0d7914c..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/podDisruptionBudgetStatus.libsonnet +++ /dev/null @@ -1,20 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='podDisruptionBudgetStatus', url='', help='PodDisruptionBudgetStatus represents information about the status of a PodDisruptionBudget. Status may trail the actual state of a system.'), - '#withCurrentHealthy':: d.fn(help='current number of healthy pods', args=[d.arg(name='currentHealthy', type=d.T.integer)]), - withCurrentHealthy(currentHealthy): { currentHealthy: currentHealthy }, - '#withDesiredHealthy':: d.fn(help='minimum desired number of healthy pods', args=[d.arg(name='desiredHealthy', type=d.T.integer)]), - withDesiredHealthy(desiredHealthy): { desiredHealthy: desiredHealthy }, - '#withDisruptedPods':: d.fn(help="DisruptedPods contains information about pods whose eviction was processed by the API server eviction subresource handler but has not yet been observed by the PodDisruptionBudget controller. A pod will be in this map from the time when the API server processed the eviction request to the time when the pod is seen by PDB controller as having been marked for deletion (or after a timeout). The key in the map is the name of the pod and the value is the time when the API server processed the eviction request. If the deletion didn't occur and a pod is still there it will be removed from the list automatically by PodDisruptionBudget controller after some time. If everything goes smooth this map should be empty for the most of the time. Large number of entries in the map may indicate problems with pod deletions.", args=[d.arg(name='disruptedPods', type=d.T.object)]), - withDisruptedPods(disruptedPods): { disruptedPods: disruptedPods }, - '#withDisruptedPodsMixin':: d.fn(help="DisruptedPods contains information about pods whose eviction was processed by the API server eviction subresource handler but has not yet been observed by the PodDisruptionBudget controller. A pod will be in this map from the time when the API server processed the eviction request to the time when the pod is seen by PDB controller as having been marked for deletion (or after a timeout). The key in the map is the name of the pod and the value is the time when the API server processed the eviction request. If the deletion didn't occur and a pod is still there it will be removed from the list automatically by PodDisruptionBudget controller after some time. If everything goes smooth this map should be empty for the most of the time. Large number of entries in the map may indicate problems with pod deletions.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='disruptedPods', type=d.T.object)]), - withDisruptedPodsMixin(disruptedPods): { disruptedPods+: disruptedPods }, - '#withDisruptionsAllowed':: d.fn(help='Number of pod disruptions that are currently allowed.', args=[d.arg(name='disruptionsAllowed', type=d.T.integer)]), - withDisruptionsAllowed(disruptionsAllowed): { disruptionsAllowed: disruptionsAllowed }, - '#withExpectedPods':: d.fn(help='total number of pods counted by this disruption budget', args=[d.arg(name='expectedPods', type=d.T.integer)]), - withExpectedPods(expectedPods): { expectedPods: expectedPods }, - '#withObservedGeneration':: d.fn(help="Most recent generation observed when updating this PDB status. PodDisruptionsAllowed and other status informatio is valid only if observedGeneration equals to PDB's object generation.", args=[d.arg(name='observedGeneration', type=d.T.integer)]), - withObservedGeneration(observedGeneration): { observedGeneration: observedGeneration }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/podSecurityPolicy.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/podSecurityPolicy.libsonnet deleted file mode 100644 index 6d673c5f1f82..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/podSecurityPolicy.libsonnet +++ /dev/null @@ -1,206 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='podSecurityPolicy', url='', help='PodSecurityPolicy governs the ability to make requests that affect the Security Context that will be applied to a pod and container.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Podsecuritypolicy', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'policy/v1beta1', - kind: 'PodSecurityPolicy' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='PodSecurityPolicySpec defines the policy enforced.'), - spec: { - '#fsGroup':: d.obj(help='FSGroupStrategyOptions defines the strategy type and options used to create the strategy.'), - fsGroup: { - '#withRanges':: d.fn(help='ranges are the allowed ranges of fs groups. If you would like to force a single fs group then supply a single range with the same start and end. Required for MustRunAs.', args=[d.arg(name='ranges', type=d.T.array)]), - withRanges(ranges): { spec+: { fsGroup+: { ranges: if std.isArray(v=ranges) then ranges else [ranges] } } }, - '#withRangesMixin':: d.fn(help='ranges are the allowed ranges of fs groups. If you would like to force a single fs group then supply a single range with the same start and end. Required for MustRunAs.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ranges', type=d.T.array)]), - withRangesMixin(ranges): { spec+: { fsGroup+: { ranges+: if std.isArray(v=ranges) then ranges else [ranges] } } }, - '#withRule':: d.fn(help='rule is the strategy that will dictate what FSGroup is used in the SecurityContext.', args=[d.arg(name='rule', type=d.T.string)]), - withRule(rule): { spec+: { fsGroup+: { rule: rule } } } - }, - '#runAsGroup':: d.obj(help='RunAsGroupStrategyOptions defines the strategy type and any options used to create the strategy.'), - runAsGroup: { - '#withRanges':: d.fn(help='ranges are the allowed ranges of gids that may be used. If you would like to force a single gid then supply a single range with the same start and end. Required for MustRunAs.', args=[d.arg(name='ranges', type=d.T.array)]), - withRanges(ranges): { spec+: { runAsGroup+: { ranges: if std.isArray(v=ranges) then ranges else [ranges] } } }, - '#withRangesMixin':: d.fn(help='ranges are the allowed ranges of gids that may be used. If you would like to force a single gid then supply a single range with the same start and end. Required for MustRunAs.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ranges', type=d.T.array)]), - withRangesMixin(ranges): { spec+: { runAsGroup+: { ranges+: if std.isArray(v=ranges) then ranges else [ranges] } } }, - '#withRule':: d.fn(help='rule is the strategy that will dictate the allowable RunAsGroup values that may be set.', args=[d.arg(name='rule', type=d.T.string)]), - withRule(rule): { spec+: { runAsGroup+: { rule: rule } } } - }, - '#runAsUser':: d.obj(help='RunAsUserStrategyOptions defines the strategy type and any options used to create the strategy.'), - runAsUser: { - '#withRanges':: d.fn(help='ranges are the allowed ranges of uids that may be used. If you would like to force a single uid then supply a single range with the same start and end. Required for MustRunAs.', args=[d.arg(name='ranges', type=d.T.array)]), - withRanges(ranges): { spec+: { runAsUser+: { ranges: if std.isArray(v=ranges) then ranges else [ranges] } } }, - '#withRangesMixin':: d.fn(help='ranges are the allowed ranges of uids that may be used. If you would like to force a single uid then supply a single range with the same start and end. Required for MustRunAs.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ranges', type=d.T.array)]), - withRangesMixin(ranges): { spec+: { runAsUser+: { ranges+: if std.isArray(v=ranges) then ranges else [ranges] } } }, - '#withRule':: d.fn(help='rule is the strategy that will dictate the allowable RunAsUser values that may be set.', args=[d.arg(name='rule', type=d.T.string)]), - withRule(rule): { spec+: { runAsUser+: { rule: rule } } } - }, - '#seLinux':: d.obj(help='SELinuxStrategyOptions defines the strategy type and any options used to create the strategy.'), - seLinux: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { spec+: { seLinux+: { seLinuxOptions+: { level: level } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { spec+: { seLinux+: { seLinuxOptions+: { role: role } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { seLinux+: { seLinuxOptions+: { type: type } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { seLinux+: { seLinuxOptions+: { user: user } } } } - }, - '#withRule':: d.fn(help='rule is the strategy that will dictate the allowable labels that may be set.', args=[d.arg(name='rule', type=d.T.string)]), - withRule(rule): { spec+: { seLinux+: { rule: rule } } } - }, - '#supplementalGroups':: d.obj(help='SupplementalGroupsStrategyOptions defines the strategy type and options used to create the strategy.'), - supplementalGroups: { - '#withRanges':: d.fn(help='ranges are the allowed ranges of supplemental groups. If you would like to force a single supplemental group then supply a single range with the same start and end. Required for MustRunAs.', args=[d.arg(name='ranges', type=d.T.array)]), - withRanges(ranges): { spec+: { supplementalGroups+: { ranges: if std.isArray(v=ranges) then ranges else [ranges] } } }, - '#withRangesMixin':: d.fn(help='ranges are the allowed ranges of supplemental groups. If you would like to force a single supplemental group then supply a single range with the same start and end. Required for MustRunAs.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ranges', type=d.T.array)]), - withRangesMixin(ranges): { spec+: { supplementalGroups+: { ranges+: if std.isArray(v=ranges) then ranges else [ranges] } } }, - '#withRule':: d.fn(help='rule is the strategy that will dictate what supplemental groups is used in the SecurityContext.', args=[d.arg(name='rule', type=d.T.string)]), - withRule(rule): { spec+: { supplementalGroups+: { rule: rule } } } - }, - '#withAllowPrivilegeEscalation':: d.fn(help='allowPrivilegeEscalation determines if a pod can request to allow privilege escalation. If unspecified, defaults to true.', args=[d.arg(name='allowPrivilegeEscalation', type=d.T.boolean)]), - withAllowPrivilegeEscalation(allowPrivilegeEscalation): { spec+: { allowPrivilegeEscalation: allowPrivilegeEscalation } }, - '#withAllowedCSIDrivers':: d.fn(help='AllowedCSIDrivers is a whitelist of inline CSI drivers that must be explicitly set to be embedded within a pod spec. An empty value means no CSI drivers can run inline within a pod spec.', args=[d.arg(name='allowedCSIDrivers', type=d.T.array)]), - withAllowedCSIDrivers(allowedCSIDrivers): { spec+: { allowedCSIDrivers: if std.isArray(v=allowedCSIDrivers) then allowedCSIDrivers else [allowedCSIDrivers] } }, - '#withAllowedCSIDriversMixin':: d.fn(help='AllowedCSIDrivers is a whitelist of inline CSI drivers that must be explicitly set to be embedded within a pod spec. An empty value means no CSI drivers can run inline within a pod spec.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='allowedCSIDrivers', type=d.T.array)]), - withAllowedCSIDriversMixin(allowedCSIDrivers): { spec+: { allowedCSIDrivers+: if std.isArray(v=allowedCSIDrivers) then allowedCSIDrivers else [allowedCSIDrivers] } }, - '#withAllowedCapabilities':: d.fn(help="allowedCapabilities is a list of capabilities that can be requested to add to the container. Capabilities in this field may be added at the pod author's discretion. You must not list a capability in both allowedCapabilities and requiredDropCapabilities.", args=[d.arg(name='allowedCapabilities', type=d.T.array)]), - withAllowedCapabilities(allowedCapabilities): { spec+: { allowedCapabilities: if std.isArray(v=allowedCapabilities) then allowedCapabilities else [allowedCapabilities] } }, - '#withAllowedCapabilitiesMixin':: d.fn(help="allowedCapabilities is a list of capabilities that can be requested to add to the container. Capabilities in this field may be added at the pod author's discretion. You must not list a capability in both allowedCapabilities and requiredDropCapabilities.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='allowedCapabilities', type=d.T.array)]), - withAllowedCapabilitiesMixin(allowedCapabilities): { spec+: { allowedCapabilities+: if std.isArray(v=allowedCapabilities) then allowedCapabilities else [allowedCapabilities] } }, - '#withAllowedFlexVolumes':: d.fn(help='allowedFlexVolumes is a whitelist of allowed Flexvolumes. Empty or nil indicates that all Flexvolumes may be used. This parameter is effective only when the usage of the Flexvolumes is allowed in the "volumes" field.', args=[d.arg(name='allowedFlexVolumes', type=d.T.array)]), - withAllowedFlexVolumes(allowedFlexVolumes): { spec+: { allowedFlexVolumes: if std.isArray(v=allowedFlexVolumes) then allowedFlexVolumes else [allowedFlexVolumes] } }, - '#withAllowedFlexVolumesMixin':: d.fn(help='allowedFlexVolumes is a whitelist of allowed Flexvolumes. Empty or nil indicates that all Flexvolumes may be used. This parameter is effective only when the usage of the Flexvolumes is allowed in the "volumes" field.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='allowedFlexVolumes', type=d.T.array)]), - withAllowedFlexVolumesMixin(allowedFlexVolumes): { spec+: { allowedFlexVolumes+: if std.isArray(v=allowedFlexVolumes) then allowedFlexVolumes else [allowedFlexVolumes] } }, - '#withAllowedHostPaths':: d.fn(help='allowedHostPaths is a white list of allowed host paths. Empty indicates that all host paths may be used.', args=[d.arg(name='allowedHostPaths', type=d.T.array)]), - withAllowedHostPaths(allowedHostPaths): { spec+: { allowedHostPaths: if std.isArray(v=allowedHostPaths) then allowedHostPaths else [allowedHostPaths] } }, - '#withAllowedHostPathsMixin':: d.fn(help='allowedHostPaths is a white list of allowed host paths. Empty indicates that all host paths may be used.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='allowedHostPaths', type=d.T.array)]), - withAllowedHostPathsMixin(allowedHostPaths): { spec+: { allowedHostPaths+: if std.isArray(v=allowedHostPaths) then allowedHostPaths else [allowedHostPaths] } }, - '#withAllowedProcMountTypes':: d.fn(help='AllowedProcMountTypes is a whitelist of allowed ProcMountTypes. Empty or nil indicates that only the DefaultProcMountType may be used. This requires the ProcMountType feature flag to be enabled.', args=[d.arg(name='allowedProcMountTypes', type=d.T.array)]), - withAllowedProcMountTypes(allowedProcMountTypes): { spec+: { allowedProcMountTypes: if std.isArray(v=allowedProcMountTypes) then allowedProcMountTypes else [allowedProcMountTypes] } }, - '#withAllowedProcMountTypesMixin':: d.fn(help='AllowedProcMountTypes is a whitelist of allowed ProcMountTypes. Empty or nil indicates that only the DefaultProcMountType may be used. This requires the ProcMountType feature flag to be enabled.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='allowedProcMountTypes', type=d.T.array)]), - withAllowedProcMountTypesMixin(allowedProcMountTypes): { spec+: { allowedProcMountTypes+: if std.isArray(v=allowedProcMountTypes) then allowedProcMountTypes else [allowedProcMountTypes] } }, - '#withAllowedUnsafeSysctls':: d.fn(help='allowedUnsafeSysctls is a list of explicitly allowed unsafe sysctls, defaults to none. Each entry is either a plain sysctl name or ends in "*" in which case it is considered as a prefix of allowed sysctls. Single * means all unsafe sysctls are allowed. Kubelet has to whitelist all allowed unsafe sysctls explicitly to avoid rejection.\n\nExamples: e.g. "foo/*" allows "foo/bar", "foo/baz", etc. e.g. "foo.*" allows "foo.bar", "foo.baz", etc.', args=[d.arg(name='allowedUnsafeSysctls', type=d.T.array)]), - withAllowedUnsafeSysctls(allowedUnsafeSysctls): { spec+: { allowedUnsafeSysctls: if std.isArray(v=allowedUnsafeSysctls) then allowedUnsafeSysctls else [allowedUnsafeSysctls] } }, - '#withAllowedUnsafeSysctlsMixin':: d.fn(help='allowedUnsafeSysctls is a list of explicitly allowed unsafe sysctls, defaults to none. Each entry is either a plain sysctl name or ends in "*" in which case it is considered as a prefix of allowed sysctls. Single * means all unsafe sysctls are allowed. Kubelet has to whitelist all allowed unsafe sysctls explicitly to avoid rejection.\n\nExamples: e.g. "foo/*" allows "foo/bar", "foo/baz", etc. e.g. "foo.*" allows "foo.bar", "foo.baz", etc.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='allowedUnsafeSysctls', type=d.T.array)]), - withAllowedUnsafeSysctlsMixin(allowedUnsafeSysctls): { spec+: { allowedUnsafeSysctls+: if std.isArray(v=allowedUnsafeSysctls) then allowedUnsafeSysctls else [allowedUnsafeSysctls] } }, - '#withDefaultAddCapabilities':: d.fn(help='defaultAddCapabilities is the default set of capabilities that will be added to the container unless the pod spec specifically drops the capability. You may not list a capability in both defaultAddCapabilities and requiredDropCapabilities. Capabilities added here are implicitly allowed, and need not be included in the allowedCapabilities list.', args=[d.arg(name='defaultAddCapabilities', type=d.T.array)]), - withDefaultAddCapabilities(defaultAddCapabilities): { spec+: { defaultAddCapabilities: if std.isArray(v=defaultAddCapabilities) then defaultAddCapabilities else [defaultAddCapabilities] } }, - '#withDefaultAddCapabilitiesMixin':: d.fn(help='defaultAddCapabilities is the default set of capabilities that will be added to the container unless the pod spec specifically drops the capability. You may not list a capability in both defaultAddCapabilities and requiredDropCapabilities. Capabilities added here are implicitly allowed, and need not be included in the allowedCapabilities list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='defaultAddCapabilities', type=d.T.array)]), - withDefaultAddCapabilitiesMixin(defaultAddCapabilities): { spec+: { defaultAddCapabilities+: if std.isArray(v=defaultAddCapabilities) then defaultAddCapabilities else [defaultAddCapabilities] } }, - '#withDefaultAllowPrivilegeEscalation':: d.fn(help='defaultAllowPrivilegeEscalation controls the default setting for whether a process can gain more privileges than its parent process.', args=[d.arg(name='defaultAllowPrivilegeEscalation', type=d.T.boolean)]), - withDefaultAllowPrivilegeEscalation(defaultAllowPrivilegeEscalation): { spec+: { defaultAllowPrivilegeEscalation: defaultAllowPrivilegeEscalation } }, - '#withForbiddenSysctls':: d.fn(help='forbiddenSysctls is a list of explicitly forbidden sysctls, defaults to none. Each entry is either a plain sysctl name or ends in "*" in which case it is considered as a prefix of forbidden sysctls. Single * means all sysctls are forbidden.\n\nExamples: e.g. "foo/*" forbids "foo/bar", "foo/baz", etc. e.g. "foo.*" forbids "foo.bar", "foo.baz", etc.', args=[d.arg(name='forbiddenSysctls', type=d.T.array)]), - withForbiddenSysctls(forbiddenSysctls): { spec+: { forbiddenSysctls: if std.isArray(v=forbiddenSysctls) then forbiddenSysctls else [forbiddenSysctls] } }, - '#withForbiddenSysctlsMixin':: d.fn(help='forbiddenSysctls is a list of explicitly forbidden sysctls, defaults to none. Each entry is either a plain sysctl name or ends in "*" in which case it is considered as a prefix of forbidden sysctls. Single * means all sysctls are forbidden.\n\nExamples: e.g. "foo/*" forbids "foo/bar", "foo/baz", etc. e.g. "foo.*" forbids "foo.bar", "foo.baz", etc.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='forbiddenSysctls', type=d.T.array)]), - withForbiddenSysctlsMixin(forbiddenSysctls): { spec+: { forbiddenSysctls+: if std.isArray(v=forbiddenSysctls) then forbiddenSysctls else [forbiddenSysctls] } }, - '#withHostIPC':: d.fn(help='hostIPC determines if the policy allows the use of HostIPC in the pod spec.', args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { spec+: { hostIPC: hostIPC } }, - '#withHostNetwork':: d.fn(help='hostNetwork determines if the policy allows the use of HostNetwork in the pod spec.', args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { spec+: { hostNetwork: hostNetwork } }, - '#withHostPID':: d.fn(help='hostPID determines if the policy allows the use of HostPID in the pod spec.', args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { spec+: { hostPID: hostPID } }, - '#withHostPorts':: d.fn(help='hostPorts determines which host port ranges are allowed to be exposed.', args=[d.arg(name='hostPorts', type=d.T.array)]), - withHostPorts(hostPorts): { spec+: { hostPorts: if std.isArray(v=hostPorts) then hostPorts else [hostPorts] } }, - '#withHostPortsMixin':: d.fn(help='hostPorts determines which host port ranges are allowed to be exposed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='hostPorts', type=d.T.array)]), - withHostPortsMixin(hostPorts): { spec+: { hostPorts+: if std.isArray(v=hostPorts) then hostPorts else [hostPorts] } }, - '#withPrivileged':: d.fn(help='privileged determines if a pod can request to be run as privileged.', args=[d.arg(name='privileged', type=d.T.boolean)]), - withPrivileged(privileged): { spec+: { privileged: privileged } }, - '#withReadOnlyRootFilesystem':: d.fn(help='readOnlyRootFilesystem when set to true will force containers to run with a read only root file system. If the container specifically requests to run with a non-read only root file system the PSP should deny the pod. If set to false the container may run with a read only root file system if it wishes but it will not be forced to.', args=[d.arg(name='readOnlyRootFilesystem', type=d.T.boolean)]), - withReadOnlyRootFilesystem(readOnlyRootFilesystem): { spec+: { readOnlyRootFilesystem: readOnlyRootFilesystem } }, - '#withRequiredDropCapabilities':: d.fn(help='requiredDropCapabilities are the capabilities that will be dropped from the container. These are required to be dropped and cannot be added.', args=[d.arg(name='requiredDropCapabilities', type=d.T.array)]), - withRequiredDropCapabilities(requiredDropCapabilities): { spec+: { requiredDropCapabilities: if std.isArray(v=requiredDropCapabilities) then requiredDropCapabilities else [requiredDropCapabilities] } }, - '#withRequiredDropCapabilitiesMixin':: d.fn(help='requiredDropCapabilities are the capabilities that will be dropped from the container. These are required to be dropped and cannot be added.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDropCapabilities', type=d.T.array)]), - withRequiredDropCapabilitiesMixin(requiredDropCapabilities): { spec+: { requiredDropCapabilities+: if std.isArray(v=requiredDropCapabilities) then requiredDropCapabilities else [requiredDropCapabilities] } }, - '#withVolumes':: d.fn(help="volumes is a white list of allowed volume plugins. Empty indicates that no volumes may be used. To allow all volumes you may use '*'.", args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } }, - '#withVolumesMixin':: d.fn(help="volumes is a white list of allowed volume plugins. Empty indicates that no volumes may be used. To allow all volumes you may use '*'.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/podSecurityPolicySpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/podSecurityPolicySpec.libsonnet deleted file mode 100644 index eeb3579d630f..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/podSecurityPolicySpec.libsonnet +++ /dev/null @@ -1,116 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='podSecurityPolicySpec', url='', help='PodSecurityPolicySpec defines the policy enforced.'), - '#fsGroup':: d.obj(help='FSGroupStrategyOptions defines the strategy type and options used to create the strategy.'), - fsGroup: { - '#withRanges':: d.fn(help='ranges are the allowed ranges of fs groups. If you would like to force a single fs group then supply a single range with the same start and end. Required for MustRunAs.', args=[d.arg(name='ranges', type=d.T.array)]), - withRanges(ranges): { fsGroup+: { ranges: if std.isArray(v=ranges) then ranges else [ranges] } }, - '#withRangesMixin':: d.fn(help='ranges are the allowed ranges of fs groups. If you would like to force a single fs group then supply a single range with the same start and end. Required for MustRunAs.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ranges', type=d.T.array)]), - withRangesMixin(ranges): { fsGroup+: { ranges+: if std.isArray(v=ranges) then ranges else [ranges] } }, - '#withRule':: d.fn(help='rule is the strategy that will dictate what FSGroup is used in the SecurityContext.', args=[d.arg(name='rule', type=d.T.string)]), - withRule(rule): { fsGroup+: { rule: rule } } - }, - '#runAsGroup':: d.obj(help='RunAsGroupStrategyOptions defines the strategy type and any options used to create the strategy.'), - runAsGroup: { - '#withRanges':: d.fn(help='ranges are the allowed ranges of gids that may be used. If you would like to force a single gid then supply a single range with the same start and end. Required for MustRunAs.', args=[d.arg(name='ranges', type=d.T.array)]), - withRanges(ranges): { runAsGroup+: { ranges: if std.isArray(v=ranges) then ranges else [ranges] } }, - '#withRangesMixin':: d.fn(help='ranges are the allowed ranges of gids that may be used. If you would like to force a single gid then supply a single range with the same start and end. Required for MustRunAs.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ranges', type=d.T.array)]), - withRangesMixin(ranges): { runAsGroup+: { ranges+: if std.isArray(v=ranges) then ranges else [ranges] } }, - '#withRule':: d.fn(help='rule is the strategy that will dictate the allowable RunAsGroup values that may be set.', args=[d.arg(name='rule', type=d.T.string)]), - withRule(rule): { runAsGroup+: { rule: rule } } - }, - '#runAsUser':: d.obj(help='RunAsUserStrategyOptions defines the strategy type and any options used to create the strategy.'), - runAsUser: { - '#withRanges':: d.fn(help='ranges are the allowed ranges of uids that may be used. If you would like to force a single uid then supply a single range with the same start and end. Required for MustRunAs.', args=[d.arg(name='ranges', type=d.T.array)]), - withRanges(ranges): { runAsUser+: { ranges: if std.isArray(v=ranges) then ranges else [ranges] } }, - '#withRangesMixin':: d.fn(help='ranges are the allowed ranges of uids that may be used. If you would like to force a single uid then supply a single range with the same start and end. Required for MustRunAs.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ranges', type=d.T.array)]), - withRangesMixin(ranges): { runAsUser+: { ranges+: if std.isArray(v=ranges) then ranges else [ranges] } }, - '#withRule':: d.fn(help='rule is the strategy that will dictate the allowable RunAsUser values that may be set.', args=[d.arg(name='rule', type=d.T.string)]), - withRule(rule): { runAsUser+: { rule: rule } } - }, - '#seLinux':: d.obj(help='SELinuxStrategyOptions defines the strategy type and any options used to create the strategy.'), - seLinux: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { seLinux+: { seLinuxOptions+: { level: level } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { seLinux+: { seLinuxOptions+: { role: role } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { seLinux+: { seLinuxOptions+: { type: type } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { seLinux+: { seLinuxOptions+: { user: user } } } - }, - '#withRule':: d.fn(help='rule is the strategy that will dictate the allowable labels that may be set.', args=[d.arg(name='rule', type=d.T.string)]), - withRule(rule): { seLinux+: { rule: rule } } - }, - '#supplementalGroups':: d.obj(help='SupplementalGroupsStrategyOptions defines the strategy type and options used to create the strategy.'), - supplementalGroups: { - '#withRanges':: d.fn(help='ranges are the allowed ranges of supplemental groups. If you would like to force a single supplemental group then supply a single range with the same start and end. Required for MustRunAs.', args=[d.arg(name='ranges', type=d.T.array)]), - withRanges(ranges): { supplementalGroups+: { ranges: if std.isArray(v=ranges) then ranges else [ranges] } }, - '#withRangesMixin':: d.fn(help='ranges are the allowed ranges of supplemental groups. If you would like to force a single supplemental group then supply a single range with the same start and end. Required for MustRunAs.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ranges', type=d.T.array)]), - withRangesMixin(ranges): { supplementalGroups+: { ranges+: if std.isArray(v=ranges) then ranges else [ranges] } }, - '#withRule':: d.fn(help='rule is the strategy that will dictate what supplemental groups is used in the SecurityContext.', args=[d.arg(name='rule', type=d.T.string)]), - withRule(rule): { supplementalGroups+: { rule: rule } } - }, - '#withAllowPrivilegeEscalation':: d.fn(help='allowPrivilegeEscalation determines if a pod can request to allow privilege escalation. If unspecified, defaults to true.', args=[d.arg(name='allowPrivilegeEscalation', type=d.T.boolean)]), - withAllowPrivilegeEscalation(allowPrivilegeEscalation): { allowPrivilegeEscalation: allowPrivilegeEscalation }, - '#withAllowedCSIDrivers':: d.fn(help='AllowedCSIDrivers is a whitelist of inline CSI drivers that must be explicitly set to be embedded within a pod spec. An empty value means no CSI drivers can run inline within a pod spec.', args=[d.arg(name='allowedCSIDrivers', type=d.T.array)]), - withAllowedCSIDrivers(allowedCSIDrivers): { allowedCSIDrivers: if std.isArray(v=allowedCSIDrivers) then allowedCSIDrivers else [allowedCSIDrivers] }, - '#withAllowedCSIDriversMixin':: d.fn(help='AllowedCSIDrivers is a whitelist of inline CSI drivers that must be explicitly set to be embedded within a pod spec. An empty value means no CSI drivers can run inline within a pod spec.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='allowedCSIDrivers', type=d.T.array)]), - withAllowedCSIDriversMixin(allowedCSIDrivers): { allowedCSIDrivers+: if std.isArray(v=allowedCSIDrivers) then allowedCSIDrivers else [allowedCSIDrivers] }, - '#withAllowedCapabilities':: d.fn(help="allowedCapabilities is a list of capabilities that can be requested to add to the container. Capabilities in this field may be added at the pod author's discretion. You must not list a capability in both allowedCapabilities and requiredDropCapabilities.", args=[d.arg(name='allowedCapabilities', type=d.T.array)]), - withAllowedCapabilities(allowedCapabilities): { allowedCapabilities: if std.isArray(v=allowedCapabilities) then allowedCapabilities else [allowedCapabilities] }, - '#withAllowedCapabilitiesMixin':: d.fn(help="allowedCapabilities is a list of capabilities that can be requested to add to the container. Capabilities in this field may be added at the pod author's discretion. You must not list a capability in both allowedCapabilities and requiredDropCapabilities.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='allowedCapabilities', type=d.T.array)]), - withAllowedCapabilitiesMixin(allowedCapabilities): { allowedCapabilities+: if std.isArray(v=allowedCapabilities) then allowedCapabilities else [allowedCapabilities] }, - '#withAllowedFlexVolumes':: d.fn(help='allowedFlexVolumes is a whitelist of allowed Flexvolumes. Empty or nil indicates that all Flexvolumes may be used. This parameter is effective only when the usage of the Flexvolumes is allowed in the "volumes" field.', args=[d.arg(name='allowedFlexVolumes', type=d.T.array)]), - withAllowedFlexVolumes(allowedFlexVolumes): { allowedFlexVolumes: if std.isArray(v=allowedFlexVolumes) then allowedFlexVolumes else [allowedFlexVolumes] }, - '#withAllowedFlexVolumesMixin':: d.fn(help='allowedFlexVolumes is a whitelist of allowed Flexvolumes. Empty or nil indicates that all Flexvolumes may be used. This parameter is effective only when the usage of the Flexvolumes is allowed in the "volumes" field.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='allowedFlexVolumes', type=d.T.array)]), - withAllowedFlexVolumesMixin(allowedFlexVolumes): { allowedFlexVolumes+: if std.isArray(v=allowedFlexVolumes) then allowedFlexVolumes else [allowedFlexVolumes] }, - '#withAllowedHostPaths':: d.fn(help='allowedHostPaths is a white list of allowed host paths. Empty indicates that all host paths may be used.', args=[d.arg(name='allowedHostPaths', type=d.T.array)]), - withAllowedHostPaths(allowedHostPaths): { allowedHostPaths: if std.isArray(v=allowedHostPaths) then allowedHostPaths else [allowedHostPaths] }, - '#withAllowedHostPathsMixin':: d.fn(help='allowedHostPaths is a white list of allowed host paths. Empty indicates that all host paths may be used.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='allowedHostPaths', type=d.T.array)]), - withAllowedHostPathsMixin(allowedHostPaths): { allowedHostPaths+: if std.isArray(v=allowedHostPaths) then allowedHostPaths else [allowedHostPaths] }, - '#withAllowedProcMountTypes':: d.fn(help='AllowedProcMountTypes is a whitelist of allowed ProcMountTypes. Empty or nil indicates that only the DefaultProcMountType may be used. This requires the ProcMountType feature flag to be enabled.', args=[d.arg(name='allowedProcMountTypes', type=d.T.array)]), - withAllowedProcMountTypes(allowedProcMountTypes): { allowedProcMountTypes: if std.isArray(v=allowedProcMountTypes) then allowedProcMountTypes else [allowedProcMountTypes] }, - '#withAllowedProcMountTypesMixin':: d.fn(help='AllowedProcMountTypes is a whitelist of allowed ProcMountTypes. Empty or nil indicates that only the DefaultProcMountType may be used. This requires the ProcMountType feature flag to be enabled.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='allowedProcMountTypes', type=d.T.array)]), - withAllowedProcMountTypesMixin(allowedProcMountTypes): { allowedProcMountTypes+: if std.isArray(v=allowedProcMountTypes) then allowedProcMountTypes else [allowedProcMountTypes] }, - '#withAllowedUnsafeSysctls':: d.fn(help='allowedUnsafeSysctls is a list of explicitly allowed unsafe sysctls, defaults to none. Each entry is either a plain sysctl name or ends in "*" in which case it is considered as a prefix of allowed sysctls. Single * means all unsafe sysctls are allowed. Kubelet has to whitelist all allowed unsafe sysctls explicitly to avoid rejection.\n\nExamples: e.g. "foo/*" allows "foo/bar", "foo/baz", etc. e.g. "foo.*" allows "foo.bar", "foo.baz", etc.', args=[d.arg(name='allowedUnsafeSysctls', type=d.T.array)]), - withAllowedUnsafeSysctls(allowedUnsafeSysctls): { allowedUnsafeSysctls: if std.isArray(v=allowedUnsafeSysctls) then allowedUnsafeSysctls else [allowedUnsafeSysctls] }, - '#withAllowedUnsafeSysctlsMixin':: d.fn(help='allowedUnsafeSysctls is a list of explicitly allowed unsafe sysctls, defaults to none. Each entry is either a plain sysctl name or ends in "*" in which case it is considered as a prefix of allowed sysctls. Single * means all unsafe sysctls are allowed. Kubelet has to whitelist all allowed unsafe sysctls explicitly to avoid rejection.\n\nExamples: e.g. "foo/*" allows "foo/bar", "foo/baz", etc. e.g. "foo.*" allows "foo.bar", "foo.baz", etc.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='allowedUnsafeSysctls', type=d.T.array)]), - withAllowedUnsafeSysctlsMixin(allowedUnsafeSysctls): { allowedUnsafeSysctls+: if std.isArray(v=allowedUnsafeSysctls) then allowedUnsafeSysctls else [allowedUnsafeSysctls] }, - '#withDefaultAddCapabilities':: d.fn(help='defaultAddCapabilities is the default set of capabilities that will be added to the container unless the pod spec specifically drops the capability. You may not list a capability in both defaultAddCapabilities and requiredDropCapabilities. Capabilities added here are implicitly allowed, and need not be included in the allowedCapabilities list.', args=[d.arg(name='defaultAddCapabilities', type=d.T.array)]), - withDefaultAddCapabilities(defaultAddCapabilities): { defaultAddCapabilities: if std.isArray(v=defaultAddCapabilities) then defaultAddCapabilities else [defaultAddCapabilities] }, - '#withDefaultAddCapabilitiesMixin':: d.fn(help='defaultAddCapabilities is the default set of capabilities that will be added to the container unless the pod spec specifically drops the capability. You may not list a capability in both defaultAddCapabilities and requiredDropCapabilities. Capabilities added here are implicitly allowed, and need not be included in the allowedCapabilities list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='defaultAddCapabilities', type=d.T.array)]), - withDefaultAddCapabilitiesMixin(defaultAddCapabilities): { defaultAddCapabilities+: if std.isArray(v=defaultAddCapabilities) then defaultAddCapabilities else [defaultAddCapabilities] }, - '#withDefaultAllowPrivilegeEscalation':: d.fn(help='defaultAllowPrivilegeEscalation controls the default setting for whether a process can gain more privileges than its parent process.', args=[d.arg(name='defaultAllowPrivilegeEscalation', type=d.T.boolean)]), - withDefaultAllowPrivilegeEscalation(defaultAllowPrivilegeEscalation): { defaultAllowPrivilegeEscalation: defaultAllowPrivilegeEscalation }, - '#withForbiddenSysctls':: d.fn(help='forbiddenSysctls is a list of explicitly forbidden sysctls, defaults to none. Each entry is either a plain sysctl name or ends in "*" in which case it is considered as a prefix of forbidden sysctls. Single * means all sysctls are forbidden.\n\nExamples: e.g. "foo/*" forbids "foo/bar", "foo/baz", etc. e.g. "foo.*" forbids "foo.bar", "foo.baz", etc.', args=[d.arg(name='forbiddenSysctls', type=d.T.array)]), - withForbiddenSysctls(forbiddenSysctls): { forbiddenSysctls: if std.isArray(v=forbiddenSysctls) then forbiddenSysctls else [forbiddenSysctls] }, - '#withForbiddenSysctlsMixin':: d.fn(help='forbiddenSysctls is a list of explicitly forbidden sysctls, defaults to none. Each entry is either a plain sysctl name or ends in "*" in which case it is considered as a prefix of forbidden sysctls. Single * means all sysctls are forbidden.\n\nExamples: e.g. "foo/*" forbids "foo/bar", "foo/baz", etc. e.g. "foo.*" forbids "foo.bar", "foo.baz", etc.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='forbiddenSysctls', type=d.T.array)]), - withForbiddenSysctlsMixin(forbiddenSysctls): { forbiddenSysctls+: if std.isArray(v=forbiddenSysctls) then forbiddenSysctls else [forbiddenSysctls] }, - '#withHostIPC':: d.fn(help='hostIPC determines if the policy allows the use of HostIPC in the pod spec.', args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { hostIPC: hostIPC }, - '#withHostNetwork':: d.fn(help='hostNetwork determines if the policy allows the use of HostNetwork in the pod spec.', args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { hostNetwork: hostNetwork }, - '#withHostPID':: d.fn(help='hostPID determines if the policy allows the use of HostPID in the pod spec.', args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { hostPID: hostPID }, - '#withHostPorts':: d.fn(help='hostPorts determines which host port ranges are allowed to be exposed.', args=[d.arg(name='hostPorts', type=d.T.array)]), - withHostPorts(hostPorts): { hostPorts: if std.isArray(v=hostPorts) then hostPorts else [hostPorts] }, - '#withHostPortsMixin':: d.fn(help='hostPorts determines which host port ranges are allowed to be exposed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='hostPorts', type=d.T.array)]), - withHostPortsMixin(hostPorts): { hostPorts+: if std.isArray(v=hostPorts) then hostPorts else [hostPorts] }, - '#withPrivileged':: d.fn(help='privileged determines if a pod can request to be run as privileged.', args=[d.arg(name='privileged', type=d.T.boolean)]), - withPrivileged(privileged): { privileged: privileged }, - '#withReadOnlyRootFilesystem':: d.fn(help='readOnlyRootFilesystem when set to true will force containers to run with a read only root file system. If the container specifically requests to run with a non-read only root file system the PSP should deny the pod. If set to false the container may run with a read only root file system if it wishes but it will not be forced to.', args=[d.arg(name='readOnlyRootFilesystem', type=d.T.boolean)]), - withReadOnlyRootFilesystem(readOnlyRootFilesystem): { readOnlyRootFilesystem: readOnlyRootFilesystem }, - '#withRequiredDropCapabilities':: d.fn(help='requiredDropCapabilities are the capabilities that will be dropped from the container. These are required to be dropped and cannot be added.', args=[d.arg(name='requiredDropCapabilities', type=d.T.array)]), - withRequiredDropCapabilities(requiredDropCapabilities): { requiredDropCapabilities: if std.isArray(v=requiredDropCapabilities) then requiredDropCapabilities else [requiredDropCapabilities] }, - '#withRequiredDropCapabilitiesMixin':: d.fn(help='requiredDropCapabilities are the capabilities that will be dropped from the container. These are required to be dropped and cannot be added.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDropCapabilities', type=d.T.array)]), - withRequiredDropCapabilitiesMixin(requiredDropCapabilities): { requiredDropCapabilities+: if std.isArray(v=requiredDropCapabilities) then requiredDropCapabilities else [requiredDropCapabilities] }, - '#withVolumes':: d.fn(help="volumes is a white list of allowed volume plugins. Empty indicates that no volumes may be used. To allow all volumes you may use '*'.", args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { volumes: if std.isArray(v=volumes) then volumes else [volumes] }, - '#withVolumesMixin':: d.fn(help="volumes is a white list of allowed volume plugins. Empty indicates that no volumes may be used. To allow all volumes you may use '*'.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { volumes+: if std.isArray(v=volumes) then volumes else [volumes] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/runAsGroupStrategyOptions.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/runAsGroupStrategyOptions.libsonnet deleted file mode 100644 index 2fd61a777d2c..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/runAsGroupStrategyOptions.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='runAsGroupStrategyOptions', url='', help='RunAsGroupStrategyOptions defines the strategy type and any options used to create the strategy.'), - '#withRanges':: d.fn(help='ranges are the allowed ranges of gids that may be used. If you would like to force a single gid then supply a single range with the same start and end. Required for MustRunAs.', args=[d.arg(name='ranges', type=d.T.array)]), - withRanges(ranges): { ranges: if std.isArray(v=ranges) then ranges else [ranges] }, - '#withRangesMixin':: d.fn(help='ranges are the allowed ranges of gids that may be used. If you would like to force a single gid then supply a single range with the same start and end. Required for MustRunAs.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ranges', type=d.T.array)]), - withRangesMixin(ranges): { ranges+: if std.isArray(v=ranges) then ranges else [ranges] }, - '#withRule':: d.fn(help='rule is the strategy that will dictate the allowable RunAsGroup values that may be set.', args=[d.arg(name='rule', type=d.T.string)]), - withRule(rule): { rule: rule }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/runAsUserStrategyOptions.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/runAsUserStrategyOptions.libsonnet deleted file mode 100644 index 168c54e8ed9d..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/runAsUserStrategyOptions.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='runAsUserStrategyOptions', url='', help='RunAsUserStrategyOptions defines the strategy type and any options used to create the strategy.'), - '#withRanges':: d.fn(help='ranges are the allowed ranges of uids that may be used. If you would like to force a single uid then supply a single range with the same start and end. Required for MustRunAs.', args=[d.arg(name='ranges', type=d.T.array)]), - withRanges(ranges): { ranges: if std.isArray(v=ranges) then ranges else [ranges] }, - '#withRangesMixin':: d.fn(help='ranges are the allowed ranges of uids that may be used. If you would like to force a single uid then supply a single range with the same start and end. Required for MustRunAs.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ranges', type=d.T.array)]), - withRangesMixin(ranges): { ranges+: if std.isArray(v=ranges) then ranges else [ranges] }, - '#withRule':: d.fn(help='rule is the strategy that will dictate the allowable RunAsUser values that may be set.', args=[d.arg(name='rule', type=d.T.string)]), - withRule(rule): { rule: rule }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/seLinuxStrategyOptions.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/seLinuxStrategyOptions.libsonnet deleted file mode 100644 index b3d992ca9b5e..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/seLinuxStrategyOptions.libsonnet +++ /dev/null @@ -1,19 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='seLinuxStrategyOptions', url='', help='SELinuxStrategyOptions defines the strategy type and any options used to create the strategy.'), - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { seLinuxOptions+: { level: level } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { seLinuxOptions+: { role: role } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { seLinuxOptions+: { type: type } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { seLinuxOptions+: { user: user } } - }, - '#withRule':: d.fn(help='rule is the strategy that will dictate the allowable labels that may be set.', args=[d.arg(name='rule', type=d.T.string)]), - withRule(rule): { rule: rule }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/supplementalGroupsStrategyOptions.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/supplementalGroupsStrategyOptions.libsonnet deleted file mode 100644 index eb1b4432ccce..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/policy/v1beta1/supplementalGroupsStrategyOptions.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='supplementalGroupsStrategyOptions', url='', help='SupplementalGroupsStrategyOptions defines the strategy type and options used to create the strategy.'), - '#withRanges':: d.fn(help='ranges are the allowed ranges of supplemental groups. If you would like to force a single supplemental group then supply a single range with the same start and end. Required for MustRunAs.', args=[d.arg(name='ranges', type=d.T.array)]), - withRanges(ranges): { ranges: if std.isArray(v=ranges) then ranges else [ranges] }, - '#withRangesMixin':: d.fn(help='ranges are the allowed ranges of supplemental groups. If you would like to force a single supplemental group then supply a single range with the same start and end. Required for MustRunAs.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ranges', type=d.T.array)]), - withRangesMixin(ranges): { ranges+: if std.isArray(v=ranges) then ranges else [ranges] }, - '#withRule':: d.fn(help='rule is the strategy that will dictate what supplemental groups is used in the SecurityContext.', args=[d.arg(name='rule', type=d.T.string)]), - withRule(rule): { rule: rule }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/main.libsonnet deleted file mode 100644 index 69960af562b6..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/main.libsonnet +++ /dev/null @@ -1,7 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='rbac', url='', help=''), - v1: (import 'v1/main.libsonnet'), - v1alpha1: (import 'v1alpha1/main.libsonnet'), - v1beta1: (import 'v1beta1/main.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1/aggregationRule.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1/aggregationRule.libsonnet deleted file mode 100644 index 4b1d29bfd863..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1/aggregationRule.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='aggregationRule', url='', help='AggregationRule describes how to locate ClusterRoles to aggregate into the ClusterRole'), - '#withClusterRoleSelectors':: d.fn(help="ClusterRoleSelectors holds a list of selectors which will be used to find ClusterRoles and create the rules. If any of the selectors match, then the ClusterRole's permissions will be added", args=[d.arg(name='clusterRoleSelectors', type=d.T.array)]), - withClusterRoleSelectors(clusterRoleSelectors): { clusterRoleSelectors: if std.isArray(v=clusterRoleSelectors) then clusterRoleSelectors else [clusterRoleSelectors] }, - '#withClusterRoleSelectorsMixin':: d.fn(help="ClusterRoleSelectors holds a list of selectors which will be used to find ClusterRoles and create the rules. If any of the selectors match, then the ClusterRole's permissions will be added\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='clusterRoleSelectors', type=d.T.array)]), - withClusterRoleSelectorsMixin(clusterRoleSelectors): { clusterRoleSelectors+: if std.isArray(v=clusterRoleSelectors) then clusterRoleSelectors else [clusterRoleSelectors] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1/clusterRole.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1/clusterRole.libsonnet deleted file mode 100644 index 305c088d315c..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1/clusterRole.libsonnet +++ /dev/null @@ -1,104 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='clusterRole', url='', help='ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding.'), - '#aggregationRule':: d.obj(help='AggregationRule describes how to locate ClusterRoles to aggregate into the ClusterRole'), - aggregationRule: { - '#withClusterRoleSelectors':: d.fn(help="ClusterRoleSelectors holds a list of selectors which will be used to find ClusterRoles and create the rules. If any of the selectors match, then the ClusterRole's permissions will be added", args=[d.arg(name='clusterRoleSelectors', type=d.T.array)]), - withClusterRoleSelectors(clusterRoleSelectors): { aggregationRule+: { clusterRoleSelectors: if std.isArray(v=clusterRoleSelectors) then clusterRoleSelectors else [clusterRoleSelectors] } }, - '#withClusterRoleSelectorsMixin':: d.fn(help="ClusterRoleSelectors holds a list of selectors which will be used to find ClusterRoles and create the rules. If any of the selectors match, then the ClusterRole's permissions will be added\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='clusterRoleSelectors', type=d.T.array)]), - withClusterRoleSelectorsMixin(clusterRoleSelectors): { aggregationRule+: { clusterRoleSelectors+: if std.isArray(v=clusterRoleSelectors) then clusterRoleSelectors else [clusterRoleSelectors] } } - }, - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Clusterrole', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'rbac.authorization.k8s.io/v1', - kind: 'ClusterRole' - } + self.metadata.withName(name=name), - '#withRules':: d.fn(help='Rules holds all the PolicyRules for this ClusterRole', args=[d.arg(name='rules', type=d.T.array)]), - withRules(rules): { rules: if std.isArray(v=rules) then rules else [rules] }, - '#withRulesMixin':: d.fn(help='Rules holds all the PolicyRules for this ClusterRole\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='rules', type=d.T.array)]), - withRulesMixin(rules): { rules+: if std.isArray(v=rules) then rules else [rules] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1/clusterRoleBinding.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1/clusterRoleBinding.libsonnet deleted file mode 100644 index cdfec50912cb..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1/clusterRoleBinding.libsonnet +++ /dev/null @@ -1,106 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='clusterRoleBinding', url='', help='ClusterRoleBinding references a ClusterRole, but not contain it. It can reference a ClusterRole in the global namespace, and adds who information via Subject.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Clusterrolebinding', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'rbac.authorization.k8s.io/v1', - kind: 'ClusterRoleBinding' - } + self.metadata.withName(name=name), - '#roleRef':: d.obj(help='RoleRef contains information that points to the role being used'), - roleRef: { - '#withApiGroup':: d.fn(help='APIGroup is the group for the resource being referenced', args=[d.arg(name='apiGroup', type=d.T.string)]), - withApiGroup(apiGroup): { roleRef+: { apiGroup: apiGroup } }, - '#withKind':: d.fn(help='Kind is the type of resource being referenced', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { roleRef+: { kind: kind } }, - '#withName':: d.fn(help='Name is the name of resource being referenced', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { roleRef+: { name: name } } - }, - '#withSubjects':: d.fn(help='Subjects holds references to the objects the role applies to.', args=[d.arg(name='subjects', type=d.T.array)]), - withSubjects(subjects): { subjects: if std.isArray(v=subjects) then subjects else [subjects] }, - '#withSubjectsMixin':: d.fn(help='Subjects holds references to the objects the role applies to.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='subjects', type=d.T.array)]), - withSubjectsMixin(subjects): { subjects+: if std.isArray(v=subjects) then subjects else [subjects] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1/main.libsonnet deleted file mode 100644 index 7afd017e6ae2..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1/main.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1', url='', help=''), - aggregationRule: (import 'aggregationRule.libsonnet'), - clusterRole: (import 'clusterRole.libsonnet'), - clusterRoleBinding: (import 'clusterRoleBinding.libsonnet'), - policyRule: (import 'policyRule.libsonnet'), - role: (import 'role.libsonnet'), - roleBinding: (import 'roleBinding.libsonnet'), - roleRef: (import 'roleRef.libsonnet'), - subject: (import 'subject.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1/policyRule.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1/policyRule.libsonnet deleted file mode 100644 index 03fc92f1ac4d..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1/policyRule.libsonnet +++ /dev/null @@ -1,26 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='policyRule', url='', help='PolicyRule holds information that describes a policy rule, but does not contain information about who the rule applies to or which namespace the rule applies to.'), - '#withApiGroups':: d.fn(help='APIGroups is the name of the APIGroup that contains the resources. If multiple API groups are specified, any action requested against one of the enumerated resources in any API group will be allowed.', args=[d.arg(name='apiGroups', type=d.T.array)]), - withApiGroups(apiGroups): { apiGroups: if std.isArray(v=apiGroups) then apiGroups else [apiGroups] }, - '#withApiGroupsMixin':: d.fn(help='APIGroups is the name of the APIGroup that contains the resources. If multiple API groups are specified, any action requested against one of the enumerated resources in any API group will be allowed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='apiGroups', type=d.T.array)]), - withApiGroupsMixin(apiGroups): { apiGroups+: if std.isArray(v=apiGroups) then apiGroups else [apiGroups] }, - '#withNonResourceURLs':: d.fn(help='NonResourceURLs is a set of partial urls that a user should have access to. *s are allowed, but only as the full, final step in the path Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding. Rules can either apply to API resources (such as "pods" or "secrets") or non-resource URL paths (such as "/api"), but not both.', args=[d.arg(name='nonResourceURLs', type=d.T.array)]), - withNonResourceURLs(nonResourceURLs): { nonResourceURLs: if std.isArray(v=nonResourceURLs) then nonResourceURLs else [nonResourceURLs] }, - '#withNonResourceURLsMixin':: d.fn(help='NonResourceURLs is a set of partial urls that a user should have access to. *s are allowed, but only as the full, final step in the path Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding. Rules can either apply to API resources (such as "pods" or "secrets") or non-resource URL paths (such as "/api"), but not both.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nonResourceURLs', type=d.T.array)]), - withNonResourceURLsMixin(nonResourceURLs): { nonResourceURLs+: if std.isArray(v=nonResourceURLs) then nonResourceURLs else [nonResourceURLs] }, - '#withResourceNames':: d.fn(help='ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed.', args=[d.arg(name='resourceNames', type=d.T.array)]), - withResourceNames(resourceNames): { resourceNames: if std.isArray(v=resourceNames) then resourceNames else [resourceNames] }, - '#withResourceNamesMixin':: d.fn(help='ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='resourceNames', type=d.T.array)]), - withResourceNamesMixin(resourceNames): { resourceNames+: if std.isArray(v=resourceNames) then resourceNames else [resourceNames] }, - '#withResources':: d.fn(help='Resources is a list of resources this rule applies to. ResourceAll represents all resources.', args=[d.arg(name='resources', type=d.T.array)]), - withResources(resources): { resources: if std.isArray(v=resources) then resources else [resources] }, - '#withResourcesMixin':: d.fn(help='Resources is a list of resources this rule applies to. ResourceAll represents all resources.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='resources', type=d.T.array)]), - withResourcesMixin(resources): { resources+: if std.isArray(v=resources) then resources else [resources] }, - '#withVerbs':: d.fn(help='Verbs is a list of Verbs that apply to ALL the ResourceKinds and AttributeRestrictions contained in this rule. VerbAll represents all kinds.', args=[d.arg(name='verbs', type=d.T.array)]), - withVerbs(verbs): { verbs: if std.isArray(v=verbs) then verbs else [verbs] }, - '#withVerbsMixin':: d.fn(help='Verbs is a list of Verbs that apply to ALL the ResourceKinds and AttributeRestrictions contained in this rule. VerbAll represents all kinds.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='verbs', type=d.T.array)]), - withVerbsMixin(verbs): { verbs+: if std.isArray(v=verbs) then verbs else [verbs] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1/role.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1/role.libsonnet deleted file mode 100644 index dd71e7c85730..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1/role.libsonnet +++ /dev/null @@ -1,97 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='role', url='', help='Role is a namespaced, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Role', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'rbac.authorization.k8s.io/v1', - kind: 'Role' - } + self.metadata.withName(name=name), - '#withRules':: d.fn(help='Rules holds all the PolicyRules for this Role', args=[d.arg(name='rules', type=d.T.array)]), - withRules(rules): { rules: if std.isArray(v=rules) then rules else [rules] }, - '#withRulesMixin':: d.fn(help='Rules holds all the PolicyRules for this Role\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='rules', type=d.T.array)]), - withRulesMixin(rules): { rules+: if std.isArray(v=rules) then rules else [rules] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1/roleBinding.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1/roleBinding.libsonnet deleted file mode 100644 index 5bdabece2d7e..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1/roleBinding.libsonnet +++ /dev/null @@ -1,106 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='roleBinding', url='', help='RoleBinding references a role, but does not contain it. It can reference a Role in the same namespace or a ClusterRole in the global namespace. It adds who information via Subjects and namespace information by which namespace it exists in. RoleBindings in a given namespace only have effect in that namespace.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Rolebinding', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'rbac.authorization.k8s.io/v1', - kind: 'RoleBinding' - } + self.metadata.withName(name=name), - '#roleRef':: d.obj(help='RoleRef contains information that points to the role being used'), - roleRef: { - '#withApiGroup':: d.fn(help='APIGroup is the group for the resource being referenced', args=[d.arg(name='apiGroup', type=d.T.string)]), - withApiGroup(apiGroup): { roleRef+: { apiGroup: apiGroup } }, - '#withKind':: d.fn(help='Kind is the type of resource being referenced', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { roleRef+: { kind: kind } }, - '#withName':: d.fn(help='Name is the name of resource being referenced', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { roleRef+: { name: name } } - }, - '#withSubjects':: d.fn(help='Subjects holds references to the objects the role applies to.', args=[d.arg(name='subjects', type=d.T.array)]), - withSubjects(subjects): { subjects: if std.isArray(v=subjects) then subjects else [subjects] }, - '#withSubjectsMixin':: d.fn(help='Subjects holds references to the objects the role applies to.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='subjects', type=d.T.array)]), - withSubjectsMixin(subjects): { subjects+: if std.isArray(v=subjects) then subjects else [subjects] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1/roleRef.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1/roleRef.libsonnet deleted file mode 100644 index b1cc2993173d..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1/roleRef.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='roleRef', url='', help='RoleRef contains information that points to the role being used'), - '#withApiGroup':: d.fn(help='APIGroup is the group for the resource being referenced', args=[d.arg(name='apiGroup', type=d.T.string)]), - withApiGroup(apiGroup): { apiGroup: apiGroup }, - '#withKind':: d.fn(help='Kind is the type of resource being referenced', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { kind: kind }, - '#withName':: d.fn(help='Name is the name of resource being referenced', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1/subject.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1/subject.libsonnet deleted file mode 100644 index 9466f1e70b44..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1/subject.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='subject', url='', help='Subject contains a reference to the object or user identities a role binding applies to. This can either hold a direct API object reference, or a value for non-objects such as user and group names.'), - '#withApiGroup':: d.fn(help='APIGroup holds the API group of the referenced subject. Defaults to "" for ServiceAccount subjects. Defaults to "rbac.authorization.k8s.io" for User and Group subjects.', args=[d.arg(name='apiGroup', type=d.T.string)]), - withApiGroup(apiGroup): { apiGroup: apiGroup }, - '#withKind':: d.fn(help='Kind of object being referenced. Values defined by this API group are "User", "Group", and "ServiceAccount". If the Authorizer does not recognized the kind value, the Authorizer should report an error.', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { kind: kind }, - '#withName':: d.fn(help='Name of the object being referenced.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withNamespace':: d.fn(help='Namespace of the referenced object. If the object kind is non-namespace, such as "User" or "Group", and this value is not empty the Authorizer should report an error.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { namespace: namespace }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1alpha1/aggregationRule.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1alpha1/aggregationRule.libsonnet deleted file mode 100644 index 4b1d29bfd863..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1alpha1/aggregationRule.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='aggregationRule', url='', help='AggregationRule describes how to locate ClusterRoles to aggregate into the ClusterRole'), - '#withClusterRoleSelectors':: d.fn(help="ClusterRoleSelectors holds a list of selectors which will be used to find ClusterRoles and create the rules. If any of the selectors match, then the ClusterRole's permissions will be added", args=[d.arg(name='clusterRoleSelectors', type=d.T.array)]), - withClusterRoleSelectors(clusterRoleSelectors): { clusterRoleSelectors: if std.isArray(v=clusterRoleSelectors) then clusterRoleSelectors else [clusterRoleSelectors] }, - '#withClusterRoleSelectorsMixin':: d.fn(help="ClusterRoleSelectors holds a list of selectors which will be used to find ClusterRoles and create the rules. If any of the selectors match, then the ClusterRole's permissions will be added\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='clusterRoleSelectors', type=d.T.array)]), - withClusterRoleSelectorsMixin(clusterRoleSelectors): { clusterRoleSelectors+: if std.isArray(v=clusterRoleSelectors) then clusterRoleSelectors else [clusterRoleSelectors] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1alpha1/clusterRole.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1alpha1/clusterRole.libsonnet deleted file mode 100644 index cd18a4552697..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1alpha1/clusterRole.libsonnet +++ /dev/null @@ -1,104 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='clusterRole', url='', help='ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding.'), - '#aggregationRule':: d.obj(help='AggregationRule describes how to locate ClusterRoles to aggregate into the ClusterRole'), - aggregationRule: { - '#withClusterRoleSelectors':: d.fn(help="ClusterRoleSelectors holds a list of selectors which will be used to find ClusterRoles and create the rules. If any of the selectors match, then the ClusterRole's permissions will be added", args=[d.arg(name='clusterRoleSelectors', type=d.T.array)]), - withClusterRoleSelectors(clusterRoleSelectors): { aggregationRule+: { clusterRoleSelectors: if std.isArray(v=clusterRoleSelectors) then clusterRoleSelectors else [clusterRoleSelectors] } }, - '#withClusterRoleSelectorsMixin':: d.fn(help="ClusterRoleSelectors holds a list of selectors which will be used to find ClusterRoles and create the rules. If any of the selectors match, then the ClusterRole's permissions will be added\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='clusterRoleSelectors', type=d.T.array)]), - withClusterRoleSelectorsMixin(clusterRoleSelectors): { aggregationRule+: { clusterRoleSelectors+: if std.isArray(v=clusterRoleSelectors) then clusterRoleSelectors else [clusterRoleSelectors] } } - }, - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Clusterrole', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'rbac.authorization.k8s.io/v1alpha1', - kind: 'ClusterRole' - } + self.metadata.withName(name=name), - '#withRules':: d.fn(help='Rules holds all the PolicyRules for this ClusterRole', args=[d.arg(name='rules', type=d.T.array)]), - withRules(rules): { rules: if std.isArray(v=rules) then rules else [rules] }, - '#withRulesMixin':: d.fn(help='Rules holds all the PolicyRules for this ClusterRole\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='rules', type=d.T.array)]), - withRulesMixin(rules): { rules+: if std.isArray(v=rules) then rules else [rules] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1alpha1/clusterRoleBinding.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1alpha1/clusterRoleBinding.libsonnet deleted file mode 100644 index 3cc4cb9131ba..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1alpha1/clusterRoleBinding.libsonnet +++ /dev/null @@ -1,106 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='clusterRoleBinding', url='', help='ClusterRoleBinding references a ClusterRole, but not contain it. It can reference a ClusterRole in the global namespace, and adds who information via Subject.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Clusterrolebinding', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'rbac.authorization.k8s.io/v1alpha1', - kind: 'ClusterRoleBinding' - } + self.metadata.withName(name=name), - '#roleRef':: d.obj(help='RoleRef contains information that points to the role being used'), - roleRef: { - '#withApiGroup':: d.fn(help='APIGroup is the group for the resource being referenced', args=[d.arg(name='apiGroup', type=d.T.string)]), - withApiGroup(apiGroup): { roleRef+: { apiGroup: apiGroup } }, - '#withKind':: d.fn(help='Kind is the type of resource being referenced', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { roleRef+: { kind: kind } }, - '#withName':: d.fn(help='Name is the name of resource being referenced', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { roleRef+: { name: name } } - }, - '#withSubjects':: d.fn(help='Subjects holds references to the objects the role applies to.', args=[d.arg(name='subjects', type=d.T.array)]), - withSubjects(subjects): { subjects: if std.isArray(v=subjects) then subjects else [subjects] }, - '#withSubjectsMixin':: d.fn(help='Subjects holds references to the objects the role applies to.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='subjects', type=d.T.array)]), - withSubjectsMixin(subjects): { subjects+: if std.isArray(v=subjects) then subjects else [subjects] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1alpha1/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1alpha1/main.libsonnet deleted file mode 100644 index 4c0782d405ed..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1alpha1/main.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1alpha1', url='', help=''), - aggregationRule: (import 'aggregationRule.libsonnet'), - clusterRole: (import 'clusterRole.libsonnet'), - clusterRoleBinding: (import 'clusterRoleBinding.libsonnet'), - policyRule: (import 'policyRule.libsonnet'), - role: (import 'role.libsonnet'), - roleBinding: (import 'roleBinding.libsonnet'), - roleRef: (import 'roleRef.libsonnet'), - subject: (import 'subject.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1alpha1/policyRule.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1alpha1/policyRule.libsonnet deleted file mode 100644 index ba84e15600fd..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1alpha1/policyRule.libsonnet +++ /dev/null @@ -1,26 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='policyRule', url='', help='PolicyRule holds information that describes a policy rule, but does not contain information about who the rule applies to or which namespace the rule applies to.'), - '#withApiGroups':: d.fn(help='APIGroups is the name of the APIGroup that contains the resources. If multiple API groups are specified, any action requested against one of the enumerated resources in any API group will be allowed.', args=[d.arg(name='apiGroups', type=d.T.array)]), - withApiGroups(apiGroups): { apiGroups: if std.isArray(v=apiGroups) then apiGroups else [apiGroups] }, - '#withApiGroupsMixin':: d.fn(help='APIGroups is the name of the APIGroup that contains the resources. If multiple API groups are specified, any action requested against one of the enumerated resources in any API group will be allowed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='apiGroups', type=d.T.array)]), - withApiGroupsMixin(apiGroups): { apiGroups+: if std.isArray(v=apiGroups) then apiGroups else [apiGroups] }, - '#withNonResourceURLs':: d.fn(help='NonResourceURLs is a set of partial urls that a user should have access to. *s are allowed, but only as the full, final step in the path This name is intentionally different than the internal type so that the DefaultConvert works nicely and because the ordering may be different. Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding. Rules can either apply to API resources (such as "pods" or "secrets") or non-resource URL paths (such as "/api"), but not both.', args=[d.arg(name='nonResourceURLs', type=d.T.array)]), - withNonResourceURLs(nonResourceURLs): { nonResourceURLs: if std.isArray(v=nonResourceURLs) then nonResourceURLs else [nonResourceURLs] }, - '#withNonResourceURLsMixin':: d.fn(help='NonResourceURLs is a set of partial urls that a user should have access to. *s are allowed, but only as the full, final step in the path This name is intentionally different than the internal type so that the DefaultConvert works nicely and because the ordering may be different. Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding. Rules can either apply to API resources (such as "pods" or "secrets") or non-resource URL paths (such as "/api"), but not both.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nonResourceURLs', type=d.T.array)]), - withNonResourceURLsMixin(nonResourceURLs): { nonResourceURLs+: if std.isArray(v=nonResourceURLs) then nonResourceURLs else [nonResourceURLs] }, - '#withResourceNames':: d.fn(help='ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed.', args=[d.arg(name='resourceNames', type=d.T.array)]), - withResourceNames(resourceNames): { resourceNames: if std.isArray(v=resourceNames) then resourceNames else [resourceNames] }, - '#withResourceNamesMixin':: d.fn(help='ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='resourceNames', type=d.T.array)]), - withResourceNamesMixin(resourceNames): { resourceNames+: if std.isArray(v=resourceNames) then resourceNames else [resourceNames] }, - '#withResources':: d.fn(help='Resources is a list of resources this rule applies to. ResourceAll represents all resources.', args=[d.arg(name='resources', type=d.T.array)]), - withResources(resources): { resources: if std.isArray(v=resources) then resources else [resources] }, - '#withResourcesMixin':: d.fn(help='Resources is a list of resources this rule applies to. ResourceAll represents all resources.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='resources', type=d.T.array)]), - withResourcesMixin(resources): { resources+: if std.isArray(v=resources) then resources else [resources] }, - '#withVerbs':: d.fn(help='Verbs is a list of Verbs that apply to ALL the ResourceKinds and AttributeRestrictions contained in this rule. VerbAll represents all kinds.', args=[d.arg(name='verbs', type=d.T.array)]), - withVerbs(verbs): { verbs: if std.isArray(v=verbs) then verbs else [verbs] }, - '#withVerbsMixin':: d.fn(help='Verbs is a list of Verbs that apply to ALL the ResourceKinds and AttributeRestrictions contained in this rule. VerbAll represents all kinds.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='verbs', type=d.T.array)]), - withVerbsMixin(verbs): { verbs+: if std.isArray(v=verbs) then verbs else [verbs] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1alpha1/role.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1alpha1/role.libsonnet deleted file mode 100644 index 494a22099064..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1alpha1/role.libsonnet +++ /dev/null @@ -1,97 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='role', url='', help='Role is a namespaced, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Role', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'rbac.authorization.k8s.io/v1alpha1', - kind: 'Role' - } + self.metadata.withName(name=name), - '#withRules':: d.fn(help='Rules holds all the PolicyRules for this Role', args=[d.arg(name='rules', type=d.T.array)]), - withRules(rules): { rules: if std.isArray(v=rules) then rules else [rules] }, - '#withRulesMixin':: d.fn(help='Rules holds all the PolicyRules for this Role\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='rules', type=d.T.array)]), - withRulesMixin(rules): { rules+: if std.isArray(v=rules) then rules else [rules] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1alpha1/roleBinding.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1alpha1/roleBinding.libsonnet deleted file mode 100644 index 33a859d8990f..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1alpha1/roleBinding.libsonnet +++ /dev/null @@ -1,106 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='roleBinding', url='', help='RoleBinding references a role, but does not contain it. It can reference a Role in the same namespace or a ClusterRole in the global namespace. It adds who information via Subjects and namespace information by which namespace it exists in. RoleBindings in a given namespace only have effect in that namespace.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Rolebinding', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'rbac.authorization.k8s.io/v1alpha1', - kind: 'RoleBinding' - } + self.metadata.withName(name=name), - '#roleRef':: d.obj(help='RoleRef contains information that points to the role being used'), - roleRef: { - '#withApiGroup':: d.fn(help='APIGroup is the group for the resource being referenced', args=[d.arg(name='apiGroup', type=d.T.string)]), - withApiGroup(apiGroup): { roleRef+: { apiGroup: apiGroup } }, - '#withKind':: d.fn(help='Kind is the type of resource being referenced', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { roleRef+: { kind: kind } }, - '#withName':: d.fn(help='Name is the name of resource being referenced', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { roleRef+: { name: name } } - }, - '#withSubjects':: d.fn(help='Subjects holds references to the objects the role applies to.', args=[d.arg(name='subjects', type=d.T.array)]), - withSubjects(subjects): { subjects: if std.isArray(v=subjects) then subjects else [subjects] }, - '#withSubjectsMixin':: d.fn(help='Subjects holds references to the objects the role applies to.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='subjects', type=d.T.array)]), - withSubjectsMixin(subjects): { subjects+: if std.isArray(v=subjects) then subjects else [subjects] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1alpha1/roleRef.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1alpha1/roleRef.libsonnet deleted file mode 100644 index b1cc2993173d..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1alpha1/roleRef.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='roleRef', url='', help='RoleRef contains information that points to the role being used'), - '#withApiGroup':: d.fn(help='APIGroup is the group for the resource being referenced', args=[d.arg(name='apiGroup', type=d.T.string)]), - withApiGroup(apiGroup): { apiGroup: apiGroup }, - '#withKind':: d.fn(help='Kind is the type of resource being referenced', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { kind: kind }, - '#withName':: d.fn(help='Name is the name of resource being referenced', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1alpha1/subject.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1alpha1/subject.libsonnet deleted file mode 100644 index fa66fcec9bcd..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1alpha1/subject.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='subject', url='', help='Subject contains a reference to the object or user identities a role binding applies to. This can either hold a direct API object reference, or a value for non-objects such as user and group names.'), - '#withKind':: d.fn(help='Kind of object being referenced. Values defined by this API group are "User", "Group", and "ServiceAccount". If the Authorizer does not recognized the kind value, the Authorizer should report an error.', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { kind: kind }, - '#withName':: d.fn(help='Name of the object being referenced.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withNamespace':: d.fn(help='Namespace of the referenced object. If the object kind is non-namespace, such as "User" or "Group", and this value is not empty the Authorizer should report an error.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { namespace: namespace }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1beta1/aggregationRule.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1beta1/aggregationRule.libsonnet deleted file mode 100644 index 4b1d29bfd863..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1beta1/aggregationRule.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='aggregationRule', url='', help='AggregationRule describes how to locate ClusterRoles to aggregate into the ClusterRole'), - '#withClusterRoleSelectors':: d.fn(help="ClusterRoleSelectors holds a list of selectors which will be used to find ClusterRoles and create the rules. If any of the selectors match, then the ClusterRole's permissions will be added", args=[d.arg(name='clusterRoleSelectors', type=d.T.array)]), - withClusterRoleSelectors(clusterRoleSelectors): { clusterRoleSelectors: if std.isArray(v=clusterRoleSelectors) then clusterRoleSelectors else [clusterRoleSelectors] }, - '#withClusterRoleSelectorsMixin':: d.fn(help="ClusterRoleSelectors holds a list of selectors which will be used to find ClusterRoles and create the rules. If any of the selectors match, then the ClusterRole's permissions will be added\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='clusterRoleSelectors', type=d.T.array)]), - withClusterRoleSelectorsMixin(clusterRoleSelectors): { clusterRoleSelectors+: if std.isArray(v=clusterRoleSelectors) then clusterRoleSelectors else [clusterRoleSelectors] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1beta1/clusterRole.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1beta1/clusterRole.libsonnet deleted file mode 100644 index 3052847fbe99..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1beta1/clusterRole.libsonnet +++ /dev/null @@ -1,104 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='clusterRole', url='', help='ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding.'), - '#aggregationRule':: d.obj(help='AggregationRule describes how to locate ClusterRoles to aggregate into the ClusterRole'), - aggregationRule: { - '#withClusterRoleSelectors':: d.fn(help="ClusterRoleSelectors holds a list of selectors which will be used to find ClusterRoles and create the rules. If any of the selectors match, then the ClusterRole's permissions will be added", args=[d.arg(name='clusterRoleSelectors', type=d.T.array)]), - withClusterRoleSelectors(clusterRoleSelectors): { aggregationRule+: { clusterRoleSelectors: if std.isArray(v=clusterRoleSelectors) then clusterRoleSelectors else [clusterRoleSelectors] } }, - '#withClusterRoleSelectorsMixin':: d.fn(help="ClusterRoleSelectors holds a list of selectors which will be used to find ClusterRoles and create the rules. If any of the selectors match, then the ClusterRole's permissions will be added\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='clusterRoleSelectors', type=d.T.array)]), - withClusterRoleSelectorsMixin(clusterRoleSelectors): { aggregationRule+: { clusterRoleSelectors+: if std.isArray(v=clusterRoleSelectors) then clusterRoleSelectors else [clusterRoleSelectors] } } - }, - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Clusterrole', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'rbac.authorization.k8s.io/v1beta1', - kind: 'ClusterRole' - } + self.metadata.withName(name=name), - '#withRules':: d.fn(help='Rules holds all the PolicyRules for this ClusterRole', args=[d.arg(name='rules', type=d.T.array)]), - withRules(rules): { rules: if std.isArray(v=rules) then rules else [rules] }, - '#withRulesMixin':: d.fn(help='Rules holds all the PolicyRules for this ClusterRole\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='rules', type=d.T.array)]), - withRulesMixin(rules): { rules+: if std.isArray(v=rules) then rules else [rules] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1beta1/clusterRoleBinding.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1beta1/clusterRoleBinding.libsonnet deleted file mode 100644 index 650dd36e1334..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1beta1/clusterRoleBinding.libsonnet +++ /dev/null @@ -1,106 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='clusterRoleBinding', url='', help='ClusterRoleBinding references a ClusterRole, but not contain it. It can reference a ClusterRole in the global namespace, and adds who information via Subject.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Clusterrolebinding', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'rbac.authorization.k8s.io/v1beta1', - kind: 'ClusterRoleBinding' - } + self.metadata.withName(name=name), - '#roleRef':: d.obj(help='RoleRef contains information that points to the role being used'), - roleRef: { - '#withApiGroup':: d.fn(help='APIGroup is the group for the resource being referenced', args=[d.arg(name='apiGroup', type=d.T.string)]), - withApiGroup(apiGroup): { roleRef+: { apiGroup: apiGroup } }, - '#withKind':: d.fn(help='Kind is the type of resource being referenced', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { roleRef+: { kind: kind } }, - '#withName':: d.fn(help='Name is the name of resource being referenced', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { roleRef+: { name: name } } - }, - '#withSubjects':: d.fn(help='Subjects holds references to the objects the role applies to.', args=[d.arg(name='subjects', type=d.T.array)]), - withSubjects(subjects): { subjects: if std.isArray(v=subjects) then subjects else [subjects] }, - '#withSubjectsMixin':: d.fn(help='Subjects holds references to the objects the role applies to.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='subjects', type=d.T.array)]), - withSubjectsMixin(subjects): { subjects+: if std.isArray(v=subjects) then subjects else [subjects] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1beta1/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1beta1/main.libsonnet deleted file mode 100644 index 31d3beb66934..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1beta1/main.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1beta1', url='', help=''), - aggregationRule: (import 'aggregationRule.libsonnet'), - clusterRole: (import 'clusterRole.libsonnet'), - clusterRoleBinding: (import 'clusterRoleBinding.libsonnet'), - policyRule: (import 'policyRule.libsonnet'), - role: (import 'role.libsonnet'), - roleBinding: (import 'roleBinding.libsonnet'), - roleRef: (import 'roleRef.libsonnet'), - subject: (import 'subject.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1beta1/policyRule.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1beta1/policyRule.libsonnet deleted file mode 100644 index c1e6ca646d09..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1beta1/policyRule.libsonnet +++ /dev/null @@ -1,26 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='policyRule', url='', help='PolicyRule holds information that describes a policy rule, but does not contain information about who the rule applies to or which namespace the rule applies to.'), - '#withApiGroups':: d.fn(help='APIGroups is the name of the APIGroup that contains the resources. If multiple API groups are specified, any action requested against one of the enumerated resources in any API group will be allowed.', args=[d.arg(name='apiGroups', type=d.T.array)]), - withApiGroups(apiGroups): { apiGroups: if std.isArray(v=apiGroups) then apiGroups else [apiGroups] }, - '#withApiGroupsMixin':: d.fn(help='APIGroups is the name of the APIGroup that contains the resources. If multiple API groups are specified, any action requested against one of the enumerated resources in any API group will be allowed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='apiGroups', type=d.T.array)]), - withApiGroupsMixin(apiGroups): { apiGroups+: if std.isArray(v=apiGroups) then apiGroups else [apiGroups] }, - '#withNonResourceURLs':: d.fn(help='NonResourceURLs is a set of partial urls that a user should have access to. *s are allowed, but only as the full, final step in the path Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding. Rules can either apply to API resources (such as "pods" or "secrets") or non-resource URL paths (such as "/api"), but not both.', args=[d.arg(name='nonResourceURLs', type=d.T.array)]), - withNonResourceURLs(nonResourceURLs): { nonResourceURLs: if std.isArray(v=nonResourceURLs) then nonResourceURLs else [nonResourceURLs] }, - '#withNonResourceURLsMixin':: d.fn(help='NonResourceURLs is a set of partial urls that a user should have access to. *s are allowed, but only as the full, final step in the path Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding. Rules can either apply to API resources (such as "pods" or "secrets") or non-resource URL paths (such as "/api"), but not both.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nonResourceURLs', type=d.T.array)]), - withNonResourceURLsMixin(nonResourceURLs): { nonResourceURLs+: if std.isArray(v=nonResourceURLs) then nonResourceURLs else [nonResourceURLs] }, - '#withResourceNames':: d.fn(help='ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed.', args=[d.arg(name='resourceNames', type=d.T.array)]), - withResourceNames(resourceNames): { resourceNames: if std.isArray(v=resourceNames) then resourceNames else [resourceNames] }, - '#withResourceNamesMixin':: d.fn(help='ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='resourceNames', type=d.T.array)]), - withResourceNamesMixin(resourceNames): { resourceNames+: if std.isArray(v=resourceNames) then resourceNames else [resourceNames] }, - '#withResources':: d.fn(help="Resources is a list of resources this rule applies to. '*' represents all resources in the specified apiGroups. '*/foo' represents the subresource 'foo' for all resources in the specified apiGroups.", args=[d.arg(name='resources', type=d.T.array)]), - withResources(resources): { resources: if std.isArray(v=resources) then resources else [resources] }, - '#withResourcesMixin':: d.fn(help="Resources is a list of resources this rule applies to. '*' represents all resources in the specified apiGroups. '*/foo' represents the subresource 'foo' for all resources in the specified apiGroups.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='resources', type=d.T.array)]), - withResourcesMixin(resources): { resources+: if std.isArray(v=resources) then resources else [resources] }, - '#withVerbs':: d.fn(help='Verbs is a list of Verbs that apply to ALL the ResourceKinds and AttributeRestrictions contained in this rule. VerbAll represents all kinds.', args=[d.arg(name='verbs', type=d.T.array)]), - withVerbs(verbs): { verbs: if std.isArray(v=verbs) then verbs else [verbs] }, - '#withVerbsMixin':: d.fn(help='Verbs is a list of Verbs that apply to ALL the ResourceKinds and AttributeRestrictions contained in this rule. VerbAll represents all kinds.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='verbs', type=d.T.array)]), - withVerbsMixin(verbs): { verbs+: if std.isArray(v=verbs) then verbs else [verbs] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1beta1/role.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1beta1/role.libsonnet deleted file mode 100644 index 673c5473f4ab..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1beta1/role.libsonnet +++ /dev/null @@ -1,97 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='role', url='', help='Role is a namespaced, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Role', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'rbac.authorization.k8s.io/v1beta1', - kind: 'Role' - } + self.metadata.withName(name=name), - '#withRules':: d.fn(help='Rules holds all the PolicyRules for this Role', args=[d.arg(name='rules', type=d.T.array)]), - withRules(rules): { rules: if std.isArray(v=rules) then rules else [rules] }, - '#withRulesMixin':: d.fn(help='Rules holds all the PolicyRules for this Role\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='rules', type=d.T.array)]), - withRulesMixin(rules): { rules+: if std.isArray(v=rules) then rules else [rules] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1beta1/roleBinding.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1beta1/roleBinding.libsonnet deleted file mode 100644 index c59acdfc2a0b..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1beta1/roleBinding.libsonnet +++ /dev/null @@ -1,106 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='roleBinding', url='', help='RoleBinding references a role, but does not contain it. It can reference a Role in the same namespace or a ClusterRole in the global namespace. It adds who information via Subjects and namespace information by which namespace it exists in. RoleBindings in a given namespace only have effect in that namespace.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Rolebinding', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'rbac.authorization.k8s.io/v1beta1', - kind: 'RoleBinding' - } + self.metadata.withName(name=name), - '#roleRef':: d.obj(help='RoleRef contains information that points to the role being used'), - roleRef: { - '#withApiGroup':: d.fn(help='APIGroup is the group for the resource being referenced', args=[d.arg(name='apiGroup', type=d.T.string)]), - withApiGroup(apiGroup): { roleRef+: { apiGroup: apiGroup } }, - '#withKind':: d.fn(help='Kind is the type of resource being referenced', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { roleRef+: { kind: kind } }, - '#withName':: d.fn(help='Name is the name of resource being referenced', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { roleRef+: { name: name } } - }, - '#withSubjects':: d.fn(help='Subjects holds references to the objects the role applies to.', args=[d.arg(name='subjects', type=d.T.array)]), - withSubjects(subjects): { subjects: if std.isArray(v=subjects) then subjects else [subjects] }, - '#withSubjectsMixin':: d.fn(help='Subjects holds references to the objects the role applies to.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='subjects', type=d.T.array)]), - withSubjectsMixin(subjects): { subjects+: if std.isArray(v=subjects) then subjects else [subjects] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1beta1/roleRef.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1beta1/roleRef.libsonnet deleted file mode 100644 index b1cc2993173d..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1beta1/roleRef.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='roleRef', url='', help='RoleRef contains information that points to the role being used'), - '#withApiGroup':: d.fn(help='APIGroup is the group for the resource being referenced', args=[d.arg(name='apiGroup', type=d.T.string)]), - withApiGroup(apiGroup): { apiGroup: apiGroup }, - '#withKind':: d.fn(help='Kind is the type of resource being referenced', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { kind: kind }, - '#withName':: d.fn(help='Name is the name of resource being referenced', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1beta1/subject.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1beta1/subject.libsonnet deleted file mode 100644 index 9466f1e70b44..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/rbac/v1beta1/subject.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='subject', url='', help='Subject contains a reference to the object or user identities a role binding applies to. This can either hold a direct API object reference, or a value for non-objects such as user and group names.'), - '#withApiGroup':: d.fn(help='APIGroup holds the API group of the referenced subject. Defaults to "" for ServiceAccount subjects. Defaults to "rbac.authorization.k8s.io" for User and Group subjects.', args=[d.arg(name='apiGroup', type=d.T.string)]), - withApiGroup(apiGroup): { apiGroup: apiGroup }, - '#withKind':: d.fn(help='Kind of object being referenced. Values defined by this API group are "User", "Group", and "ServiceAccount". If the Authorizer does not recognized the kind value, the Authorizer should report an error.', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { kind: kind }, - '#withName':: d.fn(help='Name of the object being referenced.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withNamespace':: d.fn(help='Namespace of the referenced object. If the object kind is non-namespace, such as "User" or "Group", and this value is not empty the Authorizer should report an error.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { namespace: namespace }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/scheduling/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/scheduling/main.libsonnet deleted file mode 100644 index 08e0f0defd45..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/scheduling/main.libsonnet +++ /dev/null @@ -1,7 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='scheduling', url='', help=''), - v1: (import 'v1/main.libsonnet'), - v1alpha1: (import 'v1alpha1/main.libsonnet'), - v1beta1: (import 'v1beta1/main.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/scheduling/v1/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/scheduling/v1/main.libsonnet deleted file mode 100644 index ec965959b430..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/scheduling/v1/main.libsonnet +++ /dev/null @@ -1,5 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1', url='', help=''), - priorityClass: (import 'priorityClass.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/scheduling/v1/priorityClass.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/scheduling/v1/priorityClass.libsonnet deleted file mode 100644 index 0830053ab8c2..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/scheduling/v1/priorityClass.libsonnet +++ /dev/null @@ -1,99 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='priorityClass', url='', help='PriorityClass defines mapping from a priority class name to the priority integer value. The value can be any valid integer.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Priorityclass', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'scheduling.k8s.io/v1', - kind: 'PriorityClass' - } + self.metadata.withName(name=name), - '#withDescription':: d.fn(help='description is an arbitrary string that usually provides guidelines on when this priority class should be used.', args=[d.arg(name='description', type=d.T.string)]), - withDescription(description): { description: description }, - '#withGlobalDefault':: d.fn(help='globalDefault specifies whether this PriorityClass should be considered as the default priority for pods that do not have any priority class. Only one PriorityClass can be marked as `globalDefault`. However, if more than one PriorityClasses exists with their `globalDefault` field set to true, the smallest value of such global default PriorityClasses will be used as the default priority.', args=[d.arg(name='globalDefault', type=d.T.boolean)]), - withGlobalDefault(globalDefault): { globalDefault: globalDefault }, - '#withValue':: d.fn(help='The value of this priority class. This is the actual priority that pods receive when they have the name of this class in their pod spec.', args=[d.arg(name='value', type=d.T.integer)]), - withValue(value): { value: value }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/scheduling/v1alpha1/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/scheduling/v1alpha1/main.libsonnet deleted file mode 100644 index c8441af41c84..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/scheduling/v1alpha1/main.libsonnet +++ /dev/null @@ -1,5 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1alpha1', url='', help=''), - priorityClass: (import 'priorityClass.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/scheduling/v1alpha1/priorityClass.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/scheduling/v1alpha1/priorityClass.libsonnet deleted file mode 100644 index a59c1e4002b5..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/scheduling/v1alpha1/priorityClass.libsonnet +++ /dev/null @@ -1,99 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='priorityClass', url='', help='DEPRECATED - This group version of PriorityClass is deprecated by scheduling.k8s.io/v1/PriorityClass. PriorityClass defines mapping from a priority class name to the priority integer value. The value can be any valid integer.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Priorityclass', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'scheduling.k8s.io/v1alpha1', - kind: 'PriorityClass' - } + self.metadata.withName(name=name), - '#withDescription':: d.fn(help='description is an arbitrary string that usually provides guidelines on when this priority class should be used.', args=[d.arg(name='description', type=d.T.string)]), - withDescription(description): { description: description }, - '#withGlobalDefault':: d.fn(help='globalDefault specifies whether this PriorityClass should be considered as the default priority for pods that do not have any priority class. Only one PriorityClass can be marked as `globalDefault`. However, if more than one PriorityClasses exists with their `globalDefault` field set to true, the smallest value of such global default PriorityClasses will be used as the default priority.', args=[d.arg(name='globalDefault', type=d.T.boolean)]), - withGlobalDefault(globalDefault): { globalDefault: globalDefault }, - '#withValue':: d.fn(help='The value of this priority class. This is the actual priority that pods receive when they have the name of this class in their pod spec.', args=[d.arg(name='value', type=d.T.integer)]), - withValue(value): { value: value }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/scheduling/v1beta1/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/scheduling/v1beta1/main.libsonnet deleted file mode 100644 index f6c602f67ac3..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/scheduling/v1beta1/main.libsonnet +++ /dev/null @@ -1,5 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1beta1', url='', help=''), - priorityClass: (import 'priorityClass.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/scheduling/v1beta1/priorityClass.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/scheduling/v1beta1/priorityClass.libsonnet deleted file mode 100644 index 3da236b7701f..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/scheduling/v1beta1/priorityClass.libsonnet +++ /dev/null @@ -1,99 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='priorityClass', url='', help='DEPRECATED - This group version of PriorityClass is deprecated by scheduling.k8s.io/v1/PriorityClass. PriorityClass defines mapping from a priority class name to the priority integer value. The value can be any valid integer.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Priorityclass', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'scheduling.k8s.io/v1beta1', - kind: 'PriorityClass' - } + self.metadata.withName(name=name), - '#withDescription':: d.fn(help='description is an arbitrary string that usually provides guidelines on when this priority class should be used.', args=[d.arg(name='description', type=d.T.string)]), - withDescription(description): { description: description }, - '#withGlobalDefault':: d.fn(help='globalDefault specifies whether this PriorityClass should be considered as the default priority for pods that do not have any priority class. Only one PriorityClass can be marked as `globalDefault`. However, if more than one PriorityClasses exists with their `globalDefault` field set to true, the smallest value of such global default PriorityClasses will be used as the default priority.', args=[d.arg(name='globalDefault', type=d.T.boolean)]), - withGlobalDefault(globalDefault): { globalDefault: globalDefault }, - '#withValue':: d.fn(help='The value of this priority class. This is the actual priority that pods receive when they have the name of this class in their pod spec.', args=[d.arg(name='value', type=d.T.integer)]), - withValue(value): { value: value }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/settings/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/settings/main.libsonnet deleted file mode 100644 index b0a9b19fa2ee..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/settings/main.libsonnet +++ /dev/null @@ -1,5 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='settings', url='', help=''), - v1alpha1: (import 'v1alpha1/main.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/settings/v1alpha1/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/settings/v1alpha1/main.libsonnet deleted file mode 100644 index 2d1fd4f07bab..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/settings/v1alpha1/main.libsonnet +++ /dev/null @@ -1,6 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1alpha1', url='', help=''), - podPreset: (import 'podPreset.libsonnet'), - podPresetSpec: (import 'podPresetSpec.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/settings/v1alpha1/podPreset.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/settings/v1alpha1/podPreset.libsonnet deleted file mode 100644 index 128a4dc56081..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/settings/v1alpha1/podPreset.libsonnet +++ /dev/null @@ -1,123 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='podPreset', url='', help='PodPreset is a policy resource that defines additional runtime requirements for a Pod.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Podpreset', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'settings.k8s.io/v1alpha1', - kind: 'PodPreset' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='PodPresetSpec is a description of a pod preset.'), - spec: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { spec+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { spec+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { spec+: { selector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { spec+: { selector+: { matchLabels+: matchLabels } } } - }, - '#withEnv':: d.fn(help='Env defines the collection of EnvVar to inject into containers.', args=[d.arg(name='env', type=d.T.array)]), - withEnv(env): { spec+: { env: if std.isArray(v=env) then env else [env] } }, - '#withEnvFrom':: d.fn(help='EnvFrom defines the collection of EnvFromSource to inject into containers.', args=[d.arg(name='envFrom', type=d.T.array)]), - withEnvFrom(envFrom): { spec+: { envFrom: if std.isArray(v=envFrom) then envFrom else [envFrom] } }, - '#withEnvFromMixin':: d.fn(help='EnvFrom defines the collection of EnvFromSource to inject into containers.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='envFrom', type=d.T.array)]), - withEnvFromMixin(envFrom): { spec+: { envFrom+: if std.isArray(v=envFrom) then envFrom else [envFrom] } }, - '#withEnvMixin':: d.fn(help='Env defines the collection of EnvVar to inject into containers.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='env', type=d.T.array)]), - withEnvMixin(env): { spec+: { env+: if std.isArray(v=env) then env else [env] } }, - '#withVolumeMounts':: d.fn(help='VolumeMounts defines the collection of VolumeMount to inject into containers.', args=[d.arg(name='volumeMounts', type=d.T.array)]), - withVolumeMounts(volumeMounts): { spec+: { volumeMounts: if std.isArray(v=volumeMounts) then volumeMounts else [volumeMounts] } }, - '#withVolumeMountsMixin':: d.fn(help='VolumeMounts defines the collection of VolumeMount to inject into containers.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumeMounts', type=d.T.array)]), - withVolumeMountsMixin(volumeMounts): { spec+: { volumeMounts+: if std.isArray(v=volumeMounts) then volumeMounts else [volumeMounts] } }, - '#withVolumes':: d.fn(help='Volumes defines the collection of Volume to inject into the pod.', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } }, - '#withVolumesMixin':: d.fn(help='Volumes defines the collection of Volume to inject into the pod.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/settings/v1alpha1/podPresetSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/settings/v1alpha1/podPresetSpec.libsonnet deleted file mode 100644 index 837afa4d7d8a..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/settings/v1alpha1/podPresetSpec.libsonnet +++ /dev/null @@ -1,33 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='podPresetSpec', url='', help='PodPresetSpec is a description of a pod preset.'), - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { selector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { selector+: { matchLabels+: matchLabels } } - }, - '#withEnv':: d.fn(help='Env defines the collection of EnvVar to inject into containers.', args=[d.arg(name='env', type=d.T.array)]), - withEnv(env): { env: if std.isArray(v=env) then env else [env] }, - '#withEnvFrom':: d.fn(help='EnvFrom defines the collection of EnvFromSource to inject into containers.', args=[d.arg(name='envFrom', type=d.T.array)]), - withEnvFrom(envFrom): { envFrom: if std.isArray(v=envFrom) then envFrom else [envFrom] }, - '#withEnvFromMixin':: d.fn(help='EnvFrom defines the collection of EnvFromSource to inject into containers.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='envFrom', type=d.T.array)]), - withEnvFromMixin(envFrom): { envFrom+: if std.isArray(v=envFrom) then envFrom else [envFrom] }, - '#withEnvMixin':: d.fn(help='Env defines the collection of EnvVar to inject into containers.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='env', type=d.T.array)]), - withEnvMixin(env): { env+: if std.isArray(v=env) then env else [env] }, - '#withVolumeMounts':: d.fn(help='VolumeMounts defines the collection of VolumeMount to inject into containers.', args=[d.arg(name='volumeMounts', type=d.T.array)]), - withVolumeMounts(volumeMounts): { volumeMounts: if std.isArray(v=volumeMounts) then volumeMounts else [volumeMounts] }, - '#withVolumeMountsMixin':: d.fn(help='VolumeMounts defines the collection of VolumeMount to inject into containers.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumeMounts', type=d.T.array)]), - withVolumeMountsMixin(volumeMounts): { volumeMounts+: if std.isArray(v=volumeMounts) then volumeMounts else [volumeMounts] }, - '#withVolumes':: d.fn(help='Volumes defines the collection of Volume to inject into the pod.', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { volumes: if std.isArray(v=volumes) then volumes else [volumes] }, - '#withVolumesMixin':: d.fn(help='Volumes defines the collection of Volume to inject into the pod.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { volumes+: if std.isArray(v=volumes) then volumes else [volumes] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/main.libsonnet deleted file mode 100644 index 7c28456bc928..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/main.libsonnet +++ /dev/null @@ -1,7 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='storage', url='', help=''), - v1: (import 'v1/main.libsonnet'), - v1alpha1: (import 'v1alpha1/main.libsonnet'), - v1beta1: (import 'v1beta1/main.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1/main.libsonnet deleted file mode 100644 index 4d95b020439d..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1/main.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1', url='', help=''), - storageClass: (import 'storageClass.libsonnet'), - volumeAttachment: (import 'volumeAttachment.libsonnet'), - volumeAttachmentSource: (import 'volumeAttachmentSource.libsonnet'), - volumeAttachmentSpec: (import 'volumeAttachmentSpec.libsonnet'), - volumeAttachmentStatus: (import 'volumeAttachmentStatus.libsonnet'), - volumeError: (import 'volumeError.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1/storageClass.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1/storageClass.libsonnet deleted file mode 100644 index f2c102044511..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1/storageClass.libsonnet +++ /dev/null @@ -1,113 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='storageClass', url='', help='StorageClass describes the parameters for a class of storage for which PersistentVolumes can be dynamically provisioned.\n\nStorageClasses are non-namespaced; the name of the storage class according to etcd is in ObjectMeta.Name.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Storageclass', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'storage.k8s.io/v1', - kind: 'StorageClass' - } + self.metadata.withName(name=name), - '#withAllowVolumeExpansion':: d.fn(help='AllowVolumeExpansion shows whether the storage class allow volume expand', args=[d.arg(name='allowVolumeExpansion', type=d.T.boolean)]), - withAllowVolumeExpansion(allowVolumeExpansion): { allowVolumeExpansion: allowVolumeExpansion }, - '#withAllowedTopologies':: d.fn(help='Restrict the node topologies where volumes can be dynamically provisioned. Each volume plugin defines its own supported topology specifications. An empty TopologySelectorTerm list means there is no topology restriction. This field is only honored by servers that enable the VolumeScheduling feature.', args=[d.arg(name='allowedTopologies', type=d.T.array)]), - withAllowedTopologies(allowedTopologies): { allowedTopologies: if std.isArray(v=allowedTopologies) then allowedTopologies else [allowedTopologies] }, - '#withAllowedTopologiesMixin':: d.fn(help='Restrict the node topologies where volumes can be dynamically provisioned. Each volume plugin defines its own supported topology specifications. An empty TopologySelectorTerm list means there is no topology restriction. This field is only honored by servers that enable the VolumeScheduling feature.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='allowedTopologies', type=d.T.array)]), - withAllowedTopologiesMixin(allowedTopologies): { allowedTopologies+: if std.isArray(v=allowedTopologies) then allowedTopologies else [allowedTopologies] }, - '#withMountOptions':: d.fn(help='Dynamically provisioned PersistentVolumes of this storage class are created with these mountOptions, e.g. ["ro", "soft"]. Not validated - mount of the PVs will simply fail if one is invalid.', args=[d.arg(name='mountOptions', type=d.T.array)]), - withMountOptions(mountOptions): { mountOptions: if std.isArray(v=mountOptions) then mountOptions else [mountOptions] }, - '#withMountOptionsMixin':: d.fn(help='Dynamically provisioned PersistentVolumes of this storage class are created with these mountOptions, e.g. ["ro", "soft"]. Not validated - mount of the PVs will simply fail if one is invalid.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='mountOptions', type=d.T.array)]), - withMountOptionsMixin(mountOptions): { mountOptions+: if std.isArray(v=mountOptions) then mountOptions else [mountOptions] }, - '#withParameters':: d.fn(help='Parameters holds the parameters for the provisioner that should create volumes of this storage class.', args=[d.arg(name='parameters', type=d.T.object)]), - withParameters(parameters): { parameters: parameters }, - '#withParametersMixin':: d.fn(help='Parameters holds the parameters for the provisioner that should create volumes of this storage class.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='parameters', type=d.T.object)]), - withParametersMixin(parameters): { parameters+: parameters }, - '#withProvisioner':: d.fn(help='Provisioner indicates the type of the provisioner.', args=[d.arg(name='provisioner', type=d.T.string)]), - withProvisioner(provisioner): { provisioner: provisioner }, - '#withReclaimPolicy':: d.fn(help='Dynamically provisioned PersistentVolumes of this storage class are created with this reclaimPolicy. Defaults to Delete.', args=[d.arg(name='reclaimPolicy', type=d.T.string)]), - withReclaimPolicy(reclaimPolicy): { reclaimPolicy: reclaimPolicy }, - '#withVolumeBindingMode':: d.fn(help='VolumeBindingMode indicates how PersistentVolumeClaims should be provisioned and bound. When unset, VolumeBindingImmediate is used. This field is only honored by servers that enable the VolumeScheduling feature.', args=[d.arg(name='volumeBindingMode', type=d.T.string)]), - withVolumeBindingMode(volumeBindingMode): { volumeBindingMode: volumeBindingMode }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1/volumeAttachment.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1/volumeAttachment.libsonnet deleted file mode 100644 index d6120a05ff62..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1/volumeAttachment.libsonnet +++ /dev/null @@ -1,105 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='volumeAttachment', url='', help='VolumeAttachment captures the intent to attach or detach the specified volume to/from the specified node.\n\nVolumeAttachment objects are non-namespaced.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Volumeattachment', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'storage.k8s.io/v1', - kind: 'VolumeAttachment' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='VolumeAttachmentSpec is the specification of a VolumeAttachment request.'), - spec: { - '#source':: d.obj(help='VolumeAttachmentSource represents a volume that should be attached. Right now only PersistenVolumes can be attached via external attacher, in future we may allow also inline volumes in pods. Exactly one member can be set.'), - source: { - '#withPersistentVolumeName':: d.fn(help='Name of the persistent volume to attach.', args=[d.arg(name='persistentVolumeName', type=d.T.string)]), - withPersistentVolumeName(persistentVolumeName): { spec+: { source+: { persistentVolumeName: persistentVolumeName } } } - }, - '#withAttacher':: d.fn(help='Attacher indicates the name of the volume driver that MUST handle this request. This is the name returned by GetPluginName().', args=[d.arg(name='attacher', type=d.T.string)]), - withAttacher(attacher): { spec+: { attacher: attacher } }, - '#withNodeName':: d.fn(help='The node that the volume should be attached to.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { spec+: { nodeName: nodeName } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1/volumeAttachmentSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1/volumeAttachmentSource.libsonnet deleted file mode 100644 index 43f683ee89e9..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1/volumeAttachmentSource.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='volumeAttachmentSource', url='', help='VolumeAttachmentSource represents a volume that should be attached. Right now only PersistenVolumes can be attached via external attacher, in future we may allow also inline volumes in pods. Exactly one member can be set.'), - '#withPersistentVolumeName':: d.fn(help='Name of the persistent volume to attach.', args=[d.arg(name='persistentVolumeName', type=d.T.string)]), - withPersistentVolumeName(persistentVolumeName): { persistentVolumeName: persistentVolumeName }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1/volumeAttachmentSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1/volumeAttachmentSpec.libsonnet deleted file mode 100644 index fdec9b4a8a68..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1/volumeAttachmentSpec.libsonnet +++ /dev/null @@ -1,15 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='volumeAttachmentSpec', url='', help='VolumeAttachmentSpec is the specification of a VolumeAttachment request.'), - '#source':: d.obj(help='VolumeAttachmentSource represents a volume that should be attached. Right now only PersistenVolumes can be attached via external attacher, in future we may allow also inline volumes in pods. Exactly one member can be set.'), - source: { - '#withPersistentVolumeName':: d.fn(help='Name of the persistent volume to attach.', args=[d.arg(name='persistentVolumeName', type=d.T.string)]), - withPersistentVolumeName(persistentVolumeName): { source+: { persistentVolumeName: persistentVolumeName } } - }, - '#withAttacher':: d.fn(help='Attacher indicates the name of the volume driver that MUST handle this request. This is the name returned by GetPluginName().', args=[d.arg(name='attacher', type=d.T.string)]), - withAttacher(attacher): { attacher: attacher }, - '#withNodeName':: d.fn(help='The node that the volume should be attached to.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { nodeName: nodeName }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1/volumeAttachmentStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1/volumeAttachmentStatus.libsonnet deleted file mode 100644 index 3cb2dee1961a..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1/volumeAttachmentStatus.libsonnet +++ /dev/null @@ -1,26 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='volumeAttachmentStatus', url='', help='VolumeAttachmentStatus is the status of a VolumeAttachment request.'), - '#attachError':: d.obj(help='VolumeError captures an error encountered during a volume operation.'), - attachError: { - '#withMessage':: d.fn(help='String detailing the error encountered during Attach or Detach operation. This string may be logged, so it should not contain sensitive information.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { attachError+: { message: message } }, - '#withTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='time', type=d.T.string)]), - withTime(time): { attachError+: { time: time } } - }, - '#detachError':: d.obj(help='VolumeError captures an error encountered during a volume operation.'), - detachError: { - '#withMessage':: d.fn(help='String detailing the error encountered during Attach or Detach operation. This string may be logged, so it should not contain sensitive information.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { detachError+: { message: message } }, - '#withTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='time', type=d.T.string)]), - withTime(time): { detachError+: { time: time } } - }, - '#withAttached':: d.fn(help='Indicates the volume is successfully attached. This field must only be set by the entity completing the attach operation, i.e. the external-attacher.', args=[d.arg(name='attached', type=d.T.boolean)]), - withAttached(attached): { attached: attached }, - '#withAttachmentMetadata':: d.fn(help='Upon successful attach, this field is populated with any information returned by the attach operation that must be passed into subsequent WaitForAttach or Mount calls. This field must only be set by the entity completing the attach operation, i.e. the external-attacher.', args=[d.arg(name='attachmentMetadata', type=d.T.object)]), - withAttachmentMetadata(attachmentMetadata): { attachmentMetadata: attachmentMetadata }, - '#withAttachmentMetadataMixin':: d.fn(help='Upon successful attach, this field is populated with any information returned by the attach operation that must be passed into subsequent WaitForAttach or Mount calls. This field must only be set by the entity completing the attach operation, i.e. the external-attacher.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='attachmentMetadata', type=d.T.object)]), - withAttachmentMetadataMixin(attachmentMetadata): { attachmentMetadata+: attachmentMetadata }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1/volumeError.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1/volumeError.libsonnet deleted file mode 100644 index 8da9b68aaf24..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1/volumeError.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='volumeError', url='', help='VolumeError captures an error encountered during a volume operation.'), - '#withMessage':: d.fn(help='String detailing the error encountered during Attach or Detach operation. This string may be logged, so it should not contain sensitive information.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='time', type=d.T.string)]), - withTime(time): { time: time }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1alpha1/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1alpha1/main.libsonnet deleted file mode 100644 index 88e3780669b7..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1alpha1/main.libsonnet +++ /dev/null @@ -1,9 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1alpha1', url='', help=''), - volumeAttachment: (import 'volumeAttachment.libsonnet'), - volumeAttachmentSource: (import 'volumeAttachmentSource.libsonnet'), - volumeAttachmentSpec: (import 'volumeAttachmentSpec.libsonnet'), - volumeAttachmentStatus: (import 'volumeAttachmentStatus.libsonnet'), - volumeError: (import 'volumeError.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1alpha1/volumeAttachment.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1alpha1/volumeAttachment.libsonnet deleted file mode 100644 index e1e626fd2565..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1alpha1/volumeAttachment.libsonnet +++ /dev/null @@ -1,105 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='volumeAttachment', url='', help='VolumeAttachment captures the intent to attach or detach the specified volume to/from the specified node.\n\nVolumeAttachment objects are non-namespaced.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Volumeattachment', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'storage.k8s.io/v1alpha1', - kind: 'VolumeAttachment' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='VolumeAttachmentSpec is the specification of a VolumeAttachment request.'), - spec: { - '#source':: d.obj(help='VolumeAttachmentSource represents a volume that should be attached. Right now only PersistenVolumes can be attached via external attacher, in future we may allow also inline volumes in pods. Exactly one member can be set.'), - source: { - '#withPersistentVolumeName':: d.fn(help='Name of the persistent volume to attach.', args=[d.arg(name='persistentVolumeName', type=d.T.string)]), - withPersistentVolumeName(persistentVolumeName): { spec+: { source+: { persistentVolumeName: persistentVolumeName } } } - }, - '#withAttacher':: d.fn(help='Attacher indicates the name of the volume driver that MUST handle this request. This is the name returned by GetPluginName().', args=[d.arg(name='attacher', type=d.T.string)]), - withAttacher(attacher): { spec+: { attacher: attacher } }, - '#withNodeName':: d.fn(help='The node that the volume should be attached to.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { spec+: { nodeName: nodeName } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1alpha1/volumeAttachmentSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1alpha1/volumeAttachmentSource.libsonnet deleted file mode 100644 index 43f683ee89e9..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1alpha1/volumeAttachmentSource.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='volumeAttachmentSource', url='', help='VolumeAttachmentSource represents a volume that should be attached. Right now only PersistenVolumes can be attached via external attacher, in future we may allow also inline volumes in pods. Exactly one member can be set.'), - '#withPersistentVolumeName':: d.fn(help='Name of the persistent volume to attach.', args=[d.arg(name='persistentVolumeName', type=d.T.string)]), - withPersistentVolumeName(persistentVolumeName): { persistentVolumeName: persistentVolumeName }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1alpha1/volumeAttachmentSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1alpha1/volumeAttachmentSpec.libsonnet deleted file mode 100644 index fdec9b4a8a68..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1alpha1/volumeAttachmentSpec.libsonnet +++ /dev/null @@ -1,15 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='volumeAttachmentSpec', url='', help='VolumeAttachmentSpec is the specification of a VolumeAttachment request.'), - '#source':: d.obj(help='VolumeAttachmentSource represents a volume that should be attached. Right now only PersistenVolumes can be attached via external attacher, in future we may allow also inline volumes in pods. Exactly one member can be set.'), - source: { - '#withPersistentVolumeName':: d.fn(help='Name of the persistent volume to attach.', args=[d.arg(name='persistentVolumeName', type=d.T.string)]), - withPersistentVolumeName(persistentVolumeName): { source+: { persistentVolumeName: persistentVolumeName } } - }, - '#withAttacher':: d.fn(help='Attacher indicates the name of the volume driver that MUST handle this request. This is the name returned by GetPluginName().', args=[d.arg(name='attacher', type=d.T.string)]), - withAttacher(attacher): { attacher: attacher }, - '#withNodeName':: d.fn(help='The node that the volume should be attached to.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { nodeName: nodeName }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1alpha1/volumeAttachmentStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1alpha1/volumeAttachmentStatus.libsonnet deleted file mode 100644 index a8a27cd6e19c..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1alpha1/volumeAttachmentStatus.libsonnet +++ /dev/null @@ -1,26 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='volumeAttachmentStatus', url='', help='VolumeAttachmentStatus is the status of a VolumeAttachment request.'), - '#attachError':: d.obj(help='VolumeError captures an error encountered during a volume operation.'), - attachError: { - '#withMessage':: d.fn(help='String detailing the error encountered during Attach or Detach operation. This string maybe logged, so it should not contain sensitive information.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { attachError+: { message: message } }, - '#withTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='time', type=d.T.string)]), - withTime(time): { attachError+: { time: time } } - }, - '#detachError':: d.obj(help='VolumeError captures an error encountered during a volume operation.'), - detachError: { - '#withMessage':: d.fn(help='String detailing the error encountered during Attach or Detach operation. This string maybe logged, so it should not contain sensitive information.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { detachError+: { message: message } }, - '#withTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='time', type=d.T.string)]), - withTime(time): { detachError+: { time: time } } - }, - '#withAttached':: d.fn(help='Indicates the volume is successfully attached. This field must only be set by the entity completing the attach operation, i.e. the external-attacher.', args=[d.arg(name='attached', type=d.T.boolean)]), - withAttached(attached): { attached: attached }, - '#withAttachmentMetadata':: d.fn(help='Upon successful attach, this field is populated with any information returned by the attach operation that must be passed into subsequent WaitForAttach or Mount calls. This field must only be set by the entity completing the attach operation, i.e. the external-attacher.', args=[d.arg(name='attachmentMetadata', type=d.T.object)]), - withAttachmentMetadata(attachmentMetadata): { attachmentMetadata: attachmentMetadata }, - '#withAttachmentMetadataMixin':: d.fn(help='Upon successful attach, this field is populated with any information returned by the attach operation that must be passed into subsequent WaitForAttach or Mount calls. This field must only be set by the entity completing the attach operation, i.e. the external-attacher.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='attachmentMetadata', type=d.T.object)]), - withAttachmentMetadataMixin(attachmentMetadata): { attachmentMetadata+: attachmentMetadata }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1alpha1/volumeError.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1alpha1/volumeError.libsonnet deleted file mode 100644 index 13f2ff76936b..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1alpha1/volumeError.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='volumeError', url='', help='VolumeError captures an error encountered during a volume operation.'), - '#withMessage':: d.fn(help='String detailing the error encountered during Attach or Detach operation. This string maybe logged, so it should not contain sensitive information.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='time', type=d.T.string)]), - withTime(time): { time: time }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1beta1/csiDriver.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1beta1/csiDriver.libsonnet deleted file mode 100644 index 31d00163e416..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1beta1/csiDriver.libsonnet +++ /dev/null @@ -1,100 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='csiDriver', url='', help='CSIDriver captures information about a Container Storage Interface (CSI) volume driver deployed on the cluster. CSI drivers do not need to create the CSIDriver object directly. Instead they may use the cluster-driver-registrar sidecar container. When deployed with a CSI driver it automatically creates a CSIDriver object representing the driver. Kubernetes attach detach controller uses this object to determine whether attach is required. Kubelet uses this object to determine whether pod information needs to be passed on mount. CSIDriver objects are non-namespaced.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Csidriver', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'storage.k8s.io/v1beta1', - kind: 'CsiDriver' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='CSIDriverSpec is the specification of a CSIDriver.'), - spec: { - '#withAttachRequired':: d.fn(help='attachRequired indicates this CSI volume driver requires an attach operation (because it implements the CSI ControllerPublishVolume() method), and that the Kubernetes attach detach controller should call the attach volume interface which checks the volumeattachment status and waits until the volume is attached before proceeding to mounting. The CSI external-attacher coordinates with CSI volume driver and updates the volumeattachment status when the attach operation is complete. If the CSIDriverRegistry feature gate is enabled and the value is specified to false, the attach operation will be skipped. Otherwise the attach operation will be called.', args=[d.arg(name='attachRequired', type=d.T.boolean)]), - withAttachRequired(attachRequired): { spec+: { attachRequired: attachRequired } }, - '#withPodInfoOnMount':: d.fn(help='If set to true, podInfoOnMount indicates this CSI volume driver requires additional pod information (like podName, podUID, etc.) during mount operations. If set to false, pod information will not be passed on mount. Default is false. The CSI driver specifies podInfoOnMount as part of driver deployment. If true, Kubelet will pass pod information as VolumeContext in the CSI NodePublishVolume() calls. The CSI driver is responsible for parsing and validating the information passed in as VolumeContext. The following VolumeConext will be passed if podInfoOnMount is set to true. This list might grow, but the prefix will be used. "csi.storage.k8s.io/pod.name": pod.Name "csi.storage.k8s.io/pod.namespace": pod.Namespace "csi.storage.k8s.io/pod.uid": string(pod.UID)', args=[d.arg(name='podInfoOnMount', type=d.T.boolean)]), - withPodInfoOnMount(podInfoOnMount): { spec+: { podInfoOnMount: podInfoOnMount } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1beta1/csiDriverSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1beta1/csiDriverSpec.libsonnet deleted file mode 100644 index 94272f53af05..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1beta1/csiDriverSpec.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='csiDriverSpec', url='', help='CSIDriverSpec is the specification of a CSIDriver.'), - '#withAttachRequired':: d.fn(help='attachRequired indicates this CSI volume driver requires an attach operation (because it implements the CSI ControllerPublishVolume() method), and that the Kubernetes attach detach controller should call the attach volume interface which checks the volumeattachment status and waits until the volume is attached before proceeding to mounting. The CSI external-attacher coordinates with CSI volume driver and updates the volumeattachment status when the attach operation is complete. If the CSIDriverRegistry feature gate is enabled and the value is specified to false, the attach operation will be skipped. Otherwise the attach operation will be called.', args=[d.arg(name='attachRequired', type=d.T.boolean)]), - withAttachRequired(attachRequired): { attachRequired: attachRequired }, - '#withPodInfoOnMount':: d.fn(help='If set to true, podInfoOnMount indicates this CSI volume driver requires additional pod information (like podName, podUID, etc.) during mount operations. If set to false, pod information will not be passed on mount. Default is false. The CSI driver specifies podInfoOnMount as part of driver deployment. If true, Kubelet will pass pod information as VolumeContext in the CSI NodePublishVolume() calls. The CSI driver is responsible for parsing and validating the information passed in as VolumeContext. The following VolumeConext will be passed if podInfoOnMount is set to true. This list might grow, but the prefix will be used. "csi.storage.k8s.io/pod.name": pod.Name "csi.storage.k8s.io/pod.namespace": pod.Namespace "csi.storage.k8s.io/pod.uid": string(pod.UID)', args=[d.arg(name='podInfoOnMount', type=d.T.boolean)]), - withPodInfoOnMount(podInfoOnMount): { podInfoOnMount: podInfoOnMount }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1beta1/csiNode.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1beta1/csiNode.libsonnet deleted file mode 100644 index c6cbc34fc6c5..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1beta1/csiNode.libsonnet +++ /dev/null @@ -1,100 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='csiNode', url='', help="CSINode holds information about all CSI drivers installed on a node. CSI drivers do not need to create the CSINode object directly. As long as they use the node-driver-registrar sidecar container, the kubelet will automatically populate the CSINode object for the CSI driver as part of kubelet plugin registration. CSINode has the same name as a node. If the object is missing, it means either there are no CSI Drivers available on the node, or the Kubelet version is low enough that it doesn't create this object. CSINode has an OwnerReference that points to the corresponding node object."), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Csinode', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'storage.k8s.io/v1beta1', - kind: 'CsiNode' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='CSINodeSpec holds information about the specification of all CSI drivers installed on a node'), - spec: { - '#withDrivers':: d.fn(help='drivers is a list of information of all CSI Drivers existing on a node. If all drivers in the list are uninstalled, this can become empty.', args=[d.arg(name='drivers', type=d.T.array)]), - withDrivers(drivers): { spec+: { drivers: if std.isArray(v=drivers) then drivers else [drivers] } }, - '#withDriversMixin':: d.fn(help='drivers is a list of information of all CSI Drivers existing on a node. If all drivers in the list are uninstalled, this can become empty.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='drivers', type=d.T.array)]), - withDriversMixin(drivers): { spec+: { drivers+: if std.isArray(v=drivers) then drivers else [drivers] } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1beta1/csiNodeDriver.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1beta1/csiNodeDriver.libsonnet deleted file mode 100644 index 984af1771abf..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1beta1/csiNodeDriver.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='csiNodeDriver', url='', help='CSINodeDriver holds information about the specification of one CSI driver installed on a node'), - '#withName':: d.fn(help='This is the name of the CSI driver that this object refers to. This MUST be the same name returned by the CSI GetPluginName() call for that driver.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withNodeID':: d.fn(help='nodeID of the node from the driver point of view. This field enables Kubernetes to communicate with storage systems that do not share the same nomenclature for nodes. For example, Kubernetes may refer to a given node as "node1", but the storage system may refer to the same node as "nodeA". When Kubernetes issues a command to the storage system to attach a volume to a specific node, it can use this field to refer to the node name using the ID that the storage system will understand, e.g. "nodeA" instead of "node1". This field is required.', args=[d.arg(name='nodeID', type=d.T.string)]), - withNodeID(nodeID): { nodeID: nodeID }, - '#withTopologyKeys':: d.fn(help='topologyKeys is the list of keys supported by the driver. When a driver is initialized on a cluster, it provides a set of topology keys that it understands (e.g. "company.com/zone", "company.com/region"). When a driver is initialized on a node, it provides the same topology keys along with values. Kubelet will expose these topology keys as labels on its own node object. When Kubernetes does topology aware provisioning, it can use this list to determine which labels it should retrieve from the node object and pass back to the driver. It is possible for different nodes to use different topology keys. This can be empty if driver does not support topology.', args=[d.arg(name='topologyKeys', type=d.T.array)]), - withTopologyKeys(topologyKeys): { topologyKeys: if std.isArray(v=topologyKeys) then topologyKeys else [topologyKeys] }, - '#withTopologyKeysMixin':: d.fn(help='topologyKeys is the list of keys supported by the driver. When a driver is initialized on a cluster, it provides a set of topology keys that it understands (e.g. "company.com/zone", "company.com/region"). When a driver is initialized on a node, it provides the same topology keys along with values. Kubelet will expose these topology keys as labels on its own node object. When Kubernetes does topology aware provisioning, it can use this list to determine which labels it should retrieve from the node object and pass back to the driver. It is possible for different nodes to use different topology keys. This can be empty if driver does not support topology.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='topologyKeys', type=d.T.array)]), - withTopologyKeysMixin(topologyKeys): { topologyKeys+: if std.isArray(v=topologyKeys) then topologyKeys else [topologyKeys] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1beta1/csiNodeSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1beta1/csiNodeSpec.libsonnet deleted file mode 100644 index c70c48cf0149..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1beta1/csiNodeSpec.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='csiNodeSpec', url='', help='CSINodeSpec holds information about the specification of all CSI drivers installed on a node'), - '#withDrivers':: d.fn(help='drivers is a list of information of all CSI Drivers existing on a node. If all drivers in the list are uninstalled, this can become empty.', args=[d.arg(name='drivers', type=d.T.array)]), - withDrivers(drivers): { drivers: if std.isArray(v=drivers) then drivers else [drivers] }, - '#withDriversMixin':: d.fn(help='drivers is a list of information of all CSI Drivers existing on a node. If all drivers in the list are uninstalled, this can become empty.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='drivers', type=d.T.array)]), - withDriversMixin(drivers): { drivers+: if std.isArray(v=drivers) then drivers else [drivers] }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1beta1/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1beta1/main.libsonnet deleted file mode 100644 index 9cde2935634a..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1beta1/main.libsonnet +++ /dev/null @@ -1,15 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1beta1', url='', help=''), - csiDriver: (import 'csiDriver.libsonnet'), - csiDriverSpec: (import 'csiDriverSpec.libsonnet'), - csiNode: (import 'csiNode.libsonnet'), - csiNodeDriver: (import 'csiNodeDriver.libsonnet'), - csiNodeSpec: (import 'csiNodeSpec.libsonnet'), - storageClass: (import 'storageClass.libsonnet'), - volumeAttachment: (import 'volumeAttachment.libsonnet'), - volumeAttachmentSource: (import 'volumeAttachmentSource.libsonnet'), - volumeAttachmentSpec: (import 'volumeAttachmentSpec.libsonnet'), - volumeAttachmentStatus: (import 'volumeAttachmentStatus.libsonnet'), - volumeError: (import 'volumeError.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1beta1/storageClass.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1beta1/storageClass.libsonnet deleted file mode 100644 index 136946a2c862..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1beta1/storageClass.libsonnet +++ /dev/null @@ -1,113 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='storageClass', url='', help='StorageClass describes the parameters for a class of storage for which PersistentVolumes can be dynamically provisioned.\n\nStorageClasses are non-namespaced; the name of the storage class according to etcd is in ObjectMeta.Name.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Storageclass', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'storage.k8s.io/v1beta1', - kind: 'StorageClass' - } + self.metadata.withName(name=name), - '#withAllowVolumeExpansion':: d.fn(help='AllowVolumeExpansion shows whether the storage class allow volume expand', args=[d.arg(name='allowVolumeExpansion', type=d.T.boolean)]), - withAllowVolumeExpansion(allowVolumeExpansion): { allowVolumeExpansion: allowVolumeExpansion }, - '#withAllowedTopologies':: d.fn(help='Restrict the node topologies where volumes can be dynamically provisioned. Each volume plugin defines its own supported topology specifications. An empty TopologySelectorTerm list means there is no topology restriction. This field is only honored by servers that enable the VolumeScheduling feature.', args=[d.arg(name='allowedTopologies', type=d.T.array)]), - withAllowedTopologies(allowedTopologies): { allowedTopologies: if std.isArray(v=allowedTopologies) then allowedTopologies else [allowedTopologies] }, - '#withAllowedTopologiesMixin':: d.fn(help='Restrict the node topologies where volumes can be dynamically provisioned. Each volume plugin defines its own supported topology specifications. An empty TopologySelectorTerm list means there is no topology restriction. This field is only honored by servers that enable the VolumeScheduling feature.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='allowedTopologies', type=d.T.array)]), - withAllowedTopologiesMixin(allowedTopologies): { allowedTopologies+: if std.isArray(v=allowedTopologies) then allowedTopologies else [allowedTopologies] }, - '#withMountOptions':: d.fn(help='Dynamically provisioned PersistentVolumes of this storage class are created with these mountOptions, e.g. ["ro", "soft"]. Not validated - mount of the PVs will simply fail if one is invalid.', args=[d.arg(name='mountOptions', type=d.T.array)]), - withMountOptions(mountOptions): { mountOptions: if std.isArray(v=mountOptions) then mountOptions else [mountOptions] }, - '#withMountOptionsMixin':: d.fn(help='Dynamically provisioned PersistentVolumes of this storage class are created with these mountOptions, e.g. ["ro", "soft"]. Not validated - mount of the PVs will simply fail if one is invalid.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='mountOptions', type=d.T.array)]), - withMountOptionsMixin(mountOptions): { mountOptions+: if std.isArray(v=mountOptions) then mountOptions else [mountOptions] }, - '#withParameters':: d.fn(help='Parameters holds the parameters for the provisioner that should create volumes of this storage class.', args=[d.arg(name='parameters', type=d.T.object)]), - withParameters(parameters): { parameters: parameters }, - '#withParametersMixin':: d.fn(help='Parameters holds the parameters for the provisioner that should create volumes of this storage class.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='parameters', type=d.T.object)]), - withParametersMixin(parameters): { parameters+: parameters }, - '#withProvisioner':: d.fn(help='Provisioner indicates the type of the provisioner.', args=[d.arg(name='provisioner', type=d.T.string)]), - withProvisioner(provisioner): { provisioner: provisioner }, - '#withReclaimPolicy':: d.fn(help='Dynamically provisioned PersistentVolumes of this storage class are created with this reclaimPolicy. Defaults to Delete.', args=[d.arg(name='reclaimPolicy', type=d.T.string)]), - withReclaimPolicy(reclaimPolicy): { reclaimPolicy: reclaimPolicy }, - '#withVolumeBindingMode':: d.fn(help='VolumeBindingMode indicates how PersistentVolumeClaims should be provisioned and bound. When unset, VolumeBindingImmediate is used. This field is only honored by servers that enable the VolumeScheduling feature.', args=[d.arg(name='volumeBindingMode', type=d.T.string)]), - withVolumeBindingMode(volumeBindingMode): { volumeBindingMode: volumeBindingMode }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1beta1/volumeAttachment.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1beta1/volumeAttachment.libsonnet deleted file mode 100644 index 345525fe19be..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1beta1/volumeAttachment.libsonnet +++ /dev/null @@ -1,105 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='volumeAttachment', url='', help='VolumeAttachment captures the intent to attach or detach the specified volume to/from the specified node.\n\nVolumeAttachment objects are non-namespaced.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#initializers':: d.obj(help='Initializers tracks the progress of initialization.'), - initializers: { - '#result':: d.obj(help="Status is a return value for calls that don't return other objects."), - result: { - '#details':: d.obj(help='StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.'), - details: { - '#withCauses':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.', args=[d.arg(name='causes', type=d.T.array)]), - withCauses(causes): { metadata+: { initializers+: { result+: { details+: { causes: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withCausesMixin':: d.fn(help='The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='causes', type=d.T.array)]), - withCausesMixin(causes): { metadata+: { initializers+: { result+: { details+: { causes+: if std.isArray(v=causes) then causes else [causes] } } } } }, - '#withGroup':: d.fn(help='The group attribute of the resource associated with the status StatusReason.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { metadata+: { initializers+: { result+: { details+: { group: group } } } } }, - '#withKind':: d.fn(help='The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { details+: { kind: kind } } } } }, - '#withName':: d.fn(help='The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { initializers+: { result+: { details+: { name: name } } } } }, - '#withRetryAfterSeconds':: d.fn(help='If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.', args=[d.arg(name='retryAfterSeconds', type=d.T.integer)]), - withRetryAfterSeconds(retryAfterSeconds): { metadata+: { initializers+: { result+: { details+: { retryAfterSeconds: retryAfterSeconds } } } } }, - '#withUid':: d.fn(help='UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { initializers+: { result+: { details+: { uid: uid } } } } } - }, - '#withCode':: d.fn(help='Suggested HTTP return code for this status, 0 if not set.', args=[d.arg(name='code', type=d.T.integer)]), - withCode(code): { metadata+: { initializers+: { result+: { code: code } } } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { metadata+: { initializers+: { result+: { kind: kind } } } }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { metadata+: { initializers+: { result+: { message: message } } } }, - '#withMetadata':: d.fn(help='Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds', args=[d.arg(name='metadata', type=d.T.any)]), - withMetadata(metadata): { metadata+: { initializers+: { result+: { metadata: metadata } } } }, - '#withReason':: d.fn(help='A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { metadata+: { initializers+: { result+: { reason: reason } } } } - }, - '#withPending':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.', args=[d.arg(name='pending', type=d.T.array)]), - withPending(pending): { metadata+: { initializers+: { pending: if std.isArray(v=pending) then pending else [pending] } } }, - '#withPendingMixin':: d.fn(help='Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='pending', type=d.T.array)]), - withPendingMixin(pending): { metadata+: { initializers+: { pending+: if std.isArray(v=pending) then pending else [pending] } } } - }, - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } } - }, - '#new':: d.fn(help='new returns an instance of Volumeattachment', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'storage.k8s.io/v1beta1', - kind: 'VolumeAttachment' - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='VolumeAttachmentSpec is the specification of a VolumeAttachment request.'), - spec: { - '#source':: d.obj(help='VolumeAttachmentSource represents a volume that should be attached. Right now only PersistenVolumes can be attached via external attacher, in future we may allow also inline volumes in pods. Exactly one member can be set.'), - source: { - '#withPersistentVolumeName':: d.fn(help='Name of the persistent volume to attach.', args=[d.arg(name='persistentVolumeName', type=d.T.string)]), - withPersistentVolumeName(persistentVolumeName): { spec+: { source+: { persistentVolumeName: persistentVolumeName } } } - }, - '#withAttacher':: d.fn(help='Attacher indicates the name of the volume driver that MUST handle this request. This is the name returned by GetPluginName().', args=[d.arg(name='attacher', type=d.T.string)]), - withAttacher(attacher): { spec+: { attacher: attacher } }, - '#withNodeName':: d.fn(help='The node that the volume should be attached to.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { spec+: { nodeName: nodeName } } - }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1beta1/volumeAttachmentSource.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1beta1/volumeAttachmentSource.libsonnet deleted file mode 100644 index 43f683ee89e9..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1beta1/volumeAttachmentSource.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='volumeAttachmentSource', url='', help='VolumeAttachmentSource represents a volume that should be attached. Right now only PersistenVolumes can be attached via external attacher, in future we may allow also inline volumes in pods. Exactly one member can be set.'), - '#withPersistentVolumeName':: d.fn(help='Name of the persistent volume to attach.', args=[d.arg(name='persistentVolumeName', type=d.T.string)]), - withPersistentVolumeName(persistentVolumeName): { persistentVolumeName: persistentVolumeName }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1beta1/volumeAttachmentSpec.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1beta1/volumeAttachmentSpec.libsonnet deleted file mode 100644 index fdec9b4a8a68..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1beta1/volumeAttachmentSpec.libsonnet +++ /dev/null @@ -1,15 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='volumeAttachmentSpec', url='', help='VolumeAttachmentSpec is the specification of a VolumeAttachment request.'), - '#source':: d.obj(help='VolumeAttachmentSource represents a volume that should be attached. Right now only PersistenVolumes can be attached via external attacher, in future we may allow also inline volumes in pods. Exactly one member can be set.'), - source: { - '#withPersistentVolumeName':: d.fn(help='Name of the persistent volume to attach.', args=[d.arg(name='persistentVolumeName', type=d.T.string)]), - withPersistentVolumeName(persistentVolumeName): { source+: { persistentVolumeName: persistentVolumeName } } - }, - '#withAttacher':: d.fn(help='Attacher indicates the name of the volume driver that MUST handle this request. This is the name returned by GetPluginName().', args=[d.arg(name='attacher', type=d.T.string)]), - withAttacher(attacher): { attacher: attacher }, - '#withNodeName':: d.fn(help='The node that the volume should be attached to.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { nodeName: nodeName }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1beta1/volumeAttachmentStatus.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1beta1/volumeAttachmentStatus.libsonnet deleted file mode 100644 index 3cb2dee1961a..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1beta1/volumeAttachmentStatus.libsonnet +++ /dev/null @@ -1,26 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='volumeAttachmentStatus', url='', help='VolumeAttachmentStatus is the status of a VolumeAttachment request.'), - '#attachError':: d.obj(help='VolumeError captures an error encountered during a volume operation.'), - attachError: { - '#withMessage':: d.fn(help='String detailing the error encountered during Attach or Detach operation. This string may be logged, so it should not contain sensitive information.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { attachError+: { message: message } }, - '#withTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='time', type=d.T.string)]), - withTime(time): { attachError+: { time: time } } - }, - '#detachError':: d.obj(help='VolumeError captures an error encountered during a volume operation.'), - detachError: { - '#withMessage':: d.fn(help='String detailing the error encountered during Attach or Detach operation. This string may be logged, so it should not contain sensitive information.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { detachError+: { message: message } }, - '#withTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='time', type=d.T.string)]), - withTime(time): { detachError+: { time: time } } - }, - '#withAttached':: d.fn(help='Indicates the volume is successfully attached. This field must only be set by the entity completing the attach operation, i.e. the external-attacher.', args=[d.arg(name='attached', type=d.T.boolean)]), - withAttached(attached): { attached: attached }, - '#withAttachmentMetadata':: d.fn(help='Upon successful attach, this field is populated with any information returned by the attach operation that must be passed into subsequent WaitForAttach or Mount calls. This field must only be set by the entity completing the attach operation, i.e. the external-attacher.', args=[d.arg(name='attachmentMetadata', type=d.T.object)]), - withAttachmentMetadata(attachmentMetadata): { attachmentMetadata: attachmentMetadata }, - '#withAttachmentMetadataMixin':: d.fn(help='Upon successful attach, this field is populated with any information returned by the attach operation that must be passed into subsequent WaitForAttach or Mount calls. This field must only be set by the entity completing the attach operation, i.e. the external-attacher.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='attachmentMetadata', type=d.T.object)]), - withAttachmentMetadataMixin(attachmentMetadata): { attachmentMetadata+: attachmentMetadata }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1beta1/volumeError.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1beta1/volumeError.libsonnet deleted file mode 100644 index 8da9b68aaf24..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/_gen/storage/v1beta1/volumeError.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='volumeError', url='', help='VolumeError captures an error encountered during a volume operation.'), - '#withMessage':: d.fn(help='String detailing the error encountered during Attach or Detach operation. This string may be logged, so it should not contain sensitive information.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='time', type=d.T.string)]), - withTime(time): { time: time }, - '#mixin': 'ignore', - mixin: self -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/extensions/kausal-shim.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/extensions/kausal-shim.libsonnet deleted file mode 100644 index 857bbedba337..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/extensions/kausal-shim.libsonnet +++ /dev/null @@ -1,205 +0,0 @@ -// kausal-shim.libsonnet: mimics internals of the ksonnet-lib API for kausal.libsonnet -// -// importing ourselves here, to avoid receiving kausal patches, -// which we otherwise would (super includes them) -local k = import 'k.libsonnet'; - -{ - core+: { v1+: { - container+: { - envType: k.core.v1.envVar, - envFromType: k.core.v1.envFromSource { - new():: {}, - }, - portsType: k.core.v1.containerPort, - volumeMountsType: k.core.v1.volumeMount, - }, - pod+: { - spec+: { - volumesType: k.core.v1.volume, - }, - }, - service+: { - spec+: { - withClusterIp: self.withClusterIP, - withLoadBalancerIp: self.withLoadBalancerIP, - portsType: k.core.v1.servicePort, - }, - }, - } }, - - local appsAffinityPatch = { - nodeAffinity+: { - requiredDuringSchedulingIgnoredDuringExecutionType: k.core.v1.nodeSelector { - new():: {}, - nodeSelectorTermsType: k.core.v1.nodeSelectorTerm { - new():: {}, - matchFieldsType: k.core.v1.nodeSelectorRequirement, - }, - }, - preferredDuringSchedulingIgnoredDuringExecutionType: k.core.v1.preferredSchedulingTerm { - new():: {}, - preferenceType: { - matchFieldsType: k.core.v1.nodeSelectorRequirement, - }, - }, - }, - podAntiAffinity+: { - requiredDuringSchedulingIgnoredDuringExecutionType: k.core.v1.podAffinityTerm { - new():: {}, - }, - }, - }, - - local appsPatch = { - deployment+: { - spec+: { template+: { spec+: { - volumesType: k.core.v1.volume, - containersType: k.core.v1.container, - tolerationsType: k.core.v1.toleration { - new():: {}, - }, - affinity+: appsAffinityPatch, - } } }, - }, - daemonSet+: { - new():: super.new(''), - spec+: { template+: { spec+: { - withHostPid:: self.withHostPID, - tolerationsType: k.core.v1.toleration { - new():: {}, - }, - affinity+: appsAffinityPatch, - } } }, - }, - statefulSet+: { - spec+: { template+: { spec+: { - volumesType: k.core.v1.volume, - affinity+: appsAffinityPatch, - tolerationsType: k.core.v1.toleration { - new():: {}, - }, - imagePullSecretsType: k.core.v1.localObjectReference { - new():: {}, - }, - } } }, - }, - }, - - apps+: { - v1+: appsPatch, - v1beta1+: appsPatch, - }, - extensions+: { - v1beta1+: appsPatch { - ingress+: { - new():: super.new(''), - spec+: { - rulesType: k.extensions.v1beta1.ingressRule { - httpType+: { pathsType: k.extensions.v1beta1.httpIngressPath }, - }, - }, - }, - }, - }, - - batch+: { - local patch = { - new():: super.new(''), - mixin+: { spec+: { jobTemplate+: { spec+: { template+: { spec+: { - imagePullSecretsType: k.core.v1.localObjectReference { - new():: {}, - }, - } } } } } }, - }, - - v1+: { - job+: patch, - cronJob+: patch, - }, - v1beta1+: { - job+: patch, - cronJob+: patch, - }, - }, - - - local rbacPatch = { - local role = { - new():: super.new(''), - rulesType: k.rbac.v1beta1.policyRule { - new():: {}, - }, - }, - role+: role, - clusterRole+: role, - - local binding = { - new():: super.new(''), - subjectsType: k.rbac.v1beta1.subject { - new():: {}, - }, - }, - roleBinding+: binding, - clusterRoleBinding+: binding, - - policyRule+: { - withNonResourceUrls: self.withNonResourceURLs, - }, - }, - rbac+: { - v1+: rbacPatch, - v1beta1+: rbacPatch, - }, - - policy+: { - v1beta1+: { - podDisruptionBudget+: { - new():: super.new(''), - }, - podSecurityPolicy+: { - new():: super.new(''), - mixin+: { spec+: { - runAsUser+: { rangesType: k.policy.v1beta1.idRange { new():: {} } }, - withHostIpc: self.withHostIPC, - withHostPid: self.withHostPID, - } }, - }, - }, - }, - - storage+: { v1+: { - storageClass+: { - new():: super.new(''), - }, - } }, - - scheduling+: { v1beta1+: { - priorityClass+: { - new():: super.new(''), - }, - } }, - - admissionregistration+: { v1beta1+: { - local webhooksType = k.admissionregistration.v1beta1.webhook { - new():: {}, - rulesType: k.admissionregistration.v1beta1.ruleWithOperations { - new():: {}, - }, - mixin+: { namespaceSelector+: { matchExpressionsType: { - new():: {}, - withKey(key):: { key: key }, - withOperator(operator):: { operator: operator }, - withValues(values):: { values: if std.isArray(values) then values else [values] }, - } } }, - }, - mutatingWebhookConfiguration+: { - new():: super.new(''), - webhooksType: webhooksType, - }, - validatingWebhookConfiguration+: { - new():: super.new(''), - webhooksType: webhooksType, - }, - } }, -} diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/gen.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/gen.libsonnet deleted file mode 100644 index 778dd18d3adb..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/gen.libsonnet +++ /dev/null @@ -1,23 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='k', url='github.com/jsonnet-libs/k8s-alpha/1.14/main.libsonnet', help='Generated Kubernetes library'), - admissionregistration:: (import '_gen/admissionregistration/main.libsonnet'), - apps:: (import '_gen/apps/main.libsonnet'), - auditregistration:: (import '_gen/auditregistration/main.libsonnet'), - authentication:: (import '_gen/authentication/main.libsonnet'), - authorization:: (import '_gen/authorization/main.libsonnet'), - autoscaling:: (import '_gen/autoscaling/main.libsonnet'), - batch:: (import '_gen/batch/main.libsonnet'), - certificates:: (import '_gen/certificates/main.libsonnet'), - coordination:: (import '_gen/coordination/main.libsonnet'), - core:: (import '_gen/core/main.libsonnet'), - events:: (import '_gen/events/main.libsonnet'), - extensions:: (import '_gen/extensions/main.libsonnet'), - networking:: (import '_gen/networking/main.libsonnet'), - node:: (import '_gen/node/main.libsonnet'), - policy:: (import '_gen/policy/main.libsonnet'), - rbac:: (import '_gen/rbac/main.libsonnet'), - scheduling:: (import '_gen/scheduling/main.libsonnet'), - settings:: (import '_gen/settings/main.libsonnet'), - storage:: (import '_gen/storage/main.libsonnet') -} \ No newline at end of file diff --git a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/main.libsonnet b/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/main.libsonnet deleted file mode 100644 index df9f66b9aee8..000000000000 --- a/example/k3d/vendor/github.com/jsonnet-libs/k8s-alpha/1.14/main.libsonnet +++ /dev/null @@ -1 +0,0 @@ -(import 'gen.libsonnet') + (import '_custom/apps.libsonnet') + (import '_custom/core.libsonnet') + (import '_custom/mapContainers.libsonnet') \ No newline at end of file diff --git a/example/k3d/vendor/grafana-agent b/example/k3d/vendor/grafana-agent deleted file mode 120000 index 95b361d6c5de..000000000000 --- a/example/k3d/vendor/grafana-agent +++ /dev/null @@ -1 +0,0 @@ -../../../production/tanka/grafana-agent \ No newline at end of file diff --git a/example/k3d/vendor/grafana-agent-mixin b/example/k3d/vendor/grafana-agent-mixin deleted file mode 120000 index 63e91aa19269..000000000000 --- a/example/k3d/vendor/grafana-agent-mixin +++ /dev/null @@ -1 +0,0 @@ -../../../production/grafana-agent-mixin \ No newline at end of file diff --git a/example/k3d/vendor/grafana-builder b/example/k3d/vendor/grafana-builder deleted file mode 120000 index cfa90ddb0f31..000000000000 --- a/example/k3d/vendor/grafana-builder +++ /dev/null @@ -1 +0,0 @@ -github.com/grafana/jsonnet-libs/grafana-builder \ No newline at end of file diff --git a/example/k3d/vendor/grafonnet b/example/k3d/vendor/grafonnet deleted file mode 120000 index fd2d163fc4f1..000000000000 --- a/example/k3d/vendor/grafonnet +++ /dev/null @@ -1 +0,0 @@ -github.com/grafana/grafonnet-lib/grafonnet \ No newline at end of file diff --git a/example/k3d/vendor/ksonnet-util b/example/k3d/vendor/ksonnet-util deleted file mode 120000 index 39633cc359f0..000000000000 --- a/example/k3d/vendor/ksonnet-util +++ /dev/null @@ -1 +0,0 @@ -github.com/grafana/jsonnet-libs/ksonnet-util \ No newline at end of file diff --git a/example/k3d/vendor/mixin-utils b/example/k3d/vendor/mixin-utils deleted file mode 120000 index 2b83270d9ba6..000000000000 --- a/example/k3d/vendor/mixin-utils +++ /dev/null @@ -1 +0,0 @@ -github.com/grafana/jsonnet-libs/mixin-utils \ No newline at end of file diff --git a/go.mod b/go.mod index d24130d86353..7234e81fcc36 100644 --- a/go.mod +++ b/go.mod @@ -31,6 +31,7 @@ require ( github.com/infinityworks/github-exporter v0.0.0-20201016091012-831b72461034 github.com/jsternberg/zap-logfmt v1.2.0 github.com/lib/pq v1.10.1 + github.com/lufia/iostat v1.2.1 // indirect github.com/miekg/dns v1.1.43 github.com/mitchellh/reflectwalk v1.0.2 github.com/ncabatoff/process-exporter v0.7.5 @@ -62,15 +63,15 @@ require ( github.com/prometheus/consul_exporter v0.7.2-0.20210127095228-584c6de19f23 github.com/prometheus/memcached_exporter v0.9.0 github.com/prometheus/mysqld_exporter v0.13.0 - github.com/prometheus/node_exporter v1.0.1 - github.com/prometheus/procfs v0.7.3 + github.com/prometheus/node_exporter v1.3.1 + github.com/prometheus/procfs v0.7.4-0.20211011103944-1a7a2bd3279f github.com/prometheus/prometheus v1.8.2-0.20211102100715-d4c83da6d252 github.com/prometheus/statsd_exporter v0.22.2 github.com/sirupsen/logrus v1.8.1 github.com/spf13/cobra v1.2.1 github.com/stretchr/testify v1.7.0 github.com/uber/jaeger-client-go v2.29.1+incompatible - github.com/weaveworks/common v0.0.0-20211104141906-05b06253aab8 + github.com/weaveworks/common v0.0.0-20211222122857-933588f98737 go.opencensus.io v0.23.0 go.opentelemetry.io/collector v0.40.0 go.opentelemetry.io/collector/model v0.40.0 @@ -79,7 +80,7 @@ require ( go.uber.org/atomic v1.9.0 go.uber.org/multierr v1.7.0 go.uber.org/zap v1.19.1 - golang.org/x/sys v0.0.0-20211020174200-9d6173849985 + golang.org/x/sys v0.0.0-20211117180635-dee7805ff2e1 google.golang.org/grpc v1.42.0 gopkg.in/alecthomas/kingpin.v2 v2.2.6 gopkg.in/yaml.v2 v2.4.0 @@ -112,7 +113,7 @@ replace ( github.com/Azure/azure-sdk-for-go => github.com/Azure/azure-sdk-for-go v36.2.0+incompatible github.com/hashicorp/consul => github.com/hashicorp/consul v1.5.1 github.com/hpcloud/tail => github.com/grafana/tail v0.0.0-20201004203643-7aa4e4a91f03 - github.com/prometheus/prometheus => github.com/grafana/prometheus v1.8.2-0.20211103031328-89bb32ee4ae7 + github.com/prometheus/prometheus => github.com/grafana/prometheus v1.8.2-0.20220112164627-aae84190631a gopkg.in/yaml.v2 => github.com/rfratto/go-yaml v0.0.0-20211119180816-77389c3526dc k8s.io/api => k8s.io/api v0.21.0 k8s.io/apimachinery => k8s.io/apimachinery v0.21.0 diff --git a/go.sum b/go.sum index 6feff1ed1db2..81a773040330 100644 --- a/go.sum +++ b/go.sum @@ -408,8 +408,10 @@ github.com/cilium/ebpf v0.0.0-20200110133405-4032b1d8aae3/go.mod h1:MA5e5Lr8slmE github.com/cilium/ebpf v0.0.0-20200702112145-1c8d4c9ef775/go.mod h1:7cR51M8ViRLIdUjrmSXlK9pkrsDlLHbO8jiB8X8JnOc= github.com/cilium/ebpf v0.2.0/go.mod h1:To2CFviqOWL/M0gIMsvSMlqe7em/l1ALkX1PyjrX2Qs= github.com/cilium/ebpf v0.4.0/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= -github.com/cilium/ebpf v0.6.2 h1:iHsfF/t4aW4heW2YKfeHrVPGdtYTL4C4KocpM8KTSnI= +github.com/cilium/ebpf v0.5.0/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= github.com/cilium/ebpf v0.6.2/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= +github.com/cilium/ebpf v0.7.0 h1:1k/q3ATgxSXRdrmPfH8d7YK0GfqVsEKZAX9dQZvs56k= +github.com/cilium/ebpf v0.7.0/go.mod h1:/oI2+1shJiTGAMgl6/RgJr36Eo1jzrRcAWbcXO2usCA= github.com/circonus-labs/circonus-gometrics v0.0.0-20161109192337-d17a8420c36e/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= github.com/circonus-labs/circonusllhist v0.0.0-20161110002650-365d370cc145/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= @@ -690,8 +692,9 @@ github.com/elastic/go-windows v1.0.0/go.mod h1:TsU0Nrp7/y3+VwE82FoZF8gC/XFg/Elz6 github.com/elastic/go-windows v1.0.1/go.mod h1:FoVvqWSun28vaDQPbj2Elfc0JahhPB7WQEGa3c814Ss= github.com/elazarl/go-bindata-assetfs v0.0.0-20160803192304-e1a2a7ec64b0/go.mod h1:v+YaWX3bdea5J/mo8dSETolEo7R71Vk1u8bnjau5yw4= github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= -github.com/ema/qdisc v0.0.0-20190904071900-b82c76788043 h1:I3hLsM87FSASssIrIOGwJCio31dvLkvpYDKn2+r31ec= github.com/ema/qdisc v0.0.0-20190904071900-b82c76788043/go.mod h1:ix4kG2zvdUd8kEKSW0ZTr1XLks0epFpI4j745DXxlNE= +github.com/ema/qdisc v0.0.0-20200603082823-62d0308e3e00 h1:0GHzegkDz/zSrt+Zph1OueNImPdUxoToypnkhhRYTjI= +github.com/ema/qdisc v0.0.0-20200603082823-62d0308e3e00/go.mod h1:ix4kG2zvdUd8kEKSW0ZTr1XLks0epFpI4j745DXxlNE= 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/envoyproxy/go-control-plane v0.0.0-20180919002855-2137d9196328/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= @@ -1166,8 +1169,8 @@ github.com/grafana/postgres_exporter v0.8.1-0.20210722175051-db35d7c2f520 h1:HnF github.com/grafana/postgres_exporter v0.8.1-0.20210722175051-db35d7c2f520/go.mod h1:+HPXgiOV0InDHcZ2jNijL1SOKvo0eEPege5fQA0+ICI= github.com/grafana/process-exporter v0.7.3-0.20210106202358-831154072e2a h1:JUnP/laSl2GylHT0+fqAqOZY+7XkLh1mLefLN0n8Mmk= github.com/grafana/process-exporter v0.7.3-0.20210106202358-831154072e2a/go.mod h1:RMjrx3Qn8l2pgCD27g45xbko4UDpVVuHC8Cd2YXPtWA= -github.com/grafana/prometheus v1.8.2-0.20211103031328-89bb32ee4ae7 h1:GnWgl4SXkEENFeRp33PG2DGqONZf596zS5N6MJMuwUc= -github.com/grafana/prometheus v1.8.2-0.20211103031328-89bb32ee4ae7/go.mod h1:ZJuc8Ryf9icwMGB68aSEfw2YVSWuY3Ljrl/WCVqXeYc= +github.com/grafana/prometheus v1.8.2-0.20220112164627-aae84190631a h1:d4yYemy2o5COTp5MCvxL/kuEZ/txWQIwc4fooYIclWA= +github.com/grafana/prometheus v1.8.2-0.20220112164627-aae84190631a/go.mod h1:ZJuc8Ryf9icwMGB68aSEfw2YVSWuY3Ljrl/WCVqXeYc= github.com/grafana/statsd_exporter v0.18.1-0.20211118164740-8e806158da0b h1:eFIcZ12/3lY1Ot3PJswIhfKTOQTAZzYA1eN+XR8Ijho= github.com/grafana/statsd_exporter v0.18.1-0.20211118164740-8e806158da0b/go.mod h1:N4Z1+iSqc9rnxlT1N8Qn3l65Vzb5t4Uq0jpg8nxyhio= github.com/grafana/tail v0.0.0-20201004203643-7aa4e4a91f03 h1:fGgFrAraMB0BaPfYumu+iulfDXwHm+GFyHA4xEtBqI8= @@ -1225,6 +1228,8 @@ github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtng github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= github.com/hashicorp/go-discover v0.0.0-20190403160810-22221edb15cd/go.mod h1:ueUgD9BeIocT7QNuvxSyJyPAM9dfifBcaWmeybb67OY= +github.com/hashicorp/go-envparse v0.0.0-20200406174449-d9cfd743a15e h1:v1d9+AJMP6i4p8BSKNU0InuvmIAdZjQLNN19V86AG4Q= +github.com/hashicorp/go-envparse v0.0.0-20200406174449-d9cfd743a15e/go.mod h1:/NlxCzN2D4C4L2uDE6ux/h6jM+n98VFQM14nnCIfHJU= github.com/hashicorp/go-getter v1.5.3 h1:NF5+zOlQegim+w/EUhSLh6QhXHmZMEeHLQzllkQ3ROU= github.com/hashicorp/go-getter v1.5.3/go.mod h1:BrrV/1clo8cCYu6mxvboYg+KutTiFnXjMEgDD8+i7ZI= github.com/hashicorp/go-hclog v0.0.0-20180402200405-69ff559dc25f/go.mod h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI= @@ -1319,8 +1324,9 @@ github.com/hashicorp/yamux v0.0.0-20190923154419-df201c70410d/go.mod h1:+NfK9FKe github.com/hetznercloud/hcloud-go v1.26.2/go.mod h1:2C5uMtBiMoFr3m7lBFPf7wXTdh33CevmZpQIIDPGYJI= github.com/hetznercloud/hcloud-go v1.32.0 h1:7zyN2V7hMlhm3HZdxOarmOtvzKvkcYKjM0hcwYMQZz0= github.com/hetznercloud/hcloud-go v1.32.0/go.mod h1:XX/TQub3ge0yWR2yHWmnDVIrB+MQbda1pHxkUmDlUME= -github.com/hodgesds/perf-utils v0.0.8 h1:6BT6cddpouM0G7eHhLFS+XcqtPvhrzWbPreyIvgFEcg= github.com/hodgesds/perf-utils v0.0.8/go.mod h1:F6TfvsbtrF88i++hou29dTXlI2sfsJv+gRZDtmTJkAs= +github.com/hodgesds/perf-utils v0.4.0 h1:onWrAGy6RYr7938qNXtSsTr54K4BLx8Hh3EXAr+xy+U= +github.com/hodgesds/perf-utils v0.4.0/go.mod h1:wpXb8IDP3gn1iCsHuql0e9fyARRjRPvxN7lRPDihOds= github.com/howeyc/gopass v0.0.0-20170109162249-bf9dde6d0d2c/go.mod h1:lADxMC39cJJqL93Duh1xhAs4I2Zs8mKS89XWXFGp9cs= github.com/huandu/xstrings v1.0.0/go.mod h1:4qWG/gcEcfX4z/mBDHJ++3ReCw9ibxbsNJbcucJdbSo= github.com/huandu/xstrings v1.3.1 h1:4jgBlKK6tLKFvO8u5pmYjG91cqytmDCDvGh7ECVFfFs= @@ -1331,6 +1337,8 @@ github.com/iancoleman/strcase v0.0.0-20180726023541-3605ed457bf7/go.mod h1:SK73t github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= +github.com/illumos/go-kstat v0.0.0-20210513183136-173c9b0a9973 h1:hk4LPqXIY/c9XzRbe7dA6qQxaT6Axcbny0L/G5a4owQ= +github.com/illumos/go-kstat v0.0.0-20210513183136-173c9b0a9973/go.mod h1:PoK3ejP3LJkGTzKqRlpvCIFas3ncU02v8zzWDW+g0FY= github.com/imdario/mergo v0.3.4/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= @@ -1403,14 +1411,23 @@ github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22 github.com/jonboulle/clockwork v0.2.2/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= github.com/joncrlsn/dque v2.2.1-0.20200515025108-956d14155fa2+incompatible/go.mod h1:hDZb8oMj3Kp8MxtbNLg9vrtAUDHjgI1yZvqivT4O8Iw= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= +github.com/josharian/native v0.0.0-20200817173448-b6b71def0850 h1:uhL5Gw7BINiiPAo24A2sxkcDI0Jt/sqp1v5xQCniEFA= +github.com/josharian/native v0.0.0-20200817173448-b6b71def0850/go.mod h1:7X/raswPFr05uY3HiLlYeyQntB6OO7E/d2Cu7qoaN2w= github.com/joyent/triton-go v0.0.0-20180628001255-830d2b111e62/go.mod h1:U+RSyWxWd04xTqnuOQxnai7XGS2PrPY2cfGoDKtMHjA= github.com/jpillora/backoff v0.0.0-20180909062703-3050d21c67d7/go.mod h1:2iMrUgbbvHEiQClaW2NsSzMyGHqN+rDFqY705q49KG0= github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/jsimonetti/rtnetlink v0.0.0-20190606172950-9527aa82566a/go.mod h1:Oz+70psSo5OFh8DBl0Zv2ACw7Esh6pPUphlvZG9x7uw= github.com/jsimonetti/rtnetlink v0.0.0-20190830100107-3784a6c7c552/go.mod h1:Oz+70psSo5OFh8DBl0Zv2ACw7Esh6pPUphlvZG9x7uw= -github.com/jsimonetti/rtnetlink v0.0.0-20200117123717-f846d4f6c1f4 h1:nwOc1YaOrYJ37sEBrtWZrdqzK22hiJs3GpDmP3sR2Yw= github.com/jsimonetti/rtnetlink v0.0.0-20200117123717-f846d4f6c1f4/go.mod h1:WGuG/smIU4J/54PblvSbh+xvCZmpJnFgr3ds6Z55XMQ= +github.com/jsimonetti/rtnetlink v0.0.0-20201009170750-9c6f07d100c1/go.mod h1:hqoO/u39cqLeBLebZ8fWdE96O7FxrAsRYhnVOdgHxok= +github.com/jsimonetti/rtnetlink v0.0.0-20201216134343-bde56ed16391/go.mod h1:cR77jAZG3Y3bsb8hF6fHJbFoyFukLFOkQ98S0pQz3xw= +github.com/jsimonetti/rtnetlink v0.0.0-20201220180245-69540ac93943/go.mod h1:z4c53zj6Eex712ROyh8WI0ihysb5j2ROyV42iNogmAs= +github.com/jsimonetti/rtnetlink v0.0.0-20210122163228-8d122574c736/go.mod h1:ZXpIyOK59ZnN7J0BV99cZUPmsqDRZ3eq5X+st7u/oSA= +github.com/jsimonetti/rtnetlink v0.0.0-20210212075122-66c871082f2b/go.mod h1:8w9Rh8m+aHZIG69YPGGem1i5VzoyRC8nw2kA8B+ik5U= +github.com/jsimonetti/rtnetlink v0.0.0-20210525051524-4cc836578190/go.mod h1:NmKSdU4VGSiv1bMsdqNALI4RSvvjtz65tTMCnD05qLo= +github.com/jsimonetti/rtnetlink v0.0.0-20211022192332-93da33804786 h1:N527AHMa793TP5z5GNAn/VLPzlc0ewzWdeP/25gDfgQ= +github.com/jsimonetti/rtnetlink v0.0.0-20211022192332-93da33804786/go.mod h1:v4hqbTdfQngbVSZJVWUhGE/lbTFf9jb+ygmNUDQMuOs= github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.5/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= @@ -1514,8 +1531,10 @@ github.com/linode/linodego v1.1.0/go.mod h1:x/7+BoaKd4unViBmS2umdjYyVAmpFtBtEXZ0 github.com/lovoo/gcloud-opentracing v0.3.0/go.mod h1:ZFqk2y38kMDDikZPAK7ynTTGuyt17nSPdS3K5e+ZTBY= github.com/lucasb-eyer/go-colorful v1.0.2/go.mod h1:0MS4r+7BZKSJ5mw4/S5MPN+qHFF1fYclkSPilDOKW0s= github.com/lucasb-eyer/go-colorful v1.0.3/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= -github.com/lufia/iostat v1.1.0 h1:Z1wa4Hhxwi8uSKfgRsFc5RLtt3SuFPIOgkiPGkUtHDY= github.com/lufia/iostat v1.1.0/go.mod h1:rEPNA0xXgjHQjuI5Cy05sLlS2oRcSlWHRLrvh/AQ+Pg= +github.com/lufia/iostat v1.2.0/go.mod h1:rEPNA0xXgjHQjuI5Cy05sLlS2oRcSlWHRLrvh/AQ+Pg= +github.com/lufia/iostat v1.2.1 h1:tnCdZBIglgxD47RyD55kfWQcJMGzO+1QBziSQfesf2k= +github.com/lufia/iostat v1.2.1/go.mod h1:rEPNA0xXgjHQjuI5Cy05sLlS2oRcSlWHRLrvh/AQ+Pg= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= github.com/lyft/protoc-gen-star v0.5.1/go.mod h1:9toiA3cC7z5uVbODF7kEQ91Xn7XNFkVUl+SrEe+ZORU= github.com/lyft/protoc-gen-validate v0.0.0-20180911180927-64fcb82c878e/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= @@ -1577,15 +1596,27 @@ github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5 github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/mdlayher/apcupsd v0.0.0-20200608131503-2bf01da7bf1b/go.mod h1:WYK/Z/aXq9cbMFIL5ihcA4sX/r/3/WCas/Qvs/2fXcA= +github.com/mdlayher/ethtool v0.0.0-20210210192532-2b88debcdd43 h1:WgyLFv10Ov49JAQI/ZLUkCZ7VJS3r74hwFIGXJsgZlY= +github.com/mdlayher/ethtool v0.0.0-20210210192532-2b88debcdd43/go.mod h1:+t7E0lkKfbBsebllff1xdTmyJt8lH37niI6kwFk9OTo= github.com/mdlayher/genetlink v1.0.0 h1:OoHN1OdyEIkScEmRgxLEe2M9U8ClMytqA5niynLtfj0= github.com/mdlayher/genetlink v1.0.0/go.mod h1:0rJ0h4itni50A86M2kHcgS85ttZazNt7a8H2a2cw0Gc= github.com/mdlayher/netlink v0.0.0-20190409211403-11939a169225/go.mod h1:eQB3mZE4aiYnlUsyGGCOpPETfdQq4Jhsgf1fk3cwQaA= github.com/mdlayher/netlink v0.0.0-20190828143259-340058475d09/go.mod h1:KxeJAFOFLG6AjpyDkQ/iIhxygIUKD+vcwqcnu43w/+M= github.com/mdlayher/netlink v1.0.0/go.mod h1:KxeJAFOFLG6AjpyDkQ/iIhxygIUKD+vcwqcnu43w/+M= -github.com/mdlayher/netlink v1.1.0 h1:mpdLgm+brq10nI9zM1BpX1kpDbh3NLl3RSnVq6ZSkfg= github.com/mdlayher/netlink v1.1.0/go.mod h1:H4WCitaheIsdF9yOYu8CFmCgQthAPIWZmcKp9uZHgmY= -github.com/mdlayher/wifi v0.0.0-20190303161829-b1436901ddee h1:hZDujBrW3ye2xxdKNFYT59D4yCH5Q0zLuNBNtysKtok= +github.com/mdlayher/netlink v1.1.1/go.mod h1:WTYpFb/WTvlRJAyKhZL5/uy69TDDpHHu2VZmb2XgV7o= +github.com/mdlayher/netlink v1.2.0/go.mod h1:kwVW1io0AZy9A1E2YYgaD4Cj+C+GPkU6klXCMzIJ9p8= +github.com/mdlayher/netlink v1.2.1/go.mod h1:bacnNlfhqHqqLo4WsYeXSqfyXkInQ9JneWI68v1KwSU= +github.com/mdlayher/netlink v1.2.2-0.20210123213345-5cc92139ae3e/go.mod h1:bacnNlfhqHqqLo4WsYeXSqfyXkInQ9JneWI68v1KwSU= +github.com/mdlayher/netlink v1.3.0/go.mod h1:xK/BssKuwcRXHrtN04UBkwQ6dY9VviGGuriDdoPSWys= +github.com/mdlayher/netlink v1.4.0/go.mod h1:dRJi5IABcZpBD2A3D0Mv/AiX8I9uDEu5oGkAVrekmf8= +github.com/mdlayher/netlink v1.4.1 h1:I154BCU+mKlIf7BgcAJB2r7QjveNPty6uNY1g9ChVfI= +github.com/mdlayher/netlink v1.4.1/go.mod h1:e4/KuJ+s8UhfUpO9z00/fDZZmhSrs+oxyqAS9cNgn6Q= +github.com/mdlayher/socket v0.0.0-20210307095302-262dc9984e00 h1:qEtkL8n1DAHpi5/AOgAckwGQUlMe4+jhL/GMt+GKIks= +github.com/mdlayher/socket v0.0.0-20210307095302-262dc9984e00/go.mod h1:GAFlyu4/XV68LkQKYzKhIo/WW7j3Zi0YRAz/BOoanUc= github.com/mdlayher/wifi v0.0.0-20190303161829-b1436901ddee/go.mod h1:Evt/EIne46u9PtQbeTx2NTcqURpr5K4SvKtGmBuDPN8= +github.com/mdlayher/wifi v0.0.0-20200527114002-84f0b9457fdd h1:50p1vPNK43pzCVX10+5MmiOerbBzC1vR6+sLB3FZewE= +github.com/mdlayher/wifi v0.0.0-20200527114002-84f0b9457fdd/go.mod h1:Evt/EIne46u9PtQbeTx2NTcqURpr5K4SvKtGmBuDPN8= github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= @@ -1985,12 +2016,13 @@ github.com/prometheus/exporter-toolkit v0.5.0/go.mod h1:OCkM4805mmisBhLmVFw858QY github.com/prometheus/exporter-toolkit v0.5.1/go.mod h1:OCkM4805mmisBhLmVFw858QYi3v0wKdY6/UxrT0pZVg= github.com/prometheus/exporter-toolkit v0.6.0/go.mod h1:ZUBIj498ePooX9t/2xtDjeQYwvRpiPP2lh5u4iblj2g= github.com/prometheus/exporter-toolkit v0.6.1/go.mod h1:ZUBIj498ePooX9t/2xtDjeQYwvRpiPP2lh5u4iblj2g= +github.com/prometheus/exporter-toolkit v0.7.0 h1:XtYeVeeC5daG4txbc9+mieKq+/AK4gtIBLl9Mulrjnk= github.com/prometheus/exporter-toolkit v0.7.0/go.mod h1:ZUBIj498ePooX9t/2xtDjeQYwvRpiPP2lh5u4iblj2g= github.com/prometheus/memcached_exporter v0.9.0 h1:FnsCZBpNQJgPAnqNqqKtfWo9X+060V0UkGLRAzOfBes= github.com/prometheus/memcached_exporter v0.9.0/go.mod h1:SDcRCAJ2r6DZft+IVHAD1BMNgNjxbpEaFVeCxX3FuXM= github.com/prometheus/node_exporter v1.0.0-rc.0.0.20200428091818-01054558c289/go.mod h1:FGbBv5OPKjch+jNUJmEQpMZytIdyW0NdBtWFcfSKusc= -github.com/prometheus/node_exporter v1.0.1 h1:xTBtauxuNCMhuF4FKiNo2wDCuCAWgS3PoTlVbXLzNO0= -github.com/prometheus/node_exporter v1.0.1/go.mod h1:IC23eAmBHxDOtCRUgP9uqJewluDPwjStnbvWJEYtisQ= +github.com/prometheus/node_exporter v1.3.1 h1:pdJ5824noBu1O2a3a96uiWDH9Ns2ZTE9OxBlPy9Deik= +github.com/prometheus/node_exporter v1.3.1/go.mod h1:Y7LDbciZw+6s4dNRKtNA344Wltn8XPsDN4Jzm02RB8M= github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20180408092902-8b1c2da0d56d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20180612222113-7d6f385de8be/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= @@ -2009,8 +2041,9 @@ github.com/prometheus/procfs v0.0.11/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4 github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.7.3 h1:4jVXhlkAyzOScmCkXBTOLRLTz8EeU+eyjrwB/EPq0VU= github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/prometheus/procfs v0.7.4-0.20211011103944-1a7a2bd3279f h1:ncXqc93eJV1Ncr3f6GA3MrIDNkNHvcPonRC2QgZaVkQ= +github.com/prometheus/procfs v0.7.4-0.20211011103944-1a7a2bd3279f/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/rabbitmq/amqp091-go v1.1.0/go.mod h1:ogQDLSOACsLPsIq0NpbtiifNZi2YOz0VTJ0kHRghqbM= github.com/rafaeljusto/redigomock v0.0.0-20190202135759-257e089e14a1/go.mod h1:JaY6n2sDr+z2WTsXkOmNRUfDy6FN0L6Nk7x06ndm4tY= @@ -2050,6 +2083,8 @@ github.com/ryanuber/go-glob v0.0.0-20170128012129-256dc444b735/go.mod h1:807d1WS github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= github.com/safchain/ethtool v0.0.0-20190326074333-42ed695e3de8/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4= github.com/safchain/ethtool v0.0.0-20200218184317-f459e2d13664/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4= +github.com/safchain/ethtool v0.1.0 h1:SsRnt87qssm3RltLJze6kM+4fs32twq6mZEcBxbDMVg= +github.com/safchain/ethtool v0.1.0/go.mod h1:WkKB1DnNtvsMlDmQ50sgwowDJV/hGbJSOvJoEXs1AJQ= github.com/sagikazarmark/crypt v0.1.0/go.mod h1:B/mN0msZuINBtQ1zZLEQcegFJJf9vnYIR88KRMEuODE= github.com/samuel/go-zookeeper v0.0.0-20180130194729-c4fab1ac1bec/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da h1:p3Vo3i64TCLY7gIfzeQaUJ+kppEO5WQG3cL8iE8tGHU= @@ -2093,8 +2128,8 @@ github.com/shurcooL/vfsgen v0.0.0-20181202132449-6a9ea43bcacd/go.mod h1:TrYk7fJV github.com/shurcooL/vfsgen v0.0.0-20200824052919-0d455de96546 h1:pXY9qYc/MP5zdvqWEUH6SjNiu7VhSjuVFTFiTcphaLU= github.com/shurcooL/vfsgen v0.0.0-20200824052919-0d455de96546/go.mod h1:TrYk7fJVaAttu97ZZKrO9UbRa8izdowaMIZcxYMbVaw= github.com/siebenmann/go-kstat v0.0.0-20160321171754-d34789b79745/go.mod h1:G81aIFAMS9ECrwBYR9YxhlPjWgrItd+Kje78O6+uqm8= -github.com/siebenmann/go-kstat v0.0.0-20200303194639-4e8294f9e9d5 h1:rRF7gJ7t0E1bfqNLwMqgb59eb273kgi+GgLE/yEiDzs= -github.com/siebenmann/go-kstat v0.0.0-20200303194639-4e8294f9e9d5/go.mod h1:G81aIFAMS9ECrwBYR9YxhlPjWgrItd+Kje78O6+uqm8= +github.com/siebenmann/go-kstat v0.0.0-20210513183136-173c9b0a9973 h1:GfSdC6wKfTGcgCS7BtzF5694Amne1pGCSTY252WhlEY= +github.com/siebenmann/go-kstat v0.0.0-20210513183136-173c9b0a9973/go.mod h1:G81aIFAMS9ECrwBYR9YxhlPjWgrItd+Kje78O6+uqm8= github.com/simonpasquier/klog-gokit v0.3.0 h1:TkFK21cbwDRS+CiystjqbAiq5ubJcVTk9hLUck5Ntcs= github.com/simonpasquier/klog-gokit v0.3.0/go.mod h1:+SUlDQNrhVtGt2FieaqNftzzk8P72zpWlACateWxA9k= github.com/simonpasquier/klog-gokit/v3 v3.1.0 h1:xQGqjZdgo1lFA4eZ9PcGnKKXgIPz9t+jc25q/fXooIE= @@ -2289,8 +2324,8 @@ github.com/weaveworks/common v0.0.0-20210112142934-23c8d7fa6120/go.mod h1:ykzWac github.com/weaveworks/common v0.0.0-20210419092856-009d1eebd624/go.mod h1:ykzWac1LtVfOxdCK+jD754at1Ws9dKCwFeUzkFBffPs= github.com/weaveworks/common v0.0.0-20210913144402-035033b78a78/go.mod h1:YU9FvnS7kUnRt6HY10G+2qHkwzP3n3Vb1XsXDsJTSp8= github.com/weaveworks/common v0.0.0-20211015155308-ebe5bdc2c89e/go.mod h1:GWX2dQ7yjrgvqH0+d3kCJC5bsY8oOFwqjxFMHaRK4/k= -github.com/weaveworks/common v0.0.0-20211104141906-05b06253aab8 h1:eSaify586QwovbF/hT0Bgp6RXydry29i7aIbCrN9Hbo= -github.com/weaveworks/common v0.0.0-20211104141906-05b06253aab8/go.mod h1:GWX2dQ7yjrgvqH0+d3kCJC5bsY8oOFwqjxFMHaRK4/k= +github.com/weaveworks/common v0.0.0-20211222122857-933588f98737 h1:BBhcuf4+YMKHEYQqbmzNN+e3btTzh8xk3tA2xh24MfU= +github.com/weaveworks/common v0.0.0-20211222122857-933588f98737/go.mod h1:YfOOLoW1Q/jIIu0WLeSwgStmrKjuJEZSKTAUc+0KFvE= 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/willf/bitset v1.1.9/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= @@ -2604,11 +2639,13 @@ golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81R golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200904194848-62affa334b73/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201006153459-a7d1128ccaa0/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201010224723-4f7140c49acb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/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-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20201216054612-986b41b23924/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210224082022-3d97a244fca7/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= @@ -2749,7 +2786,6 @@ golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -2769,14 +2805,19 @@ golang.org/x/sys v0.0.0-20201009025420-dfb3f7c4e634/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20201015000850-e3ed0017c211/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201112073958-5cba982894dd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201117170446-d9b008d0a637/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201118182958-a01c418693c7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201202213521-69691e467435/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201218084310-7d0127a74742/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210110051926-789bb1bd4061/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210123111255-9b0068b26619/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210216163648-f7da38b97c65/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -2795,6 +2836,7 @@ golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210503080704-8803ae5d1324/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-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210525143221-35b2ab0089ea/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-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210611083646-a4fc73990273/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -2805,12 +2847,15 @@ golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210816074244-15123e1e1f71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210906170528-6f6e22806c34/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210917161153-d61c044b1678/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211013075003-97ac67df715c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211020174200-9d6173849985 h1:LOlKVhfDyahgmqa97awczplwkjzNaELFg3zRIJ13RYo= golang.org/x/sys v0.0.0-20211020174200-9d6173849985/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211023085530-d6a326fbbf70/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211117180635-dee7805ff2e1 h1:kwrAHlwJ0DUBZwQ238v+Uod/3eZ8B2K5rYsUHBQvzmI= +golang.org/x/sys v0.0.0-20211117180635-dee7805ff2e1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 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 h1:SZxvLBoTP5yHO3Frd4z4vrF+DBX9vMVanchswa69toE= diff --git a/pkg/config/config.go b/pkg/config/config.go index cb3f055448ce..eccc1bab054c 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -14,7 +14,6 @@ import ( "github.com/go-kit/log" "github.com/go-kit/log/level" "github.com/grafana/agent/pkg/config/features" - "github.com/grafana/agent/pkg/integrations" "github.com/grafana/agent/pkg/logs" "github.com/grafana/agent/pkg/metrics" "github.com/grafana/agent/pkg/traces" @@ -30,10 +29,12 @@ import ( ) var ( - featRemoteConfigs = features.Feature("remote-configs") + featRemoteConfigs = features.Feature("remote-configs") + featIntegrationsNext = features.Feature("integrations-next") allFeatures = []features.Feature{ featRemoteConfigs, + featIntegrationsNext, } ) @@ -41,17 +42,17 @@ var ( var DefaultConfig = Config{ // All subsystems with a DefaultConfig should be listed here. Metrics: metrics.DefaultConfig, - Integrations: integrations.DefaultManagerConfig, + Integrations: DefaultVersionedIntegrations, EnableConfigEndpoints: false, } // Config contains underlying configurations for the agent type Config struct { - Server server.Config `yaml:"server,omitempty"` - Metrics metrics.Config `yaml:"metrics,omitempty"` - Integrations integrations.ManagerConfig `yaml:"integrations,omitempty"` - Traces traces.Config `yaml:"traces,omitempty"` - Logs *logs.Config `yaml:"logs,omitempty"` + Server server.Config `yaml:"server,omitempty"` + Metrics metrics.Config `yaml:"metrics,omitempty"` + Integrations VersionedIntegrations `yaml:"integrations,omitempty"` + Traces traces.Config `yaml:"traces,omitempty"` + Logs *logs.Config `yaml:"logs,omitempty"` // We support a secondary server just for the /-/reload endpoint, since // invoking /-/reload against the primary server can cause the server @@ -171,22 +172,12 @@ func (c *Config) Validate(fs *flag.FlagSet) error { return err } - if err := c.Integrations.ApplyDefaults(&c.Metrics); err != nil { - return err - } - c.Metrics.ServiceConfig.Lifecycler.ListenPort = c.Server.GRPCListenPort - c.Integrations.ListenPort = c.Server.HTTPListenPort - c.Integrations.ListenHost = c.Server.HTTPListenAddress - c.Integrations.ServerUsingTLS = c.Server.HTTPTLSConfig.TLSKeyPath != "" && c.Server.HTTPTLSConfig.TLSCertPath != "" - - if len(c.Integrations.PrometheusRemoteWrite) == 0 { - c.Integrations.PrometheusRemoteWrite = c.Metrics.Global.RemoteWrite + if err := c.Integrations.ApplyDefaults(&c.Server, &c.Metrics); err != nil { + return err } - c.Integrations.PrometheusGlobalConfig = c.Metrics.Global.Prometheus - // since the Traces config might rely on an existing Loki config // this check is made here to look for cross config issues before we attempt to load if err := c.Traces.Validate(c.Logs); err != nil { @@ -353,6 +344,17 @@ func load(fs *flag.FlagSet, args []string, loader func(string, bool, *Config) er return nil, fmt.Errorf("error parsing flags: %w", err) } + // Complete unmarshaling integrations using the version from the flag. This + // MUST be called before ApplyDefaults. + version := integrationsVersion1 + if features.Enabled(fs, featIntegrationsNext) { + version = integrationsVersion2 + } + if err := cfg.Integrations.setVersion(version); err != nil { + return nil, fmt.Errorf("error loading config file %s: %w", file, err) + } + + // Finally, apply defaults to config that wasn't specified by file or flag if err := cfg.Validate(fs); err != nil { return nil, fmt.Errorf("error in config file: %w", err) } diff --git a/pkg/config/config_test.go b/pkg/config/config_test.go index 1b6a7ce66052..2b472735fa7d 100644 --- a/pkg/config/config_test.go +++ b/pkg/config/config_test.go @@ -7,7 +7,6 @@ import ( "testing" "time" - "github.com/grafana/agent/pkg/integrations" "github.com/grafana/agent/pkg/metrics" "github.com/grafana/agent/pkg/metrics/instance" "github.com/grafana/agent/pkg/util" @@ -176,7 +175,7 @@ func TestConfig_Defaults(t *testing.T) { require.NoError(t, err) require.Equal(t, metrics.DefaultConfig, c.Metrics) - require.Equal(t, integrations.DefaultManagerConfig, c.Integrations) + require.Equal(t, DefaultVersionedIntegrations, c.Integrations) } func TestConfig_TracesLokiValidates(t *testing.T) { diff --git a/pkg/config/integrations.go b/pkg/config/integrations.go new file mode 100644 index 000000000000..9cbec36cea44 --- /dev/null +++ b/pkg/config/integrations.go @@ -0,0 +1,148 @@ +package config + +import ( + "fmt" + "reflect" + + "github.com/go-kit/log" + "github.com/gorilla/mux" + v1 "github.com/grafana/agent/pkg/integrations" + v2 "github.com/grafana/agent/pkg/integrations/v2" + "github.com/grafana/agent/pkg/metrics" + "github.com/grafana/agent/pkg/util" + "github.com/prometheus/statsd_exporter/pkg/level" + "github.com/weaveworks/common/server" + "gopkg.in/yaml.v2" +) + +type integrationsVersion int + +const ( + integrationsVersion1 integrationsVersion = iota + integrationsVersion2 +) + +// DefaultVersionedIntegrations is the default config for integrations. +var DefaultVersionedIntegrations = VersionedIntegrations{ + version: integrationsVersion1, + configV1: &v1.DefaultManagerConfig, +} + +// VersionedIntegrations abstracts the subsystem configs for integrations v1 +// and v2. VersionedIntegrations can only be unmarshaled as part of Load. +type VersionedIntegrations struct { + version integrationsVersion + raw util.RawYAML + + configV1 *v1.ManagerConfig + configV2 *v2.SubsystemOptions +} + +var ( + _ yaml.Unmarshaler = (*VersionedIntegrations)(nil) + _ yaml.Marshaler = (*VersionedIntegrations)(nil) +) + +// UnmarshalYAML implements yaml.Unmarshaler. Full unmarshaling is deferred until +// setVersion is invoked. +func (c *VersionedIntegrations) UnmarshalYAML(unmarshal func(interface{}) error) error { + c.configV1 = nil + c.configV2 = nil + return unmarshal(&c.raw) +} + +// MarshalYAML implements yaml.Marshaler. +func (c VersionedIntegrations) MarshalYAML() (interface{}, error) { + switch { + case c.configV1 != nil: + return c.configV1, nil + case c.configV2 != nil: + return c.configV2, nil + default: + return c.raw, nil + } +} + +// IsZero implements yaml.IsZeroer. +func (c VersionedIntegrations) IsZero() bool { + switch { + case c.configV1 != nil: + return reflect.ValueOf(*c.configV1).IsZero() + case c.configV2 != nil: + return reflect.ValueOf(*c.configV2).IsZero() + default: + return len(c.raw) == 0 + } +} + +// ApplyDefaults applies defaults to the subsystem based on globals. +func (c *VersionedIntegrations) ApplyDefaults(scfg *server.Config, mcfg *metrics.Config) error { + if c.version != integrationsVersion2 { + return c.configV1.ApplyDefaults(scfg, mcfg) + } + return c.configV2.ApplyDefaults(mcfg) +} + +// setVersion completes the deferred unmarshal and unmarshals the raw YAML into +// the subsystem config for version v. +func (c *VersionedIntegrations) setVersion(v integrationsVersion) error { + c.version = v + + switch c.version { + case integrationsVersion1: + cfg := v1.DefaultManagerConfig + c.configV1 = &cfg + return yaml.UnmarshalStrict(c.raw, c.configV1) + case integrationsVersion2: + cfg := v2.DefaultSubsystemOptions + c.configV2 = &cfg + return yaml.UnmarshalStrict(c.raw, c.configV2) + default: + panic(fmt.Sprintf("unknown integrations version %d", c.version)) + } +} + +// IntegrationsGlobals is a global struct shared across integrations. +type IntegrationsGlobals = v2.Globals + +// Integrations is an abstraction over both the v1 and v2 systems. +type Integrations interface { + ApplyConfig(*VersionedIntegrations, IntegrationsGlobals) error + WireAPI(*mux.Router) + Stop() +} + +// NewIntegrations creates a new subsystem. globals should be provided regardless +// of useV2. globals.SubsystemOptions will be automatically set if cfg.Version +// is set to IntegrationsVersion2. +func NewIntegrations(logger log.Logger, cfg *VersionedIntegrations, globals IntegrationsGlobals) (Integrations, error) { + if cfg.version != integrationsVersion2 { + instance, err := v1.NewManager(*cfg.configV1, logger, globals.Metrics.InstanceManager(), globals.Metrics.Validate) + if err != nil { + return nil, err + } + return &v1Integrations{Manager: instance}, nil + } + + level.Warn(logger).Log("msg", "integrations-next is enabled. integrations-next is subject to change") + + globals.SubsystemOpts = *cfg.configV2 + instance, err := v2.NewSubsystem(logger, globals) + if err != nil { + return nil, err + } + return &v2Integrations{Subsystem: instance}, nil +} + +type v1Integrations struct{ *v1.Manager } + +func (s *v1Integrations) ApplyConfig(cfg *VersionedIntegrations, globals IntegrationsGlobals) error { + return s.Manager.ApplyConfig(*cfg.configV1) +} + +type v2Integrations struct{ *v2.Subsystem } + +func (s *v2Integrations) ApplyConfig(cfg *VersionedIntegrations, globals IntegrationsGlobals) error { + globals.SubsystemOpts = *cfg.configV2 + return s.Subsystem.ApplyConfig(globals) +} diff --git a/pkg/config/integrations_test.go b/pkg/config/integrations_test.go new file mode 100644 index 000000000000..bae40be6e622 --- /dev/null +++ b/pkg/config/integrations_test.go @@ -0,0 +1,45 @@ +package config + +import ( + "flag" + "testing" + + "github.com/stretchr/testify/require" + + _ "github.com/grafana/agent/pkg/integrations/install" // Install integrations for tests +) + +func TestIntegrations_v1(t *testing.T) { + cfg := ` +metrics: + wal_directory: /tmp/wal + +integrations: + agent: + enabled: true` + + fs := flag.NewFlagSet("test", flag.ExitOnError) + c, err := load(fs, []string{"-config.file", "test"}, func(_ string, _ bool, c *Config) error { + return LoadBytes([]byte(cfg), false, c) + }) + require.NoError(t, err) + require.NotNil(t, c.Integrations.configV1) +} + +func TestIntegrations_v2(t *testing.T) { + cfg := ` +metrics: + wal_directory: /tmp/wal + +integrations: + agent: + autoscrape: + enable: false` + + fs := flag.NewFlagSet("test", flag.ExitOnError) + c, err := load(fs, []string{"-config.file", "test", "-enable-features=integrations-next"}, func(_ string, _ bool, c *Config) error { + return LoadBytes([]byte(cfg), false, c) + }) + require.NoError(t, err) + require.NotNil(t, c.Integrations.configV2) +} diff --git a/pkg/integrations/cadvisor/cadvisor_stub.go b/pkg/integrations/cadvisor/cadvisor_stub.go index 399c16ec5c6e..9c3b463b0451 100644 --- a/pkg/integrations/cadvisor/cadvisor_stub.go +++ b/pkg/integrations/cadvisor/cadvisor_stub.go @@ -6,8 +6,8 @@ package cadvisor //nolint:golint import ( "github.com/grafana/agent/pkg/integrations" - "github.com/go-kit/kit/log" - "github.com/go-kit/kit/log/level" + "github.com/go-kit/log" + "github.com/go-kit/log/level" ) // NewIntegration creates a new cadvisor integration diff --git a/pkg/integrations/consul_exporter/consul_exporter.go b/pkg/integrations/consul_exporter/consul_exporter.go index b8f59406508d..82acbb40441a 100644 --- a/pkg/integrations/consul_exporter/consul_exporter.go +++ b/pkg/integrations/consul_exporter/consul_exporter.go @@ -8,6 +8,8 @@ import ( "github.com/go-kit/log" "github.com/grafana/agent/pkg/integrations" + integrations_v2 "github.com/grafana/agent/pkg/integrations/v2" + "github.com/grafana/agent/pkg/integrations/v2/metricsutils" consul_api "github.com/hashicorp/consul/api" "github.com/prometheus/consul_exporter/pkg/exporter" ) @@ -68,6 +70,7 @@ func (c *Config) NewIntegration(l log.Logger) (integrations.Integration, error) func init() { integrations.RegisterIntegration(&Config{}) + integrations_v2.RegisterLegacy(&Config{}, integrations_v2.TypeMultiplex, metricsutils.CreateShim) } // New creates a new consul_exporter integration. The integration scrapes diff --git a/pkg/integrations/dnsmasq_exporter/dnsmasq_exporter.go b/pkg/integrations/dnsmasq_exporter/dnsmasq_exporter.go index 6df60bd5c7ca..93dd2ee1f837 100644 --- a/pkg/integrations/dnsmasq_exporter/dnsmasq_exporter.go +++ b/pkg/integrations/dnsmasq_exporter/dnsmasq_exporter.go @@ -5,6 +5,8 @@ import ( "github.com/go-kit/log" "github.com/google/dnsmasq_exporter/collector" "github.com/grafana/agent/pkg/integrations" + integrations_v2 "github.com/grafana/agent/pkg/integrations/v2" + "github.com/grafana/agent/pkg/integrations/v2/metricsutils" "github.com/miekg/dns" ) @@ -48,6 +50,7 @@ func (c *Config) UnmarshalYAML(unmarshal func(interface{}) error) error { func init() { integrations.RegisterIntegration(&Config{}) + integrations_v2.RegisterLegacy(&Config{}, integrations_v2.TypeMultiplex, metricsutils.CreateShim) } // New creates a new dnsmasq_exporter integration. The integration scrapes metrics diff --git a/pkg/integrations/elasticsearch_exporter/elasticsearch_exporter.go b/pkg/integrations/elasticsearch_exporter/elasticsearch_exporter.go index 8e404dde8df6..6ffbb75d9cf0 100644 --- a/pkg/integrations/elasticsearch_exporter/elasticsearch_exporter.go +++ b/pkg/integrations/elasticsearch_exporter/elasticsearch_exporter.go @@ -12,6 +12,8 @@ import ( "github.com/go-kit/log" "github.com/go-kit/log/level" "github.com/grafana/agent/pkg/integrations" + integrations_v2 "github.com/grafana/agent/pkg/integrations/v2" + "github.com/grafana/agent/pkg/integrations/v2/metricsutils" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus-community/elasticsearch_exporter/collector" @@ -88,6 +90,7 @@ func (c *Config) NewIntegration(logger log.Logger) (integrations.Integration, er func init() { integrations.RegisterIntegration(&Config{}) + integrations_v2.RegisterLegacy(&Config{}, integrations_v2.TypeMultiplex, metricsutils.CreateShim) } // New creates a new elasticsearch_exporter diff --git a/pkg/integrations/github_exporter/github_exporter.go b/pkg/integrations/github_exporter/github_exporter.go index ba016f42fa9a..b9997eb4ee07 100644 --- a/pkg/integrations/github_exporter/github_exporter.go +++ b/pkg/integrations/github_exporter/github_exporter.go @@ -7,6 +7,8 @@ import ( "github.com/go-kit/log" "github.com/go-kit/log/level" "github.com/grafana/agent/pkg/integrations" + integrations_v2 "github.com/grafana/agent/pkg/integrations/v2" + "github.com/grafana/agent/pkg/integrations/v2/metricsutils" gh_config "github.com/infinityworks/github-exporter/config" "github.com/infinityworks/github-exporter/exporter" config_util "github.com/prometheus/common/config" @@ -67,6 +69,7 @@ func (c *Config) NewIntegration(logger log.Logger) (integrations.Integration, er func init() { integrations.RegisterIntegration(&Config{}) + integrations_v2.RegisterLegacy(&Config{}, integrations_v2.TypeMultiplex, metricsutils.CreateShim) } // New creates a new github_exporter integration. diff --git a/pkg/integrations/install/install.go b/pkg/integrations/install/install.go index e831427faaca..504239b80453 100644 --- a/pkg/integrations/install/install.go +++ b/pkg/integrations/install/install.go @@ -2,6 +2,10 @@ package install import ( + // + // v1 integrations + // + _ "github.com/grafana/agent/pkg/integrations/agent" // register agent _ "github.com/grafana/agent/pkg/integrations/cadvisor" // register cadvisor _ "github.com/grafana/agent/pkg/integrations/consul_exporter" // register consul_exporter @@ -18,4 +22,10 @@ import ( _ "github.com/grafana/agent/pkg/integrations/redis_exporter" // register redis_exporter _ "github.com/grafana/agent/pkg/integrations/statsd_exporter" // register statsd_exporter _ "github.com/grafana/agent/pkg/integrations/windows_exporter" // register windows_exporter + + // + // v2 integrations + // + + _ "github.com/grafana/agent/pkg/integrations/v2/agent" // register agent ) diff --git a/pkg/integrations/install/shims.go b/pkg/integrations/install/shims.go new file mode 100644 index 000000000000..af8ac573844e --- /dev/null +++ b/pkg/integrations/install/shims.go @@ -0,0 +1,30 @@ +package install + +import ( + v1 "github.com/grafana/agent/pkg/integrations" + v2 "github.com/grafana/agent/pkg/integrations/v2" + metricsutils "github.com/grafana/agent/pkg/integrations/v2/metricsutils" +) + +// Perform a migration of v1 integrations which do not yet have a v2 +// counterpart. These integrations will be registered as Singletons +// to maintain existing behavior. +// +// To migrate a v1 integration to a v2 migration with support for multiple +// instances, v1 integrations must manually migrate themselves by calling +// v2.RegisterDynamic directly. +func init() { + for _, v1Integration := range v1.RegisteredIntegrations() { + // Look to see if there's a v2 integration with the same name. + var found bool + for _, v2Integration := range v2.Registered() { + if v2Integration.Name() == v1Integration.Name() { + found = true + break + } + } + if !found { + v2.RegisterLegacy(v1Integration, v2.TypeSingleton, metricsutils.CreateShim) + } + } +} diff --git a/pkg/integrations/kafka_exporter/kafka_exporter.go b/pkg/integrations/kafka_exporter/kafka_exporter.go index 53b5610421ce..2db14ec309df 100644 --- a/pkg/integrations/kafka_exporter/kafka_exporter.go +++ b/pkg/integrations/kafka_exporter/kafka_exporter.go @@ -9,6 +9,8 @@ import ( kafka_exporter "github.com/davidmparrott/kafka_exporter/v2/exporter" "github.com/go-kit/log" "github.com/grafana/agent/pkg/integrations" + integrations_v2 "github.com/grafana/agent/pkg/integrations/v2" + "github.com/grafana/agent/pkg/integrations/v2/metricsutils" ) // DefaultConfig holds the default settings for the kafka_lag_exporter @@ -121,6 +123,7 @@ func (c *Config) NewIntegration(logger log.Logger) (integrations.Integration, er func init() { integrations.RegisterIntegration(&Config{}) + integrations_v2.RegisterLegacy(&Config{}, integrations_v2.TypeMultiplex, metricsutils.CreateShim) } // New creates a new kafka_exporter integration. diff --git a/pkg/integrations/manager.go b/pkg/integrations/manager.go index 47275e0ba8e1..2d3e4cb79197 100644 --- a/pkg/integrations/manager.go +++ b/pkg/integrations/manager.go @@ -24,6 +24,7 @@ import ( promConfig "github.com/prometheus/prometheus/config" "github.com/prometheus/prometheus/discovery" "github.com/prometheus/prometheus/pkg/relabel" + "github.com/weaveworks/common/server" ) var ( @@ -115,7 +116,17 @@ func (c *ManagerConfig) DefaultRelabelConfigs(instanceKey string) []*relabel.Con // // If any integrations are enabled and are configured to be scraped, the // Prometheus configuration must have a WAL directory configured. -func (c *ManagerConfig) ApplyDefaults(cfg *metrics.Config) error { +func (c *ManagerConfig) ApplyDefaults(scfg *server.Config, mcfg *metrics.Config) error { + c.ListenPort = scfg.HTTPListenPort + c.ListenHost = scfg.HTTPListenAddress + + c.ServerUsingTLS = scfg.HTTPTLSConfig.TLSKeyPath != "" && scfg.HTTPTLSConfig.TLSCertPath != "" + + if len(c.PrometheusRemoteWrite) == 0 { + c.PrometheusRemoteWrite = mcfg.Global.RemoteWrite + } + c.PrometheusGlobalConfig = mcfg.Global.Prometheus + for _, ic := range c.Integrations { if !ic.Common.Enabled { continue @@ -127,7 +138,7 @@ func (c *ManagerConfig) ApplyDefaults(cfg *metrics.Config) error { } // WAL must be configured if an integration is going to be scraped. - if scrapeIntegration && cfg.WALDir == "" { + if scrapeIntegration && mcfg.WALDir == "" { return fmt.Errorf("no wal_directory configured") } } diff --git a/pkg/integrations/memcached_exporter/memcached_exporter.go b/pkg/integrations/memcached_exporter/memcached_exporter.go index 727b835de3d6..c117528450bf 100644 --- a/pkg/integrations/memcached_exporter/memcached_exporter.go +++ b/pkg/integrations/memcached_exporter/memcached_exporter.go @@ -6,6 +6,8 @@ import ( "github.com/go-kit/log" "github.com/grafana/agent/pkg/integrations" + integrations_v2 "github.com/grafana/agent/pkg/integrations/v2" + "github.com/grafana/agent/pkg/integrations/v2/metricsutils" "github.com/prometheus/memcached_exporter/pkg/exporter" ) @@ -49,6 +51,7 @@ func (c *Config) NewIntegration(l log.Logger) (integrations.Integration, error) func init() { integrations.RegisterIntegration(&Config{}) + integrations_v2.RegisterLegacy(&Config{}, integrations_v2.TypeMultiplex, metricsutils.CreateShim) } // New creates a new memcached_exporter integration. The integration scrapes metrics diff --git a/pkg/integrations/mongodb_exporter/mongodb_exporter.go b/pkg/integrations/mongodb_exporter/mongodb_exporter.go index 16d8459c903a..e666d54c2b34 100644 --- a/pkg/integrations/mongodb_exporter/mongodb_exporter.go +++ b/pkg/integrations/mongodb_exporter/mongodb_exporter.go @@ -6,6 +6,8 @@ import ( "github.com/go-kit/log" "github.com/grafana/agent/pkg/integrations" + integrations_v2 "github.com/grafana/agent/pkg/integrations/v2" + "github.com/grafana/agent/pkg/integrations/v2/metricsutils" "github.com/percona/mongodb_exporter/exporter" config_util "github.com/prometheus/common/config" ) @@ -44,6 +46,7 @@ func (c *Config) NewIntegration(logger log.Logger) (integrations.Integration, er func init() { integrations.RegisterIntegration(&Config{}) + integrations_v2.RegisterLegacy(&Config{}, integrations_v2.TypeMultiplex, metricsutils.CreateShim) } // New creates a new mongodb_exporter integration. diff --git a/pkg/integrations/mysqld_exporter/mysqld-exporter.go b/pkg/integrations/mysqld_exporter/mysqld-exporter.go index 25565b631f28..618f0d602e3e 100644 --- a/pkg/integrations/mysqld_exporter/mysqld-exporter.go +++ b/pkg/integrations/mysqld_exporter/mysqld-exporter.go @@ -12,6 +12,8 @@ import ( "github.com/go-kit/log/level" "github.com/go-sql-driver/mysql" "github.com/grafana/agent/pkg/integrations" + integrations_v2 "github.com/grafana/agent/pkg/integrations/v2" + "github.com/grafana/agent/pkg/integrations/v2/metricsutils" "github.com/prometheus/mysqld_exporter/collector" ) @@ -103,6 +105,7 @@ func (c *Config) NewIntegration(l log.Logger) (integrations.Integration, error) func init() { integrations.RegisterIntegration(&Config{}) + integrations_v2.RegisterLegacy(&Config{}, integrations_v2.TypeMultiplex, metricsutils.CreateShim) } // New creates a new mysqld_exporter integration. The integration scrapes diff --git a/pkg/integrations/node_exporter/collectors.go b/pkg/integrations/node_exporter/collectors.go index b0f63fc2df3e..de583a1606a9 100644 --- a/pkg/integrations/node_exporter/collectors.go +++ b/pkg/integrations/node_exporter/collectors.go @@ -28,38 +28,46 @@ type Collector string const ( CollectorARP = "arp" CollectorBCache = "bcache" - CollectorBonding = "bonding" - CollectorBooTtime = "boottime" CollectorBTRFS = "btrfs" + CollectorBonding = "bonding" + CollectorBootTime = "boottime" CollectorBuddyInfo = "buddyinfo" - CollectorConntrack = "conntrack" CollectorCPU = "cpu" CollectorCPUFreq = "cpufreq" + CollectorConntrack = "conntrack" + CollectorDMI = "dmi" + CollectorDRBD = "drbd" + CollectorDRM = "drm" CollectorDevstat = "devstat" CollectorDiskstats = "diskstats" - CollectorDRBD = "drbd" CollectorEDAC = "edac" CollectorEntropy = "entropy" + CollectorEthtool = "ethtool" CollectorExec = "exec" + CollectorFibrechannel = "fibrechannel" CollectorFileFD = "filefd" CollectorFilesystem = "filesystem" CollectorHWMon = "hwmon" + CollectorIPVS = "ipvs" CollectorInfiniband = "infiniband" CollectorInterrupts = "interrupts" - CollectorIPVS = "ipvs" CollectorKSMD = "ksmd" + CollectorLnstat = "lnstat" CollectorLoadAvg = "loadavg" CollectorLogind = "logind" CollectorMDADM = "mdadm" CollectorMeminfo = "meminfo" CollectorMeminfoNuma = "meminfo_numa" CollectorMountstats = "mountstats" - CollectorNetclass = "netclass" - CollectorNetdev = "netdev" - CollectorNetstat = "netstat" CollectorNFS = "nfs" CollectorNFSD = "nfsd" CollectorNTP = "ntp" + CollectorNVME = "nvme" + CollectorNetclass = "netclass" + CollectorNetdev = "netdev" + CollectorNetstat = "netstat" + CollectorNetworkRoute = "network_route" + CollectorOS = "os" CollectorPerf = "perf" CollectorPowersuppply = "powersupplyclass" CollectorPressure = "pressure" @@ -74,7 +82,9 @@ const ( CollectorSupervisord = "supervisord" CollectorSystemd = "systemd" CollectorTCPStat = "tcpstat" + CollectorTapestats = "tapestats" CollectorTextfile = "textfile" + CollectorThermal = "thermal" CollectorThermalzone = "thermal_zone" CollectorTime = "time" CollectorTimex = "timex" @@ -84,6 +94,7 @@ const ( CollectorWiFi = "wifi" CollectorXFS = "xfs" CollectorZFS = "zfs" + CollectorZoneinfo = "zoneinfo" ) // Collectors holds a map of known collector names to their default @@ -91,38 +102,46 @@ const ( var Collectors = map[string]CollectorState{ CollectorARP: CollectorStateEnabled, CollectorBCache: CollectorStateEnabled, - CollectorBonding: CollectorStateEnabled, - CollectorBooTtime: CollectorStateEnabled, CollectorBTRFS: CollectorStateEnabled, + CollectorBonding: CollectorStateEnabled, + CollectorBootTime: CollectorStateEnabled, CollectorBuddyInfo: CollectorStateDisabled, - CollectorConntrack: CollectorStateEnabled, CollectorCPU: CollectorStateEnabled, CollectorCPUFreq: CollectorStateEnabled, + CollectorConntrack: CollectorStateEnabled, + CollectorDMI: CollectorStateEnabled, + CollectorDRBD: CollectorStateDisabled, + CollectorDRM: CollectorStateDisabled, CollectorDevstat: CollectorStateDisabled, CollectorDiskstats: CollectorStateEnabled, - CollectorDRBD: CollectorStateDisabled, CollectorEDAC: CollectorStateEnabled, CollectorEntropy: CollectorStateEnabled, + CollectorEthtool: CollectorStateDisabled, CollectorExec: CollectorStateEnabled, + CollectorFibrechannel: CollectorStateEnabled, CollectorFileFD: CollectorStateEnabled, CollectorFilesystem: CollectorStateEnabled, CollectorHWMon: CollectorStateEnabled, + CollectorIPVS: CollectorStateEnabled, CollectorInfiniband: CollectorStateEnabled, CollectorInterrupts: CollectorStateDisabled, - CollectorIPVS: CollectorStateEnabled, CollectorKSMD: CollectorStateDisabled, + CollectorLnstat: CollectorStateDisabled, CollectorLoadAvg: CollectorStateEnabled, CollectorLogind: CollectorStateDisabled, CollectorMDADM: CollectorStateEnabled, CollectorMeminfo: CollectorStateEnabled, CollectorMeminfoNuma: CollectorStateDisabled, CollectorMountstats: CollectorStateDisabled, - CollectorNetclass: CollectorStateEnabled, - CollectorNetdev: CollectorStateEnabled, - CollectorNetstat: CollectorStateEnabled, CollectorNFS: CollectorStateEnabled, CollectorNFSD: CollectorStateEnabled, CollectorNTP: CollectorStateDisabled, + CollectorNVME: CollectorStateEnabled, + CollectorNetclass: CollectorStateEnabled, + CollectorNetdev: CollectorStateEnabled, + CollectorNetstat: CollectorStateEnabled, + CollectorNetworkRoute: CollectorStateDisabled, + CollectorOS: CollectorStateEnabled, CollectorPerf: CollectorStateDisabled, CollectorPowersuppply: CollectorStateEnabled, CollectorPressure: CollectorStateEnabled, @@ -137,7 +156,9 @@ var Collectors = map[string]CollectorState{ CollectorSupervisord: CollectorStateDisabled, CollectorSystemd: CollectorStateDisabled, CollectorTCPStat: CollectorStateDisabled, + CollectorTapestats: CollectorStateEnabled, CollectorTextfile: CollectorStateEnabled, + CollectorThermal: CollectorStateEnabled, CollectorThermalzone: CollectorStateEnabled, CollectorTime: CollectorStateEnabled, CollectorTimex: CollectorStateEnabled, @@ -147,6 +168,7 @@ var Collectors = map[string]CollectorState{ CollectorWiFi: CollectorStateDisabled, CollectorXFS: CollectorStateEnabled, CollectorZFS: CollectorStateEnabled, + CollectorZoneinfo: CollectorStateDisabled, } // MapCollectorsToFlags takes in a map of collector keys and their states and diff --git a/pkg/integrations/node_exporter/config.go b/pkg/integrations/node_exporter/config.go index ed895b74d706..e0efba0c00ff 100644 --- a/pkg/integrations/node_exporter/config.go +++ b/pkg/integrations/node_exporter/config.go @@ -2,6 +2,7 @@ package node_exporter //nolint:golint import ( "fmt" + "os" "runtime" "strings" "time" @@ -25,14 +26,18 @@ var ( DiskStatsIgnoredDevices: "^(ram|loop|fd|(h|s|v|xv)d[a-z]|nvme\\d+n\\d+p)\\d+$", - NetclassIgnoredDevices: "^$", - NetstatFields: "^(.*_(InErrors|InErrs)|Ip_Forwarding|Ip(6|Ext)_(InOctets|OutOctets)|Icmp6?_(InMsgs|OutMsgs)|TcpExt_(Listen.*|Syncookies.*|TCPSynRetrans)|Tcp_(ActiveOpens|InSegs|OutSegs|PassiveOpens|RetransSegs|CurrEstab)|Udp6?_(InDatagrams|OutDatagrams|NoPorts|RcvbufErrors|SndbufErrors))$", + EthtoolMetricsInclude: ".*", + + FilesystemMountTimeout: 5 * time.Second, - NTPServer: "127.0.0.1", - NTPProtocolVersion: 4, NTPIPTTL: 1, - NTPMaxDistance: time.Microsecond * 3466080, NTPLocalOffsetTolerance: time.Millisecond, + NTPMaxDistance: time.Microsecond * 3466080, + NTPProtocolVersion: 4, + NTPServer: "127.0.0.1", + + NetclassIgnoredDevices: "^$", + NetstatFields: "^(.*_(InErrors|InErrs)|Ip_Forwarding|Ip(6|Ext)_(InOctets|OutOctets)|Icmp6?_(InMsgs|OutMsgs)|TcpExt_(Listen.*|Syncookies.*|TCPSynRetrans|TCPTimeouts)|Tcp_(ActiveOpens|InSegs|OutSegs|OutRsts|PassiveOpens|RetransSegs|CurrEstab)|Udp6?_(InDatagrams|OutDatagrams|NoPorts|RcvbufErrors|SndbufErrors))$", PowersupplyIgnoredSupplies: "^$", @@ -40,9 +45,12 @@ var ( SupervisordURL: "http://localhost:9001/RPC2", - SystemdUnitWhitelist: ".+", - SystemdUnitBlacklist: ".+\\.(automount|device|mount|scope|slice)", - VMStatFields: "^(oom_kill|pgpg|pswp|pg.*fault).*", + SystemdUnitExclude: ".+\\.(automount|device|mount|scope|slice)", + SystemdUnitInclude: ".+", + + TapestatsIgnoredDevices: "^$", + + VMStatFields: "^(oom_kill|pgpg|pswp|pg.*fault).*", } ) @@ -53,11 +61,15 @@ func init() { // file. switch runtime.GOOS { case "linux": - DefaultConfig.FilesystemIgnoredMountPoints = "^/(dev|proc|sys|var/lib/docker/.+)($|/)" - DefaultConfig.FilesystemIgnoredFSTypes = "^(autofs|binfmt_misc|bpf|cgroup2?|configfs|debugfs|devpts|devtmpfs|fusectl|hugetlbfs|iso9660|mqueue|nsfs|overlay|proc|procfs|pstore|rpc_pipefs|securityfs|selinuxfs|squashfs|sysfs|tracefs)$" + DefaultConfig.FilesystemMountPointsExclude = "^/(dev|proc|run/credentials/.+|sys|var/lib/docker/.+)($|/)" + DefaultConfig.FilesystemFSTypesExclude = "^(autofs|binfmt_misc|bpf|cgroup2?|configfs|debugfs|devpts|devtmpfs|fusectl|hugetlbfs|iso9660|mqueue|nsfs|overlay|proc|procfs|pstore|rpc_pipefs|securityfs|selinuxfs|squashfs|sysfs|tracefs)$" case "freebsd", "netbsd", "openbsd", "darwin": - DefaultConfig.FilesystemIgnoredMountPoints = "^/(dev)($|/)" - DefaultConfig.FilesystemIgnoredFSTypes = "^devfs$" + DefaultConfig.FilesystemMountPointsExclude = "^/(dev)($|/)" + DefaultConfig.FilesystemFSTypesExclude = "^devfs$" + } + + if url := os.Getenv("SUPERVISORD_URL"); url != "" { + DefaultConfig.SupervisordURL = url } } @@ -80,40 +92,136 @@ type Config struct { SetCollectors flagext.StringSlice `yaml:"set_collectors,omitempty"` // Collector-specific config options - CPUEnableCPUInfo bool `yaml:"enable_cpu_info_metric,omitempty"` - DiskStatsIgnoredDevices string `yaml:"diskstats_ignored_devices,omitempty"` - FilesystemIgnoredMountPoints string `yaml:"filesystem_ignored_mount_points,omitempty"` - FilesystemIgnoredFSTypes string `yaml:"filesystem_ignored_fs_types,omitempty"` - NetclassIgnoredDevices string `yaml:"netclass_ignored_devices,omitempty"` - NetdevDeviceBlacklist string `yaml:"netdev_device_blacklist,omitempty"` - NetdevDeviceWhitelist string `yaml:"netdev_device_whitelist,omitempty"` - NetstatFields string `yaml:"netstat_fields,omitempty"` - NTPServer string `yaml:"ntp_server,omitempty"` - NTPProtocolVersion int `yaml:"ntp_protocol_version,omitempty"` - NTPServerIsLocal bool `yaml:"ntp_server_is_local,omitempty"` - NTPIPTTL int `yaml:"ntp_ip_ttl,omitempty"` - NTPMaxDistance time.Duration `yaml:"ntp_max_distance,omitempty"` - NTPLocalOffsetTolerance time.Duration `yaml:"ntp_local_offset_tolerance,omitempty"` - PerfCPUS string `yaml:"perf_cpus,omitempty"` - PerfTracepoint flagext.StringSlice `yaml:"perf_tracepoint,omitempty"` - PowersupplyIgnoredSupplies string `yaml:"powersupply_ignored_supplies,omitempty"` - RunitServiceDir string `yaml:"runit_service_dir,omitempty"` - SupervisordURL string `yaml:"supervisord_url,omitempty"` - SystemdUnitWhitelist string `yaml:"systemd_unit_whitelist,omitempty"` - SystemdUnitBlacklist string `yaml:"systemd_unit_blacklist,omitempty"` - SystemdEnableTaskMetrics bool `yaml:"systemd_enable_task_metrics,omitempty"` - SystemdEnableRestartsMetrics bool `yaml:"systemd_enable_restarts_metrics,omitempty"` - SystemdEnableStartTimeMetrics bool `yaml:"systemd_enable_start_time_metrics,omitempty"` - VMStatFields string `yaml:"vmstat_fields,omitempty"` - TextfileDirectory string `yaml:"textfile_directory,omitempty"` + BcachePriorityStats bool `yaml:"enable_bcache_priority_stats,omitempty"` + CPUBugsInclude string `yaml:"cpu_bugs_include,omitempty"` + CPUEnableCPUGuest bool `yaml:"enable_cpu_guest_seconds_metric,omitempty"` + CPUEnableCPUInfo bool `yaml:"enable_cpu_info_metric,omitempty"` + CPUFlagsInclude string `yaml:"cpu_flags_include,omitempty"` + DiskStatsIgnoredDevices string `yaml:"diskstats_ignored_devices,omitempty"` + EthtoolDeviceExclude string `yaml:"ethtool_device_exclude,omitempty"` + EthtoolDeviceInclude string `yaml:"ethtool_device_include,omitempty"` + EthtoolMetricsInclude string `yaml:"ethtool_metrics_include,omitempty"` + FilesystemFSTypesExclude string `yaml:"filesystem_fs_types_exclude,omitempty"` + FilesystemMountPointsExclude string `yaml:"filesystem_mount_points_exclude,omitempty"` + FilesystemMountTimeout time.Duration `yaml:"filesystem_mount_timeout,omitempty"` + IPVSBackendLabels []string `yaml:"ipvs_backend_labels,omitempty"` + NTPIPTTL int `yaml:"ntp_ip_ttl,omitempty"` + NTPLocalOffsetTolerance time.Duration `yaml:"ntp_local_offset_tolerance,omitempty"` + NTPMaxDistance time.Duration `yaml:"ntp_max_distance,omitempty"` + NTPProtocolVersion int `yaml:"ntp_protocol_version,omitempty"` + NTPServer string `yaml:"ntp_server,omitempty"` + NTPServerIsLocal bool `yaml:"ntp_server_is_local,omitempty"` + NetclassIgnoreInvalidSpeedDevice bool `yaml:"netclass_ignore_invalid_speed_device,omitempty"` + NetclassIgnoredDevices string `yaml:"netclass_ignored_devices,omitempty"` + NetdevAddressInfo bool `yaml:"netdev_address_info,omitempty"` + NetdevDeviceExclude string `yaml:"netdev_device_exclude,omitempty"` + NetdevDeviceInclude string `yaml:"netdev_device_include,omitempty"` + NetstatFields string `yaml:"netstat_fields,omitempty"` + PerfCPUS string `yaml:"perf_cpus,omitempty"` + PerfTracepoint flagext.StringSlice `yaml:"perf_tracepoint,omitempty"` + PowersupplyIgnoredSupplies string `yaml:"powersupply_ignored_supplies,omitempty"` + RunitServiceDir string `yaml:"runit_servic e_dir,omitempty"` + SupervisordURL string `yaml:"supervisord_url,omitempty"` + SystemdEnableRestartsMetrics bool `yaml:"systemd_enable_restarts_metrics,omitempty"` + SystemdEnableStartTimeMetrics bool `yaml:"systemd_enable_start_time_metrics,omitempty"` + SystemdEnableTaskMetrics bool `yaml:"systemd_enable_task_metrics,omitempty"` + SystemdUnitExclude string `yaml:"systemd_unit_exclude,omitempty"` + SystemdUnitInclude string `yaml:"systemd_unit_include,omitempty"` + TapestatsIgnoredDevices string `yaml:"tapestats_ignored_devices,omitempty"` + TextfileDirectory string `yaml:"textfile_directory,omitempty"` + VMStatFields string `yaml:"vmstat_fields,omitempty"` + + UnmarshalWarnings []string `yaml:"-"` } // UnmarshalYAML implements yaml.Unmarshaler for Config. func (c *Config) UnmarshalYAML(unmarshal func(interface{}) error) error { *c = DefaultConfig - type plain Config - return unmarshal((*plain)(c)) + type baseConfig Config + type config struct { + baseConfig `yaml:",inline"` + + // Deprecated field names: + NetdevDeviceWhitelist string `yaml:"netdev_device_whitelist,omitempty"` + NetdevDeviceBlacklist string `yaml:"netdev_device_blacklist,omitempty"` + SystemdUnitWhitelist string `yaml:"systemd_unit_whitelist,omitempty"` + SystemdUnitBlacklist string `yaml:"systemd_unit_blacklist,omitempty"` + FilesystemIgnoredMountPoints string `yaml:"filesystem_ignored_mount_points,omitempty"` + FilesystemIgnoredFSTypes string `yaml:"filesystem_ignored_fs_types,omitempty"` + } + + var fc config // our full config (schema + deprecated names) + fc.baseConfig = baseConfig(*c) + + type migratedField struct { + OldName, NewName string + OldValue, NewValue *string + + defaultValue string + } + migratedFields := []*migratedField{ + { + OldName: "netdev_device_whitelist", NewName: "netdev_device_include", + OldValue: &fc.NetdevDeviceWhitelist, NewValue: &fc.NetdevDeviceInclude, + }, + { + OldName: "netdev_device_blacklist", NewName: "netdev_device_exclude", + OldValue: &fc.NetdevDeviceBlacklist, NewValue: &fc.NetdevDeviceExclude, + }, + { + OldName: "systemd_unit_whitelist", NewName: "systemd_unit_include", + OldValue: &fc.SystemdUnitWhitelist, NewValue: &fc.SystemdUnitInclude, + }, + { + OldName: "systemd_unit_blacklist", NewName: "systemd_unit_exclude", + OldValue: &fc.SystemdUnitBlacklist, NewValue: &fc.SystemdUnitExclude, + }, + { + OldName: "filesystem_ignored_mount_points", NewName: "filesystem_mount_points_exclude", + OldValue: &fc.FilesystemIgnoredMountPoints, NewValue: &fc.FilesystemMountPointsExclude, + }, + { + OldName: "filesystem_ignored_fs_types", NewName: "filesystem_fs_types_exclude", + OldValue: &fc.FilesystemIgnoredFSTypes, NewValue: &fc.FilesystemFSTypesExclude, + }, + } + + // We don't know when fields are unmarshaled unless they have non-zero + // values. Defaults stop us from being able to check, so we'll temporarily + // cache the default and make sure both the old and new migrated fields are + // zero. + for _, mf := range migratedFields { + mf.defaultValue = *mf.NewValue + *mf.NewValue = "" + } + + if err := unmarshal(&fc); err != nil { + return err + } + + for _, mf := range migratedFields { + switch { + case *mf.OldValue != "" && *mf.NewValue != "": // New set, old set + return fmt.Errorf("only one of %q and %q may be specified", mf.OldName, mf.NewName) + + case *mf.NewValue == "" && *mf.OldValue != "": // New unset, old set + *mf.NewValue = *mf.OldValue + + warning := fmt.Sprintf("%q is deprecated by %q and will be removed in a future version", mf.OldName, mf.NewName) + fc.UnmarshalWarnings = append(fc.UnmarshalWarnings, warning) + + case *mf.NewValue == "" && *mf.OldValue == "": // Neither set. + // Copy the default back to mf.NewValue. + *mf.NewValue = mf.defaultValue + + case *mf.NewValue != "" && *mf.OldValue == "": // New set, old unset + // Nothing to do + } + } + + *c = (Config)(fc.baseConfig) + return nil } // Name returns the name of the integration that this config represents. @@ -181,31 +289,59 @@ func MapConfigToNodeExporterFlags(c *Config) (accepted []string, ignored []strin "--path.rootfs", c.RootFSPath, ) + if collectors[CollectorBCache] { + flags.addBools(map[*bool]string{ + &c.BcachePriorityStats: "collector.bcache.priorityStats", + }) + } + if collectors[CollectorCPU] { flags.addBools(map[*bool]string{ - &c.CPUEnableCPUInfo: "collector.cpu.info", + &c.CPUEnableCPUGuest: "collector.cpu.guest", + &c.CPUEnableCPUInfo: "collector.cpu.info", }) + flags.add("--collector.cpu.info.flags-include", c.CPUFlagsInclude) + flags.add("--collector.cpu.info.bugs-include", c.CPUBugsInclude) } if collectors[CollectorDiskstats] { flags.add("--collector.diskstats.ignored-devices", c.DiskStatsIgnoredDevices) } + if collectors[CollectorEthtool] { + flags.add("--collector.ethtool.device-include", c.EthtoolDeviceInclude) + flags.add("--collector.ethtool.device-exclude", c.EthtoolDeviceExclude) + flags.add("--collector.ethtool.metrics-include", c.EthtoolMetricsInclude) + } + if collectors[CollectorFilesystem] { flags.add( - "--collector.filesystem.ignored-mount-points", c.FilesystemIgnoredMountPoints, - "--collector.filesystem.ignored-fs-types", c.FilesystemIgnoredFSTypes, + "--collector.filesystem.mount-timeout", c.FilesystemMountTimeout.String(), + "--collector.filesystem.mount-points-exclude", c.FilesystemMountPointsExclude, + "--collector.filesystem.fs-types-exclude", c.FilesystemFSTypesExclude, ) } + if collectors[CollectorIPVS] { + flags.add("--collector.ipvs.backend-labels", strings.Join(c.IPVSBackendLabels, ",")) + } + if collectors[CollectorNetclass] { + flags.addBools(map[*bool]string{ + &c.NetclassIgnoreInvalidSpeedDevice: "collector.netclass.ignore-invalid-speed", + }) + flags.add("--collector.netclass.ignored-devices", c.NetclassIgnoredDevices) } if collectors[CollectorNetdev] { + flags.addBools(map[*bool]string{ + &c.NetdevAddressInfo: "collector.netdev.address-info", + }) + flags.add( - "--collector.netdev.device-blacklist", c.NetdevDeviceBlacklist, - "--collector.netdev.device-whitelist", c.NetdevDeviceWhitelist, + "--collector.netdev.device-include", c.NetdevDeviceInclude, + "--collector.netdev.device-exclude", c.NetdevDeviceExclude, ) } @@ -249,8 +385,8 @@ func MapConfigToNodeExporterFlags(c *Config) (accepted []string, ignored []strin if collectors[CollectorSystemd] { flags.add( - "--collector.systemd.unit-whitelist", c.SystemdUnitWhitelist, - "--collector.systemd.unit-blacklist", c.SystemdUnitBlacklist, + "--collector.systemd.unit-include", c.SystemdUnitInclude, + "--collector.systemd.unit-exclude", c.SystemdUnitExclude, ) flags.addBools(map[*bool]string{ @@ -260,14 +396,18 @@ func MapConfigToNodeExporterFlags(c *Config) (accepted []string, ignored []strin }) } - if collectors[CollectorVMStat] { - flags.add("--collector.vmstat.fields", c.VMStatFields) + if collectors[CollectorTapestats] { + flags.add("--collector.tapestats.ignored-devices", c.TapestatsIgnoredDevices) } if collectors[CollectorTextfile] { flags.add("--collector.textfile.directory", c.TextfileDirectory) } + if collectors[CollectorVMStat] { + flags.add("--collector.vmstat.fields", c.VMStatFields) + } + return flags.accepted, flags.ignored } diff --git a/pkg/integrations/node_exporter/config_test.go b/pkg/integrations/node_exporter/config_test.go new file mode 100644 index 000000000000..cd2fd12a608a --- /dev/null +++ b/pkg/integrations/node_exporter/config_test.go @@ -0,0 +1,133 @@ +package node_exporter //nolint:golint + +import ( + "fmt" + "testing" + + "github.com/stretchr/testify/require" + "gopkg.in/yaml.v2" +) + +func TestNodeExporter_Config(t *testing.T) { + var c Config + + err := yaml.Unmarshal([]byte("{}"), &c) + require.NoError(t, err) + require.Equal(t, DefaultConfig, c) +} + +func TestNodeExporter_ConfigMigrate(t *testing.T) { + tt := []struct { + name string + in string + expectError string + expectWarnings []string + check func(t *testing.T, c *Config) + }{ + { + name: "old fields migrate", + in: ` + netdev_device_whitelist: netdev_wl + netdev_device_blacklist: netdev_bl + systemd_unit_whitelist: systemd_wl + systemd_unit_blacklist: systemd_bl + filesystem_ignored_mount_points: fs_mp + filesystem_ignored_fs_types: fs_types + `, + expectWarnings: []string{ + `"netdev_device_whitelist" is deprecated by "netdev_device_include" and will be removed in a future version`, + `"netdev_device_blacklist" is deprecated by "netdev_device_exclude" and will be removed in a future version`, + `"systemd_unit_whitelist" is deprecated by "systemd_unit_include" and will be removed in a future version`, + `"systemd_unit_blacklist" is deprecated by "systemd_unit_exclude" and will be removed in a future version`, + `"filesystem_ignored_mount_points" is deprecated by "filesystem_mount_points_exclude" and will be removed in a future version`, + `"filesystem_ignored_fs_types" is deprecated by "filesystem_fs_types_exclude" and will be removed in a future version`, + }, + check: func(t *testing.T, c *Config) { + t.Helper() + + require.Equal(t, c.NetdevDeviceInclude, "netdev_wl") + require.Equal(t, c.NetdevDeviceExclude, "netdev_bl") + require.Equal(t, c.SystemdUnitInclude, "systemd_wl") + require.Equal(t, c.SystemdUnitExclude, "systemd_bl") + require.Equal(t, c.FilesystemMountPointsExclude, "fs_mp") + require.Equal(t, c.FilesystemFSTypesExclude, "fs_types") + }, + }, + { + name: "new fields valid", + in: ` + netdev_device_include: netdev_wl + netdev_device_exclude: netdev_bl + systemd_unit_include: systemd_wl + systemd_unit_exclude: systemd_bl + filesystem_mount_points_exclude: fs_mp + filesystem_fs_types_exclude: fs_types + `, + check: func(t *testing.T, c *Config) { + t.Helper() + + require.Equal(t, c.NetdevDeviceInclude, "netdev_wl") + require.Equal(t, c.NetdevDeviceExclude, "netdev_bl") + require.Equal(t, c.SystemdUnitInclude, "systemd_wl") + require.Equal(t, c.SystemdUnitExclude, "systemd_bl") + require.Equal(t, c.FilesystemMountPointsExclude, "fs_mp") + require.Equal(t, c.FilesystemFSTypesExclude, "fs_types") + }, + }, + { + name: `netdev_device_whitelist and netdev_device_include`, + in: illegalConfig("netdev_device_whitelist", "netdev_device_include"), + expectError: `only one of "netdev_device_whitelist" and "netdev_device_include" may be specified`, + }, + { + name: `netdev_device_blacklist and netdev_device_exclude`, + in: illegalConfig("netdev_device_blacklist", "netdev_device_exclude"), + expectError: `only one of "netdev_device_blacklist" and "netdev_device_exclude" may be specified`, + }, + { + name: `systemd_unit_whitelist and systemd_unit_include`, + in: illegalConfig("systemd_unit_whitelist", "systemd_unit_include"), + expectError: `only one of "systemd_unit_whitelist" and "systemd_unit_include" may be specified`, + }, + { + name: `systemd_unit_blacklist and systemd_unit_exclude`, + in: illegalConfig("systemd_unit_blacklist", "systemd_unit_exclude"), + expectError: `only one of "systemd_unit_blacklist" and "systemd_unit_exclude" may be specified`, + }, + { + name: `filesystem_ignored_mount_points and filesystem_mount_points_exclude`, + in: illegalConfig("filesystem_ignored_mount_points", "filesystem_mount_points_exclude"), + expectError: `only one of "filesystem_ignored_mount_points" and "filesystem_mount_points_exclude" may be specified`, + }, + { + name: `filesystem_ignored_fs_types and filesystem_fs_types_exclude`, + in: illegalConfig("filesystem_ignored_fs_types", "filesystem_fs_types_exclude"), + expectError: `only one of "filesystem_ignored_fs_types" and "filesystem_fs_types_exclude" may be specified`, + }, + } + + for _, tc := range tt { + t.Run(tc.name, func(t *testing.T) { + var c Config + + err := yaml.Unmarshal([]byte(tc.in), &c) + if tc.expectError != "" { + require.EqualError(t, err, tc.expectError) + return + } + require.NoError(t, err) + + require.ElementsMatch(t, tc.expectWarnings, c.UnmarshalWarnings) + if tc.check != nil { + tc.check(t, &c) + } + }) + } +} + +func illegalConfig(oldName, newName string) string { + return fmt.Sprintf(` + %s: illegal + %s: illegal + `, oldName, newName) +} diff --git a/pkg/integrations/node_exporter/node_exporter.go b/pkg/integrations/node_exporter/node_exporter.go index 91021093fcf4..139017b6dbd1 100644 --- a/pkg/integrations/node_exporter/node_exporter.go +++ b/pkg/integrations/node_exporter/node_exporter.go @@ -36,6 +36,10 @@ func New(log log.Logger, c *Config) (*Integration, error) { flags, _ := MapConfigToNodeExporterFlags(c) level.Debug(log).Log("msg", "initializing node_exporter with flags converted from agent config", "flags", strings.Join(flags, " ")) + for _, warn := range c.UnmarshalWarnings { + level.Warn(log).Log("msg", warn) + } + _, err := kingpin.CommandLine.Parse(flags) if err != nil { return nil, fmt.Errorf("failed to parse flags for generating node_exporter configuration: %w", err) diff --git a/pkg/integrations/node_exporter/node_exporter_test.go b/pkg/integrations/node_exporter/node_exporter_test.go index 64d41dede31a..3c7fa8f89de8 100644 --- a/pkg/integrations/node_exporter/node_exporter_test.go +++ b/pkg/integrations/node_exporter/node_exporter_test.go @@ -12,9 +12,13 @@ import ( "testing" "github.com/go-kit/log" + "github.com/go-kit/log/level" "github.com/gorilla/mux" + "github.com/grafana/agent/pkg/util" "github.com/prometheus/prometheus/pkg/textparse" + "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "gopkg.in/alecthomas/kingpin.v2" ) // TestNodeExporter runs an integration test for node_exporter, doing the @@ -71,6 +75,7 @@ func TestNodeExporter(t *testing.T) { // TestFTestNodeExporter_IgnoredFlags ensures that flags don't get ignored for // misspellings. func TestNodeExporter_IgnoredFlags(t *testing.T) { + l := util.TestLogger(t) cfg := DefaultConfig // Enable all collectors except perf @@ -85,10 +90,22 @@ func TestNodeExporter_IgnoredFlags(t *testing.T) { switch runtime.GOOS { case "darwin": - expect = []string{"collector.cpu.info", "collector.diskstats.ignored-devices"} + expect = []string{ + "collector.cpu.info", + "collector.cpu.guest", + "collector.cpu.info.flags-include", + "collector.cpu.info.bugs-include", + "collector.diskstats.ignored-devices", + "collector.filesystem.mount-timeout", + } } - require.Equal(t, expect, ignored) + if !assert.ElementsMatch(t, expect, ignored) { + level.Debug(l).Log("msg", "printing available flags") + for _, flag := range kingpin.CommandLine.Model().Flags { + level.Debug(l).Log("flag", flag.Name, "hidden", flag.Hidden) + } + } } // TestFlags makes sure that boolean flags and some known non-boolean flags diff --git a/pkg/integrations/postgres_exporter/postgres_exporter.go b/pkg/integrations/postgres_exporter/postgres_exporter.go index f5f2838892e6..af65f3455364 100644 --- a/pkg/integrations/postgres_exporter/postgres_exporter.go +++ b/pkg/integrations/postgres_exporter/postgres_exporter.go @@ -10,6 +10,8 @@ import ( "github.com/go-kit/log" "github.com/grafana/agent/pkg/integrations" + integrations_v2 "github.com/grafana/agent/pkg/integrations/v2" + "github.com/grafana/agent/pkg/integrations/v2/metricsutils" "github.com/lib/pq" "github.com/prometheus-community/postgres_exporter/exporter" ) @@ -120,6 +122,7 @@ func (c *Config) getDataSourceNames() ([]string, error) { func init() { integrations.RegisterIntegration(&Config{}) + integrations_v2.RegisterLegacy(&Config{}, integrations_v2.TypeMultiplex, metricsutils.CreateShim) } // New creates a new postgres_exporter integration. The integration scrapes diff --git a/pkg/integrations/redis_exporter/redis_exporter.go b/pkg/integrations/redis_exporter/redis_exporter.go index 21c818916bbf..2a71d35c1e44 100644 --- a/pkg/integrations/redis_exporter/redis_exporter.go +++ b/pkg/integrations/redis_exporter/redis_exporter.go @@ -8,6 +8,8 @@ import ( "time" "github.com/grafana/agent/pkg/integrations" + integrations_v2 "github.com/grafana/agent/pkg/integrations/v2" + "github.com/grafana/agent/pkg/integrations/v2/metricsutils" "github.com/go-kit/log" "github.com/go-kit/log/level" @@ -116,6 +118,7 @@ func (c *Config) NewIntegration(l log.Logger) (integrations.Integration, error) func init() { integrations.RegisterIntegration(&Config{}) + integrations_v2.RegisterLegacy(&Config{}, integrations_v2.TypeMultiplex, metricsutils.CreateShim) } // New creates a new redis_exporter integration. The integration queries diff --git a/pkg/integrations/register.go b/pkg/integrations/register.go index 7453cc82b97e..817143609fb0 100644 --- a/pkg/integrations/register.go +++ b/pkg/integrations/register.go @@ -32,6 +32,16 @@ func RegisterIntegration(cfg Config) { configFieldNames[reflect.TypeOf(cfg)] = cfg.Name() } +// RegisteredIntegrations all Configs that were passed to RegisterIntegration. +// Each call will generate a new set of pointers. +func RegisteredIntegrations() []Config { + res := make([]Config, 0, len(registeredIntegrations)) + for _, in := range registeredIntegrations { + res = append(res, cloneIntegration(in)) + } + return res +} + func cloneIntegration(c Config) Config { return reflect.New(reflect.TypeOf(c).Elem()).Interface().(Config) } diff --git a/pkg/integrations/statsd_exporter/statsd_exporter.go b/pkg/integrations/statsd_exporter/statsd_exporter.go index 265b7c79a12a..09ccd16fcdcb 100644 --- a/pkg/integrations/statsd_exporter/statsd_exporter.go +++ b/pkg/integrations/statsd_exporter/statsd_exporter.go @@ -10,10 +10,6 @@ import ( "strconv" "time" - "github.com/prometheus/statsd_exporter/pkg/mappercache/randomreplacement" - - "github.com/prometheus/statsd_exporter/pkg/mappercache/lru" - "github.com/go-kit/log" "github.com/go-kit/log/level" "github.com/grafana/agent/pkg/integrations" @@ -27,6 +23,8 @@ import ( "github.com/prometheus/statsd_exporter/pkg/line" "github.com/prometheus/statsd_exporter/pkg/listener" "github.com/prometheus/statsd_exporter/pkg/mapper" + "github.com/prometheus/statsd_exporter/pkg/mappercache/lru" + "github.com/prometheus/statsd_exporter/pkg/mappercache/randomreplacement" "gopkg.in/yaml.v2" ) diff --git a/pkg/integrations/v2/agent/agent.go b/pkg/integrations/v2/agent/agent.go new file mode 100644 index 000000000000..e151998572f4 --- /dev/null +++ b/pkg/integrations/v2/agent/agent.go @@ -0,0 +1,46 @@ +// Package agent is an "example" integration that has very little functionality, +// but is still useful in practice. The Agent integration re-exposes the Agent's +// own metrics endpoint and allows the Agent to scrape itself. +package agent + +import ( + "github.com/go-kit/log" + "github.com/grafana/agent/pkg/integrations/v2" + "github.com/grafana/agent/pkg/integrations/v2/common" + "github.com/grafana/agent/pkg/integrations/v2/metricsutils" + "github.com/prometheus/client_golang/prometheus/promhttp" +) + +// Config controls the Agent integration. +type Config struct { + Common common.MetricsConfig `yaml:",inline"` +} + +// Name returns the name of the integration that this config represents. +func (c *Config) Name() string { return "agent" } + +// ApplyDefaults applies runtime-specific defaults to c. +func (c *Config) ApplyDefaults(globals integrations.Globals) error { + c.Common.ApplyDefaults(globals.SubsystemOpts.Metrics.Autoscrape) + if id, err := c.Identifier(globals); err == nil { + c.Common.InstanceKey = &id + } + return nil +} + +// Identifier uniquely identifies this instance of Config. +func (c *Config) Identifier(globals integrations.Globals) (string, error) { + if c.Common.InstanceKey != nil { + return *c.Common.InstanceKey, nil + } + return globals.AgentIdentifier, nil +} + +// NewIntegration converts this config into an instance of an integration. +func (c *Config) NewIntegration(l log.Logger, globals integrations.Globals) (integrations.Integration, error) { + return metricsutils.NewMetricsHandlerIntegration(l, c, c.Common, globals, promhttp.Handler()) +} + +func init() { + integrations.Register(&Config{}, integrations.TypeSingleton) +} diff --git a/pkg/integrations/v2/autoscrape/appender.go b/pkg/integrations/v2/autoscrape/appender.go new file mode 100644 index 000000000000..ad5f94e003d2 --- /dev/null +++ b/pkg/integrations/v2/autoscrape/appender.go @@ -0,0 +1,32 @@ +package autoscrape + +import ( + "fmt" + + "github.com/prometheus/prometheus/pkg/exemplar" + "github.com/prometheus/prometheus/pkg/labels" + "github.com/prometheus/prometheus/storage" +) + +// failedAppender is used as the appender when an instance couldn't be found. +type failedAppender struct { + instanceName string +} + +var _ storage.Appender = (*failedAppender)(nil) + +func (fa *failedAppender) Append(ref uint64, l labels.Labels, t int64, v float64) (uint64, error) { + return 0, fmt.Errorf("no such instance %s", fa.instanceName) +} + +func (fa *failedAppender) Commit() error { + return fmt.Errorf("no such instance %s", fa.instanceName) +} + +func (fa *failedAppender) Rollback() error { + return fmt.Errorf("no such instance %s", fa.instanceName) +} + +func (fa *failedAppender) AppendExemplar(ref uint64, l labels.Labels, e exemplar.Exemplar) (uint64, error) { + return 0, fmt.Errorf("no such instance %s", fa.instanceName) +} diff --git a/pkg/integrations/v2/autoscrape/autoscrape.go b/pkg/integrations/v2/autoscrape/autoscrape.go new file mode 100644 index 000000000000..a5d986273bd4 --- /dev/null +++ b/pkg/integrations/v2/autoscrape/autoscrape.go @@ -0,0 +1,296 @@ +// Package autoscrape implements a scraper for integrations. +package autoscrape + +import ( + "context" + "sync" + + "github.com/go-kit/log" + "github.com/go-kit/log/level" + "github.com/grafana/agent/pkg/metrics" + "github.com/grafana/agent/pkg/metrics/instance" + "github.com/oklog/run" + "github.com/prometheus/common/model" + prom_config "github.com/prometheus/prometheus/config" + "github.com/prometheus/prometheus/discovery" + "github.com/prometheus/prometheus/pkg/relabel" + "github.com/prometheus/prometheus/scrape" + "github.com/prometheus/prometheus/storage" +) + +// DefaultGlobal holds default values for Global. +var DefaultGlobal Global = Global{ + Enable: true, + MetricsInstance: "default", +} + +// Global holds default settings for metrics integrations that support +// autoscraping. Integrations may override their settings. +type Global struct { + Enable bool `yaml:"enable,omitempty"` // Whether self-scraping should be enabled. + MetricsInstance string `yaml:"metrics_instance,omitempty"` // Metrics instance name to send metrics to. + ScrapeInterval model.Duration `yaml:"scrape_interval,omitempty"` // Self-scraping frequency. + ScrapeTimeout model.Duration `yaml:"scrape_timeout,omitempty"` // Self-scraping timeout. +} + +// UnmarshalYAML implements yaml.Unmarshaler. +func (g *Global) UnmarshalYAML(f func(interface{}) error) error { + *g = DefaultGlobal + type global Global + return f((*global)(g)) +} + +// Config configure autoscrape for an individual integration. Override defaults. +type Config struct { + Enable *bool `yaml:"enable,omitempty"` // Whether self-scraping should be enabled. + MetricsInstance string `yaml:"metrics_instance,omitempty"` // Metrics instance name to send metrics to. + ScrapeInterval model.Duration `yaml:"scrape_interval,omitempty"` // Self-scraping frequency. + ScrapeTimeout model.Duration `yaml:"scrape_timeout,omitempty"` // Self-scraping timeout. + + RelabelConfigs []*relabel.Config `yaml:"relabel_configs,omitempty"` // Relabel the autoscrape job + MetricRelabelConfigs []*relabel.Config `yaml:"metric_relabel_configs,omitempty"` // Relabel individual autoscrape metrics +} + +// InstanceStore is used to find instances to send metrics to. It is a subset +// of the pkg/metrics/instance.Manager interface. +type InstanceStore interface { + // GetInstance retrieves a ManagedInstance by name. + GetInstance(name string) (instance.ManagedInstance, error) +} + +// ScrapeConfig bind a Prometheus scrape config with an instance to send +// scraped metrics to. +type ScrapeConfig struct { + Instance string + Config prom_config.ScrapeConfig +} + +// Scraper is a metrics autoscraper. +type Scraper struct { + ctx context.Context + cancel context.CancelFunc + + log log.Logger + is InstanceStore + + // Prometheus doesn't pass contextual information at scrape time that could + // be used to change the behavior of generating an appender. This means that + // it's not yet possible for us to just run a single SD + scrape manager for + // all of our integrations, and we instead need to launch a pair of each for + // every instance we're writing to. + + iscrapersMut sync.RWMutex + iscrapers map[string]*instanceScraper +} + +// NewScraper creates a new autoscraper. Scraper will run until Stop is called. +// Instances to send scraped metrics to will be looked up via im. +func NewScraper(l log.Logger, is InstanceStore) *Scraper { + l = log.With(l, "component", "autoscraper") + + ctx, cancel := context.WithCancel(context.Background()) + + s := &Scraper{ + ctx: ctx, + cancel: cancel, + + log: l, + is: is, + iscrapers: map[string]*instanceScraper{}, + } + return s +} + +// ApplyConfig will apply the given jobs. An error will be returned for any +// jobs that failed to be applied. +func (s *Scraper) ApplyConfig(jobs []*ScrapeConfig) error { + s.iscrapersMut.Lock() + defer s.iscrapersMut.Unlock() + + var firstError error + saveError := func(e error) { + if firstError == nil { + firstError = e + } + } + + // Shard our jobs by target instance. + shardedJobs := map[string][]*prom_config.ScrapeConfig{} + for _, j := range jobs { + _, err := s.is.GetInstance(j.Instance) + if err != nil { + level.Error(s.log).Log("msg", "cannot autoscrape integration", "name", j.Config.JobName, "err", err) + saveError(err) + continue + } + + shardedJobs[j.Instance] = append(shardedJobs[j.Instance], &j.Config) + } + + // Then pass the jobs to instanceScraper, creating them if we need to. + for instance, jobs := range shardedJobs { + is, ok := s.iscrapers[instance] + if !ok { + is = newInstanceScraper(s.ctx, s.log, s.is, instance) + s.iscrapers[instance] = is + } + if err := is.ApplyConfig(jobs); err != nil { + // Not logging here; is.ApplyConfig already logged the errors. + saveError(err) + } + } + + // Garbage collect: if if there's a key in s.scrapers that wasn't in + // shardedJobs, stop that unused scraper. + for instance, is := range s.iscrapers { + _, current := shardedJobs[instance] + if !current { + is.Stop() + delete(s.iscrapers, instance) + } + } + + return firstError +} + +// TargetsActive returns the set of active scrape targets for all target +// instances. +func (s *Scraper) TargetsActive() map[string]metrics.TargetSet { + s.iscrapersMut.RLock() + defer s.iscrapersMut.RUnlock() + + allTargets := make(map[string]metrics.TargetSet, len(s.iscrapers)) + for instance, is := range s.iscrapers { + allTargets[instance] = is.sm.TargetsActive() + } + return allTargets +} + +// Stop stops the Scraper. +func (s *Scraper) Stop() { + s.iscrapersMut.Lock() + defer s.iscrapersMut.Unlock() + + for instance, is := range s.iscrapers { + is.Stop() + delete(s.iscrapers, instance) + } + + s.cancel() +} + +// instanceScraper is a Scraper which always sends to the same instance. +type instanceScraper struct { + log log.Logger + + sd *discovery.Manager + sm *scrape.Manager + cancel context.CancelFunc + exited chan struct{} +} + +// newInstanceScraper runs a new instanceScraper. Must be stopped by calling +// Stop. +func newInstanceScraper( + ctx context.Context, + l log.Logger, + s InstanceStore, + instanceName string, +) *instanceScraper { + ctx, cancel := context.WithCancel(ctx) + + l = log.With(l, "target_instance", instanceName) + + sd := discovery.NewManager(ctx, l, discovery.Name("autoscraper/"+instanceName)) + sm := scrape.NewManager(&scrape.Options{}, l, &agentAppender{ + inst: instanceName, + is: s, + }) + + is := &instanceScraper{ + log: l, + + sd: sd, + sm: sm, + cancel: cancel, + exited: make(chan struct{}), + } + + go is.run() + return is +} + +type agentAppender struct { + inst string + is InstanceStore +} + +func (aa *agentAppender) Appender(ctx context.Context) storage.Appender { + mi, err := aa.is.GetInstance(aa.inst) + if err != nil { + return &failedAppender{instanceName: aa.inst} + } + return mi.Appender(ctx) +} + +func (is *instanceScraper) run() { + defer close(is.exited) + var rg run.Group + + rg.Add(func() error { + // Service discovery will stop whenever our parent context is canceled or + // if is.cancel is called. + err := is.sd.Run() + if err != nil { + level.Error(is.log).Log("msg", "autoscrape service discovery exited with error", "err", err) + } + return err + }, func(_ error) { + is.cancel() + }) + + rg.Add(func() error { + err := is.sm.Run(is.sd.SyncCh()) + if err != nil { + level.Error(is.log).Log("msg", "autoscrape scrape manager exited with error", "err", err) + } + return err + }, func(_ error) { + is.sm.Stop() + }) + + _ = rg.Run() +} + +func (is *instanceScraper) ApplyConfig(jobs []*prom_config.ScrapeConfig) error { + var firstError error + saveError := func(e error) { + if firstError == nil && e != nil { + firstError = e + } + } + + var ( + scrapeConfigs = make([]*prom_config.ScrapeConfig, 0, len(jobs)) + sdConfigs = make(map[string]discovery.Configs, len(jobs)) + ) + for _, job := range jobs { + sdConfigs[job.JobName] = job.ServiceDiscoveryConfigs + scrapeConfigs = append(scrapeConfigs, job) + } + if err := is.sd.ApplyConfig(sdConfigs); err != nil { + level.Error(is.log).Log("msg", "error when applying SD to autoscraper", "err", err) + saveError(err) + } + if err := is.sm.ApplyConfig(&prom_config.Config{ScrapeConfigs: scrapeConfigs}); err != nil { + level.Error(is.log).Log("msg", "error when applying jobs to scraper", "err", err) + saveError(err) + } + + return firstError +} + +func (is *instanceScraper) Stop() { + is.cancel() + <-is.exited +} diff --git a/pkg/integrations/v2/autoscrape/autoscrape_test.go b/pkg/integrations/v2/autoscrape/autoscrape_test.go new file mode 100644 index 000000000000..c813b678a5f8 --- /dev/null +++ b/pkg/integrations/v2/autoscrape/autoscrape_test.go @@ -0,0 +1,108 @@ +package autoscrape + +import ( + "context" + "net/http/httptest" + "sync/atomic" + "testing" + "time" + + "github.com/grafana/agent/pkg/metrics/instance" + "github.com/grafana/agent/pkg/util" + "github.com/prometheus/client_golang/prometheus/promhttp" + "github.com/prometheus/common/model" + prom_config "github.com/prometheus/prometheus/config" + "github.com/prometheus/prometheus/discovery" + "github.com/prometheus/prometheus/pkg/exemplar" + "github.com/prometheus/prometheus/pkg/labels" + "github.com/prometheus/prometheus/scrape" + "github.com/prometheus/prometheus/storage" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +// TestAutoscrape is a basic end-to-end test of the autoscraper. +func TestAutoscrape(t *testing.T) { + srv := httptest.NewServer(promhttp.Handler()) + defer srv.Close() + + wt := util.NewWaitTrigger() + + noop := noOpAppender + noop.AppendFunc = func(ref uint64, l labels.Labels, t int64, v float64) (uint64, error) { + wt.Trigger() + return noOpAppender.AppendFunc(ref, l, t, v) + } + + im := instance.MockManager{ + GetInstanceFunc: func(name string) (instance.ManagedInstance, error) { + assert.Equal(t, t.Name(), name) + return &mockInstance{app: &noop}, nil + }, + } + as := NewScraper(util.TestLogger(t), im) + defer as.Stop() + + err := as.ApplyConfig([]*ScrapeConfig{{ + Instance: t.Name(), + Config: func() prom_config.ScrapeConfig { + cfg := prom_config.DefaultScrapeConfig + cfg.JobName = t.Name() + cfg.ScrapeInterval = model.Duration(time.Second) + cfg.ServiceDiscoveryConfigs = discovery.Configs{ + discovery.StaticConfig{{ + Targets: []model.LabelSet{{ + model.AddressLabel: model.LabelValue(srv.Listener.Addr().String()), + }}, + Source: t.Name(), + }}, + } + return cfg + }(), + }}) + require.NoError(t, err, "failed to apply configs") + + // NOTE(rfratto): SD won't start sending targets until after 5 seconds. We'll + // need to at least wait that long. + time.Sleep(5 * time.Second) + + require.NoError(t, wt.Wait(5*time.Second), "timed out waiting for scrape") +} + +var globalRef uint64 +var noOpAppender = mockAppender{ + AppendFunc: func(ref uint64, l labels.Labels, t int64, v float64) (uint64, error) { + return atomic.AddUint64(&globalRef, 1), nil + }, + CommitFunc: func() error { return nil }, + RollbackFunc: func() error { return nil }, + AppendExemplarFunc: func(ref uint64, l labels.Labels, e exemplar.Exemplar) (uint64, error) { + return atomic.AddUint64(&globalRef, 1), nil + }, +} + +type mockAppender struct { + AppendFunc func(ref uint64, l labels.Labels, t int64, v float64) (uint64, error) + CommitFunc func() error + RollbackFunc func() error + AppendExemplarFunc func(ref uint64, l labels.Labels, e exemplar.Exemplar) (uint64, error) +} + +func (ma *mockAppender) Append(ref uint64, l labels.Labels, t int64, v float64) (uint64, error) { + return ma.AppendFunc(ref, l, t, v) +} +func (ma *mockAppender) Commit() error { return ma.CommitFunc() } +func (ma *mockAppender) Rollback() error { return ma.RollbackFunc() } +func (ma *mockAppender) AppendExemplar(ref uint64, l labels.Labels, e exemplar.Exemplar) (uint64, error) { + return ma.AppendExemplarFunc(ref, l, e) +} + +type mockInstance struct { + app storage.Appender +} + +func (mi *mockInstance) Run(ctx context.Context) error { return nil } +func (mi *mockInstance) Update(c instance.Config) error { return nil } +func (mi *mockInstance) TargetsActive() map[string][]*scrape.Target { return nil } +func (mi *mockInstance) StorageDirectory() string { return "" } +func (mi *mockInstance) Appender(ctx context.Context) storage.Appender { return mi.app } diff --git a/pkg/integrations/v2/common/metrics.go b/pkg/integrations/v2/common/metrics.go new file mode 100644 index 000000000000..6a670f47d745 --- /dev/null +++ b/pkg/integrations/v2/common/metrics.go @@ -0,0 +1,34 @@ +package common + +import ( + "github.com/grafana/agent/pkg/integrations/v2/autoscrape" +) + +// MetricsConfig is a set of common options shared by metrics integrations. It +// should be utilised by an integration's config by inlining the common +// options: +// +// type IntegrationConfig struct { +// Common common.MetricsConfig `yaml:",inline"` +// } +type MetricsConfig struct { + Autoscrape autoscrape.Config `yaml:"autoscrape,omitempty"` + InstanceKey *string `yaml:"instance,omitempty"` +} + +// ApplyDefaults applies defaults to mc. +func (mc *MetricsConfig) ApplyDefaults(g autoscrape.Global) { + if mc.Autoscrape.Enable == nil { + val := g.Enable + mc.Autoscrape.Enable = &val + } + if mc.Autoscrape.MetricsInstance == "" { + mc.Autoscrape.MetricsInstance = g.MetricsInstance + } + if mc.Autoscrape.ScrapeInterval == 0 { + mc.Autoscrape.ScrapeInterval = g.ScrapeInterval + } + if mc.Autoscrape.ScrapeTimeout == 0 { + mc.Autoscrape.ScrapeTimeout = g.ScrapeTimeout + } +} diff --git a/pkg/integrations/v2/controller.go b/pkg/integrations/v2/controller.go new file mode 100644 index 000000000000..004af87111f4 --- /dev/null +++ b/pkg/integrations/v2/controller.go @@ -0,0 +1,521 @@ +package integrations + +import ( + "context" + "errors" + "fmt" + "net/http" + "net/url" + "path" + "sort" + "strings" + "sync" + + "github.com/go-kit/log" + "github.com/go-kit/log/level" + "github.com/gorilla/mux" + "github.com/grafana/agent/pkg/integrations/v2/autoscrape" + "github.com/prometheus/prometheus/discovery" + http_sd "github.com/prometheus/prometheus/discovery/http" + "go.uber.org/atomic" +) + +// controllerConfig holds a set of integration configs. +type controllerConfig []Config + +// controller manages a set of integrations. +type controller struct { + logger log.Logger + mut sync.Mutex + cfg controllerConfig + globals Globals + + integrations []*controlledIntegration // Integrations to run + reloadIntegrations chan struct{} // Inform Controller.Run to re-read integrations + + // Next generation value to use for an integration. + gen atomic.Uint64 + + // onUpdateDone is used for testing and will be invoked when integrations + // finish reloading. + onUpdateDone func() +} + +// newController creates a new Controller. Controller is intended to be +// embedded inside of integrations that may want to multiplex other +// integrations. +func newController(l log.Logger, cfg controllerConfig, globals Globals) (*controller, error) { + c := &controller{ + logger: l, + reloadIntegrations: make(chan struct{}, 1), + } + if err := c.UpdateController(cfg, globals); err != nil { + return nil, err + } + return c, nil +} + +// run starts the controller and blocks until ctx is canceled. +func (c *controller) run(ctx context.Context) { + defer func() { + level.Debug(c.logger).Log("msg", "stopping all integrations") + + c.mut.Lock() + defer c.mut.Unlock() + + for _, exist := range c.integrations { + exist.Stop() + } + }() + + var currentIntegrations []*controlledIntegration + + updateIntegrations := func() { + // Lock the mutex to prevent another set of integrations from being + // loaded in. + c.mut.Lock() + defer c.mut.Unlock() + level.Debug(c.logger).Log("msg", "updating running integrations", "prev_count", len(currentIntegrations), "new_count", len(c.integrations)) + + newIntegrations := c.integrations + + // Shut down all old integrations. If the integration exists in + // newIntegrations but has a different gen number, then there's a new + // instance to launch. + for _, exist := range currentIntegrations { + var found bool + for _, current := range newIntegrations { + if exist.id == current.id && current.gen == exist.gen { + found = true + break + } + } + if !found { + exist.Stop() + } + } + + var waitStarted sync.WaitGroup + waitStarted.Add(len(newIntegrations)) + + // Now all integrations can be launched. + for _, current := range newIntegrations { + go func(current *controlledIntegration) { + waitStarted.Done() + + err := current.Run(ctx) + if err != nil && !errors.Is(err, errIntegrationRunning) { + level.Warn(c.logger).Log("msg", "integration exited with error", "instance", current.id, "err", err) + } + }(current) + } + + // Wait for all integration goroutines to have been scheduled at least once. + waitStarted.Wait() + + // Finally, store the current list of contolled integrations. + currentIntegrations = newIntegrations + } + + for { + select { + case <-ctx.Done(): + level.Debug(c.logger).Log("msg", "controller exiting") + return + case <-c.reloadIntegrations: + updateIntegrations() + if c.onUpdateDone != nil { + c.onUpdateDone() + } + } + } +} + +// controlledIntegration is a running Integration. +// A running integration is identified uniquely by its id and gen. +type controlledIntegration struct { + id integrationID + gen uint64 + + i Integration + c Config // Config that generated i. Used for changing to see if a config changed. + + running atomic.Bool + + mut sync.Mutex + stop context.CancelFunc +} + +func (ci *controlledIntegration) Running() bool { + return ci.running.Load() +} + +func (ci *controlledIntegration) Run(ctx context.Context) error { + updatedRunningState := ci.running.CAS(false, true) + if !updatedRunningState { + // The CAS will fail if our integration was already running. + return errIntegrationRunning + } + defer ci.running.Store(false) + + ci.mut.Lock() + ctx, ci.stop = context.WithCancel(ctx) + ci.mut.Unlock() + + // Early optimization: don't do anything if ctx has already been canceled + if ctx.Err() != nil { + return nil + } + return ci.i.RunIntegration(ctx) +} + +var errIntegrationRunning = fmt.Errorf("already running") + +func (ci *controlledIntegration) Stop() { + ci.mut.Lock() + if ci.stop != nil { + ci.stop() + } + ci.mut.Unlock() +} + +// integrationID uses a tuple of Name and Identifier to uniquely identify an +// integration. +type integrationID struct { + Name, Identifier string +} + +func (id integrationID) String() string { + return fmt.Sprintf("%s/%s", id.Name, id.Identifier) +} + +// UpdateController updates the Controller with new Controller and +// IntegrationOptions. +// +// UpdateController updates running integrations. Extensions can be +// recalculated by calling relevant methods like Handler or Targets. +func (c *controller) UpdateController(cfg controllerConfig, globals Globals) error { + c.mut.Lock() + defer c.mut.Unlock() + + integrationIDMap := map[integrationID]struct{}{} + + integrations := make([]*controlledIntegration, 0, len(cfg)) + +NextConfig: + for _, ic := range cfg { + name := ic.Name() + + identifier, err := ic.Identifier(globals) + if err != nil { + return fmt.Errorf("could not build identifier for integration %q: %w", name, err) + } + + if err := ic.ApplyDefaults(globals); err != nil { + return fmt.Errorf("failed to apply defaults for %s/%s: %w", name, identifier, err) + } + + id := integrationID{Name: name, Identifier: identifier} + if _, exist := integrationIDMap[id]; exist { + return fmt.Errorf("multiple instance names %q in integration %q", identifier, name) + } + integrationIDMap[id] = struct{}{} + + // Now that we know the ID for an integration, we can check to see if it's + // running and can be dynamically updated. + for _, ci := range c.integrations { + if ci.id != id { + continue + } + + // If the configs haven't changed, then we don't need to do anything. + if CompareConfigs(ci.c, ic) { + integrations = append(integrations, ci) + continue NextConfig + } + + if ui, ok := ci.i.(UpdateIntegration); ok { + if err := ui.ApplyConfig(ic, globals); errors.Is(err, ErrInvalidUpdate) { + level.Warn(c.logger).Log("msg", "failed to dynamically update integration; will recreate", "integration", name, "instance", identifier, "err', err") + break + } else if err != nil { + return fmt.Errorf("failed to update %s integration %q: %w", name, identifier, err) + } else { + // Update succeeded; re-use the running one and go to the next + // integration to process. + integrations = append(integrations, ci) + continue NextConfig + } + } + + // We found the integration to update: we can stop this loop now. + break + } + + logger := log.With(c.logger, "integration", name, "instance", identifier) + integration, err := ic.NewIntegration(logger, globals) + if err != nil { + return fmt.Errorf("failed to construct %s integration %q: %w", name, identifier, err) + } + + // Create a new controlled integration. + integrations = append(integrations, &controlledIntegration{ + id: id, + gen: c.gen.Inc(), + i: integration, + c: ic, + }) + } + + // Update integrations and inform + c.integrations = integrations + c.reloadIntegrations <- struct{}{} + + c.cfg = cfg + c.globals = globals + return nil +} + +// Handler returns an HTTP handler for the controller and its integrations. +// Handler will pass through requests to other running integrations. Handler +// always returns an http.Handler regardless of error. +// +// Handler is expensive to compute and should only be done after reloading the +// config. +func (c *controller) Handler(prefix string) (http.Handler, error) { + c.mut.Lock() + defer c.mut.Unlock() + + var firstErr error + saveFirstErr := func(err error) { + if firstErr == nil { + firstErr = err + } + } + + r := mux.NewRouter() + + err := forEachIntegration(c.integrations, prefix, func(ci *controlledIntegration, iprefix string) { + id := ci.id + + i, ok := ci.i.(HTTPIntegration) + if !ok { + return + } + + handler, err := i.Handler(iprefix + "/") + if err != nil { + saveFirstErr(fmt.Errorf("could not generate HTTP handler for %s integration %q: %w", id.Name, id.Identifier, err)) + return + } else if handler == nil { + return + } + + // Anything that matches the integrationPrefix should be passed to the handler. + r.PathPrefix(iprefix).HandlerFunc(func(rw http.ResponseWriter, r *http.Request) { + if !ci.Running() { + http.Error(rw, fmt.Sprintf("%s integration intance %q not running", id.Name, id.Identifier), http.StatusServiceUnavailable) + return + } + handler.ServeHTTP(rw, r) + }) + }) + if err != nil { + level.Warn(c.logger).Log("msg", "error when iterating over integrations to build HTTP handlers", "err", err) + } + + // TODO(rfratto): navigation page for exact prefix match + + return r, firstErr +} + +// forEachIntegration calculates the prefix for each integration and calls f. +// prefix will not end in /. +func forEachIntegration(set []*controlledIntegration, basePrefix string, f func(ci *controlledIntegration, iprefix string)) error { + // Pre-populate a mapping of integration name -> identifier. If there are + // two instances of the same integration, we want to ensure unique routing. + // + // This special logic is done for backwards compatibility with the original + // design of integrations. + identifiersMap := map[string][]string{} + for _, i := range set { + identifiersMap[i.id.Name] = append(identifiersMap[i.id.Name], i.id.Identifier) + } + + usedPrefixes := map[string]struct{}{} + + for _, ci := range set { + id := ci.id + multipleInstances := len(identifiersMap[id.Name]) > 1 + + var integrationPrefix string + if multipleInstances { + // i.e., /integrations/mysqld_exporter/server-a + integrationPrefix = path.Join(basePrefix, id.Name, id.Identifier) + } else { + // i.e., /integrations/node_exporter + integrationPrefix = path.Join(basePrefix, id.Name) + } + + f(ci, integrationPrefix) + + if _, exist := usedPrefixes[integrationPrefix]; exist { + return fmt.Errorf("BUG: duplicate integration prefix %q", integrationPrefix) + } + usedPrefixes[integrationPrefix] = struct{}{} + } + return nil +} + +// Targets returns the current set of targets across all integrations. Use opts +// to customize which targets are returned. +func (c *controller) Targets(ep Endpoint, opts TargetOptions) []*targetGroup { + // Grab the integrations as fast as possible. We don't want to spend too much + // time holding the mutex. + type prefixedMetricsIntegration struct { + id integrationID + i MetricsIntegration + ep Endpoint + } + var mm []prefixedMetricsIntegration + + c.mut.Lock() + err := forEachIntegration(c.integrations, ep.Prefix, func(ci *controlledIntegration, iprefix string) { + // Best effort liveness check. They might stop running when we request + // their targets, which is fine, but we should save as much work as we + // can. + if !ci.Running() { + return + } + if mi, ok := ci.i.(MetricsIntegration); ok { + ep := Endpoint{Host: ep.Host, Prefix: iprefix} + mm = append(mm, prefixedMetricsIntegration{id: ci.id, i: mi, ep: ep}) + } + }) + if err != nil { + level.Warn(c.logger).Log("msg", "error when iterating over integrations to get targets", "err", err) + } + c.mut.Unlock() + + var tgs []*targetGroup + for _, mi := range mm { + // If we're looking for a subset of integrations, filter out anything that doesn't match. + if len(opts.Integrations) > 0 && !stringSliceContains(opts.Integrations, mi.id.Name) { + continue + } + // If we're looking for a specific instance, filter out anything that doesn't match. + if opts.Instance != "" && mi.id.Identifier != opts.Instance { + continue + } + + for _, tgt := range mi.i.Targets(mi.ep) { + tgs = append(tgs, (*targetGroup)(tgt)) + } + } + sort.Slice(tgs, func(i, j int) bool { + return tgs[i].Source < tgs[j].Source + }) + return tgs +} + +func stringSliceContains(ss []string, s string) bool { + for _, check := range ss { + if check == s { + return true + } + } + return false +} + +// TargetOptions controls which targets should be returned by the subsystem. +type TargetOptions struct { + // Integrations is the set of integrations to return. An empty slice will + // default to returning all integrations. + Integrations []string + // Instance matches a specific instance from all integrations. An empty + // string will match any instance. + Instance string +} + +// TargetOptionsFromParams creates TargetOptions from parsed URL query parameters. +func TargetOptionsFromParams(u url.Values) (TargetOptions, error) { + var to TargetOptions + + rawIntegrations := u.Get("integrations") + if rawIntegrations != "" { + rawIntegrations, err := url.QueryUnescape(rawIntegrations) + if err != nil { + return to, fmt.Errorf("invalid value for integrations: %w", err) + } + to.Integrations = strings.Split(rawIntegrations, ",") + } + + rawInstance := u.Get("instance") + if rawInstance != "" { + rawInstance, err := url.QueryUnescape(rawInstance) + if err != nil { + return to, fmt.Errorf("invalid value for instance: %w", err) + } + to.Instance = rawInstance + } + + return to, nil +} + +// ToParams will convert to into URL query parameters. +func (to TargetOptions) ToParams() url.Values { + p := make(url.Values) + if len(to.Integrations) != 0 { + p.Set("integrations", url.QueryEscape(strings.Join(to.Integrations, ","))) + } + if to.Instance != "" { + p.Set("instance", url.QueryEscape(to.Instance)) + } + return p +} + +// ScrapeConfigs returns a set of scrape configs to use for self-scraping. +// sdConfig should contain the full URL where the integrations SD API is +// exposed. ScrapeConfigs will inject unique query parameters per integration +// to limit what will be discovered. +func (c *controller) ScrapeConfigs(prefix string, sdConfig *http_sd.SDConfig) []*autoscrape.ScrapeConfig { + // Grab the integrations as fast as possible. We don't want to spend too much + // time holding the mutex. + type prefixedMetricsIntegration struct { + id integrationID + i MetricsIntegration + prefix string + } + var mm []prefixedMetricsIntegration + + c.mut.Lock() + err := forEachIntegration(c.integrations, prefix, func(ci *controlledIntegration, iprefix string) { + if mi, ok := ci.i.(MetricsIntegration); ok { + mm = append(mm, prefixedMetricsIntegration{id: ci.id, i: mi, prefix: iprefix}) + } + }) + if err != nil { + level.Warn(c.logger).Log("msg", "error when iterating over integrations to get scrape configs", "err", err) + } + c.mut.Unlock() + + var cfgs []*autoscrape.ScrapeConfig + for _, mi := range mm { + // sdConfig will be pointing to the targets API. By default, this returns absolutely everything. + // We want to use the query parmaeters to inform the API to only return + // specific targets. + opts := TargetOptions{ + Integrations: []string{mi.id.Name}, + Instance: mi.id.Identifier, + } + + integrationSDConfig := *sdConfig + integrationSDConfig.URL = sdConfig.URL + "?" + opts.ToParams().Encode() + sds := discovery.Configs{&integrationSDConfig} + cfgs = append(cfgs, mi.i.ScrapeConfigs(sds)...) + } + sort.Slice(cfgs, func(i, j int) bool { + return cfgs[i].Config.JobName < cfgs[j].Config.JobName + }) + return cfgs +} diff --git a/pkg/integrations/v2/controller_httpintegration_test.go b/pkg/integrations/v2/controller_httpintegration_test.go new file mode 100644 index 000000000000..472ddb99d45b --- /dev/null +++ b/pkg/integrations/v2/controller_httpintegration_test.go @@ -0,0 +1,224 @@ +package integrations + +import ( + "fmt" + "io" + "net/http" + "net/http/httptest" + "strings" + "testing" + + "github.com/go-kit/log" + "github.com/gorilla/mux" + "github.com/grafana/agent/pkg/util" + "github.com/stretchr/testify/require" +) + +// +// Tests for controller's utilization of the HTTPIntegration interface. +// + +// Test_controller_HTTPIntegration_Prefixes ensures that the controller will assign +// appropriate prefixes to HTTPIntegrations. +func Test_controller_HTTPIntegration_Prefixes(t *testing.T) { + httpConfigFromID := func(t *testing.T, prefixes *[]string, name, identifier string) Config { + t.Helper() + + cfg := mockConfigNameTuple(t, name, identifier) + cfg.NewIntegrationFunc = func(log.Logger, Globals) (Integration, error) { + i := mockHTTPIntegration{ + Integration: NoOpIntegration, + HandlerFunc: func(prefix string) (http.Handler, error) { + *prefixes = append(*prefixes, prefix) + return http.NotFoundHandler(), nil + }, + } + return i, nil + } + + return cfg + } + + t.Run("fully unique", func(t *testing.T) { + var prefixes []string + + ctrl, err := newController( + util.TestLogger(t), + controllerConfig{ + httpConfigFromID(t, &prefixes, "foo", "bar"), + httpConfigFromID(t, &prefixes, "fizz", "buzz"), + httpConfigFromID(t, &prefixes, "hello", "world"), + }, + Globals{}, + ) + require.NoError(t, err) + _ = newSyncController(t, ctrl) + + _, err = ctrl.Handler("/integrations/") + require.NoError(t, err) + + expect := []string{ + "/integrations/foo/", + "/integrations/fizz/", + "/integrations/hello/", + } + require.ElementsMatch(t, prefixes, expect) + }) + + t.Run("multiple instances", func(t *testing.T) { + var prefixes []string + + ctrl, err := newController( + util.TestLogger(t), + controllerConfig{ + httpConfigFromID(t, &prefixes, "foo", "bar"), + httpConfigFromID(t, &prefixes, "foo", "buzz"), + httpConfigFromID(t, &prefixes, "hello", "world"), + }, + Globals{}, + ) + require.NoError(t, err) + _ = newSyncController(t, ctrl) + + _, err = ctrl.Handler("/integrations/") + require.NoError(t, err) + + expect := []string{ + "/integrations/foo/bar/", + "/integrations/foo/buzz/", + "/integrations/hello/", + } + require.ElementsMatch(t, prefixes, expect) + }) +} + +// Test_controller_HTTPIntegration_Routing ensures that the controller will route +// requests to the appropriate integration. +func Test_controller_HTTPIntegration_Routing(t *testing.T) { + httpConfigFromID := func(t *testing.T, name, identifier string) Config { + t.Helper() + + cfg := mockConfigNameTuple(t, name, identifier) + cfg.NewIntegrationFunc = func(log.Logger, Globals) (Integration, error) { + i := mockHTTPIntegration{ + Integration: NoOpIntegration, + HandlerFunc: func(prefix string) (http.Handler, error) { + return http.HandlerFunc(func(rw http.ResponseWriter, r *http.Request) { + fmt.Fprintf(rw, "prefix=%s, path=%s", prefix, r.URL.Path) + }), nil + }, + } + return i, nil + } + + return cfg + } + + ctrl, err := newController( + util.TestLogger(t), + controllerConfig{ + httpConfigFromID(t, "foo", "bar"), + httpConfigFromID(t, "foo", "buzz"), + httpConfigFromID(t, "hello", "world"), + }, + Globals{}, + ) + require.NoError(t, err) + _ = newSyncController(t, ctrl) + + handler, err := ctrl.Handler("/integrations/") + require.NoError(t, err) + + srv := httptest.NewServer(handler) + + getResponse := func(t *testing.T, path string) string { + t.Helper() + resp, err := srv.Client().Get(srv.URL + path) + require.NoError(t, err) + defer resp.Body.Close() + + var sb strings.Builder + _, err = io.Copy(&sb, resp.Body) + require.NoError(t, err) + return sb.String() + } + + tt := []struct { + path, expect string + }{ + {"/integrations/foo/bar", "prefix=/integrations/foo/bar/, path=/integrations/foo/bar"}, + {"/integrations/foo/bar/", "prefix=/integrations/foo/bar/, path=/integrations/foo/bar/"}, + {"/integrations/foo/bar/extra", "prefix=/integrations/foo/bar/, path=/integrations/foo/bar/extra"}, + } + + for _, tc := range tt { + require.Equal(t, tc.expect, getResponse(t, tc.path)) + } +} + +// Test_controller_HTTPIntegration_NestedRouting ensures that the controller +// will work with nested routers. +func Test_controller_HTTPIntegration_NestedRouting(t *testing.T) { + cfg := mockConfigNameTuple(t, "test", "test") + cfg.NewIntegrationFunc = func(log.Logger, Globals) (Integration, error) { + i := mockHTTPIntegration{ + Integration: NoOpIntegration, + HandlerFunc: func(prefix string) (http.Handler, error) { + r := mux.NewRouter() + r.StrictSlash(true) + + r.HandleFunc(prefix, func(rw http.ResponseWriter, r *http.Request) { + fmt.Fprintf(rw, "prefix=%s, path=%s", prefix, r.URL.Path) + }) + + r.HandleFunc(prefix+"greet", func(rw http.ResponseWriter, _ *http.Request) { + fmt.Fprintf(rw, "Hello, world!") + }) + return r, nil + }, + } + return i, nil + } + + ctrl, err := newController(util.TestLogger(t), controllerConfig{cfg}, Globals{}) + require.NoError(t, err) + _ = newSyncController(t, ctrl) + + handler, err := ctrl.Handler("/integrations/") + require.NoError(t, err) + + srv := httptest.NewServer(handler) + + getResponse := func(t *testing.T, path string) string { + t.Helper() + resp, err := srv.Client().Get(srv.URL + path) + require.NoError(t, err) + defer resp.Body.Close() + + var sb strings.Builder + _, err = io.Copy(&sb, resp.Body) + require.NoError(t, err) + return sb.String() + } + + tt := []struct { + path, expect string + }{ + {"/integrations/test", "prefix=/integrations/test/, path=/integrations/test/"}, + {"/integrations/test/", "prefix=/integrations/test/, path=/integrations/test/"}, + {"/integrations/test/greet", "Hello, world!"}, + } + + for _, tc := range tt { + require.Equal(t, tc.expect, getResponse(t, tc.path)) + } +} + +type mockHTTPIntegration struct { + Integration + HandlerFunc func(prefix string) (http.Handler, error) +} + +func (m mockHTTPIntegration) Handler(prefix string) (http.Handler, error) { + return m.HandlerFunc(prefix) +} diff --git a/pkg/integrations/v2/controller_metricsintegration_test.go b/pkg/integrations/v2/controller_metricsintegration_test.go new file mode 100644 index 000000000000..6ef0507c06c7 --- /dev/null +++ b/pkg/integrations/v2/controller_metricsintegration_test.go @@ -0,0 +1,154 @@ +package integrations + +import ( + "testing" + + "github.com/go-kit/log" + "github.com/grafana/agent/pkg/integrations/v2/autoscrape" + "github.com/grafana/agent/pkg/util" + "github.com/prometheus/common/model" + prom_config "github.com/prometheus/prometheus/config" + "github.com/prometheus/prometheus/discovery" + "github.com/prometheus/prometheus/discovery/http" + "github.com/prometheus/prometheus/discovery/targetgroup" + "github.com/stretchr/testify/require" +) + +// +// Tests for controller's utilization of the MetricsIntegration interface. +// + +func Test_controller_MetricsIntegration_Targets(t *testing.T) { + integrationWithTarget := func(targetName string) Integration { + return mockMetricsIntegration{ + Integration: NoOpIntegration, + TargetsFunc: func(Endpoint) []*targetgroup.Group { + return []*targetgroup.Group{{ + Targets: []model.LabelSet{{model.AddressLabel: model.LabelValue(targetName)}}, + }} + }, + ScrapeConfigsFunc: func(c discovery.Configs) []*autoscrape.ScrapeConfig { return nil }, + } + } + + integrations := []Config{ + mockConfigNameTuple(t, "a", "instanceA").WithNewIntegrationFunc(func(l log.Logger, g Globals) (Integration, error) { + return integrationWithTarget("a"), nil + }), + mockConfigNameTuple(t, "b", "instanceB").WithNewIntegrationFunc(func(l log.Logger, g Globals) (Integration, error) { + return integrationWithTarget("b"), nil + }), + } + + t.Run("All", func(t *testing.T) { + ctrl, err := newController( + util.TestLogger(t), + controllerConfig(integrations), + Globals{}, + ) + require.NoError(t, err) + _ = newSyncController(t, ctrl) + + result := ctrl.Targets(Endpoint{Prefix: "/"}, TargetOptions{}) + expect := []*targetGroup{ + {Targets: []model.LabelSet{{model.AddressLabel: "a"}}}, + {Targets: []model.LabelSet{{model.AddressLabel: "b"}}}, + } + require.Equal(t, expect, result) + }) + + t.Run("All by Integration", func(t *testing.T) { + ctrl, err := newController( + util.TestLogger(t), + controllerConfig(integrations), + Globals{}, + ) + require.NoError(t, err) + _ = newSyncController(t, ctrl) + + result := ctrl.Targets(Endpoint{Prefix: "/"}, TargetOptions{ + Integrations: []string{"a", "b"}, + }) + expect := []*targetGroup{ + {Targets: []model.LabelSet{{model.AddressLabel: "a"}}}, + {Targets: []model.LabelSet{{model.AddressLabel: "b"}}}, + } + require.Equal(t, expect, result) + }) + + t.Run("Specific Integration", func(t *testing.T) { + ctrl, err := newController( + util.TestLogger(t), + controllerConfig(integrations), + Globals{}, + ) + require.NoError(t, err) + _ = newSyncController(t, ctrl) + + result := ctrl.Targets(Endpoint{Prefix: "/"}, TargetOptions{ + Integrations: []string{"a"}, + }) + expect := []*targetGroup{ + {Targets: []model.LabelSet{{model.AddressLabel: "a"}}}, + } + require.Equal(t, expect, result) + }) +} + +func Test_controller_MetricsIntegration_ScrapeConfig(t *testing.T) { + integrationWithTarget := func(targetName string) Integration { + return mockMetricsIntegration{ + Integration: NoOpIntegration, + ScrapeConfigsFunc: func(c discovery.Configs) []*autoscrape.ScrapeConfig { + return []*autoscrape.ScrapeConfig{{ + Instance: "default", + Config: prom_config.ScrapeConfig{JobName: targetName}, + }} + }, + } + } + + integrations := []Config{ + mockConfigNameTuple(t, "a", "instanceA").WithNewIntegrationFunc(func(l log.Logger, g Globals) (Integration, error) { + return integrationWithTarget("a"), nil + }), + mockConfigNameTuple(t, "b", "instanceB").WithNewIntegrationFunc(func(l log.Logger, g Globals) (Integration, error) { + return integrationWithTarget("b"), nil + }), + } + + ctrl, err := newController( + util.TestLogger(t), + controllerConfig(integrations), + Globals{}, + ) + require.NoError(t, err) + // NOTE(rfratto): we explicitly don't run the controller here because + // ScrapeConfigs should return the list of scrape targets even when the + // integration isn't running. + + result := ctrl.ScrapeConfigs("/", &http.DefaultSDConfig) + expect := []*autoscrape.ScrapeConfig{ + {Instance: "default", Config: prom_config.ScrapeConfig{JobName: "a"}}, + {Instance: "default", Config: prom_config.ScrapeConfig{JobName: "b"}}, + } + require.Equal(t, expect, result) +} + +// +// Tests for controller's utilization of the MetricsIntegration interface. +// + +type mockMetricsIntegration struct { + Integration + TargetsFunc func(ep Endpoint) []*targetgroup.Group + ScrapeConfigsFunc func(discovery.Configs) []*autoscrape.ScrapeConfig +} + +func (m mockMetricsIntegration) Targets(ep Endpoint) []*targetgroup.Group { + return m.TargetsFunc(ep) +} + +func (m mockMetricsIntegration) ScrapeConfigs(cfgs discovery.Configs) []*autoscrape.ScrapeConfig { + return m.ScrapeConfigsFunc(cfgs) +} diff --git a/pkg/integrations/v2/controller_test.go b/pkg/integrations/v2/controller_test.go new file mode 100644 index 000000000000..46b1706de47e --- /dev/null +++ b/pkg/integrations/v2/controller_test.go @@ -0,0 +1,260 @@ +package integrations + +import ( + "context" + "sync" + "testing" + + "github.com/go-kit/log" + "github.com/grafana/agent/pkg/util" + "github.com/stretchr/testify/require" + "go.uber.org/atomic" +) + +// +// Tests for Controller's utilization of the core Integration interface. +// + +// Test_controller_UniqueIdentifer ensures that integrations must not share a (name, id) tuple. +func Test_controller_UniqueIdentifier(t *testing.T) { + controllerFromConfigs := func(t *testing.T, cc []Config) (*controller, error) { + t.Helper() + return newController(util.TestLogger(t), controllerConfig(cc), Globals{}) + } + + t.Run("different name, identifier", func(t *testing.T) { + _, err := controllerFromConfigs(t, []Config{ + mockConfigNameTuple(t, "foo", "bar"), + mockConfigNameTuple(t, "fizz", "buzz"), + }) + require.NoError(t, err) + }) + + t.Run("same name, different identifier", func(t *testing.T) { + _, err := controllerFromConfigs(t, []Config{ + mockConfigNameTuple(t, "foo", "bar"), + mockConfigNameTuple(t, "foo", "buzz"), + }) + require.NoError(t, err) + }) + + t.Run("same name, same identifier", func(t *testing.T) { + _, err := controllerFromConfigs(t, []Config{ + mockConfigNameTuple(t, "foo", "bar"), + mockConfigNameTuple(t, "foo", "bar"), + }) + require.Error(t, err, `multiple instance names "bar" in integration "foo"`) + }) +} + +// Test_controller_RunsIntegration ensures that integrations +// run. +func Test_controller_RunsIntegration(t *testing.T) { + var wg sync.WaitGroup + wg.Add(1) + + ctx, cancel := context.WithCancel(context.Background()) + + ctrl, err := newController( + util.TestLogger(t), + controllerConfig{ + mockConfigForIntegration(t, FuncIntegration(func(ctx context.Context) error { + defer wg.Done() + cancel() + <-ctx.Done() + return nil + })), + }, + Globals{}, + ) + require.NoError(t, err, "failed to create controller") + + // Run the controller. The controller should immediately run our fake integration + // which will cancel ctx and cause ctrl to exit. + ctrl.run(ctx) + + // Make sure that our integration exited too. + wg.Wait() +} + +// Test_controller_ConfigChanges ensures that integrations only get restarted +// when configs are no longer equal. +func Test_controller_ConfigChanges(t *testing.T) { + tc := func(t *testing.T, changed bool) (timesRan uint64) { + t.Helper() + + var integrationsWg sync.WaitGroup + var starts atomic.Uint64 + + mockIntegration := FuncIntegration(func(ctx context.Context) error { + integrationsWg.Done() + starts.Inc() + <-ctx.Done() + return nil + }) + + cfg := controllerConfig{ + mockConfig{ + NameFunc: func() string { return mockIntegrationName }, + ConfigEqualsFunc: func(Config) bool { return !changed }, + ApplyDefaultsFunc: func(g Globals) error { return nil }, + IdentifierFunc: func(Globals) (string, error) { + return mockIntegrationName, nil + }, + NewIntegrationFunc: func(log.Logger, Globals) (Integration, error) { + integrationsWg.Add(1) + return mockIntegration, nil + }, + }, + } + + globals := Globals{} + ctrl, err := newController(util.TestLogger(t), cfg, globals) + require.NoError(t, err, "failed to create controller") + + sc := newSyncController(t, ctrl) + require.NoError(t, sc.UpdateController(cfg, globals), "failed to re-apply config") + + // Wait for our integrations to have been started + integrationsWg.Wait() + + sc.Stop() + return starts.Load() + } + + t.Run("Unchanged", func(t *testing.T) { + starts := tc(t, false) + require.Equal(t, uint64(1), starts, "integration should only have started exactly once") + }) + + t.Run("Changed", func(t *testing.T) { + starts := tc(t, true) + require.Equal(t, uint64(2), starts, "integration should have started exactly twice") + }) +} + +type syncController struct { + inner *controller + applyWg sync.WaitGroup + + stop context.CancelFunc + exitedCh chan struct{} +} + +// newSyncController makes calls to Controller synchronous. newSyncController +// will start running the inner controller and wait for it to update. +func newSyncController(t *testing.T, inner *controller) *syncController { + t.Helper() + + ctx, cancel := context.WithCancel(context.Background()) + t.Cleanup(func() { + cancel() + }) + + sc := &syncController{ + inner: inner, + stop: cancel, + exitedCh: make(chan struct{}), + } + inner.onUpdateDone = sc.applyWg.Done // Inform WG whenever an apply finishes + + // There's always immediately ony applied queued from any successfully created controller. + sc.applyWg.Add(1) + + go func() { + inner.run(ctx) + close(sc.exitedCh) + }() + + sc.applyWg.Wait() + return sc +} + +func (sc *syncController) UpdateController(c controllerConfig, g Globals) error { + sc.applyWg.Add(1) + + if err := sc.inner.UpdateController(c, g); err != nil { + sc.applyWg.Done() // The wg won't ever be finished now + return err + } + + sc.applyWg.Wait() + return nil +} + +func (sc *syncController) Stop() { + sc.stop() + <-sc.exitedCh +} + +const mockIntegrationName = "mock" + +type mockConfig struct { + NameFunc func() string + ApplyDefaultsFunc func(Globals) error + ConfigEqualsFunc func(Config) bool + IdentifierFunc func(Globals) (string, error) + NewIntegrationFunc func(log.Logger, Globals) (Integration, error) +} + +func (mc mockConfig) Name() string { + return mc.NameFunc() +} + +func (mc mockConfig) ConfigEquals(c Config) bool { + if mc.ConfigEqualsFunc != nil { + return mc.ConfigEqualsFunc(c) + } + return false +} + +func (mc mockConfig) ApplyDefaults(g Globals) error { + return mc.ApplyDefaultsFunc(g) +} + +func (mc mockConfig) Identifier(g Globals) (string, error) { + return mc.IdentifierFunc(g) +} + +func (mc mockConfig) NewIntegration(l log.Logger, g Globals) (Integration, error) { + return mc.NewIntegrationFunc(l, g) +} + +func (mc mockConfig) WithNewIntegrationFunc(f func(log.Logger, Globals) (Integration, error)) mockConfig { + return mockConfig{ + NameFunc: mc.NameFunc, + ApplyDefaultsFunc: mc.ApplyDefaultsFunc, + ConfigEqualsFunc: mc.ConfigEqualsFunc, + IdentifierFunc: mc.IdentifierFunc, + NewIntegrationFunc: f, + } +} + +func mockConfigNameTuple(t *testing.T, name, id string) mockConfig { + t.Helper() + + return mockConfig{ + NameFunc: func() string { return name }, + IdentifierFunc: func(_ Globals) (string, error) { return id, nil }, + ApplyDefaultsFunc: func(g Globals) error { return nil }, + NewIntegrationFunc: func(log.Logger, Globals) (Integration, error) { + return NoOpIntegration, nil + }, + } +} + +// mockConfigForIntegration returns a Config that will always return i. +func mockConfigForIntegration(t *testing.T, i Integration) mockConfig { + t.Helper() + + return mockConfig{ + NameFunc: func() string { return mockIntegrationName }, + ApplyDefaultsFunc: func(g Globals) error { return nil }, + IdentifierFunc: func(Globals) (string, error) { + return mockIntegrationName, nil + }, + NewIntegrationFunc: func(log.Logger, Globals) (Integration, error) { + return i, nil + }, + } +} diff --git a/pkg/integrations/v2/controller_updateintegration_test.go b/pkg/integrations/v2/controller_updateintegration_test.go new file mode 100644 index 000000000000..79720a0129af --- /dev/null +++ b/pkg/integrations/v2/controller_updateintegration_test.go @@ -0,0 +1,79 @@ +package integrations + +import ( + "context" + "sync" + "testing" + + "github.com/go-kit/log" + "github.com/grafana/agent/pkg/util" + "github.com/stretchr/testify/require" + "go.uber.org/atomic" +) + +// +// Tests for controller's utilization of the UpdateIntegration interface. +// + +// Test_controller_UpdateIntegration ensures that the controller will call +// UpdateIntegration for integrations that support it. +func Test_controller_UpdateIntegration(t *testing.T) { + var ( + integrationStartWg sync.WaitGroup + applies, starts atomic.Uint64 + ) + + mockIntegration := mockUpdateIntegration{ + Integration: FuncIntegration(func(ctx context.Context) error { + starts.Inc() + integrationStartWg.Done() + <-ctx.Done() + return nil + }), + ApplyConfigFunc: func(Config, Globals) error { + applies.Inc() + return nil + }, + } + + cfg := controllerConfig{ + mockConfig{ + NameFunc: func() string { return mockIntegrationName }, + ConfigEqualsFunc: func(Config) bool { return false }, + ApplyDefaultsFunc: func(g Globals) error { return nil }, + IdentifierFunc: func(Globals) (string, error) { + return mockIntegrationName, nil + }, + NewIntegrationFunc: func(log.Logger, Globals) (Integration, error) { + integrationStartWg.Add(1) + return mockIntegration, nil + }, + }, + } + + ctrl, err := newController(util.TestLogger(t), cfg, Globals{}) + require.NoError(t, err, "failed to create controller") + + sc := newSyncController(t, ctrl) + + // Wait for our integration to start. + integrationStartWg.Wait() + + // Try to apply again. + require.NoError(t, sc.UpdateController(cfg, ctrl.globals), "failed to re-apply config") + integrationStartWg.Wait() + + sc.Stop() + + require.Equal(t, uint64(1), applies.Load(), "dynamic reload should have occurred") + require.Equal(t, uint64(1), starts.Load(), "restart should not have occurred") +} + +type mockUpdateIntegration struct { + Integration + ApplyConfigFunc func(Config, Globals) error +} + +func (m mockUpdateIntegration) ApplyConfig(c Config, g Globals) error { + return m.ApplyConfigFunc(c, g) +} diff --git a/pkg/integrations/v2/integrations.go b/pkg/integrations/v2/integrations.go new file mode 100644 index 000000000000..42adad4f3624 --- /dev/null +++ b/pkg/integrations/v2/integrations.go @@ -0,0 +1,189 @@ +// Package integrations provides a way to run and manage Grafana Agent +// "integrations," which integrate some external system (such as MySQL) to +// Grafana Agent's existing metrics, logging, and tracing subsystems. +// +// Integrations are implemented in sub-packages. Every integration must +// have an implementation of Config that configures the integration. The Config +// interface is then used to instantiate an instance of the Integration +// interface. +// +// Implementations of integrations implement extra functionality by +// implementing interface extensions. The Integration interface is the most +// basic interface that all integrations must implement. Extensions like +// the MetricsIntegration interface define an integration that supports +// metrics. +// +// Extension interfaces are used by the integrations subsystem to enable +// common use cases. New behaviors can be implemented by manually using +// the other subsystems of the agent provided in IntegrationOptions. +package integrations + +import ( + "context" + "fmt" + "net/http" + "net/url" + + "github.com/go-kit/log" + "github.com/grafana/agent/pkg/integrations/v2/autoscrape" + "github.com/grafana/agent/pkg/logs" + "github.com/grafana/agent/pkg/metrics" + "github.com/grafana/agent/pkg/traces" + "github.com/prometheus/prometheus/discovery" + "github.com/prometheus/prometheus/discovery/targetgroup" +) + +var ( + // ErrInvalidUpdate is returned by ApplyConfig when the config cannot + // be dynamically applied. + ErrInvalidUpdate = fmt.Errorf("invalid dynamic update") +) + +// Config provides a configuration and constructor for an integration. +type Config interface { + // Name returns the YAML field name of the integration. Name is used + // when unmarshaling the Config from YAML. + Name() string + + // ApplyDefaults should apply default settings to Config. + ApplyDefaults(Globals) error + + // Identifier returns a string to uniquely identify the integration created + // by this Config. Identifier must be unique for each integration that shares + // the same Name. + // + // If there is no reasonable identifier to use for an integration, + // Globals.AgentIdentifier may be used by default. + Identifier(Globals) (string, error) + + // NewIntegration should return a new Integration using the provided + // Globals to help initialize the Integration. + // + // NewIntegration must be idempotent for a Config. Use + // Integration.RunIntegration to do anything with side effects, such as + // opening a port. + NewIntegration(log.Logger, Globals) (Integration, error) +} + +// ComparableConfig extends Config with an ConfigEquals method. +type ComparableConfig interface { + Config + + // ConfigEquals should return true if c is equal to the ComparableConfig. + ConfigEquals(c Config) bool +} + +// Globals are used to pass around subsystem-wide settings that integrations +// can take advantage of. +type Globals struct { + // AgentIdentifier provides an identifier for the running agent. This can + // be used for labelling whenever appropriate. + // + // AgentIdentifier will be set to the hostname:port of the running agent. + // TODO(rfratto): flag to override identifier at agent level? + AgentIdentifier string + + // Some integrations may wish to interact with various subsystems for their + // implementation if the desired behavior is not supported natively by the + // integration manager. + + Metrics *metrics.Agent // Metrics subsystem + Logs *logs.Logs // Logs subsystem + Tracing *traces.Traces // Traces subsystem + + // Options the integations subsystem is using. + SubsystemOpts SubsystemOptions + // BaseURL to use to invoke methods against the embedded HTTP server. + AgentBaseURL *url.URL +} + +// CloneAgentBaseURL returns a copy of AgentBaseURL that can be modified. +func (g Globals) CloneAgentBaseURL() *url.URL { + if g.AgentBaseURL == nil { + return nil + } + rawURL := g.AgentBaseURL.String() + u, err := url.Parse(rawURL) + if err != nil { + // The URL shouldn't be invalid at this point + panic(err) + } + return u +} + +// An Integration integrates some external system with Grafana Agent's existing +// subsystems. +// +// All integrations must at least implement this interface. More behaviors +// can be added by implementing additional *Integration interfaces, such +// as HTTPIntegration. +type Integration interface { + // RunIntegration starts the integration and performs background tasks. It + // must not return until ctx is canceled, even if there is no work to do. + RunIntegration(ctx context.Context) error +} + +// UpdateIntegration is an Integration whose config can be updated +// dynamically. Integrations that do not implement this interface will be shut +// down and re-instantiated with the new Config. +type UpdateIntegration interface { + Integration + + // ApplyConfig should apply the config c to the integration. An error can be + // returned if the Config is invalid. When this happens, the old config will + // continue to run. + // + // If ApplyConfig returns ErrInvalidUpdate, the integration will be + // recreated. + ApplyConfig(c Config, g Globals) error +} + +// HTTPIntegration is an integration that exposes an HTTP handler. +// +// Integrations are given a unique base path prefix where HTTP requests will be +// routed. The prefix chosen for an integration is not guaranteed to be +// predictable. +type HTTPIntegration interface { + Integration + + // Handler returns an http.Handler. Handler will be invoked for any endpoint + // under prefix. If Handler returns nil, nothing will be called. Handler + // may be called multiple times. + // + // prefix will not be removed from the HTTP request by default. + Handler(prefix string) (http.Handler, error) +} + +// MetricsIntegration is an integration that exposes Prometheus scrape targets. +// +// It is assumed, but not required, that HTTPIntegration is also implemented +// to expose metrics. See HTTPIntegration for more information about how +// HTTP works with integrations. +type MetricsIntegration interface { + Integration + + // Targets should return the current set of active targets exposed by this + // integration. Targets may be called multiple times throughout the lifecycle + // of the integration. Targets will not be called when the integration is not + // running. + // + // prefix will be the same prefixed passed to HTTPIntegration.Handler and + // can be used to update __metrics_path__ for targets. + Targets(ep Endpoint) []*targetgroup.Group + + // ScrapeConfigs configures automatic scraping of targets. ScrapeConfigs + // is optional if an integration should not scrape itself. + // + // Unlike Targets, ScrapeConfigs is only called once per config load, and may be + // called before the integration runs. Use the provided discovery.Configs to + // discover the targets exposed by this integration. + ScrapeConfigs(discovery.Configs) []*autoscrape.ScrapeConfig +} + +// Endpoint is a location where something is exposed. +type Endpoint struct { + // Hostname (and optional port) where endpoint is exposed. + Host string + // Base prefix of the endpoint. + Prefix string +} diff --git a/pkg/integrations/v2/metricsutils/metricshandler_integration.go b/pkg/integrations/v2/metricsutils/metricshandler_integration.go new file mode 100644 index 000000000000..5aad0504aeab --- /dev/null +++ b/pkg/integrations/v2/metricsutils/metricshandler_integration.go @@ -0,0 +1,147 @@ +package metricsutils + +import ( + "context" + "fmt" + "net/http" + "path" + + "github.com/go-kit/log" + "github.com/gorilla/mux" + "github.com/grafana/agent/pkg/integrations/v2" + "github.com/grafana/agent/pkg/integrations/v2/autoscrape" + "github.com/grafana/agent/pkg/integrations/v2/common" + "github.com/prometheus/common/model" + "github.com/prometheus/prometheus/config" + "github.com/prometheus/prometheus/discovery" + "github.com/prometheus/prometheus/discovery/targetgroup" +) + +// NewMetricsHandlerIntegration returns a integrations.MetricsIntegration which +// will expose a /metrics endpoint for h. +func NewMetricsHandlerIntegration( + _ log.Logger, + c integrations.Config, + mc common.MetricsConfig, + globals integrations.Globals, + h http.Handler, +) (integrations.MetricsIntegration, error) { + id, err := c.Identifier(globals) + if err != nil { + return nil, err + } + return &metricsHandlerIntegration{ + integrationName: c.Name(), + instanceID: id, + + common: mc, + globals: globals, + handler: h, + + targets: []handlerTarget{{MetricsPath: "metrics"}}, + }, nil +} + +type metricsHandlerIntegration struct { + integrationName, instanceID string + + common common.MetricsConfig + globals integrations.Globals + handler http.Handler + targets []handlerTarget + + runFunc func(ctx context.Context) error +} + +type handlerTarget struct { + // Path relative to Handler prefix where metrics are available. + MetricsPath string + // Extra labels to inject into the target. Labels here that take precedence + // over labels with the same name from the generated target group. + Labels model.LabelSet +} + +// Static typecheck tests +var ( + _ integrations.Integration = (*metricsHandlerIntegration)(nil) + _ integrations.HTTPIntegration = (*metricsHandlerIntegration)(nil) + _ integrations.MetricsIntegration = (*metricsHandlerIntegration)(nil) +) + +// RunIntegration implements Integration. +func (i *metricsHandlerIntegration) RunIntegration(ctx context.Context) error { + // Call our runFunc if defined (used from integrationShim), otherwise + // fallback to no-op. + if i.runFunc != nil { + return i.runFunc(ctx) + } + + <-ctx.Done() + return nil +} + +// Handler implements HTTPIntegration. +func (i *metricsHandlerIntegration) Handler(prefix string) (http.Handler, error) { + r := mux.NewRouter() + r.Handle(path.Join(prefix, "metrics"), i.handler) + return r, nil +} + +// Targets implements MetricsIntegration. +func (i *metricsHandlerIntegration) Targets(ep integrations.Endpoint) []*targetgroup.Group { + integrationNameValue := model.LabelValue("integrations/" + i.integrationName) + + group := &targetgroup.Group{ + Labels: model.LabelSet{ + model.InstanceLabel: model.LabelValue(i.instanceID), + model.JobLabel: integrationNameValue, + "agent_hostname": model.LabelValue(i.globals.AgentIdentifier), + + // Meta labels that can be used during SD. + "__meta_agent_integration_name": model.LabelValue(i.integrationName), + "__meta_agent_integration_instance": model.LabelValue(i.instanceID), + "__meta_agent_integration_autoscrape": model.LabelValue(boolToString(*i.common.Autoscrape.Enable)), + }, + Source: fmt.Sprintf("%s/%s", i.integrationName, i.instanceID), + } + + for _, t := range i.targets { + group.Targets = append(group.Targets, model.LabelSet{ + model.AddressLabel: model.LabelValue(ep.Host), + model.MetricsPathLabel: model.LabelValue(path.Join(ep.Prefix, t.MetricsPath)), + }.Merge(t.Labels)) + } + + return []*targetgroup.Group{group} +} + +func boolToString(b bool) string { + switch b { + case true: + return "1" + default: + return "0" + } +} + +// ScrapeConfigs implements MetricsIntegration. +func (i *metricsHandlerIntegration) ScrapeConfigs(sd discovery.Configs) []*autoscrape.ScrapeConfig { + if !*i.common.Autoscrape.Enable { + return nil + } + + cfg := config.DefaultScrapeConfig + cfg.JobName = fmt.Sprintf("%s/%s", i.integrationName, i.instanceID) + cfg.Scheme = i.globals.AgentBaseURL.Scheme + cfg.HTTPClientConfig = i.globals.SubsystemOpts.ClientConfig + cfg.ServiceDiscoveryConfigs = sd + cfg.ScrapeInterval = i.common.Autoscrape.ScrapeInterval + cfg.ScrapeTimeout = i.common.Autoscrape.ScrapeTimeout + cfg.RelabelConfigs = i.common.Autoscrape.RelabelConfigs + cfg.MetricRelabelConfigs = i.common.Autoscrape.MetricRelabelConfigs + + return []*autoscrape.ScrapeConfig{{ + Instance: i.common.Autoscrape.MetricsInstance, + Config: cfg, + }} +} diff --git a/pkg/integrations/v2/metricsutils/versionshim.go b/pkg/integrations/v2/metricsutils/versionshim.go new file mode 100644 index 000000000000..4d64d5b5b5df --- /dev/null +++ b/pkg/integrations/v2/metricsutils/versionshim.go @@ -0,0 +1,129 @@ +package metricsutils + +import ( + "context" + "errors" + "fmt" + "net/http" + + "github.com/go-kit/log" + "github.com/prometheus/common/model" + + v1 "github.com/grafana/agent/pkg/integrations" + v2 "github.com/grafana/agent/pkg/integrations/v2" + "github.com/grafana/agent/pkg/integrations/v2/common" + "github.com/grafana/agent/pkg/util" +) + +// CreateShim creates a shim between the v1.Config and v2.Config. The resulting +// config is NOT registered. +func CreateShim(before v1.Config, common common.MetricsConfig) (after v2.UpgradedConfig) { + return &configShim{orig: before, common: common} +} + +type configShim struct { + orig v1.Config + common common.MetricsConfig +} + +var ( + _ v2.Config = (*configShim)(nil) + _ v2.UpgradedConfig = (*configShim)(nil) + _ v2.ComparableConfig = (*configShim)(nil) +) + +func (s *configShim) LegacyConfig() (v1.Config, common.MetricsConfig) { return s.orig, s.common } + +func (s *configShim) Name() string { return s.orig.Name() } + +func (s *configShim) ApplyDefaults(g v2.Globals) error { + s.common.ApplyDefaults(g.SubsystemOpts.Metrics.Autoscrape) + if id, err := s.Identifier(g); err == nil { + s.common.InstanceKey = &id + } + return nil +} + +func (s *configShim) ConfigEquals(c v2.Config) bool { + o, ok := c.(*configShim) + if !ok { + return false + } + return util.CompareYAML(s.orig, o.orig) && util.CompareYAML(s.common, o.common) +} + +func (s *configShim) Identifier(g v2.Globals) (string, error) { + if s.common.InstanceKey != nil { + return *s.common.InstanceKey, nil + } + return s.orig.InstanceKey(g.AgentIdentifier) +} + +func (s *configShim) NewIntegration(l log.Logger, g v2.Globals) (v2.Integration, error) { + v1Integration, err := s.orig.NewIntegration(l) + if err != nil { + return nil, err + } + + id, err := s.Identifier(g) + if err != nil { + return nil, err + } + + // Generate our handler. Original integrations didn't accept a prefix, and + // just assumed that they would be wired to /metrics somewhere. + handler, err := v1Integration.MetricsHandler() + if err != nil { + return nil, fmt.Errorf("generating http handler: %w", err) + } else if handler == nil { + handler = http.NotFoundHandler() + } + + // Generate targets. Original integrations used a static set of targets, + // so this mapping can always be generated just once. + // + // Targets are generated from the result of ScrapeConfigs(), which returns a + // tuple of job name and relative metrics path. + // + // Job names were prefixed at the subsystem level with integrations/, so we + // will retain that behavior here. + v1ScrapeConfigs := v1Integration.ScrapeConfigs() + targets := make([]handlerTarget, 0, len(v1ScrapeConfigs)) + for _, sc := range v1ScrapeConfigs { + targets = append(targets, handlerTarget{ + MetricsPath: sc.MetricsPath, + Labels: model.LabelSet{ + model.JobLabel: model.LabelValue("integrations/" + sc.JobName), + }, + }) + } + + // Convert he run function. Original integrations sometimes returned + // ctx.Err() on exit. This isn't recommended anymore, but we need to hide the + // error if it happens, since the error was previously ignored. + runFunc := func(ctx context.Context) error { + err := v1Integration.Run(ctx) + switch { + case err == nil: + return nil + case errors.Is(err, context.Canceled) && ctx.Err() != nil: + // Hide error that no longer happens in newer integrations. + return nil + default: + return err + } + } + + // Aggregate our converted settings into a v2 integration. + return &metricsHandlerIntegration{ + integrationName: s.orig.Name(), + instanceID: id, + + common: s.common, + globals: g, + handler: handler, + targets: targets, + + runFunc: runFunc, + }, nil +} diff --git a/pkg/integrations/v2/register.go b/pkg/integrations/v2/register.go new file mode 100644 index 000000000000..e6148ca12e2c --- /dev/null +++ b/pkg/integrations/v2/register.go @@ -0,0 +1,421 @@ +package integrations + +import ( + "fmt" + "reflect" + "strings" + "testing" + + "gopkg.in/yaml.v2" + + v1 "github.com/grafana/agent/pkg/integrations" + "github.com/grafana/agent/pkg/integrations/v2/common" + "github.com/grafana/agent/pkg/util" +) + +var ( + integrationNames = make(map[string]interface{}) // Cache of field names for uniqueness checking. + configFieldNames = make(map[reflect.Type]string) // Map of registered type to field name + integrationTypes = make(map[reflect.Type]Type) // Map of registered type to Type + + // Registered integrations. Registered integrations may be either a Config or + // a v1.Config. v1.Configs must have a corresponding upgrader for their type. + registered = []interface{}{} + upgraders = make(map[string]UpgradeFunc) + + emptyStructType = reflect.TypeOf(struct{}{}) + configsType = reflect.TypeOf(Configs{}) +) + +// Register dynamically registers a new integration. The Config +// will represent the configuration that controls the specific integration. +// Registered Configs may be loaded using UnmarshalYAML or manually +// constructed. +// +// ty controls how the integration can be unmarshaled from YAML. +// +// Register panics if cfg is not a pointer. +func Register(cfg Config, ty Type) { + registerIntegration(cfg, cfg.Name(), ty, nil) +} + +func registerIntegration(v interface{}, name string, ty Type, upgrader UpgradeFunc) { + if reflect.TypeOf(v).Kind() != reflect.Ptr { + panic(fmt.Sprintf("Register must be given a pointer, got %T", v)) + } + if _, exist := integrationNames[name]; exist { + panic(fmt.Sprintf("Integration %q registered twice", name)) + } + integrationNames[name] = v + + registered = append(registered, v) + + configTy := reflect.TypeOf(v) + integrationTypes[configTy] = ty + configFieldNames[configTy] = name + upgraders[name] = upgrader +} + +// RegisterLegacy registers a v1.Config. upgrader will be used to upgrade it. +// upgrader will only be invoked after unmarshaling cfg from YAML, and the +// upgraded Config will be unwrapped again when marshaling back to YAML. +// +// RegisterLegacy only exists for the transition period where the v2 +// integrations subsystem is an experiment. RegisterLegacy will be removed at a +// later date. +func RegisterLegacy(cfg v1.Config, ty Type, upgrader UpgradeFunc) { + registerIntegration(cfg, cfg.Name(), ty, upgrader) +} + +// UpgradeFunc upgrades cfg to a UpgradedConfig. +type UpgradeFunc func(cfg v1.Config, common common.MetricsConfig) UpgradedConfig + +// UpgradedConfig is a v2 Config that was constructed through a legacy +// v1.Config. It allows unwrapping to retrieve the original config for +// the purposes of marshaling or unmarshaling. +type UpgradedConfig interface { + Config + + // LegacyConfig returns the old v1.Config. + LegacyConfig() (v1.Config, common.MetricsConfig) +} + +// Type determines a specific type of integration. +type Type int + +const ( + // TypeSingleton is an integration that can only be defined exactly once in + // the config, unmarshaled through "" + TypeSingleton Type = iota + + // TypeMultiplex is an integration that can only be defined through an array, + // unmarshaled through "_configs" + TypeMultiplex + + // TypeEither is an integration that can be unmarshaled either as a singleton + // or as an array, but not both. + // + // Deprecated. Use either TypeSingleton or TypeMultiplex for new integrations. + TypeEither +) + +// setRegistered is used by tests to temporarily set integrations. Registered +// integrations will be unregistered after the test completes. +// +// setRegistered must not be used with parallelized tests. +func setRegistered(t *testing.T, cc map[Config]Type) { + clear := func() { + integrationNames = make(map[string]interface{}) + integrationTypes = make(map[reflect.Type]Type) + configFieldNames = make(map[reflect.Type]string) + registered = registered[:0] + upgraders = make(map[string]UpgradeFunc) + } + + t.Cleanup(clear) + clear() + + for c, t := range cc { + Register(c, t) + } +} + +// Registered all Configs that were passed to Register or RegisterLegacy. Each +// call will generate a new set of configs. +func Registered() []Config { + res := make([]Config, 0, len(registered)) + for _, r := range registered { + switch v := r.(type) { + case Config: + res = append(res, cloneValue(v).(Config)) + case v1.Config: + mut, ok := upgraders[v.Name()] + if !ok || mut == nil { + panic(fmt.Sprintf("Could not find transformer for legacy integration %T", r)) + } + res = append(res, mut(cloneValue(r).(v1.Config), common.MetricsConfig{})) + default: + panic(fmt.Sprintf("unexpected type %T", r)) + } + } + return res +} + +func cloneValue(in interface{}) interface{} { + return reflect.New(reflect.TypeOf(in).Elem()).Interface() +} + +// Configs is a list of integrations. Note that Configs does not implement +// yaml.Unmarshaler or yaml.Marshaler. Use the UnmarshalYAML or MarshalYAML +// methods to deal with integrations defined from YAML. +type Configs []Config + +// MarshalYAML helps implement yaml.Marshaler for structs that have a Configs +// field that should be inlined in the YAML string. +func MarshalYAML(v interface{}) (interface{}, error) { + inVal := reflect.ValueOf(v) + for inVal.Kind() == reflect.Ptr { + inVal = inVal.Elem() + } + if inVal.Kind() != reflect.Struct { + return nil, fmt.Errorf("integrations: can only marshal a struct, got %T", v) + } + inType := inVal.Type() + + var ( + outType = getConfigTypeForIntegrations(inType) + outPointer = reflect.New(outType) + outVal = outPointer.Elem() + ) + + // Copy over any existing value from inVal to cfgVal. + // + // The ordering of fields in inVal and cfgVal match identically up until the + // extra fields appended to the end of cfgVal. + var configs Configs + for i, n := 0, inType.NumField(); i < n; i++ { + if inType.Field(i).Type == configsType { + configs = inVal.Field(i).Interface().(Configs) + if configs == nil { + configs = Configs{} + } + } + if outType.Field(i).PkgPath != "" { + continue // Field is unexported: ignore. + } + outVal.Field(i).Set(inVal.Field(i)) + } + if configs == nil { + return nil, fmt.Errorf("integrations: Configs field not found in type: %T", v) + } + + for _, c := range configs { + fieldName := c.Name() + + var data interface{} = c + if wc, ok := c.(UpgradedConfig); ok { + data, _ = wc.LegacyConfig() + } + + integrationType, ok := integrationTypes[reflect.TypeOf(data)] + if !ok { + panic(fmt.Sprintf("config not registered: %T", data)) + } + + // Generate the *util.RawYAML to marshal out with. + var ( + bb []byte + err error + ) + switch v := c.(type) { + case UpgradedConfig: + inner, common := v.LegacyConfig() + bb, err = util.MarshalYAMLMerged(common, inner) + default: + bb, err = yaml.Marshal(v) + } + if err != nil { + return nil, fmt.Errorf("failed to marshal integration %q: %w", fieldName, err) + } + raw := util.RawYAML(bb) + + switch integrationType { + case TypeSingleton: + field := outVal.FieldByName("XXX_Config_" + fieldName) + field.Set(reflect.ValueOf(&raw)) + case TypeMultiplex, TypeEither: + field := outVal.FieldByName("XXX_Configs_" + fieldName) + field.Set(reflect.Append(field, reflect.ValueOf(&raw))) + } + } + + return outPointer.Interface(), nil +} + +// UnmarshalYAML helps implement yaml.Unmarshaller for structs that have a +// Configs field that should be inlined in the YAML string. Code adapted from +// Prometheus: +// +// https://github.com/prometheus/prometheus/blob/511511324adfc4f4178f064cc104c2deac3335de/discovery/registry.go#L111 +func UnmarshalYAML(out interface{}, unmarshal func(interface{}) error) error { + outVal := reflect.ValueOf(out) + if outVal.Kind() != reflect.Ptr { + return fmt.Errorf("integrations: can only unmarshal into a struct pointer, got %T", out) + } + outVal = outVal.Elem() + if outVal.Kind() != reflect.Struct { + return fmt.Errorf("integrations: can only unmarshal into a struct pointer, got %T", out) + } + outType := outVal.Type() + + var ( + cfgType = getConfigTypeForIntegrations(outType) + cfgPointer = reflect.New(cfgType) + cfgVal = cfgPointer.Elem() + ) + + // Copy over any existing value from outVal to cfgVal. + // + // The ordering of fields in outVal and cfgVal match identically up until the + // extra fields appended to the end of cfgVal. + var configs *Configs + for i := 0; i < outVal.NumField(); i++ { + if outType.Field(i).Type == configsType { + if configs != nil { + return fmt.Errorf("integrations: Multiple Configs fields found in %T", out) + } + configs = outVal.Field(i).Addr().Interface().(*Configs) + continue + } + if cfgType.Field(i).PkgPath != "" { + // Ignore unexported fields + continue + } + cfgVal.Field(i).Set(outVal.Field(i)) + } + if configs == nil { + return fmt.Errorf("integrations: No Configs field found in %T", out) + } + + // Unmarshal into our dynamic type. + if err := unmarshal(cfgPointer.Interface()); err != nil { + return replaceYAMLTypeError(err, cfgType, outType) + } + + // Copy back unmarshaled fields that were originally in outVal. + for i := 0; i < outVal.NumField(); i++ { + if cfgType.Field(i).PkgPath != "" { + // Ignore unexported fields + continue + } + outVal.Field(i).Set(cfgVal.Field(i)) + } + + // Iterate through the remainder of our fields, which should all be + // either a Config or a slice of types that implement Config. + for i := outVal.NumField(); i < cfgVal.NumField(); i++ { + // Our integrations are unmarshaled as *util.RawYAML or []*util.RawYAML. If + // it's nil, we treat it as not defined. + fieldType := cfgVal.Type().Field(i) + field := cfgVal.Field(i) + if field.IsNil() { + continue + } + + switch field.Kind() { + case reflect.Slice: + configName := strings.TrimPrefix(fieldType.Name, "XXX_Configs_") + configReference, ok := integrationNames[configName] + if !ok { + return fmt.Errorf("integration %q not registered", configName) + } + + for i := 0; i < field.Len(); i++ { + if field.Index(i).IsNil() { + continue + } + raw := field.Index(i).Interface().(*util.RawYAML) + c, err := deferredConfigUnmarshal(*raw, configReference) + if err != nil { + return err + } + *configs = append(*configs, c) + } + default: + configName := strings.TrimPrefix(fieldType.Name, "XXX_Config_") + configReference, ok := integrationNames[configName] + if !ok { + return fmt.Errorf("integration %q not registered", configName) + } + raw := field.Interface().(*util.RawYAML) + c, err := deferredConfigUnmarshal(*raw, configReference) + if err != nil { + return err + } + *configs = append(*configs, c) + } + } + + return nil +} + +// deferredConfigUnmarshal performs a deferred unmarshal of raw into a Config. +// ref must be either Config or v1.Config. +func deferredConfigUnmarshal(raw util.RawYAML, ref interface{}) (Config, error) { + switch ref := ref.(type) { + case Config: + out := cloneValue(ref).(Config) + err := yaml.UnmarshalStrict(raw, out) + return out, err + case v1.Config: + mut, ok := upgraders[ref.Name()] + if !ok { + panic(fmt.Sprintf("unexpected type %T", ref)) + } + var ( + common common.MetricsConfig + out = cloneValue(ref).(v1.Config) + ) + err := util.UnmarshalYAMLMerged(raw, &common, out) + return mut(out, common), err + default: + panic(fmt.Sprintf("unexpected type %T", ref)) + } +} + +// getConfigTypeForIntegrations returns a dynamic struct type that has all of +// the same fields as out including the fields for the provided integrations. +// +// integrations are unmarshaled to *util.RawYAML for deferred unmarshaling. +func getConfigTypeForIntegrations(out reflect.Type) reflect.Type { + // Initial exported fields map one-to-one. + var fields []reflect.StructField + for i, n := 0, out.NumField(); i < n; i++ { + switch field := out.Field(i); { + case field.PkgPath == "" && field.Type != configsType: + fields = append(fields, field) + default: + fields = append(fields, reflect.StructField{ + Name: "_" + field.Name, // Field must be unexported. + PkgPath: out.PkgPath(), + Type: emptyStructType, + }) + } + } + + for _, reg := range registered { + // Fields use a prefix that's unlikely to collide with anything else. + configTy := reflect.TypeOf(reg) + integrationType := integrationTypes[configTy] + fieldName := configFieldNames[configTy] + + singletonType := reflect.PtrTo(reflect.TypeOf(util.RawYAML{})) + + if integrationType == TypeSingleton || integrationType == TypeEither { + fields = append(fields, reflect.StructField{ + Name: "XXX_Config_" + fieldName, + Tag: reflect.StructTag(fmt.Sprintf(`yaml:"%s,omitempty"`, fieldName)), + Type: singletonType, + }) + } + if integrationType == TypeMultiplex || integrationType == TypeEither { + fields = append(fields, reflect.StructField{ + Name: "XXX_Configs_" + fieldName, + Tag: reflect.StructTag(fmt.Sprintf(`yaml:"%s_configs,omitempty"`, fieldName)), + Type: reflect.SliceOf(singletonType), + }) + } + } + return reflect.StructOf(fields) +} + +func replaceYAMLTypeError(err error, oldTyp, newTyp reflect.Type) error { + if e, ok := err.(*yaml.TypeError); ok { + oldStr := oldTyp.String() + newStr := newTyp.String() + for i, s := range e.Errors { + e.Errors[i] = strings.ReplaceAll(s, oldStr, newStr) + } + } + return err +} diff --git a/pkg/integrations/v2/register_test.go b/pkg/integrations/v2/register_test.go new file mode 100644 index 000000000000..d09baeb73185 --- /dev/null +++ b/pkg/integrations/v2/register_test.go @@ -0,0 +1,203 @@ +package integrations + +import ( + "testing" + "time" + + "github.com/go-kit/log" + v1 "github.com/grafana/agent/pkg/integrations" + "github.com/grafana/agent/pkg/integrations/v2/common" + "github.com/stretchr/testify/require" + "gopkg.in/yaml.v2" +) + +func TestIntegrationRegistration(t *testing.T) { + setRegistered(t, map[Config]Type{ + &testIntegrationA{}: TypeEither, + &testIntegrationB{}: TypeEither, + }) + + // This test checks for a few things: + // + // 1. Registered integrations will be parseable + // 2. Registered integrations that are not present will not be unmarshaled to + // the list of configs + // 3. Registered integrations that have defaults may still be parsed + // 4. Strict parsing should still work as expected. + + var cfgToParse = ` +name: John Doe +duration: 500ms +test: + text: Hello, world! +` + + var fullCfg testFullConfig + err := yaml.UnmarshalStrict([]byte(cfgToParse), &fullCfg) + require.NoError(t, err) + + expect := testFullConfig{ + Name: "John Doe", + Duration: 500 * time.Millisecond, + Default: 12345, + Configs: []Config{ + &testIntegrationA{Text: "Hello, world!", Truth: true}, + }, + } + require.Equal(t, expect, fullCfg) +} + +func TestIntegrationRegistration_Multiple(t *testing.T) { + setRegistered(t, map[Config]Type{ + &testIntegrationA{}: TypeEither, + &testIntegrationB{}: TypeEither, + }) + + var cfgToParse = ` +name: John Doe +duration: 500ms +test_configs: + - text: Hello, world! + - text: Hello again!` + + var fullCfg testFullConfig + err := yaml.UnmarshalStrict([]byte(cfgToParse), &fullCfg) + require.NoError(t, err) + + expect := testFullConfig{ + Name: "John Doe", + Duration: 500 * time.Millisecond, + Default: 12345, + Configs: []Config{ + &testIntegrationA{Text: "Hello, world!", Truth: true}, + &testIntegrationA{Text: "Hello again!", Truth: true}, + }, + } + require.Equal(t, expect, fullCfg) +} + +func TestIntegrationRegistration_Legacy(t *testing.T) { + setRegistered(t, nil) + + RegisterLegacy(&legacyConfig{}, TypeSingleton, func(in v1.Config, mc common.MetricsConfig) UpgradedConfig { + return &legacyShim{Data: in, Common: mc} + }) + + var cfgToParse = ` +name: John Doe +duration: 500ms +legacy: + text: hello` + + var fullCfg testFullConfig + err := yaml.UnmarshalStrict([]byte(cfgToParse), &fullCfg) + require.NoError(t, err) + + require.Len(t, fullCfg.Configs, 1) + require.IsType(t, &legacyShim{}, fullCfg.Configs[0]) + + shim := fullCfg.Configs[0].(*legacyShim) + require.IsType(t, &legacyConfig{}, shim.Data) + + v1Config := shim.Data.(*legacyConfig) + require.Equal(t, "hello", v1Config.Text) +} + +func TestIntegrationRegistration_Legacy_Multiplex(t *testing.T) { + setRegistered(t, nil) + + RegisterLegacy(&legacyConfig{}, TypeMultiplex, func(in v1.Config, mc common.MetricsConfig) UpgradedConfig { + return &legacyShim{Data: in, Common: mc} + }) + + var cfgToParse = ` +name: John Doe +duration: 500ms +legacy_configs: + - text: hello + - text: world` + + var fullCfg testFullConfig + err := yaml.UnmarshalStrict([]byte(cfgToParse), &fullCfg) + require.NoError(t, err) + + require.Len(t, fullCfg.Configs, 2) + require.IsType(t, &legacyShim{}, fullCfg.Configs[0]) + require.IsType(t, &legacyShim{}, fullCfg.Configs[1]) + + shim := fullCfg.Configs[0].(*legacyShim) + require.IsType(t, &legacyConfig{}, shim.Data) + require.Equal(t, "hello", shim.Data.(*legacyConfig).Text) + + shim = fullCfg.Configs[1].(*legacyShim) + require.IsType(t, &legacyConfig{}, shim.Data) + require.Equal(t, "world", shim.Data.(*legacyConfig).Text) +} + +type legacyConfig struct { + Text string `yaml:"text"` +} + +func (lc *legacyConfig) Name() string { return "legacy" } +func (lc *legacyConfig) InstanceKey(agentKey string) (string, error) { return agentKey, nil } +func (lc *legacyConfig) NewIntegration(l log.Logger) (v1.Integration, error) { return nil, nil } + +type legacyShim struct { + Data v1.Config + Common common.MetricsConfig +} + +func (s *legacyShim) LegacyConfig() (v1.Config, common.MetricsConfig) { return s.Data, s.Common } +func (s *legacyShim) Name() string { return s.Data.Name() } +func (s *legacyShim) ApplyDefaults(g Globals) error { + s.Common.ApplyDefaults(g.SubsystemOpts.Metrics.Autoscrape) + return nil +} +func (s *legacyShim) Identifier(g Globals) (string, error) { return g.AgentIdentifier, nil } +func (s *legacyShim) NewIntegration(log.Logger, Globals) (Integration, error) { + return NoOpIntegration, nil +} + +type testIntegrationA struct { + Text string `yaml:"text"` + Truth bool `yaml:"truth"` +} + +func (i *testIntegrationA) Name() string { return "test" } +func (i *testIntegrationA) ApplyDefaults(Globals) error { return nil } +func (i *testIntegrationA) Identifier(Globals) (string, error) { return "integrationA", nil } +func (i *testIntegrationA) NewIntegration(log.Logger, Globals) (Integration, error) { + return NoOpIntegration, nil +} + +func (i *testIntegrationA) UnmarshalYAML(unmarshal func(interface{}) error) error { + i.Truth = true + type plain testIntegrationA + return unmarshal((*plain)(i)) +} + +type testIntegrationB struct { + Text string `yaml:"text"` +} + +func (*testIntegrationB) Name() string { return "shouldnotbefound" } +func (*testIntegrationB) ApplyDefaults(Globals) error { return nil } +func (*testIntegrationB) Identifier(Globals) (string, error) { return "integrationB", nil } +func (*testIntegrationB) NewIntegration(log.Logger, Globals) (Integration, error) { + return NoOpIntegration, nil +} + +type testFullConfig struct { + // Some random fields that will also be exposed + Name string `yaml:"name"` + Duration time.Duration `yaml:"duration"` + Default int `yaml:"default"` + + Configs Configs `yaml:"-"` +} + +func (c *testFullConfig) UnmarshalYAML(unmarshal func(interface{}) error) error { + // This default value should not change. + c.Default = 12345 + return UnmarshalYAML(c, unmarshal) +} diff --git a/pkg/integrations/v2/subsystem.go b/pkg/integrations/v2/subsystem.go new file mode 100644 index 000000000000..300414720938 --- /dev/null +++ b/pkg/integrations/v2/subsystem.go @@ -0,0 +1,252 @@ +package integrations + +import ( + "context" + "encoding/json" + "fmt" + "net/http" + "sync" + "time" + + "github.com/go-kit/log" + "github.com/gorilla/mux" + "github.com/grafana/agent/pkg/integrations/v2/autoscrape" + "github.com/grafana/agent/pkg/metrics" + common_config "github.com/prometheus/common/config" + "github.com/prometheus/common/model" + http_sd "github.com/prometheus/prometheus/discovery/http" +) + +const ( + // IntegrationsSDEndpoint is the API endpoint where the integration HTTP SD + // API is exposed. The API uses query parameters to customize what gets + // returned by discovery. + IntegrationsSDEndpoint = "/agent/api/v1/metrics/integrations/sd" + + // IntegrationsAutoscrapeTargetsEndpoint is the API endpoint where autoscrape + // integrations targets are exposed. + IntegrationsAutoscrapeTargetsEndpoint = "/agent/api/v1/metrics/integrations/targets" +) + +// DefaultSubsystemOptions holds the default settings for a Controller. +var ( + DefaultSubsystemOptions = SubsystemOptions{ + Metrics: DefaultMetricsSubsystemOptions, + } + + DefaultMetricsSubsystemOptions = MetricsSubsystemOptions{ + Autoscrape: autoscrape.DefaultGlobal, + } +) + +// SubsystemOptions controls how the integrations subsystem behaves. +type SubsystemOptions struct { + Metrics MetricsSubsystemOptions `yaml:"metrics,omitempty"` + + // Configs are configurations of integration to create. Unmarshaled through + // the custom UnmarshalYAML method of Controller. + Configs Configs `yaml:"-"` + + // Override settings to self-communicate with agent. + ClientConfig common_config.HTTPClientConfig `yaml:"client_config,omitempty"` +} + +// MetricsSubsystemOptions controls how metrics integrations behave. +type MetricsSubsystemOptions struct { + Autoscrape autoscrape.Global `yaml:"autoscrape,omitempty"` +} + +// ApplyDefaults will apply defaults to o. +func (o *SubsystemOptions) ApplyDefaults(mcfg *metrics.Config) error { + if o.Metrics.Autoscrape.ScrapeInterval == 0 { + o.Metrics.Autoscrape.ScrapeInterval = mcfg.Global.Prometheus.ScrapeInterval + } + if o.Metrics.Autoscrape.ScrapeTimeout == 0 { + o.Metrics.Autoscrape.ScrapeTimeout = mcfg.Global.Prometheus.ScrapeTimeout + } + + return nil +} + +// MarshalYAML implements yaml.Marshaler for SubsystemOptions. Integrations +// will be marshaled inline. +func (o SubsystemOptions) MarshalYAML() (interface{}, error) { + return MarshalYAML(o) +} + +// UnmarshalYAML implements yaml.Unmarshaler for SubsystemOptions. Inline +// integrations will be unmarshaled into o.Configs. +func (o *SubsystemOptions) UnmarshalYAML(unmarshal func(interface{}) error) error { + *o = DefaultSubsystemOptions + return UnmarshalYAML(o, unmarshal) +} + +// Subsystem runs the integrations subsystem, managing a set of integrations. +type Subsystem struct { + logger log.Logger + + mut sync.RWMutex + globals Globals + apiHandler http.Handler // generated from controller + autoscraper *autoscrape.Scraper + + ctrl *controller + stopController context.CancelFunc + controllerExited chan struct{} +} + +// NewSubsystem creates and starts a new integrations Subsystem. Every field in +// IntegrationOptions must be filled out. +func NewSubsystem(l log.Logger, globals Globals) (*Subsystem, error) { + autoscraper := autoscrape.NewScraper(l, globals.Metrics.InstanceManager()) + + l = log.With(l, "component", "integrations") + + ctrl, err := newController(l, controllerConfig(globals.SubsystemOpts.Configs), globals) + if err != nil { + autoscraper.Stop() + return nil, err + } + + ctx, cancel := context.WithCancel(context.Background()) + + ctrlExited := make(chan struct{}) + go func() { + ctrl.run(ctx) + close(ctrlExited) + }() + + s := &Subsystem{ + logger: l, + + globals: globals, + autoscraper: autoscraper, + + ctrl: ctrl, + stopController: cancel, + controllerExited: ctrlExited, + } + if err := s.ApplyConfig(globals); err != nil { + cancel() + autoscraper.Stop() + return nil, err + } + return s, nil +} + +// ApplyConfig updates the configuration of the integrations subsystem. +func (s *Subsystem) ApplyConfig(globals Globals) error { + const prefix = "/integrations/" + + s.mut.Lock() + defer s.mut.Unlock() + + if err := s.ctrl.UpdateController(controllerConfig(globals.SubsystemOpts.Configs), globals); err != nil { + return fmt.Errorf("error applying integrations: %w", err) + } + + var firstErr error + saveFirstErr := func(err error) { + if firstErr == nil { + firstErr = err + } + } + + // Set up HTTP wiring + { + handler, err := s.ctrl.Handler(prefix) + if err != nil { + saveFirstErr(fmt.Errorf("HTTP handler update failed: %w", err)) + } + s.apiHandler = handler + } + + // Set up self-scraping + { + httpSDConfig := http_sd.DefaultSDConfig + httpSDConfig.HTTPClientConfig = globals.SubsystemOpts.ClientConfig + httpSDConfig.RefreshInterval = model.Duration(time.Second * 5) // TODO(rfratto): make configurable? + + apiURL := globals.CloneAgentBaseURL() + apiURL.Path = IntegrationsSDEndpoint + httpSDConfig.URL = apiURL.String() + + scrapeConfigs := s.ctrl.ScrapeConfigs(prefix, &httpSDConfig) + if err := s.autoscraper.ApplyConfig(scrapeConfigs); err != nil { + saveFirstErr(fmt.Errorf("configuring autoscraper failed: %w", err)) + } + } + + s.globals = globals + return firstErr +} + +// WireAPI hooks up integration endpoints to r. +func (s *Subsystem) WireAPI(r *mux.Router) { + const prefix = "/integrations" + r.PathPrefix(prefix).HandlerFunc(func(rw http.ResponseWriter, r *http.Request) { + s.mut.RLock() + handler := s.apiHandler + s.mut.RUnlock() + + if handler == nil { + rw.WriteHeader(http.StatusServiceUnavailable) + fmt.Fprintf(rw, "Integrations HTTP endpoints not yet available") + return + } + handler.ServeHTTP(rw, r) + }) + + r.HandleFunc(IntegrationsSDEndpoint, func(rw http.ResponseWriter, r *http.Request) { + targetOptions, err := TargetOptionsFromParams(r.URL.Query()) + if err != nil { + http.Error(rw, fmt.Sprintf("invalid query parameters: %s", err), http.StatusBadRequest) + return + } + + rw.Header().Set("Content-Type", "application/json") + rw.WriteHeader(http.StatusOK) + + tgs := s.ctrl.Targets(Endpoint{ + Host: r.Host, + Prefix: prefix, + }, targetOptions) + + // Normalize targets. We may have targets in the group with non-address + // labels. These need to be retained, so we'll just split everything up + // into multiple groups. + // + // TODO(rfratto): optimize to remove redundant groups + finalTgs := []*targetGroup{} + for _, group := range tgs { + for _, target := range group.Targets { + // Create the final labels for the group. This will be everything from + // the group and the target (except for model.AddressLabel). Labels + // from target take precedence labels from over group. + groupLabels := group.Labels.Merge(target) + delete(groupLabels, model.AddressLabel) + + finalTgs = append(finalTgs, &targetGroup{ + Targets: []model.LabelSet{{model.AddressLabel: target[model.AddressLabel]}}, + Labels: groupLabels, + }) + } + } + + enc := json.NewEncoder(rw) + _ = enc.Encode(finalTgs) + }) + + r.HandleFunc(IntegrationsAutoscrapeTargetsEndpoint, func(rw http.ResponseWriter, r *http.Request) { + allTargets := s.autoscraper.TargetsActive() + metrics.ListTargetsHandler(allTargets).ServeHTTP(rw, r) + }) +} + +// Stop stops the manager and all running integrations. Blocks until all +// running integrations exit. +func (s *Subsystem) Stop() { + s.autoscraper.Stop() + s.stopController() + <-s.controllerExited +} diff --git a/pkg/integrations/v2/subsystem_test.go b/pkg/integrations/v2/subsystem_test.go new file mode 100644 index 000000000000..1d9e8cfbd920 --- /dev/null +++ b/pkg/integrations/v2/subsystem_test.go @@ -0,0 +1,65 @@ +package integrations + +import ( + "testing" + + v1 "github.com/grafana/agent/pkg/integrations" + "github.com/grafana/agent/pkg/integrations/v2/common" + "github.com/stretchr/testify/require" + "gopkg.in/yaml.v2" +) + +func TestSubsystemOptions_Unmarshal(t *testing.T) { + setRegistered(t, map[Config]Type{ + &testIntegrationA{}: TypeSingleton, + }) + + RegisterLegacy(&legacyConfig{}, TypeSingleton, func(in v1.Config, mc common.MetricsConfig) UpgradedConfig { + return &legacyShim{Data: in, Common: mc} + }) + + tt := []struct { + name string + in string + expectError string + }{ + { + name: "invalid integration", + in: ` + invalidintegration: + autoscrape: + enabled: true + `, + expectError: "line 2: field invalidintegration not found in type integrations.SubsystemOptions", + }, + { + name: "invalid field", + in: ` + test: + invalidfield: true + `, + expectError: "line 1: field invalidfield not found in type integrations.plain", + }, + { + name: "invalid v1 field", + in: ` + legacy: + invalidfield: true + `, + expectError: "line 1: field invalidfield not found", + }, + } + + for _, tc := range tt { + t.Run(tc.name, func(t *testing.T) { + + var so SubsystemOptions + err := yaml.UnmarshalStrict([]byte(tc.in), &so) + + var te *yaml.TypeError + require.ErrorAs(t, err, &te) + require.Len(t, te.Errors, 1) + require.Equal(t, tc.expectError, te.Errors[0]) + }) + } +} diff --git a/pkg/integrations/v2/targetgroup.go b/pkg/integrations/v2/targetgroup.go new file mode 100644 index 000000000000..4400105c4fa8 --- /dev/null +++ b/pkg/integrations/v2/targetgroup.go @@ -0,0 +1,28 @@ +package integrations + +import ( + "encoding/json" + + "github.com/prometheus/common/model" + "github.com/prometheus/prometheus/discovery/targetgroup" +) + +// targetGroup implements json.Marshaler for targetgroup.Group. This is +// required do to an issue with Prometheus: HTTP SD expects to be unmarshaled +// as JSON, but the form it expects to unmarshal the target groups in is not the form +// it marshals out to JSON as. +type targetGroup targetgroup.Group + +func (tg *targetGroup) MarshalJSON() ([]byte, error) { + g := &struct { + Targets []string `json:"targets"` + Labels model.LabelSet `json:"labels,omitempty"` + }{ + Targets: make([]string, 0, len(tg.Targets)), + Labels: tg.Labels, + } + for _, t := range tg.Targets { + g.Targets = append(g.Targets, string(t[model.AddressLabel])) + } + return json.Marshal(g) +} diff --git a/pkg/integrations/v2/utils.go b/pkg/integrations/v2/utils.go new file mode 100644 index 000000000000..6398c5f5a742 --- /dev/null +++ b/pkg/integrations/v2/utils.go @@ -0,0 +1,32 @@ +package integrations + +import ( + "context" + + "github.com/grafana/agent/pkg/util" +) + +// FuncIntegration is a function that implements Integration. +type FuncIntegration func(ctx context.Context) error + +// RunIntegration implements Integration. +func (fi FuncIntegration) RunIntegration(ctx context.Context) error { return fi(ctx) } + +// NoOpIntegration is an Integration that does nothing. +var NoOpIntegration = FuncIntegration(func(ctx context.Context) error { + <-ctx.Done() + return nil +}) + +// CompareConfigs will return true if a and b are equal. If neither a or b +// implement ComparableConfig, then configs are compared by marshaling to YAML +// and comparing the results. +func CompareConfigs(a, b Config) bool { + if a, ok := a.(ComparableConfig); ok { + return a.ConfigEquals(b) + } + if b, ok := b.(ComparableConfig); ok { + return b.ConfigEquals(a) + } + return util.CompareYAML(a, b) +} diff --git a/pkg/metrics/agent.go b/pkg/metrics/agent.go index 51c52724be53..f2cc8dfd962e 100644 --- a/pkg/metrics/agent.go +++ b/pkg/metrics/agent.go @@ -204,6 +204,10 @@ func (a *Agent) Validate(c *instance.Config) error { a.mut.RLock() defer a.mut.RUnlock() + if a.cfg.WALDir == "" { + return fmt.Errorf("no wal_directory configured") + } + if err := c.ApplyDefaults(a.cfg.Global); err != nil { return fmt.Errorf("failed to apply defaults to %q: %w", c.Name, err) } diff --git a/pkg/metrics/http.go b/pkg/metrics/http.go index db22d426a582..53ee979fb2d6 100644 --- a/pkg/metrics/http.go +++ b/pkg/metrics/http.go @@ -10,6 +10,7 @@ import ( "github.com/grafana/agent/pkg/metrics/cluster/configapi" "github.com/prometheus/common/model" "github.com/prometheus/prometheus/pkg/labels" + "github.com/prometheus/prometheus/scrape" ) // WireAPI adds API routes to the provided mux router. @@ -37,68 +38,77 @@ func (a *Agent) ListInstancesHandler(w http.ResponseWriter, _ *http.Request) { // ListTargetsHandler retrieves the full set of targets across all instances and shows // information on them. -func (a *Agent) ListTargetsHandler(w http.ResponseWriter, _ *http.Request) { +func (a *Agent) ListTargetsHandler(w http.ResponseWriter, r *http.Request) { instances := a.mm.ListInstances() - resp := ListTargetsResponse{} - + allTagets := make(map[string]TargetSet, len(instances)) for instName, inst := range instances { - tps := inst.TargetsActive() + allTagets[instName] = inst.TargetsActive() + } + ListTargetsHandler(allTagets).ServeHTTP(w, r) +} - for key, targets := range tps { - for _, tgt := range targets { - var lastError string - if scrapeError := tgt.LastError(); scrapeError != nil { - lastError = scrapeError.Error() +// ListTargetsHandler renders a mapping of instance to target set. +func ListTargetsHandler(targets map[string]TargetSet) http.Handler { + return http.HandlerFunc(func(rw http.ResponseWriter, _ *http.Request) { + resp := ListTargetsResponse{} + + for instance, tset := range targets { + for key, targets := range tset { + for _, tgt := range targets { + var lastError string + if scrapeError := tgt.LastError(); scrapeError != nil { + lastError = scrapeError.Error() + } + + resp = append(resp, TargetInfo{ + InstanceName: instance, + TargetGroup: key, + + Endpoint: tgt.URL().String(), + State: string(tgt.Health()), + DiscoveredLabels: tgt.DiscoveredLabels(), + Labels: tgt.Labels(), + LastScrape: tgt.LastScrape(), + ScrapeDuration: tgt.LastScrapeDuration().Milliseconds(), + ScrapeError: lastError, + }) } - - resp = append(resp, TargetInfo{ - InstanceName: instName, - TargetGroup: key, - - Endpoint: tgt.URL().String(), - State: string(tgt.Health()), - DiscoveredLabels: tgt.DiscoveredLabels(), - Labels: tgt.Labels(), - LastScrape: tgt.LastScrape(), - ScrapeDuration: tgt.LastScrapeDuration().Milliseconds(), - ScrapeError: lastError, - }) } } - } - sort.Slice(resp, func(i, j int) bool { - // sort by instance, then target group, then job label, then instance label - var ( - iInstance = resp[i].InstanceName - iTargetGroup = resp[i].TargetGroup - iJobLabel = resp[i].Labels.Get(model.JobLabel) - iInstanceLabel = resp[i].Labels.Get(model.InstanceLabel) - - jInstance = resp[j].InstanceName - jTargetGroup = resp[j].TargetGroup - jJobLabel = resp[j].Labels.Get(model.JobLabel) - jInstanceLabel = resp[j].Labels.Get(model.InstanceLabel) - ) - - switch { - case iInstance != jInstance: - return iInstance < jInstance - case iTargetGroup != jTargetGroup: - return iTargetGroup < jTargetGroup - case iJobLabel != jJobLabel: - return iJobLabel < jJobLabel - default: - return iInstanceLabel < jInstanceLabel - } - }) + sort.Slice(resp, func(i, j int) bool { + // sort by instance, then target group, then job label, then instance label + var ( + iInstance = resp[i].InstanceName + iTargetGroup = resp[i].TargetGroup + iJobLabel = resp[i].Labels.Get(model.JobLabel) + iInstanceLabel = resp[i].Labels.Get(model.InstanceLabel) + + jInstance = resp[j].InstanceName + jTargetGroup = resp[j].TargetGroup + jJobLabel = resp[j].Labels.Get(model.JobLabel) + jInstanceLabel = resp[j].Labels.Get(model.InstanceLabel) + ) + + switch { + case iInstance != jInstance: + return iInstance < jInstance + case iTargetGroup != jTargetGroup: + return iTargetGroup < jTargetGroup + case iJobLabel != jJobLabel: + return iJobLabel < jJobLabel + default: + return iInstanceLabel < jInstanceLabel + } + }) - err := configapi.WriteResponse(w, http.StatusOK, resp) - if err != nil { - level.Error(a.logger).Log("msg", "failed to write response", "err", err) - } + _ = configapi.WriteResponse(rw, http.StatusOK, resp) + }) } +// TargetSet is a set of targets for an individual scraper. +type TargetSet map[string][]*scrape.Target + // ListTargetsResponse is returned by the ListTargetsHandler. type ListTargetsResponse []TargetInfo diff --git a/pkg/operator/defaults.go b/pkg/operator/defaults.go index e0189dc0f942..58ee7a517afc 100644 --- a/pkg/operator/defaults.go +++ b/pkg/operator/defaults.go @@ -19,6 +19,7 @@ var ( "v0.21.0", "v0.21.1", "v0.21.2", + "v0.22.0", // NOTE(rfratto): when performing an upgrade, add the newest version above instead of changing the existing reference. } diff --git a/pkg/traces/automaticloggingprocessor/automaticloggingprocessor.go b/pkg/traces/automaticloggingprocessor/automaticloggingprocessor.go index 422146be5300..188a2614da4f 100644 --- a/pkg/traces/automaticloggingprocessor/automaticloggingprocessor.go +++ b/pkg/traces/automaticloggingprocessor/automaticloggingprocessor.go @@ -183,12 +183,11 @@ func (p *automaticLoggingProcessor) Capabilities() consumer.Capabilities { // Start is invoked during service startup. func (p *automaticLoggingProcessor) Start(ctx context.Context, _ component.Host) error { - logs := ctx.Value(contextkeys.Logs).(*logs.Logs) - if logs == nil { - return fmt.Errorf("key does not contain a logs instance") - } - if !p.logToStdout { + logs, ok := ctx.Value(contextkeys.Logs).(*logs.Logs) + if !ok { + return fmt.Errorf("key does not contain a logs instance") + } p.logsInstance = logs.Instance(p.cfg.LogsName) if p.logsInstance == nil { return fmt.Errorf("logs instance %s not found", p.cfg.LogsName) diff --git a/pkg/traces/automaticloggingprocessor/automaticloggingprocessor_test.go b/pkg/traces/automaticloggingprocessor/automaticloggingprocessor_test.go index 5ece1652a94e..03095bac8f78 100644 --- a/pkg/traces/automaticloggingprocessor/automaticloggingprocessor_test.go +++ b/pkg/traces/automaticloggingprocessor/automaticloggingprocessor_test.go @@ -1,6 +1,7 @@ package automaticloggingprocessor import ( + "context" "testing" "time" @@ -9,6 +10,7 @@ import ( "github.com/prometheus/common/model" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "go.opentelemetry.io/collector/component/componenttest" "go.opentelemetry.io/collector/model/pdata" "gopkg.in/yaml.v3" ) @@ -215,6 +217,9 @@ func TestLogToStdoutSet(t *testing.T) { require.NoError(t, err) require.True(t, p.(*automaticLoggingProcessor).logToStdout) + err = p.Start(context.Background(), componenttest.NewNopHost()) + require.NoError(t, err) + cfg = &AutomaticLoggingConfig{ Backend: BackendLogs, Spans: true, diff --git a/pkg/util/trigger.go b/pkg/util/trigger.go new file mode 100644 index 000000000000..75925cf3bc93 --- /dev/null +++ b/pkg/util/trigger.go @@ -0,0 +1,55 @@ +package util + +import ( + "context" + "sync" + "time" + + "go.uber.org/atomic" +) + +// WaitTrigger allows for waiting for a specific condition to be met. +// Useful for tests. +type WaitTrigger struct { + completed atomic.Bool + mut *sync.Mutex + cond *sync.Cond +} + +// NewWaitTrigger creates a new WaitTrigger. +func NewWaitTrigger() *WaitTrigger { + var mut sync.Mutex + cond := sync.NewCond(&mut) + return &WaitTrigger{mut: &mut, cond: cond} +} + +// Trigger completes the trigger and alerts all waiting. Calling Trigger again +// after the first invocation is a no-op. +func (wt *WaitTrigger) Trigger() { + wt.mut.Lock() + defer wt.mut.Unlock() + wt.completed.Store(true) + wt.cond.Broadcast() +} + +// Wait waits for trigger to complete up to the specified timeout. Returns an +// error if the timeout expires. +func (wt *WaitTrigger) Wait(timeout time.Duration) error { + ctx, cancel := context.WithTimeout(context.Background(), timeout) + defer cancel() + go func() { + <-ctx.Done() + if ctx.Err() == context.DeadlineExceeded { + // Ignore cancellations. + wt.cond.Broadcast() + } + }() + + wt.mut.Lock() + for ctx.Err() == nil && !wt.completed.Load() { + wt.cond.Wait() + } + err := ctx.Err() + wt.mut.Unlock() + return err +} diff --git a/pkg/util/trigger_test.go b/pkg/util/trigger_test.go new file mode 100644 index 000000000000..2959ba974d0f --- /dev/null +++ b/pkg/util/trigger_test.go @@ -0,0 +1,30 @@ +package util + +import ( + "context" + "testing" + "time" + + "github.com/stretchr/testify/require" +) + +func TestWaitTrigger(t *testing.T) { + t.Run("timeout", func(t *testing.T) { + wt := NewWaitTrigger() + err := wt.Wait(time.Millisecond * 100) + require.ErrorIs(t, err, context.DeadlineExceeded) + }) + + t.Run("no timeout", func(t *testing.T) { + wt := NewWaitTrigger() + + go func() { + <-time.After(100 * time.Millisecond) + wt.Trigger() + }() + + err := wt.Wait(time.Second) + require.NoError(t, err) + }) + +} diff --git a/pkg/util/yaml.go b/pkg/util/yaml.go index 043bfdcd665f..2626fa330b97 100644 --- a/pkg/util/yaml.go +++ b/pkg/util/yaml.go @@ -62,20 +62,25 @@ func UnmarshalYAMLMerged(bb []byte, vv ...interface{}) error { var typeErrors []yaml.TypeError for _, v := range vv { - // Perform a non-strict unmarshal first to populate the object completely. - if err := yaml.Unmarshal(bb, v); err != nil { - return err - } - - // Then, perform a strict unmarshal. This is likely to fail with type - // errors for missing fields that may have been consumed by another object - // in vv. + // Perform a strict unmarshal. This is likely to fail with type errors for + // missing fields that may have been consumed by another object in vv. var te *yaml.TypeError if err := yaml.UnmarshalStrict(bb, v); errors.As(err, &te) { typeErrors = append(typeErrors, *te) } else if err != nil { return err } + + // It's common for custom yaml.Unmarshaler implementations to use + // UnmarshalYAML to apply default values both before and after calling the + // unmarshal method passed to them. + // + // We *must* do a second non-strict unmarshal *after* the strict unmarshal + // to ensure that every v was able to complete its unmarshal to completion, + // ignoring type errors from unrecognized fields. + if err := yaml.Unmarshal(bb, v); err != nil { + return err + } } var ( diff --git a/pkg/util/yaml_test.go b/pkg/util/yaml_test.go new file mode 100644 index 000000000000..45818363d062 --- /dev/null +++ b/pkg/util/yaml_test.go @@ -0,0 +1,47 @@ +package util + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +// TestUnmarshalYAMLMerged_CustomUnmarshal checks to see that +// UnmarshalYAMLMerged works with merging types that have custom unmarshal +// methods which do extra checks after calling unmarshal. +func TestUnmarshalYAMLMerged_CustomUnmarshal(t *testing.T) { + in := ` + fieldA: foo + fieldB: bar + ` + + var ( + val1 typeOne + val2 typeTwo + ) + + err := UnmarshalYAMLMerged([]byte(in), &val1, &val2) + require.NoError(t, err) + + require.Equal(t, "foo", val1.FieldA) + require.Equal(t, "bar", val2.FieldB) + require.True(t, val2.Unmarshaled) +} + +type typeOne struct { + FieldA string `yaml:"fieldA"` +} + +type typeTwo struct { + FieldB string `yaml:"fieldB"` + Unmarshaled bool `yaml:"-"` +} + +func (t *typeTwo) UnmarshalYAML(unmarshal func(interface{}) error) error { + type rawType typeTwo + if err := unmarshal((*rawType)(t)); err != nil { + return err + } + t.Unmarshaled = true + return nil +} diff --git a/production/README.md b/production/README.md index 2fe509253e6e..4bbb146d4682 100644 --- a/production/README.md +++ b/production/README.md @@ -27,7 +27,7 @@ directory on your host that you want the agent to store its WAL. docker run \ -v /tmp/agent:/etc/agent/data \ -v /path/to/config.yaml:/etc/agent/agent.yaml \ - grafana/agent:v0.21.2 + grafana/agent:v0.22.0 ``` ## Running the Agent locally diff --git a/production/grafanacloud-install.sh b/production/grafanacloud-install.sh index b7acda2ba2c5..c2d07a53eeea 100755 --- a/production/grafanacloud-install.sh +++ b/production/grafanacloud-install.sh @@ -50,7 +50,7 @@ PACKAGE_SYSTEM=${PACKAGE_SYSTEM:=} # # Global constants. # -RELEASE_VERSION="0.21.2" +RELEASE_VERSION="0.22.0" RELEASE_URL="https://github.com/grafana/agent/releases/download/v${RELEASE_VERSION}" DEB_URL="${RELEASE_URL}/grafana-agent-${RELEASE_VERSION}-1.${ARCH}.deb" diff --git a/production/kubernetes/agent-bare.yaml b/production/kubernetes/agent-bare.yaml index cea60c76ba81..2eda70a26a8b 100644 --- a/production/kubernetes/agent-bare.yaml +++ b/production/kubernetes/agent-bare.yaml @@ -66,7 +66,7 @@ spec: valueFrom: fieldRef: fieldPath: spec.nodeName - image: grafana/agent:v0.21.2 + image: grafana/agent:v0.22.0 imagePullPolicy: IfNotPresent name: agent ports: diff --git a/production/kubernetes/agent-loki.yaml b/production/kubernetes/agent-loki.yaml index bd746b2b7b98..cf284912af18 100644 --- a/production/kubernetes/agent-loki.yaml +++ b/production/kubernetes/agent-loki.yaml @@ -64,7 +64,7 @@ spec: valueFrom: fieldRef: fieldPath: spec.nodeName - image: grafana/agent:v0.21.2 + image: grafana/agent:v0.22.0 imagePullPolicy: IfNotPresent name: agent ports: diff --git a/production/kubernetes/agent-traces.yaml b/production/kubernetes/agent-traces.yaml index 51b82f7e5151..3ad3616f1f3a 100644 --- a/production/kubernetes/agent-traces.yaml +++ b/production/kubernetes/agent-traces.yaml @@ -109,7 +109,7 @@ spec: valueFrom: fieldRef: fieldPath: spec.nodeName - image: grafana/agent:v0.21.2 + image: grafana/agent:v0.22.0 imagePullPolicy: IfNotPresent name: agent ports: diff --git a/production/kubernetes/build/lib/version.libsonnet b/production/kubernetes/build/lib/version.libsonnet index 47c428aa1220..24f9f8cd67a2 100644 --- a/production/kubernetes/build/lib/version.libsonnet +++ b/production/kubernetes/build/lib/version.libsonnet @@ -1 +1 @@ -'grafana/agent:v0.21.2' +'grafana/agent:v0.22.0' diff --git a/production/kubernetes/build/vendor/1.21 b/production/kubernetes/build/vendor/1.21 deleted file mode 120000 index 406ebf32b164..000000000000 --- a/production/kubernetes/build/vendor/1.21 +++ /dev/null @@ -1 +0,0 @@ -github.com/jsonnet-libs/k8s-libsonnet/1.21 \ No newline at end of file diff --git a/production/kubernetes/build/vendor/github.com/grafana/jsonnet-libs/ksonnet-util/grafana.libsonnet b/production/kubernetes/build/vendor/github.com/grafana/jsonnet-libs/ksonnet-util/grafana.libsonnet deleted file mode 100644 index 8277402227e5..000000000000 --- a/production/kubernetes/build/vendor/github.com/grafana/jsonnet-libs/ksonnet-util/grafana.libsonnet +++ /dev/null @@ -1,71 +0,0 @@ -// grafana.libsonnet provides the k-compat layer with grafana-opinionated defaults -(import 'k-compat.libsonnet') -+ { - core+: { - v1+: { - containerPort+:: { - // Force all ports to have names. - new(name, port):: - super.newNamed(name=name, containerPort=port), - - // Shortcut constructor for UDP ports. - newUDP(name, port):: - super.newNamedUDP(name=name, containerPort=port), - }, - - container+:: { - new(name, image):: - super.new(name, image) + - super.withImagePullPolicy('IfNotPresent'), - }, - }, - }, - - local appsExtentions = { - daemonSet+: { - new(name, containers, podLabels={}):: - super.new(name, containers, podLabels={}) + - - // Can't think of a reason we wouldn't want a DaemonSet to run on - // every node. - super.mixin.spec.template.spec.withTolerations([ - $.core.v1.toleration.new() + - $.core.v1.toleration.withOperator('Exists') + - $.core.v1.toleration.withEffect('NoSchedule'), - ]) + - - // We want to specify a minReadySeconds on every deamonset, so we get some - // very basic canarying, for instance, with bad arguments. - super.mixin.spec.withMinReadySeconds(10) + - super.mixin.spec.updateStrategy.withType('RollingUpdate'), - }, - - deployment+: { - new(name, replicas, containers, podLabels={}):: - super.new(name, replicas, containers, podLabels) + - - // We want to specify a minReadySeconds on every deployment, so we get some - // very basic canarying, for instance, with bad arguments. - super.mixin.spec.withMinReadySeconds(10) + - - // We want to add a sensible default for the number of old deployments - // handing around. - super.mixin.spec.withRevisionHistoryLimit(10), - }, - - statefulSet+: { - new(name, replicas, containers, volumeClaims=[], podLabels={}):: - super.new(name, replicas, containers, volumeClaims, podLabels) + - super.mixin.spec.updateStrategy.withType('RollingUpdate'), - }, - }, - - extensions+: { - v1beta1+: appsExtentions, - }, - - apps+: { - v1beta1+: appsExtentions, - v1+: appsExtentions, - }, -} diff --git a/production/kubernetes/build/vendor/github.com/grafana/jsonnet-libs/ksonnet-util/k-compat.libsonnet b/production/kubernetes/build/vendor/github.com/grafana/jsonnet-libs/ksonnet-util/k-compat.libsonnet deleted file mode 100644 index 389dcab7375a..000000000000 --- a/production/kubernetes/build/vendor/github.com/grafana/jsonnet-libs/ksonnet-util/k-compat.libsonnet +++ /dev/null @@ -1,22 +0,0 @@ -// k-compat.libsonnet provides a compatibility layer between k8s-libsonnet and ksonnet-lib. As ksonnet-lib has been -// abandoned, we consider it deprecated. This layer will generate a deprecation warning to those that still use it. -local k = import 'k.libsonnet'; - -k -+ ( - if std.objectHas(k, '__ksonnet') - then - std.trace( - 'Deprecated: ksonnet-lib has been abandoned, please consider using https://github.com/jsonnet-libs/k8s-libsonnet.', - (import 'legacy-types.libsonnet') - + (import 'legacy-custom.libsonnet') - + (import 'legacy-noname.libsonnet')({ - new(name=''):: super.new() + (if name != '' then super.mixin.metadata.withName(name) else {}), - }) - ) - else - (import 'legacy-subtypes.libsonnet') - + (import 'legacy-noname.libsonnet')({ - new(name=''):: super.new(name), - }) -) diff --git a/production/kubernetes/build/vendor/github.com/grafana/jsonnet-libs/ksonnet-util/kausal.libsonnet b/production/kubernetes/build/vendor/github.com/grafana/jsonnet-libs/ksonnet-util/kausal.libsonnet deleted file mode 100644 index 6a6f1498ee3e..000000000000 --- a/production/kubernetes/build/vendor/github.com/grafana/jsonnet-libs/ksonnet-util/kausal.libsonnet +++ /dev/null @@ -1,29 +0,0 @@ -// kausal.libsonnet provides a backwards compatible way as many libraries leverage kausal.libsonnet. -// Ideally util.libsonnet is consumed separately. - -(import 'grafana.libsonnet') -+ { - local this = self, - _config+:: { - enable_rbac: true, - enable_pod_priorities: false, - namespace: error 'Must define a namespace', - }, - - util+:: - (import 'util.libsonnet').withK(this) - + { - rbac(name, rules):: - if $._config.enable_rbac - then super.rbac(name, rules, $._config.namespace) - else {}, - namespacedRBAC(name, rules):: - if $._config.enable_rbac - then super.namespacedRBAC(name, rules, $._config.namespace) - else {}, - podPriority(p): - if $._config.enable_pod_priorities - then super.podPriority(p) - else {}, - }, -} diff --git a/production/kubernetes/build/vendor/github.com/grafana/jsonnet-libs/ksonnet-util/legacy-custom.libsonnet b/production/kubernetes/build/vendor/github.com/grafana/jsonnet-libs/ksonnet-util/legacy-custom.libsonnet deleted file mode 100644 index 2d42997ab8f3..000000000000 --- a/production/kubernetes/build/vendor/github.com/grafana/jsonnet-libs/ksonnet-util/legacy-custom.libsonnet +++ /dev/null @@ -1,156 +0,0 @@ -// legacy-custom.libsonnet retrofits k8s-libsonnet functionality into ksonnet-lib -{ - core+: { - v1+: { - configMap+: { - // allow configMap without data - new(name, data={}):: - super.new(name, data), - withData(data):: - // don't add 'data' key if data={} - if (data == {}) then {} - else super.withData(data), - withDataMixin(data):: - // don't add 'data' key if data={} - if (data == {}) then {} - else super.withDataMixin(data), - }, - - volume+:: { - // Make items parameter optional from fromConfigMap - fromConfigMap(name, configMapName, configMapItems=[]):: - { - configMap+: - if configMapItems == [] then { items:: null } - else {}, - } - + super.fromConfigMap(name, configMapName, configMapItems), - - // Shortcut constructor for secret volumes. - fromSecret(name, secretName):: - super.withName(name) + - super.mixin.secret.withSecretName(secretName), - - // Rename emptyDir to claimName - fromPersistentVolumeClaim(name='', claimName=''):: super.fromPersistentVolumeClaim(name=name, emptyDir=claimName), - }, - - volumeMount+:: { - // Override new, such that it doesn't always set readOnly: false. - new(name, mountPath, readOnly=false):: - {} + self.withName(name) + self.withMountPath(mountPath) + - if readOnly - then self.withReadOnly(readOnly) - else {}, - }, - - containerPort+:: { - // Shortcut constructor for UDP ports. - newNamedUDP(name, containerPort):: - super.newNamed(name=name, containerPort=containerPort) + - super.withProtocol('UDP'), - }, - - persistentVolumeClaim+:: { - new(name=''):: - super.new() - + (if name != '' - then super.mixin.metadata.withName(name) - else {}), - }, - - container+:: { - withEnvMixin(es):: - // if an envvar has an empty value ("") we want to remove that property - // because k8s will remove that and then it would always - // show up as a difference. - local removeEmptyValue(obj) = - if std.objectHas(obj, 'value') && std.length(obj.value) == 0 then - { - [k]: obj[k] - for k in std.objectFields(obj) - if k != 'value' - } - else - obj; - super.withEnvMixin([ - removeEmptyValue(envvar) - for envvar in es - ]), - - withEnvMap(es):: - self.withEnvMixin([ - $.core.v1.envVar.new(k, es[k]) - for k in std.objectFields(es) - ]), - }, - }, - }, - - batch+: { - v1beta1+: { - cronJob+: { - new(name='', schedule='', containers=[]):: - super.new() - + super.mixin.spec.jobTemplate.spec.template.spec.withContainers(containers) - + (if name != '' - then - super.mixin.metadata.withName(name) - + super.mixin.spec.jobTemplate.spec.template.metadata.withLabels({ name: name }) - else {}) - + ( - if schedule != '' - then super.mixin.spec.withSchedule(schedule) - else {} - ), - }, - }, - }, - - local appsExtentions = { - daemonSet+: { - new(name, containers, podLabels={}):: - local labels = podLabels { name: name }; - super.new() + - super.mixin.metadata.withName(name) + - super.mixin.spec.template.metadata.withLabels(labels) + - super.mixin.spec.template.spec.withContainers(containers) + - // apps.v1 requires an explicit selector: - super.mixin.spec.selector.withMatchLabels(labels), - }, - deployment+: { - new(name, replicas, containers, podLabels={}):: - local labels = podLabels { name: name }; - super.new(name, replicas, containers, labels) + - - // apps.v1 requires an explicit selector: - super.mixin.spec.selector.withMatchLabels(labels), - }, - statefulSet+: { - new(name, replicas, containers, volumeClaims=[], podLabels={}):: - local labels = podLabels { name: name }; - super.new(name, replicas, containers, volumeClaims, labels) + - - // apps.v1 requires an explicit selector: - super.mixin.spec.selector.withMatchLabels(labels) + - - // remove volumeClaimTemplates if empty - // (otherwise it will create a diff all the time) - ( - if std.length(volumeClaims) > 0 - then super.mixin.spec.withVolumeClaimTemplates(volumeClaims) - else {} - ), - }, - }, - - extensions+: { - v1beta1+: appsExtentions, - }, - - apps+: { - v1beta1+: appsExtentions, - v1+: appsExtentions, - }, - -} diff --git a/production/kubernetes/build/vendor/github.com/grafana/jsonnet-libs/ksonnet-util/legacy-noname.libsonnet b/production/kubernetes/build/vendor/github.com/grafana/jsonnet-libs/ksonnet-util/legacy-noname.libsonnet deleted file mode 100644 index 9529244f2996..000000000000 --- a/production/kubernetes/build/vendor/github.com/grafana/jsonnet-libs/ksonnet-util/legacy-noname.libsonnet +++ /dev/null @@ -1,51 +0,0 @@ -// legacy-noname.libsonnet provides two-way compatibility, in k8s-libsonnet many new() functions have a mandatory name -// argument while they are absent in ksonnet-lib. `noNewEmptyNameMixin` allows us to make the argument optional in -// either situation. -function(noNewEmptyNameMixin) { - core+: { v1+: { - persistentVolumeClaim+: noNewEmptyNameMixin, - } }, - extensions+: { - v1beta1+: { - ingress+: noNewEmptyNameMixin, - }, - }, - networking+: { - v1beta1+: { - ingress+: noNewEmptyNameMixin, - }, - }, - batch+: { - v1+: { - job+: noNewEmptyNameMixin, - }, - v1beta1+: { - job+: noNewEmptyNameMixin, - }, - }, - local rbacPatch = { - role+: noNewEmptyNameMixin, - clusterRole+: noNewEmptyNameMixin, - roleBinding+: noNewEmptyNameMixin, - clusterRoleBinding+: noNewEmptyNameMixin, - }, - rbac+: { - v1+: rbacPatch, - v1beta1+: rbacPatch, - }, - policy+: { v1beta1+: { - podDisruptionBudget+: noNewEmptyNameMixin, - podSecurityPolicy+: noNewEmptyNameMixin, - } }, - storage+: { v1+: { - storageClass+: noNewEmptyNameMixin, - } }, - - scheduling+: { v1beta1+: { - priorityClass+: noNewEmptyNameMixin, - } }, - admissionregistration+: { v1beta1+: { - mutatingWebhookConfiguration+: noNewEmptyNameMixin, - validatingWebhookConfiguration+: noNewEmptyNameMixin, - } }, -} diff --git a/production/kubernetes/build/vendor/github.com/grafana/jsonnet-libs/ksonnet-util/legacy-subtypes.libsonnet b/production/kubernetes/build/vendor/github.com/grafana/jsonnet-libs/ksonnet-util/legacy-subtypes.libsonnet deleted file mode 100644 index 286928648ea1..000000000000 --- a/production/kubernetes/build/vendor/github.com/grafana/jsonnet-libs/ksonnet-util/legacy-subtypes.libsonnet +++ /dev/null @@ -1,168 +0,0 @@ -// legacy-subtypes.libsonnet makes first-class entities available as subtypes like in ksonnet-lib. -// It also makes the empty new() functions and camelCased functions available. -// This is largely based on kausal-shim.libsonnet from k8s-libsonnet. -{ - core+: { v1+: { - container+: { - envType: $.core.v1.envVar, - envFromType: $.core.v1.envFromSource, - portsType: $.core.v1.containerPort, - volumeMountsType: $.core.v1.volumeMount, - }, - pod+: { - spec+: { - volumesType: $.core.v1.volume, - }, - }, - service+: { - spec+: { - withClusterIp: self.withClusterIP, - withLoadBalancerIp: self.withLoadBalancerIP, - portsType: $.core.v1.servicePort, - }, - }, - - envFromSource+: { new():: {} }, - nodeSelector+: { new():: {} }, - nodeSelectorTerm+: { new():: {} }, - podAffinityTerm+: { new():: {} }, - preferredSchedulingTerm+: { new():: {} }, - toleration+: { new():: {} }, - localObjectReference+: { new():: {} }, - } }, - - local appsAffinityPatch = { - nodeAffinity+: { - requiredDuringSchedulingIgnoredDuringExecutionType: $.core.v1.nodeSelector { - nodeSelectorTermsType: $.core.v1.nodeSelectorTerm { - matchFieldsType: $.core.v1.nodeSelectorRequirement, - }, - }, - preferredDuringSchedulingIgnoredDuringExecutionType: $.core.v1.preferredSchedulingTerm { - preferenceType: { - matchFieldsType: $.core.v1.nodeSelectorRequirement, - }, - }, - }, - podAntiAffinity+: { - requiredDuringSchedulingIgnoredDuringExecutionType: $.core.v1.podAffinityTerm, - }, - }, - - local appsPatch = { - deployment+: { - spec+: { template+: { spec+: { - volumesType: $.core.v1.volume, - containersType: $.core.v1.container, - tolerationsType: $.core.v1.toleration, - affinity+: appsAffinityPatch, - } } }, - }, - daemonSet+: { - spec+: { template+: { spec+: { - withHostPid:: self.withHostPID, - tolerationsType: $.core.v1.toleration, - affinity+: appsAffinityPatch, - } } }, - }, - statefulSet+: { - spec+: { template+: { spec+: { - volumesType: $.core.v1.volume, - affinity+: appsAffinityPatch, - tolerationsType: $.core.v1.toleration, - imagePullSecretsType: $.core.v1.localObjectReference, - } } }, - }, - }, - - apps+: { - v1+: appsPatch, - v1beta1+: appsPatch, - }, - extensions+: { - v1beta1+: appsPatch { - ingress+: { - spec+: { - rulesType: $.extensions.v1beta1.ingressRule { - httpType+: { pathsType: $.extensions.v1beta1.httpIngressPath }, - }, - }, - }, - }, - }, - - batch+: { - local patch = { - mixin+: { spec+: { jobTemplate+: { spec+: { template+: { spec+: { - imagePullSecretsType: $.core.v1.localObjectReference, - } } } } } }, - }, - - v1+: { - job+: patch, - cronJob+: patch, - }, - v1beta1+: { - job+: patch, - cronJob+: patch, - }, - }, - - - local rbacPatch = { - local role = { - rulesType: $.rbac.v1beta1.policyRule, - }, - role+: role, - clusterRole+: role, - - local binding = { - subjectsType: $.rbac.v1beta1.subject, - }, - roleBinding+: binding, - clusterRoleBinding+: binding, - subject+: { new():: {} }, - - policyRule+: { - new():: {}, - withNonResourceUrls: self.withNonResourceURLs, - }, - }, - rbac+: { - v1+: rbacPatch, - v1beta1+: rbacPatch, - }, - - policy+: { - v1beta1+: { - idRange+: { new():: {} }, - podSecurityPolicy+: { - mixin+: { spec+: { - runAsUser+: { rangesType: $.policy.v1beta1.idRange }, - withHostIpc: self.withHostIPC, - withHostPid: self.withHostPID, - } }, - }, - }, - }, - - admissionregistration+: { v1beta1+: { - webhook+: { new():: {} }, - ruleWithOperations+: { new():: {} }, - local webhooksType = $.admissionregistration.v1beta1.webhook { - rulesType: $.admissionregistration.v1beta1.ruleWithOperations, - mixin+: { namespaceSelector+: { matchExpressionsType: { - new():: {}, - withKey(key):: { key: key }, - withOperator(operator):: { operator: operator }, - withValues(values):: { values: if std.isArray(values) then values else [values] }, - } } }, - }, - mutatingWebhookConfiguration+: { - webhooksType: webhooksType, - }, - validatingWebhookConfiguration+: { - webhooksType: webhooksType, - }, - } }, -} diff --git a/production/kubernetes/build/vendor/github.com/grafana/jsonnet-libs/ksonnet-util/legacy-types.libsonnet b/production/kubernetes/build/vendor/github.com/grafana/jsonnet-libs/ksonnet-util/legacy-types.libsonnet deleted file mode 100644 index b339021a9356..000000000000 --- a/production/kubernetes/build/vendor/github.com/grafana/jsonnet-libs/ksonnet-util/legacy-types.libsonnet +++ /dev/null @@ -1,26 +0,0 @@ -// legacy-types.libsonnet exposes hidden types from ksonnet-lib as first class citizens -// This list is likely to be incomplete. -{ - core+: { - v1+: { - container:: $.apps.v1.deployment.mixin.spec.template.spec.containersType, - containerPort:: $.core.v1.container.portsType, - envVar:: $.core.v1.container.envType, - envFromSource:: $.core.v1.container.envFromType, - servicePort:: $.core.v1.service.mixin.spec.portsType, - toleration:: $.apps.v1.deployment.mixin.spec.template.spec.tolerationsType, - volume:: $.core.v1.pod.mixin.spec.volumesType, - volumeMount:: $.core.v1.container.volumeMountsType, - }, - }, - rbac+: { - v1+: { - policyRule:: $.rbac.v1beta1.clusterRole.rulesType, - subject:: $.rbac.v1beta1.clusterRoleBinding.subjectsType, - }, - v1beta1+: { - policyRule:: $.rbac.v1beta1.clusterRole.rulesType, - subject:: $.rbac.v1beta1.clusterRoleBinding.subjectsType, - }, - }, -} diff --git a/production/kubernetes/build/vendor/github.com/grafana/jsonnet-libs/ksonnet-util/util.libsonnet b/production/kubernetes/build/vendor/github.com/grafana/jsonnet-libs/ksonnet-util/util.libsonnet deleted file mode 100644 index d97f7d5db322..000000000000 --- a/production/kubernetes/build/vendor/github.com/grafana/jsonnet-libs/ksonnet-util/util.libsonnet +++ /dev/null @@ -1,264 +0,0 @@ -// util.libsonnet provides a number of useful (opinionated) shortcuts to replace boilerplate code - -local util(k) = { - // mapToFlags converts a map to a set of golang-style command line flags. - mapToFlags(map, prefix='-'): [ - '%s%s=%s' % [prefix, key, map[key]] - for key in std.objectFields(map) - if map[key] != null - ], - - // serviceFor create service for a given deployment. - serviceFor(deployment, ignored_labels=[], nameFormat='%(container)s-%(port)s'):: - local container = k.core.v1.container; - local service = k.core.v1.service; - local servicePort = k.core.v1.servicePort; - local ports = [ - servicePort.newNamed( - name=(nameFormat % { container: c.name, port: port.name }), - port=port.containerPort, - targetPort=port.containerPort - ) + - if std.objectHas(port, 'protocol') - then servicePort.withProtocol(port.protocol) - else {} - for c in deployment.spec.template.spec.containers - for port in (c + container.withPortsMixin([])).ports - ]; - local labels = { - [x]: deployment.spec.template.metadata.labels[x] - for x in std.objectFields(deployment.spec.template.metadata.labels) - if std.count(ignored_labels, x) == 0 - }; - - service.new( - deployment.metadata.name, // name - labels, // selector - ports, - ) + - service.mixin.metadata.withLabels({ name: deployment.metadata.name }), - - // rbac creates a service account, role and role binding with the given - // name and rules. - rbac(name, rules, namespace):: { - local clusterRole = k.rbac.v1.clusterRole, - local clusterRoleBinding = k.rbac.v1.clusterRoleBinding, - local subject = k.rbac.v1.subject, - local serviceAccount = k.core.v1.serviceAccount, - - service_account: - serviceAccount.new(name), - - cluster_role: - clusterRole.new() + - clusterRole.mixin.metadata.withName(name) + - clusterRole.withRules(rules), - - cluster_role_binding: - clusterRoleBinding.new() + - clusterRoleBinding.mixin.metadata.withName(name) + - clusterRoleBinding.mixin.roleRef.withApiGroup('rbac.authorization.k8s.io') + - clusterRoleBinding.mixin.roleRef.withKind('ClusterRole') + - clusterRoleBinding.mixin.roleRef.withName(name) + - clusterRoleBinding.withSubjects([ - subject.new() + - subject.withKind('ServiceAccount') + - subject.withName(name) + - subject.withNamespace(namespace), - ]), - }, - - namespacedRBAC(name, rules, namespace):: { - local role = k.rbac.v1.role, - local roleBinding = k.rbac.v1.roleBinding, - local subject = k.rbac.v1.subject, - local serviceAccount = k.core.v1.serviceAccount, - - service_account: - serviceAccount.new(name) + - serviceAccount.mixin.metadata.withNamespace(namespace), - - role: - role.new() + - role.mixin.metadata.withName(name) + - role.mixin.metadata.withNamespace(namespace) + - role.withRules(rules), - - role_binding: - roleBinding.new() + - roleBinding.mixin.metadata.withName(name) + - roleBinding.mixin.metadata.withNamespace(namespace) + - roleBinding.mixin.roleRef.withApiGroup('rbac.authorization.k8s.io') + - roleBinding.mixin.roleRef.withKind('Role') + - roleBinding.mixin.roleRef.withName(name) + - roleBinding.withSubjects([ - subject.new() + - subject.withKind('ServiceAccount') + - subject.withName(name) + - subject.withNamespace(namespace), - ]), - }, - - // VolumeMount helper functions can be augmented with mixins. - // For example, passing "volumeMount.withSubPath(subpath)" will result in - // a subpath mixin. - configVolumeMount(name, path, volumeMountMixin={}):: - local container = k.core.v1.container, - deployment = k.apps.v1.deployment, - volumeMount = k.core.v1.volumeMount, - volume = k.core.v1.volume, - addMount(c) = c + container.withVolumeMountsMixin( - volumeMount.new(name, path) + - volumeMountMixin, - ); - - deployment.mapContainers(addMount) + - deployment.mixin.spec.template.spec.withVolumesMixin([ - volume.fromConfigMap(name, name), - ]), - - // configMapVolumeMount adds a configMap to deployment-like objects. - // It will also add an annotation hash to ensure the pods are re-deployed - // when the config map changes. - configMapVolumeMount(configMap, path, volumeMountMixin={}):: - local name = configMap.metadata.name, - hash = std.md5(std.toString(configMap)), - container = k.core.v1.container, - deployment = k.apps.v1.deployment, - volumeMount = k.core.v1.volumeMount, - volume = k.core.v1.volume, - addMount(c) = c + container.withVolumeMountsMixin( - volumeMount.new(name, path) + - volumeMountMixin, - ); - - deployment.mapContainers(addMount) + - deployment.mixin.spec.template.spec.withVolumesMixin([ - volume.fromConfigMap(name, name), - ]) + - deployment.mixin.spec.template.metadata.withAnnotationsMixin({ - ['%s-hash' % name]: hash, - }), - - hostVolumeMount(name, hostPath, path, readOnly=false, volumeMountMixin={}):: - local container = k.core.v1.container, - deployment = k.apps.v1.deployment, - volumeMount = k.core.v1.volumeMount, - volume = k.core.v1.volume, - addMount(c) = c + container.withVolumeMountsMixin( - volumeMount.new(name, path, readOnly=readOnly) + - volumeMountMixin, - ); - - deployment.mapContainers(addMount) + - deployment.mixin.spec.template.spec.withVolumesMixin([ - volume.fromHostPath(name, hostPath), - ]), - - pvcVolumeMount(pvcName, path, readOnly=false, volumeMountMixin={}):: - local container = k.core.v1.container, - deployment = k.apps.v1.deployment, - volumeMount = k.core.v1.volumeMount, - volume = k.core.v1.volume, - addMount(c) = c + container.withVolumeMountsMixin( - volumeMount.new(pvcName, path, readOnly=readOnly) + - volumeMountMixin, - ); - - deployment.mapContainers(addMount) + - deployment.mixin.spec.template.spec.withVolumesMixin([ - volume.fromPersistentVolumeClaim(pvcName, pvcName), - ]), - - secretVolumeMount(name, path, defaultMode=256, volumeMountMixin={}):: - local container = k.core.v1.container, - deployment = k.apps.v1.deployment, - volumeMount = k.core.v1.volumeMount, - volume = k.core.v1.volume, - addMount(c) = c + container.withVolumeMountsMixin( - volumeMount.new(name, path) + - volumeMountMixin, - ); - - deployment.mapContainers(addMount) + - deployment.mixin.spec.template.spec.withVolumesMixin([ - volume.fromSecret(name, secretName=name) + - volume.mixin.secret.withDefaultMode(defaultMode), - ]), - - emptyVolumeMount(name, path, volumeMountMixin={}, volumeMixin={}):: - local container = k.core.v1.container, - deployment = k.apps.v1.deployment, - volumeMount = k.core.v1.volumeMount, - volume = k.core.v1.volume, - addMount(c) = c + container.withVolumeMountsMixin( - volumeMount.new(name, path) + - volumeMountMixin, - ); - - deployment.mapContainers(addMount) + - deployment.mixin.spec.template.spec.withVolumesMixin([ - volume.fromEmptyDir(name) + volumeMixin, - ]), - - manifestYaml(value):: ( - local f = std.native('manifestYamlFromJson'); - f(std.toString(value)) - ), - - resourcesRequests(cpu, memory):: - k.core.v1.container.mixin.resources.withRequests( - (if cpu != null - then { cpu: cpu } - else {}) + - (if memory != null - then { memory: memory } - else {}) - ), - - resourcesLimits(cpu, memory):: - k.core.v1.container.mixin.resources.withLimits( - (if cpu != null - then { cpu: cpu } - else {}) + - (if memory != null - then { memory: memory } - else {}) - ), - - antiAffinity: - { - local deployment = k.apps.v1.deployment, - local podAntiAffinity = deployment.mixin.spec.template.spec.affinity.podAntiAffinity, - local name = super.spec.template.metadata.labels.name, - - spec+: podAntiAffinity.withRequiredDuringSchedulingIgnoredDuringExecution([ - podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecutionType.new() + - podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecutionType.mixin.labelSelector.withMatchLabels({ name: name }) + - podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecutionType.withTopologyKey('kubernetes.io/hostname'), - ]).spec, - }, - - antiAffinityStatefulSet: - { - local statefulSet = k.apps.v1.statefulSet, - local podAntiAffinity = statefulSet.mixin.spec.template.spec.affinity.podAntiAffinity, - local name = super.spec.template.metadata.labels.name, - - spec+: podAntiAffinity.withRequiredDuringSchedulingIgnoredDuringExecution([ - podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecutionType.new() + - podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecutionType.mixin.labelSelector.withMatchLabels({ name: name }) + - podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecutionType.withTopologyKey('kubernetes.io/hostname'), - ]).spec, - }, - - // Add a priority to the pods in a deployment (or deployment-like objects - // such as a statefulset). - local deployment = k.apps.v1.deployment, - podPriority(p): - deployment.mixin.spec.template.spec.withPriorityClassName(p), -}; - -util((import 'grafana.libsonnet')) + { - withK(k):: util(k), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_custom/apps.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_custom/apps.libsonnet deleted file mode 100644 index 27a4b6157043..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_custom/apps.libsonnet +++ /dev/null @@ -1,83 +0,0 @@ -local d = import 'doc-util/main.libsonnet'; - -local patch = { - daemonSet+: { - '#new'+: d.func.withArgs([ - d.arg('name', d.T.string), - d.arg('containers', d.T.array), - d.arg('podLabels', d.T.object, {}), - ]), - new( - name, - containers=[], - podLabels={} - ):: - local labels = { name: name } + podLabels; - super.new(name) - + super.spec.template.spec.withContainers(containers) - + super.spec.template.metadata.withLabels(labels) - + super.spec.selector.withMatchLabels(labels), - }, - deployment+: { - '#new'+: d.func.withArgs([ - d.arg('name', d.T.string), - d.arg('replicas', d.T.int, 1), - d.arg('containers', d.T.array), - d.arg('podLabels', d.T.object, {}), - ]), - new( - name, - replicas=1, - containers=error 'containers unset', - podLabels={}, - ):: - local labels = { name: name } + podLabels; - super.new(name) - + super.spec.withReplicas(replicas) - + super.spec.template.spec.withContainers(containers) - + super.spec.template.metadata.withLabels(labels) - + super.spec.selector.withMatchLabels(labels), - }, - - statefulSet+: { - '#new'+: d.func.withArgs([ - d.arg('name', d.T.string), - d.arg('replicas', d.T.int, 1), - d.arg('containers', d.T.array), - d.arg('volumeClaims', d.T.array, []), - d.arg('podLabels', d.T.object, {}), - ]), - new( - name, - replicas=1, - containers=error 'containers unset', - volumeClaims=[], - podLabels={}, - ):: - local labels = { name: name } + podLabels; - super.new(name) - + super.spec.withReplicas(replicas) - + super.spec.template.spec.withContainers(containers) - + super.spec.template.metadata.withLabels(labels) - + super.spec.selector.withMatchLabels(labels) - - // remove volumeClaimTemplates if empty - // (otherwise it will create a diff all the time) - + ( - if std.length(volumeClaims) > 0 - then super.spec.withVolumeClaimTemplates(volumeClaims) - else {} - ), - }, -}; - -{ - extensions+: { // old, remove asap - v1beta1+: patch, - }, - apps+: { - v1+: patch, - v1beta1+: patch, - v1beta2+: patch, - }, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_custom/batch.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_custom/batch.libsonnet deleted file mode 100644 index c4ccdfc3de84..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_custom/batch.libsonnet +++ /dev/null @@ -1,27 +0,0 @@ -local d = import 'doc-util/main.libsonnet'; - -local patch = { - cronJob+: { - '#new'+: d.func.withArgs([ - d.arg('name', d.T.string), - d.arg('schedule', d.T.string), - d.arg('containers', d.T.array), - ]), - new( - name, - schedule='', - containers=[] - ):: - super.new(name) - + super.spec.withSchedule(schedule) - + super.spec.jobTemplate.spec.template.spec.withContainers(containers) - + super.spec.jobTemplate.spec.template.metadata.withLabels({ name: name }), - }, -}; - -{ - batch+: { - v1beta1+: patch, - v2alpha1+: patch, - }, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_custom/core.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_custom/core.libsonnet deleted file mode 100644 index b342d37e2b29..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_custom/core.libsonnet +++ /dev/null @@ -1,214 +0,0 @@ -local d = import 'doc-util/main.libsonnet'; - -{ - core+: { - v1+: { - configMap+: { - local withData(data) = if data != {} then super.withData(data) else {}, - withData:: withData, - - local withDataMixin(data) = if data != {} then super.withDataMixin(data) else {}, - withDataMixin:: withDataMixin, - - '#new': d.fn('new creates a new `ConfigMap` of given `name` and `data`', [d.arg('name', d.T.string), d.arg('data', d.T.object)]), - new(name, data={}):: - super.new(name) - + super.metadata.withName(name) - + withData(data), - }, - - container+: { - '#new': d.fn('new returns a new `container` of given `name` and `image`', [d.arg('name', d.T.string), d.arg('image', d.T.string)]), - new(name, image):: super.withName(name) + super.withImage(image), - - withEnvMixin(env):: - // if an envvar has an empty value ("") we want to remove that property - // because k8s will remove that and then it would always - // show up as a difference. - local removeEmptyValue(obj) = - if std.objectHas(obj, 'value') && std.length(obj.value) == 0 then - { - [k]: obj[k] - for k in std.objectFields(obj) - if k != 'value' - } - else - obj; - super.withEnvMixin([ - removeEmptyValue(envvar) - for envvar in env - ]), - - '#withEnvMap': d.fn( - '`withEnvMap` works like `withEnvMixin` but accepts a key/value map, this map is converted a list of core.v1.envVar(key, value)`', - [d.arg('env', d.T.object)] - ), - withEnvMap(env):: - self.withEnvMixin([ - $.core.v1.envVar.new(k, env[k]) - for k in std.objectFields(env) - ]), - }, - - containerPort+: { - // using a local here to re-use new, because it is lexically scoped, - // while `self` is not - local new(containerPort) = super.withContainerPort(containerPort), - local newNamed(containerPort, name) = new(containerPort) + super.withName(name), - '#new': d.fn('new returns a new `containerPort`', [d.arg('containerPort', d.T.int)]), - new:: new, - '#newNamed': d.fn('newNamed works like `new`, but also sets the `name`', [d.arg('containerPort', d.T.int), d.arg('name', d.T.string)]), - newNamed:: newNamed, - '#newUDP': d.fn('newUDP works like `new`, but also sets protocal to UDP', [d.arg('containerPort', d.T.int)]), - newUDP(containerPort):: new(containerPort) + super.withProtocol('UDP'), - '#newNamedUDP': d.fn('newNamedUDP works like `newNamed`, but also sets protocal to UDP', [d.arg('containerPort', d.T.int), d.arg('name', d.T.string)]), - newNamedUDP(containerPort, name):: newNamed(containerPort, name) + super.withProtocol('UDP'), - }, - - envVar+: { - '#new': d.fn('new returns a new `envVar` of given `name` and `value`', [d.arg('name', d.T.string), d.arg('value', d.T.string)]), - new(name, value):: super.withName(name) + super.withValue(value), - - '#fromSecretRef': d.fn('fromSecretRef creates a `envVar` from a secret reference', [ - d.arg('name', d.T.string), - d.arg('secretRefName', d.T.string), - d.arg('secretRefKey', d.T.string), - ]), - fromSecretRef(name, secretRefName, secretRefKey):: - super.withName(name) - + super.valueFrom.secretKeyRef.withName(secretRefName) - + super.valueFrom.secretKeyRef.withKey(secretRefKey), - - '#fromFieldPath': d.fn('fromFieldPath creates a `envVar` from a field path', [ - d.arg('name', d.T.string), - d.arg('fieldPath', d.T.string), - ]), - fromFieldPath(name, fieldPath):: - super.withName(name) - + super.valueFrom.fieldRef.withFieldPath(fieldPath), - }, - - keyToPath+:: { - '#new': d.fn('new creates a new `keyToPath`', [d.arg('key', d.T.string), d.arg('path', d.T.string)]), - new(key, path):: super.withKey(key) + super.withPath(path), - }, - - persistentVolume+: { - '#new':: d.fn(help='new returns an instance of Persistentvolume', args=[d.arg(name='name', type=d.T.string)]), - new(name=''): { - apiVersion: 'v1', - kind: 'PersistentVolume', - } + ( - if name != '' - then self.metadata.withName(name=name) - else {} - ), - }, - - secret+:: { - '#new'+: d.func.withArgs([ - d.arg('name', d.T.string), - d.arg('data', d.T.object), - d.arg('type', d.T.string, 'Opaque'), - ]), - new(name, data, type='Opaque'):: - super.new(name) - + super.withData(data) - + super.withType(type), - }, - - service+:: { - '#new'+: d.func.withArgs([ - d.arg('name', d.T.string), - d.arg('selector', d.T.object), - d.arg('ports', d.T.array), - ]), - new(name, selector, ports):: - super.new(name) - + super.spec.withSelector(selector) - + super.spec.withPorts(ports), - }, - - servicePort+:: { - local new(port, targetPort) = super.withPort(port) + super.withTargetPort(targetPort), - '#new': d.fn('new returns a new `servicePort`', [ - d.arg('port', d.T.int), - d.arg('targetPort', d.T.any), - ]), - new:: new, - - '#newNamed': d.fn('newNamed works like `new`, but also sets the `name`', [ - d.arg('name', d.T.string), - d.arg('port', d.T.int), - d.arg('targetPort', d.T.any), - ]), - newNamed(name, port, targetPort):: - new(port, targetPort) + super.withName(name), - }, - - volume+:: { - '#fromConfigMap': d.fn('Creates a new volume from a `ConfigMap`', [ - d.arg('name', d.T.string), - d.arg('configMapName', d.T.string), - d.arg('configMapItems', d.T.array), - ]), - fromConfigMap(name, configMapName, configMapItems=[]):: - super.withName(name) - + super.configMap.withName(configMapName) - + ( - if configMapItems != [] - then super.configMap.withItems(configMapItems) - else {} - ), - - '#fromEmptyDir': d.fn('Creates a new volume of type `emptyDir`', [ - d.arg('name', d.T.string), - d.arg('emptyDir', d.T.object, {}), - ]), - fromEmptyDir(name, emptyDir={}):: - super.withName(name) + { emptyDir: emptyDir }, - - '#fromPersistentVolumeClaim': d.fn('Creates a new volume using a `PersistentVolumeClaim`.', [ - d.arg('name', d.T.string), - d.arg('claimName', d.T.string), - ]), - fromPersistentVolumeClaim(name, claimName='', emptyDir=''):: - // Note: emptyDir is inherited from ksonnet-lib, this provides backwards compatibility - local claim = - if (claimName == '' && emptyDir != '') - then emptyDir - else - if claimName == '' - then error 'claimName not set' - else claimName; - super.withName(name) + super.persistentVolumeClaim.withClaimName(claim), - - '#fromHostPath': d.fn('Creates a new volume using a `hostPath`', [ - d.arg('name', d.T.string), - d.arg('hostPath', d.T.string), - ]), - fromHostPath(name, hostPath):: - super.withName(name) + super.hostPath.withPath(hostPath), - - '#fromSecret': d.fn('Creates a new volume from a `Secret`', [ - d.arg('name', d.T.string), - d.arg('secretName', d.T.string), - ]), - fromSecret(name, secretName):: - super.withName(name) + super.secret.withSecretName(secretName), - }, - - volumeMount+:: { - '#new': d.fn('new creates a new `volumeMount`', [ - d.arg('name', d.T.string), - d.arg('mountPath', d.T.string), - d.arg('readOnly', d.T.bool), - ]), - new(name, mountPath, readOnly=false):: - super.withName(name) - + super.withMountPath(mountPath) - + (if readOnly then self.withReadOnly(readOnly) else {}), - }, - }, - }, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_custom/list.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_custom/list.libsonnet deleted file mode 100644 index 44a151cf9bd6..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_custom/list.libsonnet +++ /dev/null @@ -1,27 +0,0 @@ -local d = import 'doc-util/main.libsonnet'; - -{ - core+: { - v1+: { - list: { - '#':: d.pkg(name='list', url='', help='List represents a generic list of items.'), - '#new': d.fn( - '`new` returns an instance of List.', - [d.arg('items', d.T.array)] - ), - new(items):: { - apiVersion: 'v1', - kind: 'List', - } + self.withItems(items), - '#withItems': d.fn( - '`withItems` List of items to populate the items in a list.', - [d.arg('items', d.T.array)] - ), - withItems(items):: - if std.isArray(v=items) - then { items+: items } - else { items+: [items] }, - }, - }, - }, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_custom/mapContainers.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_custom/mapContainers.libsonnet deleted file mode 100644 index 66d4e44892a6..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_custom/mapContainers.libsonnet +++ /dev/null @@ -1,74 +0,0 @@ -local d = import 'doc-util/main.libsonnet'; - -local patch = { - '#mapContainers': d.fn( - ||| - `mapContainers` applies the function f to each container. - It works exactly as `std.map`, but on the containers of this object. - - **Signature of `f`**: - ```ts - f(container: Object) Object - ``` - |||, - [d.arg('f', d.T.func)] - ), - mapContainers(f):: { - local podContainers = super.spec.template.spec.containers, - spec+: { - template+: { - spec+: { - containers: std.map(f, podContainers), - }, - }, - }, - }, - - '#mapContainersWithName': d.fn('`mapContainersWithName` is like `mapContainers`, but only applies to those containers in the `names` array', - [d.arg('names', d.T.array), d.arg('f', d.T.func)]), - mapContainersWithName(names, f):: - local nameSet = if std.type(names) == 'array' then std.set(names) else std.set([names]); - local inNameSet(name) = std.length(std.setInter(nameSet, std.set([name]))) > 0; - - self.mapContainers(function(c) if std.objectHas(c, 'name') && inNameSet(c.name) then f(c) else c), -}; - -// batch.job and batch.cronJob have the podSpec at a different location -local cronPatch = patch { - mapContainers(f):: { - local podContainers = super.spec.jobTemplate.spec.template.spec.containers, - spec+: { - jobTemplate+: { - spec+: { - template+: { - spec+: { - containers: std.map(f, podContainers), - }, - }, - }, - }, - }, - }, -}; - -{ - core+: { v1+: { - pod+: patch, - podTemplate+: patch, - replicationController+: patch, - } }, - batch+: { - v1+: { - job+: patch, - }, - v1beta1+: { - cronJob+: cronPatch, - }, - }, - apps+: { v1+: { - daemonSet+: patch, - deployment+: patch, - replicaSet+: patch, - statefulSet+: patch, - } }, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_custom/rbac.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_custom/rbac.libsonnet deleted file mode 100644 index 69327fb61162..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_custom/rbac.libsonnet +++ /dev/null @@ -1,43 +0,0 @@ -local d = import 'doc-util/main.libsonnet'; - -local bindRoleDoc = d.fn( - '`bindRole` returns a roleRef for a Role or ClusterRole object.', - [d.arg('role', d.T.object)] -); - -local bindRole(role) = { - roleRef: { - name: role.metadata.name, - kind: role.kind, - apiGroup: std.split(role.apiVersion, '/')[0], - }, -}; - -local patch = { - roleBinding+: { - '#bindRole': bindRoleDoc, - bindRole(role):: bindRole(role), - }, - clusterRoleBinding+: { - '#bindRole': bindRoleDoc, - bindRole(role):: bindRole(role), - }, - subject+: { - '#fromServiceAccount': d.fn( - '`fromServiceAccount` returns a subject for a service account.', - [d.arg('service_account', d.T.object)] - ), - fromServiceAccount(service_account):: - super.withKind('ServiceAccount') + - super.withName(service_account.metadata.name) + - super.withNamespace(service_account.metadata.namespace), - }, -}; - -{ - rbac+: { - v1+: patch, - v1alpha1+: patch, - v1beta1+: patch, - }, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_custom/volumeMounts.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_custom/volumeMounts.libsonnet deleted file mode 100644 index 2f3e74aaaee4..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_custom/volumeMounts.libsonnet +++ /dev/null @@ -1,169 +0,0 @@ -local d = import 'doc-util/main.libsonnet'; - -{ - local container = $.core.v1.container, - local volumeMount = $.core.v1.volumeMount, - local volume = $.core.v1.volume, - - local patch = { - local volumeMountDescription = - ||| - This helper function can be augmented with a `volumeMountsMixin. For example, - passing "k.core.v1.volumeMount.withSubPath(subpath)" will result in a subpath - mixin. - |||, - - - '#configVolumeMount': d.fn( - '`configVolumeMount` mounts a ConfigMap by `name` into all container on `path`.' - + volumeMountDescription, - [ - d.arg('name', d.T.string), - d.arg('path', d.T.string), - d.arg('volumeMountMixin', d.T.object), - ] - ), - configVolumeMount(name, path, volumeMountMixin={}):: - local addMount(c) = c + container.withVolumeMountsMixin( - volumeMount.new(name, path) + - volumeMountMixin, - ); - - super.mapContainers(addMount) + - super.spec.template.spec.withVolumesMixin([ - volume.fromConfigMap(name, name), - ]), - - - '#configMapVolumeMount': d.fn( - ||| - `configMapVolumeMount` mounts a `configMap` into all container on `path`. It will - also add an annotation hash to ensure the pods are re-deployed when the config map - changes. - ||| - + volumeMountDescription, - [ - d.arg('configMap', d.T.object), - d.arg('path', d.T.string), - d.arg('volumeMountMixin', d.T.object), - ] - ), - configMapVolumeMount(configMap, path, volumeMountMixin={}):: - local name = configMap.metadata.name, - hash = std.md5(std.toString(configMap)), - addMount(c) = c + container.withVolumeMountsMixin( - volumeMount.new(name, path) + - volumeMountMixin, - ); - - super.mapContainers(addMount) + - super.spec.template.spec.withVolumesMixin([ - volume.fromConfigMap(name, name), - ]) + - super.spec.template.metadata.withAnnotationsMixin({ - ['%s-hash' % name]: hash, - }), - - - '#hostVolumeMount': d.fn( - '`hostVolumeMount` mounts a `hostPath` into all container on `path`.' - + volumeMountDescription, - [ - d.arg('name', d.T.string), - d.arg('hostPath', d.T.string), - d.arg('path', d.T.string), - d.arg('readOnly', d.T.bool), - d.arg('volumeMountMixin', d.T.object), - ] - ), - hostVolumeMount(name, hostPath, path, readOnly=false, volumeMountMixin={}):: - local addMount(c) = c + container.withVolumeMountsMixin( - volumeMount.new(name, path, readOnly=readOnly) + - volumeMountMixin, - ); - - super.mapContainers(addMount) + - super.spec.template.spec.withVolumesMixin([ - volume.fromHostPath(name, hostPath), - ]), - - - '#pvcVolumeMount': d.fn( - '`hostVolumeMount` mounts a PersistentVolumeClaim by `name` into all container on `path`.' - + volumeMountDescription, - [ - d.arg('name', d.T.string), - d.arg('path', d.T.string), - d.arg('readOnly', d.T.bool), - d.arg('volumeMountMixin', d.T.object), - ] - ), - pvcVolumeMount(name, path, readOnly=false, volumeMountMixin={}):: - local addMount(c) = c + container.withVolumeMountsMixin( - volumeMount.new(name, path, readOnly=readOnly) + - volumeMountMixin, - ); - - super.mapContainers(addMount) + - super.spec.template.spec.withVolumesMixin([ - volume.fromPersistentVolumeClaim(name, name), - ]), - - - '#secretVolumeMount': d.fn( - '`secretVolumeMount` mounts a Secret by `name` into all container on `path`.' - + volumeMountDescription, - [ - d.arg('name', d.T.string), - d.arg('path', d.T.string), - d.arg('defaultMode', d.T.string), - d.arg('volumeMountMixin', d.T.object), - ] - ), - secretVolumeMount(name, path, defaultMode=256, volumeMountMixin={}):: - local addMount(c) = c + container.withVolumeMountsMixin( - volumeMount.new(name, path) + - volumeMountMixin, - ); - - super.mapContainers(addMount) + - super.spec.template.spec.withVolumesMixin([ - volume.fromSecret(name, secretName=name) + - volume.secret.withDefaultMode(defaultMode), - ]), - - - '#emptyVolumeMount': d.fn( - '`emptyVolumeMount` mounts empty volume by `name` into all container on `path`.' - + volumeMountDescription, - [ - d.arg('name', d.T.string), - d.arg('path', d.T.string), - d.arg('volumeMountMixin', d.T.object), - d.arg('volumeMixin', d.T.object), - ] - ), - emptyVolumeMount(name, path, volumeMountMixin={}, volumeMixin={}):: - local addMount(c) = c + container.withVolumeMountsMixin( - volumeMount.new(name, path) + - volumeMountMixin, - ); - - super.mapContainers(addMount) + - super.spec.template.spec.withVolumesMixin([ - volume.fromEmptyDir(name) + volumeMixin, - ]), - }, - - batch+: { - v1+: { - job+: patch, - }, - }, - apps+: { v1+: { - daemonSet+: patch, - deployment+: patch, - replicaSet+: patch, - statefulSet+: patch, - } }, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/main.libsonnet deleted file mode 100644 index 5c9c107733fe..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/main.libsonnet +++ /dev/null @@ -1,6 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='admissionregistration', url='', help=''), - v1: (import 'v1/main.libsonnet'), - v1beta1: (import 'v1beta1/main.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1/main.libsonnet deleted file mode 100644 index c98e455e8845..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1/main.libsonnet +++ /dev/null @@ -1,11 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1', url='', help=''), - mutatingWebhook: (import 'mutatingWebhook.libsonnet'), - mutatingWebhookConfiguration: (import 'mutatingWebhookConfiguration.libsonnet'), - ruleWithOperations: (import 'ruleWithOperations.libsonnet'), - serviceReference: (import 'serviceReference.libsonnet'), - validatingWebhook: (import 'validatingWebhook.libsonnet'), - validatingWebhookConfiguration: (import 'validatingWebhookConfiguration.libsonnet'), - webhookClientConfig: (import 'webhookClientConfig.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1/mutatingWebhook.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1/mutatingWebhook.libsonnet deleted file mode 100644 index 129bc98972b1..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1/mutatingWebhook.libsonnet +++ /dev/null @@ -1,66 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='mutatingWebhook', url='', help='MutatingWebhook describes an admission webhook and the resources and operations it applies to.'), - '#clientConfig':: d.obj(help='WebhookClientConfig contains the information to make a TLS connection with the webhook'), - clientConfig: { - '#service':: d.obj(help='ServiceReference holds a reference to Service.legacy.k8s.io'), - service: { - '#withName':: d.fn(help='`name` is the name of the service. Required', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { clientConfig+: { service+: { name: name } } }, - '#withNamespace':: d.fn(help='`namespace` is the namespace of the service. Required', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { clientConfig+: { service+: { namespace: namespace } } }, - '#withPath':: d.fn(help='`path` is an optional URL path which will be sent in any request to this service.', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { clientConfig+: { service+: { path: path } } }, - '#withPort':: d.fn(help='If specified, the port on the service that hosting webhook. Default to 443 for backward compatibility. `port` should be a valid port number (1-65535, inclusive).', args=[d.arg(name='port', type=d.T.integer)]), - withPort(port): { clientConfig+: { service+: { port: port } } }, - }, - '#withCaBundle':: d.fn(help="`caBundle` is a PEM encoded CA bundle which will be used to validate the webhook's server certificate. If unspecified, system trust roots on the apiserver are used.", args=[d.arg(name='caBundle', type=d.T.string)]), - withCaBundle(caBundle): { clientConfig+: { caBundle: caBundle } }, - '#withUrl':: d.fn(help='`url` gives the location of the webhook, in standard URL form (`scheme://host:port/path`). Exactly one of `url` or `service` must be specified.\n\nThe `host` should not refer to a service running in the cluster; use the `service` field instead. The host might be resolved via external DNS in some apiservers (e.g., `kube-apiserver` cannot resolve in-cluster DNS as that would be a layering violation). `host` may also be an IP address.\n\nPlease note that using `localhost` or `127.0.0.1` as a `host` is risky unless you take great care to run this webhook on all hosts which run an apiserver which might need to make calls to this webhook. Such installs are likely to be non-portable, i.e., not easy to turn up in a new cluster.\n\nThe scheme must be "https"; the URL must begin with "https://".\n\nA path is optional, and if present may be any string permissible in a URL. You may use the path to pass an arbitrary string to the webhook, for example, a cluster identifier.\n\nAttempting to use a user or basic auth e.g. "user:password@" is not allowed. Fragments ("#...") and query parameters ("?...") are not allowed, either.', args=[d.arg(name='url', type=d.T.string)]), - withUrl(url): { clientConfig+: { url: url } }, - }, - '#namespaceSelector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - namespaceSelector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { namespaceSelector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { namespaceSelector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { namespaceSelector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { namespaceSelector+: { matchLabels+: matchLabels } }, - }, - '#objectSelector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - objectSelector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { objectSelector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { objectSelector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { objectSelector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { objectSelector+: { matchLabels+: matchLabels } }, - }, - '#withAdmissionReviewVersions':: d.fn(help='AdmissionReviewVersions is an ordered list of preferred `AdmissionReview` versions the Webhook expects. API server will try to use first version in the list which it supports. If none of the versions specified in this list supported by API server, validation will fail for this object. If a persisted webhook configuration specifies allowed versions and does not include any versions known to the API Server, calls to the webhook will fail and be subject to the failure policy.', args=[d.arg(name='admissionReviewVersions', type=d.T.array)]), - withAdmissionReviewVersions(admissionReviewVersions): { admissionReviewVersions: if std.isArray(v=admissionReviewVersions) then admissionReviewVersions else [admissionReviewVersions] }, - '#withAdmissionReviewVersionsMixin':: d.fn(help='AdmissionReviewVersions is an ordered list of preferred `AdmissionReview` versions the Webhook expects. API server will try to use first version in the list which it supports. If none of the versions specified in this list supported by API server, validation will fail for this object. If a persisted webhook configuration specifies allowed versions and does not include any versions known to the API Server, calls to the webhook will fail and be subject to the failure policy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='admissionReviewVersions', type=d.T.array)]), - withAdmissionReviewVersionsMixin(admissionReviewVersions): { admissionReviewVersions+: if std.isArray(v=admissionReviewVersions) then admissionReviewVersions else [admissionReviewVersions] }, - '#withFailurePolicy':: d.fn(help='FailurePolicy defines how unrecognized errors from the admission endpoint are handled - allowed values are Ignore or Fail. Defaults to Fail.', args=[d.arg(name='failurePolicy', type=d.T.string)]), - withFailurePolicy(failurePolicy): { failurePolicy: failurePolicy }, - '#withMatchPolicy':: d.fn(help='matchPolicy defines how the "rules" list is used to match incoming requests. Allowed values are "Exact" or "Equivalent".\n\n- Exact: match a request only if it exactly matches a specified rule. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, but "rules" only included `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]`, a request to apps/v1beta1 or extensions/v1beta1 would not be sent to the webhook.\n\n- Equivalent: match a request if modifies a resource listed in rules, even via another API group or version. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, and "rules" only included `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]`, a request to apps/v1beta1 or extensions/v1beta1 would be converted to apps/v1 and sent to the webhook.\n\nDefaults to "Equivalent"', args=[d.arg(name='matchPolicy', type=d.T.string)]), - withMatchPolicy(matchPolicy): { matchPolicy: matchPolicy }, - '#withName':: d.fn(help='The name of the admission webhook. Name should be fully qualified, e.g., imagepolicy.kubernetes.io, where "imagepolicy" is the name of the webhook, and kubernetes.io is the name of the organization. Required.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withReinvocationPolicy':: d.fn(help='reinvocationPolicy indicates whether this webhook should be called multiple times as part of a single admission evaluation. Allowed values are "Never" and "IfNeeded".\n\nNever: the webhook will not be called more than once in a single admission evaluation.\n\nIfNeeded: the webhook will be called at least one additional time as part of the admission evaluation if the object being admitted is modified by other admission plugins after the initial webhook call. Webhooks that specify this option *must* be idempotent, able to process objects they previously admitted. Note: * the number of additional invocations is not guaranteed to be exactly one. * if additional invocations result in further modifications to the object, webhooks are not guaranteed to be invoked again. * webhooks that use this option may be reordered to minimize the number of additional invocations. * to validate an object after all mutations are guaranteed complete, use a validating admission webhook instead.\n\nDefaults to "Never".', args=[d.arg(name='reinvocationPolicy', type=d.T.string)]), - withReinvocationPolicy(reinvocationPolicy): { reinvocationPolicy: reinvocationPolicy }, - '#withRules':: d.fn(help='Rules describes what operations on what resources/subresources the webhook cares about. The webhook cares about an operation if it matches _any_ Rule. However, in order to prevent ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks from putting the cluster in a state which cannot be recovered from without completely disabling the plugin, ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks are never called on admission requests for ValidatingWebhookConfiguration and MutatingWebhookConfiguration objects.', args=[d.arg(name='rules', type=d.T.array)]), - withRules(rules): { rules: if std.isArray(v=rules) then rules else [rules] }, - '#withRulesMixin':: d.fn(help='Rules describes what operations on what resources/subresources the webhook cares about. The webhook cares about an operation if it matches _any_ Rule. However, in order to prevent ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks from putting the cluster in a state which cannot be recovered from without completely disabling the plugin, ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks are never called on admission requests for ValidatingWebhookConfiguration and MutatingWebhookConfiguration objects.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='rules', type=d.T.array)]), - withRulesMixin(rules): { rules+: if std.isArray(v=rules) then rules else [rules] }, - '#withSideEffects':: d.fn(help='SideEffects states whether this webhook has side effects. Acceptable values are: None, NoneOnDryRun (webhooks created via v1beta1 may also specify Some or Unknown). Webhooks with side effects MUST implement a reconciliation system, since a request may be rejected by a future step in the admission chain and the side effects therefore need to be undone. Requests with the dryRun attribute will be auto-rejected if they match a webhook with sideEffects == Unknown or Some.', args=[d.arg(name='sideEffects', type=d.T.string)]), - withSideEffects(sideEffects): { sideEffects: sideEffects }, - '#withTimeoutSeconds':: d.fn(help='TimeoutSeconds specifies the timeout for this webhook. After the timeout passes, the webhook call will be ignored or the API call will fail based on the failure policy. The timeout value must be between 1 and 30 seconds. Default to 10 seconds.', args=[d.arg(name='timeoutSeconds', type=d.T.integer)]), - withTimeoutSeconds(timeoutSeconds): { timeoutSeconds: timeoutSeconds }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1/mutatingWebhookConfiguration.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1/mutatingWebhookConfiguration.libsonnet deleted file mode 100644 index b0cdb4a81909..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1/mutatingWebhookConfiguration.libsonnet +++ /dev/null @@ -1,60 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='mutatingWebhookConfiguration', url='', help='MutatingWebhookConfiguration describes the configuration of and admission webhook that accept or reject and may change the object.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Mutatingwebhookconfiguration', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'admissionregistration.k8s.io/v1', - kind: 'MutatingWebhookConfiguration', - } + self.metadata.withName(name=name), - '#withWebhooks':: d.fn(help='Webhooks is a list of webhooks and the affected resources and operations.', args=[d.arg(name='webhooks', type=d.T.array)]), - withWebhooks(webhooks): { webhooks: if std.isArray(v=webhooks) then webhooks else [webhooks] }, - '#withWebhooksMixin':: d.fn(help='Webhooks is a list of webhooks and the affected resources and operations.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='webhooks', type=d.T.array)]), - withWebhooksMixin(webhooks): { webhooks+: if std.isArray(v=webhooks) then webhooks else [webhooks] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1/ruleWithOperations.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1/ruleWithOperations.libsonnet deleted file mode 100644 index a16614389923..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1/ruleWithOperations.libsonnet +++ /dev/null @@ -1,24 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='ruleWithOperations', url='', help='RuleWithOperations is a tuple of Operations and Resources. It is recommended to make sure that all the tuple expansions are valid.'), - '#withApiGroups':: d.fn(help="APIGroups is the API groups the resources belong to. '*' is all groups. If '*' is present, the length of the slice must be one. Required.", args=[d.arg(name='apiGroups', type=d.T.array)]), - withApiGroups(apiGroups): { apiGroups: if std.isArray(v=apiGroups) then apiGroups else [apiGroups] }, - '#withApiGroupsMixin':: d.fn(help="APIGroups is the API groups the resources belong to. '*' is all groups. If '*' is present, the length of the slice must be one. Required.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='apiGroups', type=d.T.array)]), - withApiGroupsMixin(apiGroups): { apiGroups+: if std.isArray(v=apiGroups) then apiGroups else [apiGroups] }, - '#withApiVersions':: d.fn(help="APIVersions is the API versions the resources belong to. '*' is all versions. If '*' is present, the length of the slice must be one. Required.", args=[d.arg(name='apiVersions', type=d.T.array)]), - withApiVersions(apiVersions): { apiVersions: if std.isArray(v=apiVersions) then apiVersions else [apiVersions] }, - '#withApiVersionsMixin':: d.fn(help="APIVersions is the API versions the resources belong to. '*' is all versions. If '*' is present, the length of the slice must be one. Required.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='apiVersions', type=d.T.array)]), - withApiVersionsMixin(apiVersions): { apiVersions+: if std.isArray(v=apiVersions) then apiVersions else [apiVersions] }, - '#withOperations':: d.fn(help="Operations is the operations the admission hook cares about - CREATE, UPDATE, DELETE, CONNECT or * for all of those operations and any future admission operations that are added. If '*' is present, the length of the slice must be one. Required.", args=[d.arg(name='operations', type=d.T.array)]), - withOperations(operations): { operations: if std.isArray(v=operations) then operations else [operations] }, - '#withOperationsMixin':: d.fn(help="Operations is the operations the admission hook cares about - CREATE, UPDATE, DELETE, CONNECT or * for all of those operations and any future admission operations that are added. If '*' is present, the length of the slice must be one. Required.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='operations', type=d.T.array)]), - withOperationsMixin(operations): { operations+: if std.isArray(v=operations) then operations else [operations] }, - '#withResources':: d.fn(help="Resources is a list of resources this rule applies to.\n\nFor example: 'pods' means pods. 'pods/log' means the log subresource of pods. '*' means all resources, but not subresources. 'pods/*' means all subresources of pods. '*/scale' means all scale subresources. '*/*' means all resources and their subresources.\n\nIf wildcard is present, the validation rule will ensure resources do not overlap with each other.\n\nDepending on the enclosing object, subresources might not be allowed. Required.", args=[d.arg(name='resources', type=d.T.array)]), - withResources(resources): { resources: if std.isArray(v=resources) then resources else [resources] }, - '#withResourcesMixin':: d.fn(help="Resources is a list of resources this rule applies to.\n\nFor example: 'pods' means pods. 'pods/log' means the log subresource of pods. '*' means all resources, but not subresources. 'pods/*' means all subresources of pods. '*/scale' means all scale subresources. '*/*' means all resources and their subresources.\n\nIf wildcard is present, the validation rule will ensure resources do not overlap with each other.\n\nDepending on the enclosing object, subresources might not be allowed. Required.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='resources', type=d.T.array)]), - withResourcesMixin(resources): { resources+: if std.isArray(v=resources) then resources else [resources] }, - '#withScope':: d.fn(help='scope specifies the scope of this rule. Valid values are "Cluster", "Namespaced", and "*" "Cluster" means that only cluster-scoped resources will match this rule. Namespace API objects are cluster-scoped. "Namespaced" means that only namespaced resources will match this rule. "*" means that there are no scope restrictions. Subresources match the scope of their parent resource. Default is "*".', args=[d.arg(name='scope', type=d.T.string)]), - withScope(scope): { scope: scope }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1/serviceReference.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1/serviceReference.libsonnet deleted file mode 100644 index f210ec6515fc..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1/serviceReference.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='serviceReference', url='', help='ServiceReference holds a reference to Service.legacy.k8s.io'), - '#withName':: d.fn(help='`name` is the name of the service. Required', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withNamespace':: d.fn(help='`namespace` is the namespace of the service. Required', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { namespace: namespace }, - '#withPath':: d.fn(help='`path` is an optional URL path which will be sent in any request to this service.', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { path: path }, - '#withPort':: d.fn(help='If specified, the port on the service that hosting webhook. Default to 443 for backward compatibility. `port` should be a valid port number (1-65535, inclusive).', args=[d.arg(name='port', type=d.T.integer)]), - withPort(port): { port: port }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1/validatingWebhook.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1/validatingWebhook.libsonnet deleted file mode 100644 index 1e0d02ab78da..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1/validatingWebhook.libsonnet +++ /dev/null @@ -1,64 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='validatingWebhook', url='', help='ValidatingWebhook describes an admission webhook and the resources and operations it applies to.'), - '#clientConfig':: d.obj(help='WebhookClientConfig contains the information to make a TLS connection with the webhook'), - clientConfig: { - '#service':: d.obj(help='ServiceReference holds a reference to Service.legacy.k8s.io'), - service: { - '#withName':: d.fn(help='`name` is the name of the service. Required', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { clientConfig+: { service+: { name: name } } }, - '#withNamespace':: d.fn(help='`namespace` is the namespace of the service. Required', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { clientConfig+: { service+: { namespace: namespace } } }, - '#withPath':: d.fn(help='`path` is an optional URL path which will be sent in any request to this service.', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { clientConfig+: { service+: { path: path } } }, - '#withPort':: d.fn(help='If specified, the port on the service that hosting webhook. Default to 443 for backward compatibility. `port` should be a valid port number (1-65535, inclusive).', args=[d.arg(name='port', type=d.T.integer)]), - withPort(port): { clientConfig+: { service+: { port: port } } }, - }, - '#withCaBundle':: d.fn(help="`caBundle` is a PEM encoded CA bundle which will be used to validate the webhook's server certificate. If unspecified, system trust roots on the apiserver are used.", args=[d.arg(name='caBundle', type=d.T.string)]), - withCaBundle(caBundle): { clientConfig+: { caBundle: caBundle } }, - '#withUrl':: d.fn(help='`url` gives the location of the webhook, in standard URL form (`scheme://host:port/path`). Exactly one of `url` or `service` must be specified.\n\nThe `host` should not refer to a service running in the cluster; use the `service` field instead. The host might be resolved via external DNS in some apiservers (e.g., `kube-apiserver` cannot resolve in-cluster DNS as that would be a layering violation). `host` may also be an IP address.\n\nPlease note that using `localhost` or `127.0.0.1` as a `host` is risky unless you take great care to run this webhook on all hosts which run an apiserver which might need to make calls to this webhook. Such installs are likely to be non-portable, i.e., not easy to turn up in a new cluster.\n\nThe scheme must be "https"; the URL must begin with "https://".\n\nA path is optional, and if present may be any string permissible in a URL. You may use the path to pass an arbitrary string to the webhook, for example, a cluster identifier.\n\nAttempting to use a user or basic auth e.g. "user:password@" is not allowed. Fragments ("#...") and query parameters ("?...") are not allowed, either.', args=[d.arg(name='url', type=d.T.string)]), - withUrl(url): { clientConfig+: { url: url } }, - }, - '#namespaceSelector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - namespaceSelector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { namespaceSelector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { namespaceSelector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { namespaceSelector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { namespaceSelector+: { matchLabels+: matchLabels } }, - }, - '#objectSelector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - objectSelector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { objectSelector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { objectSelector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { objectSelector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { objectSelector+: { matchLabels+: matchLabels } }, - }, - '#withAdmissionReviewVersions':: d.fn(help='AdmissionReviewVersions is an ordered list of preferred `AdmissionReview` versions the Webhook expects. API server will try to use first version in the list which it supports. If none of the versions specified in this list supported by API server, validation will fail for this object. If a persisted webhook configuration specifies allowed versions and does not include any versions known to the API Server, calls to the webhook will fail and be subject to the failure policy.', args=[d.arg(name='admissionReviewVersions', type=d.T.array)]), - withAdmissionReviewVersions(admissionReviewVersions): { admissionReviewVersions: if std.isArray(v=admissionReviewVersions) then admissionReviewVersions else [admissionReviewVersions] }, - '#withAdmissionReviewVersionsMixin':: d.fn(help='AdmissionReviewVersions is an ordered list of preferred `AdmissionReview` versions the Webhook expects. API server will try to use first version in the list which it supports. If none of the versions specified in this list supported by API server, validation will fail for this object. If a persisted webhook configuration specifies allowed versions and does not include any versions known to the API Server, calls to the webhook will fail and be subject to the failure policy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='admissionReviewVersions', type=d.T.array)]), - withAdmissionReviewVersionsMixin(admissionReviewVersions): { admissionReviewVersions+: if std.isArray(v=admissionReviewVersions) then admissionReviewVersions else [admissionReviewVersions] }, - '#withFailurePolicy':: d.fn(help='FailurePolicy defines how unrecognized errors from the admission endpoint are handled - allowed values are Ignore or Fail. Defaults to Fail.', args=[d.arg(name='failurePolicy', type=d.T.string)]), - withFailurePolicy(failurePolicy): { failurePolicy: failurePolicy }, - '#withMatchPolicy':: d.fn(help='matchPolicy defines how the "rules" list is used to match incoming requests. Allowed values are "Exact" or "Equivalent".\n\n- Exact: match a request only if it exactly matches a specified rule. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, but "rules" only included `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]`, a request to apps/v1beta1 or extensions/v1beta1 would not be sent to the webhook.\n\n- Equivalent: match a request if modifies a resource listed in rules, even via another API group or version. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, and "rules" only included `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]`, a request to apps/v1beta1 or extensions/v1beta1 would be converted to apps/v1 and sent to the webhook.\n\nDefaults to "Equivalent"', args=[d.arg(name='matchPolicy', type=d.T.string)]), - withMatchPolicy(matchPolicy): { matchPolicy: matchPolicy }, - '#withName':: d.fn(help='The name of the admission webhook. Name should be fully qualified, e.g., imagepolicy.kubernetes.io, where "imagepolicy" is the name of the webhook, and kubernetes.io is the name of the organization. Required.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withRules':: d.fn(help='Rules describes what operations on what resources/subresources the webhook cares about. The webhook cares about an operation if it matches _any_ Rule. However, in order to prevent ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks from putting the cluster in a state which cannot be recovered from without completely disabling the plugin, ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks are never called on admission requests for ValidatingWebhookConfiguration and MutatingWebhookConfiguration objects.', args=[d.arg(name='rules', type=d.T.array)]), - withRules(rules): { rules: if std.isArray(v=rules) then rules else [rules] }, - '#withRulesMixin':: d.fn(help='Rules describes what operations on what resources/subresources the webhook cares about. The webhook cares about an operation if it matches _any_ Rule. However, in order to prevent ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks from putting the cluster in a state which cannot be recovered from without completely disabling the plugin, ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks are never called on admission requests for ValidatingWebhookConfiguration and MutatingWebhookConfiguration objects.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='rules', type=d.T.array)]), - withRulesMixin(rules): { rules+: if std.isArray(v=rules) then rules else [rules] }, - '#withSideEffects':: d.fn(help='SideEffects states whether this webhook has side effects. Acceptable values are: None, NoneOnDryRun (webhooks created via v1beta1 may also specify Some or Unknown). Webhooks with side effects MUST implement a reconciliation system, since a request may be rejected by a future step in the admission chain and the side effects therefore need to be undone. Requests with the dryRun attribute will be auto-rejected if they match a webhook with sideEffects == Unknown or Some.', args=[d.arg(name='sideEffects', type=d.T.string)]), - withSideEffects(sideEffects): { sideEffects: sideEffects }, - '#withTimeoutSeconds':: d.fn(help='TimeoutSeconds specifies the timeout for this webhook. After the timeout passes, the webhook call will be ignored or the API call will fail based on the failure policy. The timeout value must be between 1 and 30 seconds. Default to 10 seconds.', args=[d.arg(name='timeoutSeconds', type=d.T.integer)]), - withTimeoutSeconds(timeoutSeconds): { timeoutSeconds: timeoutSeconds }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1/validatingWebhookConfiguration.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1/validatingWebhookConfiguration.libsonnet deleted file mode 100644 index fe9ea39824ac..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1/validatingWebhookConfiguration.libsonnet +++ /dev/null @@ -1,60 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='validatingWebhookConfiguration', url='', help='ValidatingWebhookConfiguration describes the configuration of and admission webhook that accept or reject and object without changing it.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Validatingwebhookconfiguration', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'admissionregistration.k8s.io/v1', - kind: 'ValidatingWebhookConfiguration', - } + self.metadata.withName(name=name), - '#withWebhooks':: d.fn(help='Webhooks is a list of webhooks and the affected resources and operations.', args=[d.arg(name='webhooks', type=d.T.array)]), - withWebhooks(webhooks): { webhooks: if std.isArray(v=webhooks) then webhooks else [webhooks] }, - '#withWebhooksMixin':: d.fn(help='Webhooks is a list of webhooks and the affected resources and operations.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='webhooks', type=d.T.array)]), - withWebhooksMixin(webhooks): { webhooks+: if std.isArray(v=webhooks) then webhooks else [webhooks] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1/webhookClientConfig.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1/webhookClientConfig.libsonnet deleted file mode 100644 index d0875aaec4e9..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1/webhookClientConfig.libsonnet +++ /dev/null @@ -1,21 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='webhookClientConfig', url='', help='WebhookClientConfig contains the information to make a TLS connection with the webhook'), - '#service':: d.obj(help='ServiceReference holds a reference to Service.legacy.k8s.io'), - service: { - '#withName':: d.fn(help='`name` is the name of the service. Required', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { service+: { name: name } }, - '#withNamespace':: d.fn(help='`namespace` is the namespace of the service. Required', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { service+: { namespace: namespace } }, - '#withPath':: d.fn(help='`path` is an optional URL path which will be sent in any request to this service.', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { service+: { path: path } }, - '#withPort':: d.fn(help='If specified, the port on the service that hosting webhook. Default to 443 for backward compatibility. `port` should be a valid port number (1-65535, inclusive).', args=[d.arg(name='port', type=d.T.integer)]), - withPort(port): { service+: { port: port } }, - }, - '#withCaBundle':: d.fn(help="`caBundle` is a PEM encoded CA bundle which will be used to validate the webhook's server certificate. If unspecified, system trust roots on the apiserver are used.", args=[d.arg(name='caBundle', type=d.T.string)]), - withCaBundle(caBundle): { caBundle: caBundle }, - '#withUrl':: d.fn(help='`url` gives the location of the webhook, in standard URL form (`scheme://host:port/path`). Exactly one of `url` or `service` must be specified.\n\nThe `host` should not refer to a service running in the cluster; use the `service` field instead. The host might be resolved via external DNS in some apiservers (e.g., `kube-apiserver` cannot resolve in-cluster DNS as that would be a layering violation). `host` may also be an IP address.\n\nPlease note that using `localhost` or `127.0.0.1` as a `host` is risky unless you take great care to run this webhook on all hosts which run an apiserver which might need to make calls to this webhook. Such installs are likely to be non-portable, i.e., not easy to turn up in a new cluster.\n\nThe scheme must be "https"; the URL must begin with "https://".\n\nA path is optional, and if present may be any string permissible in a URL. You may use the path to pass an arbitrary string to the webhook, for example, a cluster identifier.\n\nAttempting to use a user or basic auth e.g. "user:password@" is not allowed. Fragments ("#...") and query parameters ("?...") are not allowed, either.', args=[d.arg(name='url', type=d.T.string)]), - withUrl(url): { url: url }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1beta1/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1beta1/main.libsonnet deleted file mode 100644 index 8802f84a51d8..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1beta1/main.libsonnet +++ /dev/null @@ -1,11 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1beta1', url='', help=''), - mutatingWebhook: (import 'mutatingWebhook.libsonnet'), - mutatingWebhookConfiguration: (import 'mutatingWebhookConfiguration.libsonnet'), - ruleWithOperations: (import 'ruleWithOperations.libsonnet'), - serviceReference: (import 'serviceReference.libsonnet'), - validatingWebhook: (import 'validatingWebhook.libsonnet'), - validatingWebhookConfiguration: (import 'validatingWebhookConfiguration.libsonnet'), - webhookClientConfig: (import 'webhookClientConfig.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1beta1/mutatingWebhook.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1beta1/mutatingWebhook.libsonnet deleted file mode 100644 index dd77b183332d..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1beta1/mutatingWebhook.libsonnet +++ /dev/null @@ -1,66 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='mutatingWebhook', url='', help='MutatingWebhook describes an admission webhook and the resources and operations it applies to.'), - '#clientConfig':: d.obj(help='WebhookClientConfig contains the information to make a TLS connection with the webhook'), - clientConfig: { - '#service':: d.obj(help='ServiceReference holds a reference to Service.legacy.k8s.io'), - service: { - '#withName':: d.fn(help='`name` is the name of the service. Required', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { clientConfig+: { service+: { name: name } } }, - '#withNamespace':: d.fn(help='`namespace` is the namespace of the service. Required', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { clientConfig+: { service+: { namespace: namespace } } }, - '#withPath':: d.fn(help='`path` is an optional URL path which will be sent in any request to this service.', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { clientConfig+: { service+: { path: path } } }, - '#withPort':: d.fn(help='If specified, the port on the service that hosting webhook. Default to 443 for backward compatibility. `port` should be a valid port number (1-65535, inclusive).', args=[d.arg(name='port', type=d.T.integer)]), - withPort(port): { clientConfig+: { service+: { port: port } } }, - }, - '#withCaBundle':: d.fn(help="`caBundle` is a PEM encoded CA bundle which will be used to validate the webhook's server certificate. If unspecified, system trust roots on the apiserver are used.", args=[d.arg(name='caBundle', type=d.T.string)]), - withCaBundle(caBundle): { clientConfig+: { caBundle: caBundle } }, - '#withUrl':: d.fn(help='`url` gives the location of the webhook, in standard URL form (`scheme://host:port/path`). Exactly one of `url` or `service` must be specified.\n\nThe `host` should not refer to a service running in the cluster; use the `service` field instead. The host might be resolved via external DNS in some apiservers (e.g., `kube-apiserver` cannot resolve in-cluster DNS as that would be a layering violation). `host` may also be an IP address.\n\nPlease note that using `localhost` or `127.0.0.1` as a `host` is risky unless you take great care to run this webhook on all hosts which run an apiserver which might need to make calls to this webhook. Such installs are likely to be non-portable, i.e., not easy to turn up in a new cluster.\n\nThe scheme must be "https"; the URL must begin with "https://".\n\nA path is optional, and if present may be any string permissible in a URL. You may use the path to pass an arbitrary string to the webhook, for example, a cluster identifier.\n\nAttempting to use a user or basic auth e.g. "user:password@" is not allowed. Fragments ("#...") and query parameters ("?...") are not allowed, either.', args=[d.arg(name='url', type=d.T.string)]), - withUrl(url): { clientConfig+: { url: url } }, - }, - '#namespaceSelector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - namespaceSelector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { namespaceSelector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { namespaceSelector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { namespaceSelector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { namespaceSelector+: { matchLabels+: matchLabels } }, - }, - '#objectSelector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - objectSelector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { objectSelector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { objectSelector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { objectSelector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { objectSelector+: { matchLabels+: matchLabels } }, - }, - '#withAdmissionReviewVersions':: d.fn(help="AdmissionReviewVersions is an ordered list of preferred `AdmissionReview` versions the Webhook expects. API server will try to use first version in the list which it supports. If none of the versions specified in this list supported by API server, validation will fail for this object. If a persisted webhook configuration specifies allowed versions and does not include any versions known to the API Server, calls to the webhook will fail and be subject to the failure policy. Default to `['v1beta1']`.", args=[d.arg(name='admissionReviewVersions', type=d.T.array)]), - withAdmissionReviewVersions(admissionReviewVersions): { admissionReviewVersions: if std.isArray(v=admissionReviewVersions) then admissionReviewVersions else [admissionReviewVersions] }, - '#withAdmissionReviewVersionsMixin':: d.fn(help="AdmissionReviewVersions is an ordered list of preferred `AdmissionReview` versions the Webhook expects. API server will try to use first version in the list which it supports. If none of the versions specified in this list supported by API server, validation will fail for this object. If a persisted webhook configuration specifies allowed versions and does not include any versions known to the API Server, calls to the webhook will fail and be subject to the failure policy. Default to `['v1beta1']`.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='admissionReviewVersions', type=d.T.array)]), - withAdmissionReviewVersionsMixin(admissionReviewVersions): { admissionReviewVersions+: if std.isArray(v=admissionReviewVersions) then admissionReviewVersions else [admissionReviewVersions] }, - '#withFailurePolicy':: d.fn(help='FailurePolicy defines how unrecognized errors from the admission endpoint are handled - allowed values are Ignore or Fail. Defaults to Ignore.', args=[d.arg(name='failurePolicy', type=d.T.string)]), - withFailurePolicy(failurePolicy): { failurePolicy: failurePolicy }, - '#withMatchPolicy':: d.fn(help='matchPolicy defines how the "rules" list is used to match incoming requests. Allowed values are "Exact" or "Equivalent".\n\n- Exact: match a request only if it exactly matches a specified rule. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, but "rules" only included `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]`, a request to apps/v1beta1 or extensions/v1beta1 would not be sent to the webhook.\n\n- Equivalent: match a request if modifies a resource listed in rules, even via another API group or version. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, and "rules" only included `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]`, a request to apps/v1beta1 or extensions/v1beta1 would be converted to apps/v1 and sent to the webhook.\n\nDefaults to "Exact"', args=[d.arg(name='matchPolicy', type=d.T.string)]), - withMatchPolicy(matchPolicy): { matchPolicy: matchPolicy }, - '#withName':: d.fn(help='The name of the admission webhook. Name should be fully qualified, e.g., imagepolicy.kubernetes.io, where "imagepolicy" is the name of the webhook, and kubernetes.io is the name of the organization. Required.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withReinvocationPolicy':: d.fn(help='reinvocationPolicy indicates whether this webhook should be called multiple times as part of a single admission evaluation. Allowed values are "Never" and "IfNeeded".\n\nNever: the webhook will not be called more than once in a single admission evaluation.\n\nIfNeeded: the webhook will be called at least one additional time as part of the admission evaluation if the object being admitted is modified by other admission plugins after the initial webhook call. Webhooks that specify this option *must* be idempotent, able to process objects they previously admitted. Note: * the number of additional invocations is not guaranteed to be exactly one. * if additional invocations result in further modifications to the object, webhooks are not guaranteed to be invoked again. * webhooks that use this option may be reordered to minimize the number of additional invocations. * to validate an object after all mutations are guaranteed complete, use a validating admission webhook instead.\n\nDefaults to "Never".', args=[d.arg(name='reinvocationPolicy', type=d.T.string)]), - withReinvocationPolicy(reinvocationPolicy): { reinvocationPolicy: reinvocationPolicy }, - '#withRules':: d.fn(help='Rules describes what operations on what resources/subresources the webhook cares about. The webhook cares about an operation if it matches _any_ Rule. However, in order to prevent ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks from putting the cluster in a state which cannot be recovered from without completely disabling the plugin, ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks are never called on admission requests for ValidatingWebhookConfiguration and MutatingWebhookConfiguration objects.', args=[d.arg(name='rules', type=d.T.array)]), - withRules(rules): { rules: if std.isArray(v=rules) then rules else [rules] }, - '#withRulesMixin':: d.fn(help='Rules describes what operations on what resources/subresources the webhook cares about. The webhook cares about an operation if it matches _any_ Rule. However, in order to prevent ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks from putting the cluster in a state which cannot be recovered from without completely disabling the plugin, ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks are never called on admission requests for ValidatingWebhookConfiguration and MutatingWebhookConfiguration objects.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='rules', type=d.T.array)]), - withRulesMixin(rules): { rules+: if std.isArray(v=rules) then rules else [rules] }, - '#withSideEffects':: d.fn(help='SideEffects states whether this webhook has side effects. Acceptable values are: Unknown, None, Some, NoneOnDryRun Webhooks with side effects MUST implement a reconciliation system, since a request may be rejected by a future step in the admission chain and the side effects therefore need to be undone. Requests with the dryRun attribute will be auto-rejected if they match a webhook with sideEffects == Unknown or Some. Defaults to Unknown.', args=[d.arg(name='sideEffects', type=d.T.string)]), - withSideEffects(sideEffects): { sideEffects: sideEffects }, - '#withTimeoutSeconds':: d.fn(help='TimeoutSeconds specifies the timeout for this webhook. After the timeout passes, the webhook call will be ignored or the API call will fail based on the failure policy. The timeout value must be between 1 and 30 seconds. Default to 30 seconds.', args=[d.arg(name='timeoutSeconds', type=d.T.integer)]), - withTimeoutSeconds(timeoutSeconds): { timeoutSeconds: timeoutSeconds }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1beta1/mutatingWebhookConfiguration.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1beta1/mutatingWebhookConfiguration.libsonnet deleted file mode 100644 index f04f9486c1a2..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1beta1/mutatingWebhookConfiguration.libsonnet +++ /dev/null @@ -1,60 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='mutatingWebhookConfiguration', url='', help='MutatingWebhookConfiguration describes the configuration of and admission webhook that accept or reject and may change the object. Deprecated in v1.16, planned for removal in v1.19. Use admissionregistration.k8s.io/v1 MutatingWebhookConfiguration instead.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Mutatingwebhookconfiguration', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'admissionregistration.k8s.io/v1beta1', - kind: 'MutatingWebhookConfiguration', - } + self.metadata.withName(name=name), - '#withWebhooks':: d.fn(help='Webhooks is a list of webhooks and the affected resources and operations.', args=[d.arg(name='webhooks', type=d.T.array)]), - withWebhooks(webhooks): { webhooks: if std.isArray(v=webhooks) then webhooks else [webhooks] }, - '#withWebhooksMixin':: d.fn(help='Webhooks is a list of webhooks and the affected resources and operations.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='webhooks', type=d.T.array)]), - withWebhooksMixin(webhooks): { webhooks+: if std.isArray(v=webhooks) then webhooks else [webhooks] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1beta1/ruleWithOperations.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1beta1/ruleWithOperations.libsonnet deleted file mode 100644 index a16614389923..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1beta1/ruleWithOperations.libsonnet +++ /dev/null @@ -1,24 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='ruleWithOperations', url='', help='RuleWithOperations is a tuple of Operations and Resources. It is recommended to make sure that all the tuple expansions are valid.'), - '#withApiGroups':: d.fn(help="APIGroups is the API groups the resources belong to. '*' is all groups. If '*' is present, the length of the slice must be one. Required.", args=[d.arg(name='apiGroups', type=d.T.array)]), - withApiGroups(apiGroups): { apiGroups: if std.isArray(v=apiGroups) then apiGroups else [apiGroups] }, - '#withApiGroupsMixin':: d.fn(help="APIGroups is the API groups the resources belong to. '*' is all groups. If '*' is present, the length of the slice must be one. Required.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='apiGroups', type=d.T.array)]), - withApiGroupsMixin(apiGroups): { apiGroups+: if std.isArray(v=apiGroups) then apiGroups else [apiGroups] }, - '#withApiVersions':: d.fn(help="APIVersions is the API versions the resources belong to. '*' is all versions. If '*' is present, the length of the slice must be one. Required.", args=[d.arg(name='apiVersions', type=d.T.array)]), - withApiVersions(apiVersions): { apiVersions: if std.isArray(v=apiVersions) then apiVersions else [apiVersions] }, - '#withApiVersionsMixin':: d.fn(help="APIVersions is the API versions the resources belong to. '*' is all versions. If '*' is present, the length of the slice must be one. Required.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='apiVersions', type=d.T.array)]), - withApiVersionsMixin(apiVersions): { apiVersions+: if std.isArray(v=apiVersions) then apiVersions else [apiVersions] }, - '#withOperations':: d.fn(help="Operations is the operations the admission hook cares about - CREATE, UPDATE, DELETE, CONNECT or * for all of those operations and any future admission operations that are added. If '*' is present, the length of the slice must be one. Required.", args=[d.arg(name='operations', type=d.T.array)]), - withOperations(operations): { operations: if std.isArray(v=operations) then operations else [operations] }, - '#withOperationsMixin':: d.fn(help="Operations is the operations the admission hook cares about - CREATE, UPDATE, DELETE, CONNECT or * for all of those operations and any future admission operations that are added. If '*' is present, the length of the slice must be one. Required.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='operations', type=d.T.array)]), - withOperationsMixin(operations): { operations+: if std.isArray(v=operations) then operations else [operations] }, - '#withResources':: d.fn(help="Resources is a list of resources this rule applies to.\n\nFor example: 'pods' means pods. 'pods/log' means the log subresource of pods. '*' means all resources, but not subresources. 'pods/*' means all subresources of pods. '*/scale' means all scale subresources. '*/*' means all resources and their subresources.\n\nIf wildcard is present, the validation rule will ensure resources do not overlap with each other.\n\nDepending on the enclosing object, subresources might not be allowed. Required.", args=[d.arg(name='resources', type=d.T.array)]), - withResources(resources): { resources: if std.isArray(v=resources) then resources else [resources] }, - '#withResourcesMixin':: d.fn(help="Resources is a list of resources this rule applies to.\n\nFor example: 'pods' means pods. 'pods/log' means the log subresource of pods. '*' means all resources, but not subresources. 'pods/*' means all subresources of pods. '*/scale' means all scale subresources. '*/*' means all resources and their subresources.\n\nIf wildcard is present, the validation rule will ensure resources do not overlap with each other.\n\nDepending on the enclosing object, subresources might not be allowed. Required.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='resources', type=d.T.array)]), - withResourcesMixin(resources): { resources+: if std.isArray(v=resources) then resources else [resources] }, - '#withScope':: d.fn(help='scope specifies the scope of this rule. Valid values are "Cluster", "Namespaced", and "*" "Cluster" means that only cluster-scoped resources will match this rule. Namespace API objects are cluster-scoped. "Namespaced" means that only namespaced resources will match this rule. "*" means that there are no scope restrictions. Subresources match the scope of their parent resource. Default is "*".', args=[d.arg(name='scope', type=d.T.string)]), - withScope(scope): { scope: scope }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1beta1/serviceReference.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1beta1/serviceReference.libsonnet deleted file mode 100644 index f210ec6515fc..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1beta1/serviceReference.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='serviceReference', url='', help='ServiceReference holds a reference to Service.legacy.k8s.io'), - '#withName':: d.fn(help='`name` is the name of the service. Required', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withNamespace':: d.fn(help='`namespace` is the namespace of the service. Required', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { namespace: namespace }, - '#withPath':: d.fn(help='`path` is an optional URL path which will be sent in any request to this service.', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { path: path }, - '#withPort':: d.fn(help='If specified, the port on the service that hosting webhook. Default to 443 for backward compatibility. `port` should be a valid port number (1-65535, inclusive).', args=[d.arg(name='port', type=d.T.integer)]), - withPort(port): { port: port }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1beta1/validatingWebhook.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1beta1/validatingWebhook.libsonnet deleted file mode 100644 index e680f00f66e6..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1beta1/validatingWebhook.libsonnet +++ /dev/null @@ -1,64 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='validatingWebhook', url='', help='ValidatingWebhook describes an admission webhook and the resources and operations it applies to.'), - '#clientConfig':: d.obj(help='WebhookClientConfig contains the information to make a TLS connection with the webhook'), - clientConfig: { - '#service':: d.obj(help='ServiceReference holds a reference to Service.legacy.k8s.io'), - service: { - '#withName':: d.fn(help='`name` is the name of the service. Required', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { clientConfig+: { service+: { name: name } } }, - '#withNamespace':: d.fn(help='`namespace` is the namespace of the service. Required', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { clientConfig+: { service+: { namespace: namespace } } }, - '#withPath':: d.fn(help='`path` is an optional URL path which will be sent in any request to this service.', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { clientConfig+: { service+: { path: path } } }, - '#withPort':: d.fn(help='If specified, the port on the service that hosting webhook. Default to 443 for backward compatibility. `port` should be a valid port number (1-65535, inclusive).', args=[d.arg(name='port', type=d.T.integer)]), - withPort(port): { clientConfig+: { service+: { port: port } } }, - }, - '#withCaBundle':: d.fn(help="`caBundle` is a PEM encoded CA bundle which will be used to validate the webhook's server certificate. If unspecified, system trust roots on the apiserver are used.", args=[d.arg(name='caBundle', type=d.T.string)]), - withCaBundle(caBundle): { clientConfig+: { caBundle: caBundle } }, - '#withUrl':: d.fn(help='`url` gives the location of the webhook, in standard URL form (`scheme://host:port/path`). Exactly one of `url` or `service` must be specified.\n\nThe `host` should not refer to a service running in the cluster; use the `service` field instead. The host might be resolved via external DNS in some apiservers (e.g., `kube-apiserver` cannot resolve in-cluster DNS as that would be a layering violation). `host` may also be an IP address.\n\nPlease note that using `localhost` or `127.0.0.1` as a `host` is risky unless you take great care to run this webhook on all hosts which run an apiserver which might need to make calls to this webhook. Such installs are likely to be non-portable, i.e., not easy to turn up in a new cluster.\n\nThe scheme must be "https"; the URL must begin with "https://".\n\nA path is optional, and if present may be any string permissible in a URL. You may use the path to pass an arbitrary string to the webhook, for example, a cluster identifier.\n\nAttempting to use a user or basic auth e.g. "user:password@" is not allowed. Fragments ("#...") and query parameters ("?...") are not allowed, either.', args=[d.arg(name='url', type=d.T.string)]), - withUrl(url): { clientConfig+: { url: url } }, - }, - '#namespaceSelector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - namespaceSelector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { namespaceSelector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { namespaceSelector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { namespaceSelector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { namespaceSelector+: { matchLabels+: matchLabels } }, - }, - '#objectSelector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - objectSelector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { objectSelector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { objectSelector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { objectSelector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { objectSelector+: { matchLabels+: matchLabels } }, - }, - '#withAdmissionReviewVersions':: d.fn(help="AdmissionReviewVersions is an ordered list of preferred `AdmissionReview` versions the Webhook expects. API server will try to use first version in the list which it supports. If none of the versions specified in this list supported by API server, validation will fail for this object. If a persisted webhook configuration specifies allowed versions and does not include any versions known to the API Server, calls to the webhook will fail and be subject to the failure policy. Default to `['v1beta1']`.", args=[d.arg(name='admissionReviewVersions', type=d.T.array)]), - withAdmissionReviewVersions(admissionReviewVersions): { admissionReviewVersions: if std.isArray(v=admissionReviewVersions) then admissionReviewVersions else [admissionReviewVersions] }, - '#withAdmissionReviewVersionsMixin':: d.fn(help="AdmissionReviewVersions is an ordered list of preferred `AdmissionReview` versions the Webhook expects. API server will try to use first version in the list which it supports. If none of the versions specified in this list supported by API server, validation will fail for this object. If a persisted webhook configuration specifies allowed versions and does not include any versions known to the API Server, calls to the webhook will fail and be subject to the failure policy. Default to `['v1beta1']`.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='admissionReviewVersions', type=d.T.array)]), - withAdmissionReviewVersionsMixin(admissionReviewVersions): { admissionReviewVersions+: if std.isArray(v=admissionReviewVersions) then admissionReviewVersions else [admissionReviewVersions] }, - '#withFailurePolicy':: d.fn(help='FailurePolicy defines how unrecognized errors from the admission endpoint are handled - allowed values are Ignore or Fail. Defaults to Ignore.', args=[d.arg(name='failurePolicy', type=d.T.string)]), - withFailurePolicy(failurePolicy): { failurePolicy: failurePolicy }, - '#withMatchPolicy':: d.fn(help='matchPolicy defines how the "rules" list is used to match incoming requests. Allowed values are "Exact" or "Equivalent".\n\n- Exact: match a request only if it exactly matches a specified rule. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, but "rules" only included `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]`, a request to apps/v1beta1 or extensions/v1beta1 would not be sent to the webhook.\n\n- Equivalent: match a request if modifies a resource listed in rules, even via another API group or version. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, and "rules" only included `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]`, a request to apps/v1beta1 or extensions/v1beta1 would be converted to apps/v1 and sent to the webhook.\n\nDefaults to "Exact"', args=[d.arg(name='matchPolicy', type=d.T.string)]), - withMatchPolicy(matchPolicy): { matchPolicy: matchPolicy }, - '#withName':: d.fn(help='The name of the admission webhook. Name should be fully qualified, e.g., imagepolicy.kubernetes.io, where "imagepolicy" is the name of the webhook, and kubernetes.io is the name of the organization. Required.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withRules':: d.fn(help='Rules describes what operations on what resources/subresources the webhook cares about. The webhook cares about an operation if it matches _any_ Rule. However, in order to prevent ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks from putting the cluster in a state which cannot be recovered from without completely disabling the plugin, ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks are never called on admission requests for ValidatingWebhookConfiguration and MutatingWebhookConfiguration objects.', args=[d.arg(name='rules', type=d.T.array)]), - withRules(rules): { rules: if std.isArray(v=rules) then rules else [rules] }, - '#withRulesMixin':: d.fn(help='Rules describes what operations on what resources/subresources the webhook cares about. The webhook cares about an operation if it matches _any_ Rule. However, in order to prevent ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks from putting the cluster in a state which cannot be recovered from without completely disabling the plugin, ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks are never called on admission requests for ValidatingWebhookConfiguration and MutatingWebhookConfiguration objects.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='rules', type=d.T.array)]), - withRulesMixin(rules): { rules+: if std.isArray(v=rules) then rules else [rules] }, - '#withSideEffects':: d.fn(help='SideEffects states whether this webhook has side effects. Acceptable values are: Unknown, None, Some, NoneOnDryRun Webhooks with side effects MUST implement a reconciliation system, since a request may be rejected by a future step in the admission chain and the side effects therefore need to be undone. Requests with the dryRun attribute will be auto-rejected if they match a webhook with sideEffects == Unknown or Some. Defaults to Unknown.', args=[d.arg(name='sideEffects', type=d.T.string)]), - withSideEffects(sideEffects): { sideEffects: sideEffects }, - '#withTimeoutSeconds':: d.fn(help='TimeoutSeconds specifies the timeout for this webhook. After the timeout passes, the webhook call will be ignored or the API call will fail based on the failure policy. The timeout value must be between 1 and 30 seconds. Default to 30 seconds.', args=[d.arg(name='timeoutSeconds', type=d.T.integer)]), - withTimeoutSeconds(timeoutSeconds): { timeoutSeconds: timeoutSeconds }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1beta1/validatingWebhookConfiguration.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1beta1/validatingWebhookConfiguration.libsonnet deleted file mode 100644 index 728bebc98763..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1beta1/validatingWebhookConfiguration.libsonnet +++ /dev/null @@ -1,60 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='validatingWebhookConfiguration', url='', help='ValidatingWebhookConfiguration describes the configuration of and admission webhook that accept or reject and object without changing it. Deprecated in v1.16, planned for removal in v1.19. Use admissionregistration.k8s.io/v1 ValidatingWebhookConfiguration instead.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Validatingwebhookconfiguration', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'admissionregistration.k8s.io/v1beta1', - kind: 'ValidatingWebhookConfiguration', - } + self.metadata.withName(name=name), - '#withWebhooks':: d.fn(help='Webhooks is a list of webhooks and the affected resources and operations.', args=[d.arg(name='webhooks', type=d.T.array)]), - withWebhooks(webhooks): { webhooks: if std.isArray(v=webhooks) then webhooks else [webhooks] }, - '#withWebhooksMixin':: d.fn(help='Webhooks is a list of webhooks and the affected resources and operations.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='webhooks', type=d.T.array)]), - withWebhooksMixin(webhooks): { webhooks+: if std.isArray(v=webhooks) then webhooks else [webhooks] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1beta1/webhookClientConfig.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1beta1/webhookClientConfig.libsonnet deleted file mode 100644 index d0875aaec4e9..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/admissionregistration/v1beta1/webhookClientConfig.libsonnet +++ /dev/null @@ -1,21 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='webhookClientConfig', url='', help='WebhookClientConfig contains the information to make a TLS connection with the webhook'), - '#service':: d.obj(help='ServiceReference holds a reference to Service.legacy.k8s.io'), - service: { - '#withName':: d.fn(help='`name` is the name of the service. Required', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { service+: { name: name } }, - '#withNamespace':: d.fn(help='`namespace` is the namespace of the service. Required', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { service+: { namespace: namespace } }, - '#withPath':: d.fn(help='`path` is an optional URL path which will be sent in any request to this service.', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { service+: { path: path } }, - '#withPort':: d.fn(help='If specified, the port on the service that hosting webhook. Default to 443 for backward compatibility. `port` should be a valid port number (1-65535, inclusive).', args=[d.arg(name='port', type=d.T.integer)]), - withPort(port): { service+: { port: port } }, - }, - '#withCaBundle':: d.fn(help="`caBundle` is a PEM encoded CA bundle which will be used to validate the webhook's server certificate. If unspecified, system trust roots on the apiserver are used.", args=[d.arg(name='caBundle', type=d.T.string)]), - withCaBundle(caBundle): { caBundle: caBundle }, - '#withUrl':: d.fn(help='`url` gives the location of the webhook, in standard URL form (`scheme://host:port/path`). Exactly one of `url` or `service` must be specified.\n\nThe `host` should not refer to a service running in the cluster; use the `service` field instead. The host might be resolved via external DNS in some apiservers (e.g., `kube-apiserver` cannot resolve in-cluster DNS as that would be a layering violation). `host` may also be an IP address.\n\nPlease note that using `localhost` or `127.0.0.1` as a `host` is risky unless you take great care to run this webhook on all hosts which run an apiserver which might need to make calls to this webhook. Such installs are likely to be non-portable, i.e., not easy to turn up in a new cluster.\n\nThe scheme must be "https"; the URL must begin with "https://".\n\nA path is optional, and if present may be any string permissible in a URL. You may use the path to pass an arbitrary string to the webhook, for example, a cluster identifier.\n\nAttempting to use a user or basic auth e.g. "user:password@" is not allowed. Fragments ("#...") and query parameters ("?...") are not allowed, either.', args=[d.arg(name='url', type=d.T.string)]), - withUrl(url): { url: url }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiregistration/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiregistration/main.libsonnet deleted file mode 100644 index f4839e1e05bd..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiregistration/main.libsonnet +++ /dev/null @@ -1,6 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='apiregistration', url='', help=''), - v1: (import 'v1/main.libsonnet'), - v1beta1: (import 'v1beta1/main.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiregistration/v1/apiService.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiregistration/v1/apiService.libsonnet deleted file mode 100644 index e92c601ab128..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiregistration/v1/apiService.libsonnet +++ /dev/null @@ -1,80 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='apiService', url='', help='APIService represents a server for a particular GroupVersion. Name must be "version.group".'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Apiservice', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'apiregistration.k8s.io/v1', - kind: 'ApiService', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='APIServiceSpec contains information for locating and communicating with a server. Only https is supported, though you are able to disable certificate verification.'), - spec: { - '#service':: d.obj(help='ServiceReference holds a reference to Service.legacy.k8s.io'), - service: { - '#withName':: d.fn(help='Name is the name of the service', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { service+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace is the namespace of the service', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { service+: { namespace: namespace } } }, - '#withPort':: d.fn(help='If specified, the port on the service that hosting webhook. Default to 443 for backward compatibility. `port` should be a valid port number (1-65535, inclusive).', args=[d.arg(name='port', type=d.T.integer)]), - withPort(port): { spec+: { service+: { port: port } } }, - }, - '#withCaBundle':: d.fn(help="CABundle is a PEM encoded CA bundle which will be used to validate an API server's serving certificate. If unspecified, system trust roots on the apiserver are used.", args=[d.arg(name='caBundle', type=d.T.string)]), - withCaBundle(caBundle): { spec+: { caBundle: caBundle } }, - '#withGroup':: d.fn(help='Group is the API group name this server hosts', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { spec+: { group: group } }, - '#withGroupPriorityMinimum':: d.fn(help="GroupPriorityMininum is the priority this group should have at least. Higher priority means that the group is preferred by clients over lower priority ones. Note that other versions of this group might specify even higher GroupPriorityMininum values such that the whole group gets a higher priority. The primary sort is based on GroupPriorityMinimum, ordered highest number to lowest (20 before 10). The secondary sort is based on the alphabetical comparison of the name of the object. (v1.bar before v1.foo) We'd recommend something like: *.k8s.io (except extensions) at 18000 and PaaSes (OpenShift, Deis) are recommended to be in the 2000s", args=[d.arg(name='groupPriorityMinimum', type=d.T.integer)]), - withGroupPriorityMinimum(groupPriorityMinimum): { spec+: { groupPriorityMinimum: groupPriorityMinimum } }, - '#withInsecureSkipTLSVerify':: d.fn(help='InsecureSkipTLSVerify disables TLS certificate verification when communicating with this server. This is strongly discouraged. You should use the CABundle instead.', args=[d.arg(name='insecureSkipTLSVerify', type=d.T.boolean)]), - withInsecureSkipTLSVerify(insecureSkipTLSVerify): { spec+: { insecureSkipTLSVerify: insecureSkipTLSVerify } }, - '#withVersion':: d.fn(help='Version is the API version this server hosts. For example, "v1"', args=[d.arg(name='version', type=d.T.string)]), - withVersion(version): { spec+: { version: version } }, - '#withVersionPriority':: d.fn(help="VersionPriority controls the ordering of this API version inside of its group. Must be greater than zero. The primary sort is based on VersionPriority, ordered highest to lowest (20 before 10). Since it's inside of a group, the number can be small, probably in the 10s. In case of equal version priorities, the version string will be used to compute the order inside a group. If the version string is 'kube-like', it will sort above non 'kube-like' version strings, which are ordered lexicographically. 'Kube-like' versions start with a 'v', then are followed by a number (the major version), then optionally the string 'alpha' or 'beta' and another number (the minor version). These are sorted first by GA > beta > alpha (where GA is a version with no suffix such as beta or alpha), and then by comparing major version, then minor version. An example sorted list of versions: v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10.", args=[d.arg(name='versionPriority', type=d.T.integer)]), - withVersionPriority(versionPriority): { spec+: { versionPriority: versionPriority } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiregistration/v1/apiServiceCondition.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiregistration/v1/apiServiceCondition.libsonnet deleted file mode 100644 index 916decaecd23..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiregistration/v1/apiServiceCondition.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='apiServiceCondition', url='', help='APIServiceCondition describes the state of an APIService at a particular point'), - '#withLastTransitionTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastTransitionTime', type=d.T.string)]), - withLastTransitionTime(lastTransitionTime): { lastTransitionTime: lastTransitionTime }, - '#withMessage':: d.fn(help='Human-readable message indicating details about last transition.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withReason':: d.fn(help="Unique, one-word, CamelCase reason for the condition's last transition.", args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#withType':: d.fn(help='Type is the type of the condition.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiregistration/v1/apiServiceSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiregistration/v1/apiServiceSpec.libsonnet deleted file mode 100644 index dc2df9fd1f9a..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiregistration/v1/apiServiceSpec.libsonnet +++ /dev/null @@ -1,27 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='apiServiceSpec', url='', help='APIServiceSpec contains information for locating and communicating with a server. Only https is supported, though you are able to disable certificate verification.'), - '#service':: d.obj(help='ServiceReference holds a reference to Service.legacy.k8s.io'), - service: { - '#withName':: d.fn(help='Name is the name of the service', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { service+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace is the namespace of the service', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { service+: { namespace: namespace } }, - '#withPort':: d.fn(help='If specified, the port on the service that hosting webhook. Default to 443 for backward compatibility. `port` should be a valid port number (1-65535, inclusive).', args=[d.arg(name='port', type=d.T.integer)]), - withPort(port): { service+: { port: port } }, - }, - '#withCaBundle':: d.fn(help="CABundle is a PEM encoded CA bundle which will be used to validate an API server's serving certificate. If unspecified, system trust roots on the apiserver are used.", args=[d.arg(name='caBundle', type=d.T.string)]), - withCaBundle(caBundle): { caBundle: caBundle }, - '#withGroup':: d.fn(help='Group is the API group name this server hosts', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { group: group }, - '#withGroupPriorityMinimum':: d.fn(help="GroupPriorityMininum is the priority this group should have at least. Higher priority means that the group is preferred by clients over lower priority ones. Note that other versions of this group might specify even higher GroupPriorityMininum values such that the whole group gets a higher priority. The primary sort is based on GroupPriorityMinimum, ordered highest number to lowest (20 before 10). The secondary sort is based on the alphabetical comparison of the name of the object. (v1.bar before v1.foo) We'd recommend something like: *.k8s.io (except extensions) at 18000 and PaaSes (OpenShift, Deis) are recommended to be in the 2000s", args=[d.arg(name='groupPriorityMinimum', type=d.T.integer)]), - withGroupPriorityMinimum(groupPriorityMinimum): { groupPriorityMinimum: groupPriorityMinimum }, - '#withInsecureSkipTLSVerify':: d.fn(help='InsecureSkipTLSVerify disables TLS certificate verification when communicating with this server. This is strongly discouraged. You should use the CABundle instead.', args=[d.arg(name='insecureSkipTLSVerify', type=d.T.boolean)]), - withInsecureSkipTLSVerify(insecureSkipTLSVerify): { insecureSkipTLSVerify: insecureSkipTLSVerify }, - '#withVersion':: d.fn(help='Version is the API version this server hosts. For example, "v1"', args=[d.arg(name='version', type=d.T.string)]), - withVersion(version): { version: version }, - '#withVersionPriority':: d.fn(help="VersionPriority controls the ordering of this API version inside of its group. Must be greater than zero. The primary sort is based on VersionPriority, ordered highest to lowest (20 before 10). Since it's inside of a group, the number can be small, probably in the 10s. In case of equal version priorities, the version string will be used to compute the order inside a group. If the version string is 'kube-like', it will sort above non 'kube-like' version strings, which are ordered lexicographically. 'Kube-like' versions start with a 'v', then are followed by a number (the major version), then optionally the string 'alpha' or 'beta' and another number (the minor version). These are sorted first by GA > beta > alpha (where GA is a version with no suffix such as beta or alpha), and then by comparing major version, then minor version. An example sorted list of versions: v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10.", args=[d.arg(name='versionPriority', type=d.T.integer)]), - withVersionPriority(versionPriority): { versionPriority: versionPriority }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiregistration/v1/apiServiceStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiregistration/v1/apiServiceStatus.libsonnet deleted file mode 100644 index 00662ba98e09..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiregistration/v1/apiServiceStatus.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='apiServiceStatus', url='', help='APIServiceStatus contains derived information about an API server'), - '#withConditions':: d.fn(help='Current service state of apiService.', args=[d.arg(name='conditions', type=d.T.array)]), - withConditions(conditions): { conditions: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withConditionsMixin':: d.fn(help='Current service state of apiService.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='conditions', type=d.T.array)]), - withConditionsMixin(conditions): { conditions+: if std.isArray(v=conditions) then conditions else [conditions] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiregistration/v1/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiregistration/v1/main.libsonnet deleted file mode 100644 index a5c6e833dd21..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiregistration/v1/main.libsonnet +++ /dev/null @@ -1,9 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1', url='', help=''), - apiService: (import 'apiService.libsonnet'), - apiServiceCondition: (import 'apiServiceCondition.libsonnet'), - apiServiceSpec: (import 'apiServiceSpec.libsonnet'), - apiServiceStatus: (import 'apiServiceStatus.libsonnet'), - serviceReference: (import 'serviceReference.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiregistration/v1/serviceReference.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiregistration/v1/serviceReference.libsonnet deleted file mode 100644 index 2a9557db86cc..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiregistration/v1/serviceReference.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='serviceReference', url='', help='ServiceReference holds a reference to Service.legacy.k8s.io'), - '#withName':: d.fn(help='Name is the name of the service', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withNamespace':: d.fn(help='Namespace is the namespace of the service', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { namespace: namespace }, - '#withPort':: d.fn(help='If specified, the port on the service that hosting webhook. Default to 443 for backward compatibility. `port` should be a valid port number (1-65535, inclusive).', args=[d.arg(name='port', type=d.T.integer)]), - withPort(port): { port: port }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiregistration/v1beta1/apiService.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiregistration/v1beta1/apiService.libsonnet deleted file mode 100644 index bf89dc71d4bd..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiregistration/v1beta1/apiService.libsonnet +++ /dev/null @@ -1,80 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='apiService', url='', help='APIService represents a server for a particular GroupVersion. Name must be "version.group".'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Apiservice', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'apiregistration.k8s.io/v1beta1', - kind: 'ApiService', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='APIServiceSpec contains information for locating and communicating with a server. Only https is supported, though you are able to disable certificate verification.'), - spec: { - '#service':: d.obj(help='ServiceReference holds a reference to Service.legacy.k8s.io'), - service: { - '#withName':: d.fn(help='Name is the name of the service', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { service+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace is the namespace of the service', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { service+: { namespace: namespace } } }, - '#withPort':: d.fn(help='If specified, the port on the service that hosting webhook. Default to 443 for backward compatibility. `port` should be a valid port number (1-65535, inclusive).', args=[d.arg(name='port', type=d.T.integer)]), - withPort(port): { spec+: { service+: { port: port } } }, - }, - '#withCaBundle':: d.fn(help="CABundle is a PEM encoded CA bundle which will be used to validate an API server's serving certificate. If unspecified, system trust roots on the apiserver are used.", args=[d.arg(name='caBundle', type=d.T.string)]), - withCaBundle(caBundle): { spec+: { caBundle: caBundle } }, - '#withGroup':: d.fn(help='Group is the API group name this server hosts', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { spec+: { group: group } }, - '#withGroupPriorityMinimum':: d.fn(help="GroupPriorityMininum is the priority this group should have at least. Higher priority means that the group is preferred by clients over lower priority ones. Note that other versions of this group might specify even higher GroupPriorityMininum values such that the whole group gets a higher priority. The primary sort is based on GroupPriorityMinimum, ordered highest number to lowest (20 before 10). The secondary sort is based on the alphabetical comparison of the name of the object. (v1.bar before v1.foo) We'd recommend something like: *.k8s.io (except extensions) at 18000 and PaaSes (OpenShift, Deis) are recommended to be in the 2000s", args=[d.arg(name='groupPriorityMinimum', type=d.T.integer)]), - withGroupPriorityMinimum(groupPriorityMinimum): { spec+: { groupPriorityMinimum: groupPriorityMinimum } }, - '#withInsecureSkipTLSVerify':: d.fn(help='InsecureSkipTLSVerify disables TLS certificate verification when communicating with this server. This is strongly discouraged. You should use the CABundle instead.', args=[d.arg(name='insecureSkipTLSVerify', type=d.T.boolean)]), - withInsecureSkipTLSVerify(insecureSkipTLSVerify): { spec+: { insecureSkipTLSVerify: insecureSkipTLSVerify } }, - '#withVersion':: d.fn(help='Version is the API version this server hosts. For example, "v1"', args=[d.arg(name='version', type=d.T.string)]), - withVersion(version): { spec+: { version: version } }, - '#withVersionPriority':: d.fn(help="VersionPriority controls the ordering of this API version inside of its group. Must be greater than zero. The primary sort is based on VersionPriority, ordered highest to lowest (20 before 10). Since it's inside of a group, the number can be small, probably in the 10s. In case of equal version priorities, the version string will be used to compute the order inside a group. If the version string is 'kube-like', it will sort above non 'kube-like' version strings, which are ordered lexicographically. 'Kube-like' versions start with a 'v', then are followed by a number (the major version), then optionally the string 'alpha' or 'beta' and another number (the minor version). These are sorted first by GA > beta > alpha (where GA is a version with no suffix such as beta or alpha), and then by comparing major version, then minor version. An example sorted list of versions: v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10.", args=[d.arg(name='versionPriority', type=d.T.integer)]), - withVersionPriority(versionPriority): { spec+: { versionPriority: versionPriority } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiregistration/v1beta1/apiServiceCondition.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiregistration/v1beta1/apiServiceCondition.libsonnet deleted file mode 100644 index 916decaecd23..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiregistration/v1beta1/apiServiceCondition.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='apiServiceCondition', url='', help='APIServiceCondition describes the state of an APIService at a particular point'), - '#withLastTransitionTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastTransitionTime', type=d.T.string)]), - withLastTransitionTime(lastTransitionTime): { lastTransitionTime: lastTransitionTime }, - '#withMessage':: d.fn(help='Human-readable message indicating details about last transition.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withReason':: d.fn(help="Unique, one-word, CamelCase reason for the condition's last transition.", args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#withType':: d.fn(help='Type is the type of the condition.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiregistration/v1beta1/apiServiceSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiregistration/v1beta1/apiServiceSpec.libsonnet deleted file mode 100644 index dc2df9fd1f9a..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiregistration/v1beta1/apiServiceSpec.libsonnet +++ /dev/null @@ -1,27 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='apiServiceSpec', url='', help='APIServiceSpec contains information for locating and communicating with a server. Only https is supported, though you are able to disable certificate verification.'), - '#service':: d.obj(help='ServiceReference holds a reference to Service.legacy.k8s.io'), - service: { - '#withName':: d.fn(help='Name is the name of the service', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { service+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace is the namespace of the service', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { service+: { namespace: namespace } }, - '#withPort':: d.fn(help='If specified, the port on the service that hosting webhook. Default to 443 for backward compatibility. `port` should be a valid port number (1-65535, inclusive).', args=[d.arg(name='port', type=d.T.integer)]), - withPort(port): { service+: { port: port } }, - }, - '#withCaBundle':: d.fn(help="CABundle is a PEM encoded CA bundle which will be used to validate an API server's serving certificate. If unspecified, system trust roots on the apiserver are used.", args=[d.arg(name='caBundle', type=d.T.string)]), - withCaBundle(caBundle): { caBundle: caBundle }, - '#withGroup':: d.fn(help='Group is the API group name this server hosts', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { group: group }, - '#withGroupPriorityMinimum':: d.fn(help="GroupPriorityMininum is the priority this group should have at least. Higher priority means that the group is preferred by clients over lower priority ones. Note that other versions of this group might specify even higher GroupPriorityMininum values such that the whole group gets a higher priority. The primary sort is based on GroupPriorityMinimum, ordered highest number to lowest (20 before 10). The secondary sort is based on the alphabetical comparison of the name of the object. (v1.bar before v1.foo) We'd recommend something like: *.k8s.io (except extensions) at 18000 and PaaSes (OpenShift, Deis) are recommended to be in the 2000s", args=[d.arg(name='groupPriorityMinimum', type=d.T.integer)]), - withGroupPriorityMinimum(groupPriorityMinimum): { groupPriorityMinimum: groupPriorityMinimum }, - '#withInsecureSkipTLSVerify':: d.fn(help='InsecureSkipTLSVerify disables TLS certificate verification when communicating with this server. This is strongly discouraged. You should use the CABundle instead.', args=[d.arg(name='insecureSkipTLSVerify', type=d.T.boolean)]), - withInsecureSkipTLSVerify(insecureSkipTLSVerify): { insecureSkipTLSVerify: insecureSkipTLSVerify }, - '#withVersion':: d.fn(help='Version is the API version this server hosts. For example, "v1"', args=[d.arg(name='version', type=d.T.string)]), - withVersion(version): { version: version }, - '#withVersionPriority':: d.fn(help="VersionPriority controls the ordering of this API version inside of its group. Must be greater than zero. The primary sort is based on VersionPriority, ordered highest to lowest (20 before 10). Since it's inside of a group, the number can be small, probably in the 10s. In case of equal version priorities, the version string will be used to compute the order inside a group. If the version string is 'kube-like', it will sort above non 'kube-like' version strings, which are ordered lexicographically. 'Kube-like' versions start with a 'v', then are followed by a number (the major version), then optionally the string 'alpha' or 'beta' and another number (the minor version). These are sorted first by GA > beta > alpha (where GA is a version with no suffix such as beta or alpha), and then by comparing major version, then minor version. An example sorted list of versions: v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10.", args=[d.arg(name='versionPriority', type=d.T.integer)]), - withVersionPriority(versionPriority): { versionPriority: versionPriority }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiregistration/v1beta1/apiServiceStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiregistration/v1beta1/apiServiceStatus.libsonnet deleted file mode 100644 index 00662ba98e09..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiregistration/v1beta1/apiServiceStatus.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='apiServiceStatus', url='', help='APIServiceStatus contains derived information about an API server'), - '#withConditions':: d.fn(help='Current service state of apiService.', args=[d.arg(name='conditions', type=d.T.array)]), - withConditions(conditions): { conditions: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withConditionsMixin':: d.fn(help='Current service state of apiService.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='conditions', type=d.T.array)]), - withConditionsMixin(conditions): { conditions+: if std.isArray(v=conditions) then conditions else [conditions] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiregistration/v1beta1/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiregistration/v1beta1/main.libsonnet deleted file mode 100644 index 2cdc33f58dfa..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiregistration/v1beta1/main.libsonnet +++ /dev/null @@ -1,9 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1beta1', url='', help=''), - apiService: (import 'apiService.libsonnet'), - apiServiceCondition: (import 'apiServiceCondition.libsonnet'), - apiServiceSpec: (import 'apiServiceSpec.libsonnet'), - apiServiceStatus: (import 'apiServiceStatus.libsonnet'), - serviceReference: (import 'serviceReference.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiregistration/v1beta1/serviceReference.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiregistration/v1beta1/serviceReference.libsonnet deleted file mode 100644 index 2a9557db86cc..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiregistration/v1beta1/serviceReference.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='serviceReference', url='', help='ServiceReference holds a reference to Service.legacy.k8s.io'), - '#withName':: d.fn(help='Name is the name of the service', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withNamespace':: d.fn(help='Namespace is the namespace of the service', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { namespace: namespace }, - '#withPort':: d.fn(help='If specified, the port on the service that hosting webhook. Default to 443 for backward compatibility. `port` should be a valid port number (1-65535, inclusive).', args=[d.arg(name='port', type=d.T.integer)]), - withPort(port): { port: port }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiserverinternal/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiserverinternal/main.libsonnet deleted file mode 100644 index adbb7f0f3bb7..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiserverinternal/main.libsonnet +++ /dev/null @@ -1,5 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='apiserverinternal', url='', help=''), - v1alpha1: (import 'v1alpha1/main.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiserverinternal/v1alpha1/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiserverinternal/v1alpha1/main.libsonnet deleted file mode 100644 index d7cf8498319e..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiserverinternal/v1alpha1/main.libsonnet +++ /dev/null @@ -1,9 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1alpha1', url='', help=''), - serverStorageVersion: (import 'serverStorageVersion.libsonnet'), - storageVersion: (import 'storageVersion.libsonnet'), - storageVersionCondition: (import 'storageVersionCondition.libsonnet'), - storageVersionSpec: (import 'storageVersionSpec.libsonnet'), - storageVersionStatus: (import 'storageVersionStatus.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiserverinternal/v1alpha1/serverStorageVersion.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiserverinternal/v1alpha1/serverStorageVersion.libsonnet deleted file mode 100644 index 425d7581731e..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiserverinternal/v1alpha1/serverStorageVersion.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='serverStorageVersion', url='', help='An API server instance reports the version it can decode and the version it encodes objects to when persisting objects in the backend.'), - '#withApiServerID':: d.fn(help='The ID of the reporting API server.', args=[d.arg(name='apiServerID', type=d.T.string)]), - withApiServerID(apiServerID): { apiServerID: apiServerID }, - '#withDecodableVersions':: d.fn(help='The API server can decode objects encoded in these versions. The encodingVersion must be included in the decodableVersions.', args=[d.arg(name='decodableVersions', type=d.T.array)]), - withDecodableVersions(decodableVersions): { decodableVersions: if std.isArray(v=decodableVersions) then decodableVersions else [decodableVersions] }, - '#withDecodableVersionsMixin':: d.fn(help='The API server can decode objects encoded in these versions. The encodingVersion must be included in the decodableVersions.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='decodableVersions', type=d.T.array)]), - withDecodableVersionsMixin(decodableVersions): { decodableVersions+: if std.isArray(v=decodableVersions) then decodableVersions else [decodableVersions] }, - '#withEncodingVersion':: d.fn(help='The API server encodes the object to this version when persisting it in the backend (e.g., etcd).', args=[d.arg(name='encodingVersion', type=d.T.string)]), - withEncodingVersion(encodingVersion): { encodingVersion: encodingVersion }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiserverinternal/v1alpha1/storageVersion.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiserverinternal/v1alpha1/storageVersion.libsonnet deleted file mode 100644 index be14cf5845d1..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiserverinternal/v1alpha1/storageVersion.libsonnet +++ /dev/null @@ -1,60 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='storageVersion', url='', help='\n Storage version of a specific resource.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Storageversion', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'internal.apiserver.k8s.io/v1alpha1', - kind: 'StorageVersion', - } + self.metadata.withName(name=name), - '#withSpec':: d.fn(help='StorageVersionSpec is an empty spec.', args=[d.arg(name='spec', type=d.T.object)]), - withSpec(spec): { spec: spec }, - '#withSpecMixin':: d.fn(help='StorageVersionSpec is an empty spec.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='spec', type=d.T.object)]), - withSpecMixin(spec): { spec+: spec }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiserverinternal/v1alpha1/storageVersionCondition.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiserverinternal/v1alpha1/storageVersionCondition.libsonnet deleted file mode 100644 index dbd5abc6b479..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiserverinternal/v1alpha1/storageVersionCondition.libsonnet +++ /dev/null @@ -1,16 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='storageVersionCondition', url='', help='Describes the state of the storageVersion at a certain point.'), - '#withLastTransitionTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastTransitionTime', type=d.T.string)]), - withLastTransitionTime(lastTransitionTime): { lastTransitionTime: lastTransitionTime }, - '#withMessage':: d.fn(help='A human readable message indicating details about the transition.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withObservedGeneration':: d.fn(help='If set, this represents the .metadata.generation that the condition was set based upon.', args=[d.arg(name='observedGeneration', type=d.T.integer)]), - withObservedGeneration(observedGeneration): { observedGeneration: observedGeneration }, - '#withReason':: d.fn(help="The reason for the condition's last transition.", args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#withType':: d.fn(help='Type of the condition.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiserverinternal/v1alpha1/storageVersionSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiserverinternal/v1alpha1/storageVersionSpec.libsonnet deleted file mode 100644 index d93b70331b56..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiserverinternal/v1alpha1/storageVersionSpec.libsonnet +++ /dev/null @@ -1,6 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='storageVersionSpec', url='', help='StorageVersionSpec is an empty spec.'), - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiserverinternal/v1alpha1/storageVersionStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiserverinternal/v1alpha1/storageVersionStatus.libsonnet deleted file mode 100644 index b6b82ac231e8..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apiserverinternal/v1alpha1/storageVersionStatus.libsonnet +++ /dev/null @@ -1,16 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='storageVersionStatus', url='', help='API server instances report the versions they can decode and the version they encode objects to when persisting objects in the backend.'), - '#withCommonEncodingVersion':: d.fn(help='If all API server instances agree on the same encoding storage version, then this field is set to that version. Otherwise this field is left empty. API servers should finish updating its storageVersionStatus entry before serving write operations, so that this field will be in sync with the reality.', args=[d.arg(name='commonEncodingVersion', type=d.T.string)]), - withCommonEncodingVersion(commonEncodingVersion): { commonEncodingVersion: commonEncodingVersion }, - '#withConditions':: d.fn(help="The latest available observations of the storageVersion's state.", args=[d.arg(name='conditions', type=d.T.array)]), - withConditions(conditions): { conditions: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withConditionsMixin':: d.fn(help="The latest available observations of the storageVersion's state.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='conditions', type=d.T.array)]), - withConditionsMixin(conditions): { conditions+: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withStorageVersions':: d.fn(help='The reported versions per API server instance.', args=[d.arg(name='storageVersions', type=d.T.array)]), - withStorageVersions(storageVersions): { storageVersions: if std.isArray(v=storageVersions) then storageVersions else [storageVersions] }, - '#withStorageVersionsMixin':: d.fn(help='The reported versions per API server instance.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='storageVersions', type=d.T.array)]), - withStorageVersionsMixin(storageVersions): { storageVersions+: if std.isArray(v=storageVersions) then storageVersions else [storageVersions] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/main.libsonnet deleted file mode 100644 index 36337c27d18d..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/main.libsonnet +++ /dev/null @@ -1,5 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='apps', url='', help=''), - v1: (import 'v1/main.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/controllerRevision.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/controllerRevision.libsonnet deleted file mode 100644 index 251deb72e60d..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/controllerRevision.libsonnet +++ /dev/null @@ -1,62 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='controllerRevision', url='', help='ControllerRevision implements an immutable snapshot of state data. Clients are responsible for serializing and deserializing the objects that contain their internal state. Once a ControllerRevision has been successfully created, it can not be updated. The API Server will fail validation of all requests that attempt to mutate the Data field. ControllerRevisions may, however, be deleted. Note that, due to its use by both the DaemonSet and StatefulSet controllers for update and rollback, this object is beta. However, it may be subject to name and representation changes in future releases, and clients should not depend on its stability. It is primarily for internal use by controllers.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Controllerrevision', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'apps/v1', - kind: 'ControllerRevision', - } + self.metadata.withName(name=name), - '#withData':: d.fn(help="RawExtension is used to hold extensions in external versions.\n\nTo use this, make a field which has RawExtension as its type in your external, versioned struct, and Object in your internal struct. You also need to register your various plugin types.\n\n// Internal package: type MyAPIObject struct {\n\truntime.TypeMeta `json:',inline'`\n\tMyPlugin runtime.Object `json:'myPlugin'`\n} type PluginA struct {\n\tAOption string `json:'aOption'`\n}\n\n// External package: type MyAPIObject struct {\n\truntime.TypeMeta `json:',inline'`\n\tMyPlugin runtime.RawExtension `json:'myPlugin'`\n} type PluginA struct {\n\tAOption string `json:'aOption'`\n}\n\n// On the wire, the JSON will look something like this: {\n\t'kind':'MyAPIObject',\n\t'apiVersion':'v1',\n\t'myPlugin': {\n\t\t'kind':'PluginA',\n\t\t'aOption':'foo',\n\t},\n}\n\nSo what happens? Decode first uses json or yaml to unmarshal the serialized data into your external MyAPIObject. That causes the raw JSON to be stored, but not unpacked. The next step is to copy (using pkg/conversion) into the internal struct. The runtime package's DefaultScheme has conversion functions installed which will unpack the JSON stored in RawExtension, turning it into the correct object type, and storing it in the Object. (TODO: In the case where the object is of an unknown type, a runtime.Unknown object will be created and stored.)", args=[d.arg(name='data', type=d.T.object)]), - withData(data): { data: data }, - '#withDataMixin':: d.fn(help="RawExtension is used to hold extensions in external versions.\n\nTo use this, make a field which has RawExtension as its type in your external, versioned struct, and Object in your internal struct. You also need to register your various plugin types.\n\n// Internal package: type MyAPIObject struct {\n\truntime.TypeMeta `json:',inline'`\n\tMyPlugin runtime.Object `json:'myPlugin'`\n} type PluginA struct {\n\tAOption string `json:'aOption'`\n}\n\n// External package: type MyAPIObject struct {\n\truntime.TypeMeta `json:',inline'`\n\tMyPlugin runtime.RawExtension `json:'myPlugin'`\n} type PluginA struct {\n\tAOption string `json:'aOption'`\n}\n\n// On the wire, the JSON will look something like this: {\n\t'kind':'MyAPIObject',\n\t'apiVersion':'v1',\n\t'myPlugin': {\n\t\t'kind':'PluginA',\n\t\t'aOption':'foo',\n\t},\n}\n\nSo what happens? Decode first uses json or yaml to unmarshal the serialized data into your external MyAPIObject. That causes the raw JSON to be stored, but not unpacked. The next step is to copy (using pkg/conversion) into the internal struct. The runtime package's DefaultScheme has conversion functions installed which will unpack the JSON stored in RawExtension, turning it into the correct object type, and storing it in the Object. (TODO: In the case where the object is of an unknown type, a runtime.Unknown object will be created and stored.)\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='data', type=d.T.object)]), - withDataMixin(data): { data+: data }, - '#withRevision':: d.fn(help='Revision indicates the revision of the state represented by Data.', args=[d.arg(name='revision', type=d.T.integer)]), - withRevision(revision): { revision: revision }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/daemonSet.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/daemonSet.libsonnet deleted file mode 100644 index 51849bde00c6..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/daemonSet.libsonnet +++ /dev/null @@ -1,325 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='daemonSet', url='', help='DaemonSet represents the configuration of a daemon set.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Daemonset', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'apps/v1', - kind: 'DaemonSet', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='DaemonSetSpec is the specification of a daemon set.'), - spec: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { spec+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { spec+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { spec+: { selector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { spec+: { selector+: { matchLabels+: matchLabels } } }, - }, - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { spec+: { template+: { metadata+: { annotations: annotations } } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { spec+: { template+: { metadata+: { annotations+: annotations } } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { spec+: { template+: { metadata+: { clusterName: clusterName } } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { spec+: { template+: { metadata+: { creationTimestamp: creationTimestamp } } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { spec+: { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { spec+: { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { spec+: { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { spec+: { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { spec+: { template+: { metadata+: { generateName: generateName } } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { spec+: { template+: { metadata+: { generation: generation } } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { spec+: { template+: { metadata+: { labels: labels } } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { spec+: { template+: { metadata+: { labels+: labels } } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { spec+: { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { spec+: { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { template+: { metadata+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { template+: { metadata+: { namespace: namespace } } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { spec+: { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { spec+: { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { spec+: { template+: { metadata+: { resourceVersion: resourceVersion } } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { spec+: { template+: { metadata+: { selfLink: selfLink } } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { template+: { metadata+: { uid: uid } } } }, - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } }, - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - }, - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { spec+: { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { spec+: { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { spec+: { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { spec+: { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { spec+: { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { spec+: { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } } }, - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } } }, - }, - '#seccompProfile':: d.obj(help="SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set."), - seccompProfile: { - '#withLocalhostProfile':: d.fn(help="localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is 'Localhost'.", args=[d.arg(name='localhostProfile', type=d.T.string)]), - withLocalhostProfile(localhostProfile): { spec+: { template+: { spec+: { securityContext+: { seccompProfile+: { localhostProfile: localhostProfile } } } } } }, - '#withType':: d.fn(help='type indicates which kind of seccomp profile will be applied. Valid options are:\n\nLocalhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { template+: { spec+: { securityContext+: { seccompProfile+: { type: type } } } } } }, - }, - '#windowsOptions':: d.obj(help='WindowsSecurityContextOptions contain Windows-specific options and credentials.'), - windowsOptions: { - '#withGmsaCredentialSpec':: d.fn(help='GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.', args=[d.arg(name='gmsaCredentialSpec', type=d.T.string)]), - withGmsaCredentialSpec(gmsaCredentialSpec): { spec+: { template+: { spec+: { securityContext+: { windowsOptions+: { gmsaCredentialSpec: gmsaCredentialSpec } } } } } }, - '#withGmsaCredentialSpecName':: d.fn(help='GMSACredentialSpecName is the name of the GMSA credential spec to use.', args=[d.arg(name='gmsaCredentialSpecName', type=d.T.string)]), - withGmsaCredentialSpecName(gmsaCredentialSpecName): { spec+: { template+: { spec+: { securityContext+: { windowsOptions+: { gmsaCredentialSpecName: gmsaCredentialSpecName } } } } } }, - '#withRunAsUserName':: d.fn(help='The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsUserName', type=d.T.string)]), - withRunAsUserName(runAsUserName): { spec+: { template+: { spec+: { securityContext+: { windowsOptions+: { runAsUserName: runAsUserName } } } } } }, - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { spec+: { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } } }, - '#withFsGroupChangePolicy':: d.fn(help='fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used.', args=[d.arg(name='fsGroupChangePolicy', type=d.T.string)]), - withFsGroupChangePolicy(fsGroupChangePolicy): { spec+: { template+: { spec+: { securityContext+: { fsGroupChangePolicy: fsGroupChangePolicy } } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { spec+: { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { spec+: { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { spec+: { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { spec+: { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { spec+: { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { spec+: { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { spec+: { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } }, - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { spec+: { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { spec+: { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { spec+: { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { spec+: { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { spec+: { template+: { spec+: { dnsPolicy: dnsPolicy } } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { spec+: { template+: { spec+: { enableServiceLinks: enableServiceLinks } } } }, - '#withEphemeralContainers':: d.fn(help="List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. This field is alpha-level and is only honored by servers that enable the EphemeralContainers feature.", args=[d.arg(name='ephemeralContainers', type=d.T.array)]), - withEphemeralContainers(ephemeralContainers): { spec+: { template+: { spec+: { ephemeralContainers: if std.isArray(v=ephemeralContainers) then ephemeralContainers else [ephemeralContainers] } } } }, - '#withEphemeralContainersMixin':: d.fn(help="List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. This field is alpha-level and is only honored by servers that enable the EphemeralContainers feature.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='ephemeralContainers', type=d.T.array)]), - withEphemeralContainersMixin(ephemeralContainers): { spec+: { template+: { spec+: { ephemeralContainers+: if std.isArray(v=ephemeralContainers) then ephemeralContainers else [ephemeralContainers] } } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { spec+: { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { spec+: { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { spec+: { template+: { spec+: { hostIPC: hostIPC } } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { spec+: { template+: { spec+: { hostNetwork: hostNetwork } } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { spec+: { template+: { spec+: { hostPID: hostPID } } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { spec+: { template+: { spec+: { hostname: hostname } } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { spec+: { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { spec+: { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { spec+: { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { spec+: { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { spec+: { template+: { spec+: { nodeName: nodeName } } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { spec+: { template+: { spec+: { nodeSelector: nodeSelector } } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { spec+: { template+: { spec+: { nodeSelector+: nodeSelector } } } }, - '#withOverhead':: d.fn(help='Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/20190226-pod-overhead.md This field is alpha-level as of Kubernetes v1.16, and is only honored by servers that enable the PodOverhead feature.', args=[d.arg(name='overhead', type=d.T.object)]), - withOverhead(overhead): { spec+: { template+: { spec+: { overhead: overhead } } } }, - '#withOverheadMixin':: d.fn(help='Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/20190226-pod-overhead.md This field is alpha-level as of Kubernetes v1.16, and is only honored by servers that enable the PodOverhead feature.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='overhead', type=d.T.object)]), - withOverheadMixin(overhead): { spec+: { template+: { spec+: { overhead+: overhead } } } }, - '#withPreemptionPolicy':: d.fn(help='PreemptionPolicy is the Policy for preempting pods with lower priority. One of Never, PreemptLowerPriority. Defaults to PreemptLowerPriority if unset. This field is beta-level, gated by the NonPreemptingPriority feature-gate.', args=[d.arg(name='preemptionPolicy', type=d.T.string)]), - withPreemptionPolicy(preemptionPolicy): { spec+: { template+: { spec+: { preemptionPolicy: preemptionPolicy } } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { spec+: { template+: { spec+: { priority: priority } } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { spec+: { template+: { spec+: { priorityClassName: priorityClassName } } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { spec+: { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { spec+: { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { spec+: { template+: { spec+: { restartPolicy: restartPolicy } } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is a beta feature as of Kubernetes v1.14.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { spec+: { template+: { spec+: { runtimeClassName: runtimeClassName } } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { spec+: { template+: { spec+: { schedulerName: schedulerName } } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { spec+: { template+: { spec+: { serviceAccount: serviceAccount } } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { spec+: { template+: { spec+: { serviceAccountName: serviceAccountName } } } }, - '#withSetHostnameAsFQDN':: d.fn(help="If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default). In Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname). In Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters to FQDN. If a pod does not have FQDN, this has no effect. Default to false.", args=[d.arg(name='setHostnameAsFQDN', type=d.T.boolean)]), - withSetHostnameAsFQDN(setHostnameAsFQDN): { spec+: { template+: { spec+: { setHostnameAsFQDN: setHostnameAsFQDN } } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { spec+: { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { spec+: { template+: { spec+: { subdomain: subdomain } } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { spec+: { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { spec+: { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { spec+: { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } }, - '#withTopologySpreadConstraints':: d.fn(help='TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed.', args=[d.arg(name='topologySpreadConstraints', type=d.T.array)]), - withTopologySpreadConstraints(topologySpreadConstraints): { spec+: { template+: { spec+: { topologySpreadConstraints: if std.isArray(v=topologySpreadConstraints) then topologySpreadConstraints else [topologySpreadConstraints] } } } }, - '#withTopologySpreadConstraintsMixin':: d.fn(help='TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='topologySpreadConstraints', type=d.T.array)]), - withTopologySpreadConstraintsMixin(topologySpreadConstraints): { spec+: { template+: { spec+: { topologySpreadConstraints+: if std.isArray(v=topologySpreadConstraints) then topologySpreadConstraints else [topologySpreadConstraints] } } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { spec+: { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { spec+: { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } } }, - }, - }, - '#updateStrategy':: d.obj(help='DaemonSetUpdateStrategy is a struct used to control the update strategy for a DaemonSet.'), - updateStrategy: { - '#rollingUpdate':: d.obj(help='Spec to control the desired behavior of daemon set rolling update.'), - rollingUpdate: { - '#withMaxSurge':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxSurge', type=d.T.string)]), - withMaxSurge(maxSurge): { spec+: { updateStrategy+: { rollingUpdate+: { maxSurge: maxSurge } } } }, - '#withMaxUnavailable':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxUnavailable', type=d.T.string)]), - withMaxUnavailable(maxUnavailable): { spec+: { updateStrategy+: { rollingUpdate+: { maxUnavailable: maxUnavailable } } } }, - }, - '#withType':: d.fn(help='Type of daemon set update. Can be "RollingUpdate" or "OnDelete". Default is RollingUpdate.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { updateStrategy+: { type: type } } }, - }, - '#withMinReadySeconds':: d.fn(help='The minimum number of seconds for which a newly created DaemonSet pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready).', args=[d.arg(name='minReadySeconds', type=d.T.integer)]), - withMinReadySeconds(minReadySeconds): { spec+: { minReadySeconds: minReadySeconds } }, - '#withRevisionHistoryLimit':: d.fn(help='The number of old history to retain to allow rollback. This is a pointer to distinguish between explicit zero and not specified. Defaults to 10.', args=[d.arg(name='revisionHistoryLimit', type=d.T.integer)]), - withRevisionHistoryLimit(revisionHistoryLimit): { spec+: { revisionHistoryLimit: revisionHistoryLimit } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/daemonSetCondition.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/daemonSetCondition.libsonnet deleted file mode 100644 index cf9d64b2669b..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/daemonSetCondition.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='daemonSetCondition', url='', help='DaemonSetCondition describes the state of a DaemonSet at a certain point.'), - '#withLastTransitionTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastTransitionTime', type=d.T.string)]), - withLastTransitionTime(lastTransitionTime): { lastTransitionTime: lastTransitionTime }, - '#withMessage':: d.fn(help='A human readable message indicating details about the transition.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withReason':: d.fn(help="The reason for the condition's last transition.", args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#withType':: d.fn(help='Type of DaemonSet condition.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/daemonSetSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/daemonSetSpec.libsonnet deleted file mode 100644 index ddcc4f995c37..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/daemonSetSpec.libsonnet +++ /dev/null @@ -1,272 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='daemonSetSpec', url='', help='DaemonSetSpec is the specification of a daemon set.'), - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { selector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { selector+: { matchLabels+: matchLabels } }, - }, - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { template+: { metadata+: { annotations: annotations } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { template+: { metadata+: { annotations+: annotations } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { template+: { metadata+: { clusterName: clusterName } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { template+: { metadata+: { creationTimestamp: creationTimestamp } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { template+: { metadata+: { generateName: generateName } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { template+: { metadata+: { generation: generation } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { template+: { metadata+: { labels: labels } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { template+: { metadata+: { labels+: labels } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { template+: { metadata+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { template+: { metadata+: { namespace: namespace } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { template+: { metadata+: { resourceVersion: resourceVersion } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { template+: { metadata+: { selfLink: selfLink } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { template+: { metadata+: { uid: uid } } }, - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } }, - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - }, - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } }, - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } }, - }, - '#seccompProfile':: d.obj(help="SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set."), - seccompProfile: { - '#withLocalhostProfile':: d.fn(help="localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is 'Localhost'.", args=[d.arg(name='localhostProfile', type=d.T.string)]), - withLocalhostProfile(localhostProfile): { template+: { spec+: { securityContext+: { seccompProfile+: { localhostProfile: localhostProfile } } } } }, - '#withType':: d.fn(help='type indicates which kind of seccomp profile will be applied. Valid options are:\n\nLocalhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { template+: { spec+: { securityContext+: { seccompProfile+: { type: type } } } } }, - }, - '#windowsOptions':: d.obj(help='WindowsSecurityContextOptions contain Windows-specific options and credentials.'), - windowsOptions: { - '#withGmsaCredentialSpec':: d.fn(help='GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.', args=[d.arg(name='gmsaCredentialSpec', type=d.T.string)]), - withGmsaCredentialSpec(gmsaCredentialSpec): { template+: { spec+: { securityContext+: { windowsOptions+: { gmsaCredentialSpec: gmsaCredentialSpec } } } } }, - '#withGmsaCredentialSpecName':: d.fn(help='GMSACredentialSpecName is the name of the GMSA credential spec to use.', args=[d.arg(name='gmsaCredentialSpecName', type=d.T.string)]), - withGmsaCredentialSpecName(gmsaCredentialSpecName): { template+: { spec+: { securityContext+: { windowsOptions+: { gmsaCredentialSpecName: gmsaCredentialSpecName } } } } }, - '#withRunAsUserName':: d.fn(help='The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsUserName', type=d.T.string)]), - withRunAsUserName(runAsUserName): { template+: { spec+: { securityContext+: { windowsOptions+: { runAsUserName: runAsUserName } } } } }, - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } }, - '#withFsGroupChangePolicy':: d.fn(help='fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used.', args=[d.arg(name='fsGroupChangePolicy', type=d.T.string)]), - withFsGroupChangePolicy(fsGroupChangePolicy): { template+: { spec+: { securityContext+: { fsGroupChangePolicy: fsGroupChangePolicy } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } }, - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { template+: { spec+: { dnsPolicy: dnsPolicy } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { template+: { spec+: { enableServiceLinks: enableServiceLinks } } }, - '#withEphemeralContainers':: d.fn(help="List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. This field is alpha-level and is only honored by servers that enable the EphemeralContainers feature.", args=[d.arg(name='ephemeralContainers', type=d.T.array)]), - withEphemeralContainers(ephemeralContainers): { template+: { spec+: { ephemeralContainers: if std.isArray(v=ephemeralContainers) then ephemeralContainers else [ephemeralContainers] } } }, - '#withEphemeralContainersMixin':: d.fn(help="List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. This field is alpha-level and is only honored by servers that enable the EphemeralContainers feature.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='ephemeralContainers', type=d.T.array)]), - withEphemeralContainersMixin(ephemeralContainers): { template+: { spec+: { ephemeralContainers+: if std.isArray(v=ephemeralContainers) then ephemeralContainers else [ephemeralContainers] } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { template+: { spec+: { hostIPC: hostIPC } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { template+: { spec+: { hostNetwork: hostNetwork } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { template+: { spec+: { hostPID: hostPID } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { template+: { spec+: { hostname: hostname } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { template+: { spec+: { nodeName: nodeName } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { template+: { spec+: { nodeSelector: nodeSelector } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { template+: { spec+: { nodeSelector+: nodeSelector } } }, - '#withOverhead':: d.fn(help='Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/20190226-pod-overhead.md This field is alpha-level as of Kubernetes v1.16, and is only honored by servers that enable the PodOverhead feature.', args=[d.arg(name='overhead', type=d.T.object)]), - withOverhead(overhead): { template+: { spec+: { overhead: overhead } } }, - '#withOverheadMixin':: d.fn(help='Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/20190226-pod-overhead.md This field is alpha-level as of Kubernetes v1.16, and is only honored by servers that enable the PodOverhead feature.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='overhead', type=d.T.object)]), - withOverheadMixin(overhead): { template+: { spec+: { overhead+: overhead } } }, - '#withPreemptionPolicy':: d.fn(help='PreemptionPolicy is the Policy for preempting pods with lower priority. One of Never, PreemptLowerPriority. Defaults to PreemptLowerPriority if unset. This field is beta-level, gated by the NonPreemptingPriority feature-gate.', args=[d.arg(name='preemptionPolicy', type=d.T.string)]), - withPreemptionPolicy(preemptionPolicy): { template+: { spec+: { preemptionPolicy: preemptionPolicy } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { template+: { spec+: { priority: priority } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { template+: { spec+: { priorityClassName: priorityClassName } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { template+: { spec+: { restartPolicy: restartPolicy } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is a beta feature as of Kubernetes v1.14.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { template+: { spec+: { runtimeClassName: runtimeClassName } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { template+: { spec+: { schedulerName: schedulerName } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { template+: { spec+: { serviceAccount: serviceAccount } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { template+: { spec+: { serviceAccountName: serviceAccountName } } }, - '#withSetHostnameAsFQDN':: d.fn(help="If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default). In Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname). In Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters to FQDN. If a pod does not have FQDN, this has no effect. Default to false.", args=[d.arg(name='setHostnameAsFQDN', type=d.T.boolean)]), - withSetHostnameAsFQDN(setHostnameAsFQDN): { template+: { spec+: { setHostnameAsFQDN: setHostnameAsFQDN } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { template+: { spec+: { subdomain: subdomain } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } }, - '#withTopologySpreadConstraints':: d.fn(help='TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed.', args=[d.arg(name='topologySpreadConstraints', type=d.T.array)]), - withTopologySpreadConstraints(topologySpreadConstraints): { template+: { spec+: { topologySpreadConstraints: if std.isArray(v=topologySpreadConstraints) then topologySpreadConstraints else [topologySpreadConstraints] } } }, - '#withTopologySpreadConstraintsMixin':: d.fn(help='TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='topologySpreadConstraints', type=d.T.array)]), - withTopologySpreadConstraintsMixin(topologySpreadConstraints): { template+: { spec+: { topologySpreadConstraints+: if std.isArray(v=topologySpreadConstraints) then topologySpreadConstraints else [topologySpreadConstraints] } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } }, - }, - }, - '#updateStrategy':: d.obj(help='DaemonSetUpdateStrategy is a struct used to control the update strategy for a DaemonSet.'), - updateStrategy: { - '#rollingUpdate':: d.obj(help='Spec to control the desired behavior of daemon set rolling update.'), - rollingUpdate: { - '#withMaxSurge':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxSurge', type=d.T.string)]), - withMaxSurge(maxSurge): { updateStrategy+: { rollingUpdate+: { maxSurge: maxSurge } } }, - '#withMaxUnavailable':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxUnavailable', type=d.T.string)]), - withMaxUnavailable(maxUnavailable): { updateStrategy+: { rollingUpdate+: { maxUnavailable: maxUnavailable } } }, - }, - '#withType':: d.fn(help='Type of daemon set update. Can be "RollingUpdate" or "OnDelete". Default is RollingUpdate.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { updateStrategy+: { type: type } }, - }, - '#withMinReadySeconds':: d.fn(help='The minimum number of seconds for which a newly created DaemonSet pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready).', args=[d.arg(name='minReadySeconds', type=d.T.integer)]), - withMinReadySeconds(minReadySeconds): { minReadySeconds: minReadySeconds }, - '#withRevisionHistoryLimit':: d.fn(help='The number of old history to retain to allow rollback. This is a pointer to distinguish between explicit zero and not specified. Defaults to 10.', args=[d.arg(name='revisionHistoryLimit', type=d.T.integer)]), - withRevisionHistoryLimit(revisionHistoryLimit): { revisionHistoryLimit: revisionHistoryLimit }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/daemonSetStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/daemonSetStatus.libsonnet deleted file mode 100644 index d0ee7972dad0..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/daemonSetStatus.libsonnet +++ /dev/null @@ -1,28 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='daemonSetStatus', url='', help='DaemonSetStatus represents the current status of a daemon set.'), - '#withCollisionCount':: d.fn(help='Count of hash collisions for the DaemonSet. The DaemonSet controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ControllerRevision.', args=[d.arg(name='collisionCount', type=d.T.integer)]), - withCollisionCount(collisionCount): { collisionCount: collisionCount }, - '#withConditions':: d.fn(help="Represents the latest available observations of a DaemonSet's current state.", args=[d.arg(name='conditions', type=d.T.array)]), - withConditions(conditions): { conditions: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withConditionsMixin':: d.fn(help="Represents the latest available observations of a DaemonSet's current state.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='conditions', type=d.T.array)]), - withConditionsMixin(conditions): { conditions+: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withCurrentNumberScheduled':: d.fn(help='The number of nodes that are running at least 1 daemon pod and are supposed to run the daemon pod. More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/', args=[d.arg(name='currentNumberScheduled', type=d.T.integer)]), - withCurrentNumberScheduled(currentNumberScheduled): { currentNumberScheduled: currentNumberScheduled }, - '#withDesiredNumberScheduled':: d.fn(help='The total number of nodes that should be running the daemon pod (including nodes correctly running the daemon pod). More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/', args=[d.arg(name='desiredNumberScheduled', type=d.T.integer)]), - withDesiredNumberScheduled(desiredNumberScheduled): { desiredNumberScheduled: desiredNumberScheduled }, - '#withNumberAvailable':: d.fn(help='The number of nodes that should be running the daemon pod and have one or more of the daemon pod running and available (ready for at least spec.minReadySeconds)', args=[d.arg(name='numberAvailable', type=d.T.integer)]), - withNumberAvailable(numberAvailable): { numberAvailable: numberAvailable }, - '#withNumberMisscheduled':: d.fn(help='The number of nodes that are running the daemon pod, but are not supposed to run the daemon pod. More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/', args=[d.arg(name='numberMisscheduled', type=d.T.integer)]), - withNumberMisscheduled(numberMisscheduled): { numberMisscheduled: numberMisscheduled }, - '#withNumberReady':: d.fn(help='The number of nodes that should be running the daemon pod and have one or more of the daemon pod running and ready.', args=[d.arg(name='numberReady', type=d.T.integer)]), - withNumberReady(numberReady): { numberReady: numberReady }, - '#withNumberUnavailable':: d.fn(help='The number of nodes that should be running the daemon pod and have none of the daemon pod running and available (ready for at least spec.minReadySeconds)', args=[d.arg(name='numberUnavailable', type=d.T.integer)]), - withNumberUnavailable(numberUnavailable): { numberUnavailable: numberUnavailable }, - '#withObservedGeneration':: d.fn(help='The most recent generation observed by the daemon set controller.', args=[d.arg(name='observedGeneration', type=d.T.integer)]), - withObservedGeneration(observedGeneration): { observedGeneration: observedGeneration }, - '#withUpdatedNumberScheduled':: d.fn(help='The total number of nodes that are running updated daemon pod', args=[d.arg(name='updatedNumberScheduled', type=d.T.integer)]), - withUpdatedNumberScheduled(updatedNumberScheduled): { updatedNumberScheduled: updatedNumberScheduled }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/daemonSetUpdateStrategy.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/daemonSetUpdateStrategy.libsonnet deleted file mode 100644 index e13a5d6fc616..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/daemonSetUpdateStrategy.libsonnet +++ /dev/null @@ -1,15 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='daemonSetUpdateStrategy', url='', help='DaemonSetUpdateStrategy is a struct used to control the update strategy for a DaemonSet.'), - '#rollingUpdate':: d.obj(help='Spec to control the desired behavior of daemon set rolling update.'), - rollingUpdate: { - '#withMaxSurge':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxSurge', type=d.T.string)]), - withMaxSurge(maxSurge): { rollingUpdate+: { maxSurge: maxSurge } }, - '#withMaxUnavailable':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxUnavailable', type=d.T.string)]), - withMaxUnavailable(maxUnavailable): { rollingUpdate+: { maxUnavailable: maxUnavailable } }, - }, - '#withType':: d.fn(help='Type of daemon set update. Can be "RollingUpdate" or "OnDelete". Default is RollingUpdate.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/deployment.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/deployment.libsonnet deleted file mode 100644 index 68e333bd00db..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/deployment.libsonnet +++ /dev/null @@ -1,331 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='deployment', url='', help='Deployment enables declarative updates for Pods and ReplicaSets.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Deployment', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'apps/v1', - kind: 'Deployment', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='DeploymentSpec is the specification of the desired behavior of the Deployment.'), - spec: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { spec+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { spec+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { spec+: { selector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { spec+: { selector+: { matchLabels+: matchLabels } } }, - }, - '#strategy':: d.obj(help='DeploymentStrategy describes how to replace existing pods with new ones.'), - strategy: { - '#rollingUpdate':: d.obj(help='Spec to control the desired behavior of rolling update.'), - rollingUpdate: { - '#withMaxSurge':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxSurge', type=d.T.string)]), - withMaxSurge(maxSurge): { spec+: { strategy+: { rollingUpdate+: { maxSurge: maxSurge } } } }, - '#withMaxUnavailable':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxUnavailable', type=d.T.string)]), - withMaxUnavailable(maxUnavailable): { spec+: { strategy+: { rollingUpdate+: { maxUnavailable: maxUnavailable } } } }, - }, - '#withType':: d.fn(help='Type of deployment. Can be "Recreate" or "RollingUpdate". Default is RollingUpdate.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { strategy+: { type: type } } }, - }, - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { spec+: { template+: { metadata+: { annotations: annotations } } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { spec+: { template+: { metadata+: { annotations+: annotations } } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { spec+: { template+: { metadata+: { clusterName: clusterName } } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { spec+: { template+: { metadata+: { creationTimestamp: creationTimestamp } } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { spec+: { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { spec+: { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { spec+: { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { spec+: { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { spec+: { template+: { metadata+: { generateName: generateName } } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { spec+: { template+: { metadata+: { generation: generation } } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { spec+: { template+: { metadata+: { labels: labels } } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { spec+: { template+: { metadata+: { labels+: labels } } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { spec+: { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { spec+: { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { template+: { metadata+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { template+: { metadata+: { namespace: namespace } } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { spec+: { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { spec+: { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { spec+: { template+: { metadata+: { resourceVersion: resourceVersion } } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { spec+: { template+: { metadata+: { selfLink: selfLink } } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { template+: { metadata+: { uid: uid } } } }, - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } }, - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - }, - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { spec+: { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { spec+: { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { spec+: { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { spec+: { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { spec+: { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { spec+: { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } } }, - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } } }, - }, - '#seccompProfile':: d.obj(help="SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set."), - seccompProfile: { - '#withLocalhostProfile':: d.fn(help="localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is 'Localhost'.", args=[d.arg(name='localhostProfile', type=d.T.string)]), - withLocalhostProfile(localhostProfile): { spec+: { template+: { spec+: { securityContext+: { seccompProfile+: { localhostProfile: localhostProfile } } } } } }, - '#withType':: d.fn(help='type indicates which kind of seccomp profile will be applied. Valid options are:\n\nLocalhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { template+: { spec+: { securityContext+: { seccompProfile+: { type: type } } } } } }, - }, - '#windowsOptions':: d.obj(help='WindowsSecurityContextOptions contain Windows-specific options and credentials.'), - windowsOptions: { - '#withGmsaCredentialSpec':: d.fn(help='GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.', args=[d.arg(name='gmsaCredentialSpec', type=d.T.string)]), - withGmsaCredentialSpec(gmsaCredentialSpec): { spec+: { template+: { spec+: { securityContext+: { windowsOptions+: { gmsaCredentialSpec: gmsaCredentialSpec } } } } } }, - '#withGmsaCredentialSpecName':: d.fn(help='GMSACredentialSpecName is the name of the GMSA credential spec to use.', args=[d.arg(name='gmsaCredentialSpecName', type=d.T.string)]), - withGmsaCredentialSpecName(gmsaCredentialSpecName): { spec+: { template+: { spec+: { securityContext+: { windowsOptions+: { gmsaCredentialSpecName: gmsaCredentialSpecName } } } } } }, - '#withRunAsUserName':: d.fn(help='The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsUserName', type=d.T.string)]), - withRunAsUserName(runAsUserName): { spec+: { template+: { spec+: { securityContext+: { windowsOptions+: { runAsUserName: runAsUserName } } } } } }, - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { spec+: { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } } }, - '#withFsGroupChangePolicy':: d.fn(help='fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used.', args=[d.arg(name='fsGroupChangePolicy', type=d.T.string)]), - withFsGroupChangePolicy(fsGroupChangePolicy): { spec+: { template+: { spec+: { securityContext+: { fsGroupChangePolicy: fsGroupChangePolicy } } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { spec+: { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { spec+: { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { spec+: { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { spec+: { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { spec+: { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { spec+: { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { spec+: { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } }, - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { spec+: { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { spec+: { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { spec+: { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { spec+: { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { spec+: { template+: { spec+: { dnsPolicy: dnsPolicy } } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { spec+: { template+: { spec+: { enableServiceLinks: enableServiceLinks } } } }, - '#withEphemeralContainers':: d.fn(help="List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. This field is alpha-level and is only honored by servers that enable the EphemeralContainers feature.", args=[d.arg(name='ephemeralContainers', type=d.T.array)]), - withEphemeralContainers(ephemeralContainers): { spec+: { template+: { spec+: { ephemeralContainers: if std.isArray(v=ephemeralContainers) then ephemeralContainers else [ephemeralContainers] } } } }, - '#withEphemeralContainersMixin':: d.fn(help="List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. This field is alpha-level and is only honored by servers that enable the EphemeralContainers feature.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='ephemeralContainers', type=d.T.array)]), - withEphemeralContainersMixin(ephemeralContainers): { spec+: { template+: { spec+: { ephemeralContainers+: if std.isArray(v=ephemeralContainers) then ephemeralContainers else [ephemeralContainers] } } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { spec+: { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { spec+: { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { spec+: { template+: { spec+: { hostIPC: hostIPC } } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { spec+: { template+: { spec+: { hostNetwork: hostNetwork } } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { spec+: { template+: { spec+: { hostPID: hostPID } } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { spec+: { template+: { spec+: { hostname: hostname } } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { spec+: { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { spec+: { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { spec+: { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { spec+: { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { spec+: { template+: { spec+: { nodeName: nodeName } } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { spec+: { template+: { spec+: { nodeSelector: nodeSelector } } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { spec+: { template+: { spec+: { nodeSelector+: nodeSelector } } } }, - '#withOverhead':: d.fn(help='Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/20190226-pod-overhead.md This field is alpha-level as of Kubernetes v1.16, and is only honored by servers that enable the PodOverhead feature.', args=[d.arg(name='overhead', type=d.T.object)]), - withOverhead(overhead): { spec+: { template+: { spec+: { overhead: overhead } } } }, - '#withOverheadMixin':: d.fn(help='Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/20190226-pod-overhead.md This field is alpha-level as of Kubernetes v1.16, and is only honored by servers that enable the PodOverhead feature.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='overhead', type=d.T.object)]), - withOverheadMixin(overhead): { spec+: { template+: { spec+: { overhead+: overhead } } } }, - '#withPreemptionPolicy':: d.fn(help='PreemptionPolicy is the Policy for preempting pods with lower priority. One of Never, PreemptLowerPriority. Defaults to PreemptLowerPriority if unset. This field is beta-level, gated by the NonPreemptingPriority feature-gate.', args=[d.arg(name='preemptionPolicy', type=d.T.string)]), - withPreemptionPolicy(preemptionPolicy): { spec+: { template+: { spec+: { preemptionPolicy: preemptionPolicy } } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { spec+: { template+: { spec+: { priority: priority } } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { spec+: { template+: { spec+: { priorityClassName: priorityClassName } } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { spec+: { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { spec+: { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { spec+: { template+: { spec+: { restartPolicy: restartPolicy } } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is a beta feature as of Kubernetes v1.14.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { spec+: { template+: { spec+: { runtimeClassName: runtimeClassName } } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { spec+: { template+: { spec+: { schedulerName: schedulerName } } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { spec+: { template+: { spec+: { serviceAccount: serviceAccount } } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { spec+: { template+: { spec+: { serviceAccountName: serviceAccountName } } } }, - '#withSetHostnameAsFQDN':: d.fn(help="If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default). In Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname). In Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters to FQDN. If a pod does not have FQDN, this has no effect. Default to false.", args=[d.arg(name='setHostnameAsFQDN', type=d.T.boolean)]), - withSetHostnameAsFQDN(setHostnameAsFQDN): { spec+: { template+: { spec+: { setHostnameAsFQDN: setHostnameAsFQDN } } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { spec+: { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { spec+: { template+: { spec+: { subdomain: subdomain } } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { spec+: { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { spec+: { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { spec+: { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } }, - '#withTopologySpreadConstraints':: d.fn(help='TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed.', args=[d.arg(name='topologySpreadConstraints', type=d.T.array)]), - withTopologySpreadConstraints(topologySpreadConstraints): { spec+: { template+: { spec+: { topologySpreadConstraints: if std.isArray(v=topologySpreadConstraints) then topologySpreadConstraints else [topologySpreadConstraints] } } } }, - '#withTopologySpreadConstraintsMixin':: d.fn(help='TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='topologySpreadConstraints', type=d.T.array)]), - withTopologySpreadConstraintsMixin(topologySpreadConstraints): { spec+: { template+: { spec+: { topologySpreadConstraints+: if std.isArray(v=topologySpreadConstraints) then topologySpreadConstraints else [topologySpreadConstraints] } } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { spec+: { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { spec+: { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } } }, - }, - }, - '#withMinReadySeconds':: d.fn(help='Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)', args=[d.arg(name='minReadySeconds', type=d.T.integer)]), - withMinReadySeconds(minReadySeconds): { spec+: { minReadySeconds: minReadySeconds } }, - '#withPaused':: d.fn(help='Indicates that the deployment is paused.', args=[d.arg(name='paused', type=d.T.boolean)]), - withPaused(paused): { spec+: { paused: paused } }, - '#withProgressDeadlineSeconds':: d.fn(help='The maximum time in seconds for a deployment to make progress before it is considered to be failed. The deployment controller will continue to process failed deployments and a condition with a ProgressDeadlineExceeded reason will be surfaced in the deployment status. Note that progress will not be estimated during the time a deployment is paused. Defaults to 600s.', args=[d.arg(name='progressDeadlineSeconds', type=d.T.integer)]), - withProgressDeadlineSeconds(progressDeadlineSeconds): { spec+: { progressDeadlineSeconds: progressDeadlineSeconds } }, - '#withReplicas':: d.fn(help='Number of desired pods. This is a pointer to distinguish between explicit zero and not specified. Defaults to 1.', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { spec+: { replicas: replicas } }, - '#withRevisionHistoryLimit':: d.fn(help='The number of old ReplicaSets to retain to allow rollback. This is a pointer to distinguish between explicit zero and not specified. Defaults to 10.', args=[d.arg(name='revisionHistoryLimit', type=d.T.integer)]), - withRevisionHistoryLimit(revisionHistoryLimit): { spec+: { revisionHistoryLimit: revisionHistoryLimit } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/deploymentCondition.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/deploymentCondition.libsonnet deleted file mode 100644 index 7b0bb30f44ff..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/deploymentCondition.libsonnet +++ /dev/null @@ -1,16 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='deploymentCondition', url='', help='DeploymentCondition describes the state of a deployment at a certain point.'), - '#withLastTransitionTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastTransitionTime', type=d.T.string)]), - withLastTransitionTime(lastTransitionTime): { lastTransitionTime: lastTransitionTime }, - '#withLastUpdateTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastUpdateTime', type=d.T.string)]), - withLastUpdateTime(lastUpdateTime): { lastUpdateTime: lastUpdateTime }, - '#withMessage':: d.fn(help='A human readable message indicating details about the transition.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withReason':: d.fn(help="The reason for the condition's last transition.", args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#withType':: d.fn(help='Type of deployment condition.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/deploymentSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/deploymentSpec.libsonnet deleted file mode 100644 index 1c4669f174cb..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/deploymentSpec.libsonnet +++ /dev/null @@ -1,278 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='deploymentSpec', url='', help='DeploymentSpec is the specification of the desired behavior of the Deployment.'), - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { selector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { selector+: { matchLabels+: matchLabels } }, - }, - '#strategy':: d.obj(help='DeploymentStrategy describes how to replace existing pods with new ones.'), - strategy: { - '#rollingUpdate':: d.obj(help='Spec to control the desired behavior of rolling update.'), - rollingUpdate: { - '#withMaxSurge':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxSurge', type=d.T.string)]), - withMaxSurge(maxSurge): { strategy+: { rollingUpdate+: { maxSurge: maxSurge } } }, - '#withMaxUnavailable':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxUnavailable', type=d.T.string)]), - withMaxUnavailable(maxUnavailable): { strategy+: { rollingUpdate+: { maxUnavailable: maxUnavailable } } }, - }, - '#withType':: d.fn(help='Type of deployment. Can be "Recreate" or "RollingUpdate". Default is RollingUpdate.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { strategy+: { type: type } }, - }, - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { template+: { metadata+: { annotations: annotations } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { template+: { metadata+: { annotations+: annotations } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { template+: { metadata+: { clusterName: clusterName } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { template+: { metadata+: { creationTimestamp: creationTimestamp } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { template+: { metadata+: { generateName: generateName } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { template+: { metadata+: { generation: generation } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { template+: { metadata+: { labels: labels } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { template+: { metadata+: { labels+: labels } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { template+: { metadata+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { template+: { metadata+: { namespace: namespace } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { template+: { metadata+: { resourceVersion: resourceVersion } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { template+: { metadata+: { selfLink: selfLink } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { template+: { metadata+: { uid: uid } } }, - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } }, - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - }, - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } }, - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } }, - }, - '#seccompProfile':: d.obj(help="SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set."), - seccompProfile: { - '#withLocalhostProfile':: d.fn(help="localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is 'Localhost'.", args=[d.arg(name='localhostProfile', type=d.T.string)]), - withLocalhostProfile(localhostProfile): { template+: { spec+: { securityContext+: { seccompProfile+: { localhostProfile: localhostProfile } } } } }, - '#withType':: d.fn(help='type indicates which kind of seccomp profile will be applied. Valid options are:\n\nLocalhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { template+: { spec+: { securityContext+: { seccompProfile+: { type: type } } } } }, - }, - '#windowsOptions':: d.obj(help='WindowsSecurityContextOptions contain Windows-specific options and credentials.'), - windowsOptions: { - '#withGmsaCredentialSpec':: d.fn(help='GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.', args=[d.arg(name='gmsaCredentialSpec', type=d.T.string)]), - withGmsaCredentialSpec(gmsaCredentialSpec): { template+: { spec+: { securityContext+: { windowsOptions+: { gmsaCredentialSpec: gmsaCredentialSpec } } } } }, - '#withGmsaCredentialSpecName':: d.fn(help='GMSACredentialSpecName is the name of the GMSA credential spec to use.', args=[d.arg(name='gmsaCredentialSpecName', type=d.T.string)]), - withGmsaCredentialSpecName(gmsaCredentialSpecName): { template+: { spec+: { securityContext+: { windowsOptions+: { gmsaCredentialSpecName: gmsaCredentialSpecName } } } } }, - '#withRunAsUserName':: d.fn(help='The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsUserName', type=d.T.string)]), - withRunAsUserName(runAsUserName): { template+: { spec+: { securityContext+: { windowsOptions+: { runAsUserName: runAsUserName } } } } }, - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } }, - '#withFsGroupChangePolicy':: d.fn(help='fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used.', args=[d.arg(name='fsGroupChangePolicy', type=d.T.string)]), - withFsGroupChangePolicy(fsGroupChangePolicy): { template+: { spec+: { securityContext+: { fsGroupChangePolicy: fsGroupChangePolicy } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } }, - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { template+: { spec+: { dnsPolicy: dnsPolicy } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { template+: { spec+: { enableServiceLinks: enableServiceLinks } } }, - '#withEphemeralContainers':: d.fn(help="List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. This field is alpha-level and is only honored by servers that enable the EphemeralContainers feature.", args=[d.arg(name='ephemeralContainers', type=d.T.array)]), - withEphemeralContainers(ephemeralContainers): { template+: { spec+: { ephemeralContainers: if std.isArray(v=ephemeralContainers) then ephemeralContainers else [ephemeralContainers] } } }, - '#withEphemeralContainersMixin':: d.fn(help="List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. This field is alpha-level and is only honored by servers that enable the EphemeralContainers feature.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='ephemeralContainers', type=d.T.array)]), - withEphemeralContainersMixin(ephemeralContainers): { template+: { spec+: { ephemeralContainers+: if std.isArray(v=ephemeralContainers) then ephemeralContainers else [ephemeralContainers] } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { template+: { spec+: { hostIPC: hostIPC } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { template+: { spec+: { hostNetwork: hostNetwork } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { template+: { spec+: { hostPID: hostPID } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { template+: { spec+: { hostname: hostname } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { template+: { spec+: { nodeName: nodeName } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { template+: { spec+: { nodeSelector: nodeSelector } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { template+: { spec+: { nodeSelector+: nodeSelector } } }, - '#withOverhead':: d.fn(help='Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/20190226-pod-overhead.md This field is alpha-level as of Kubernetes v1.16, and is only honored by servers that enable the PodOverhead feature.', args=[d.arg(name='overhead', type=d.T.object)]), - withOverhead(overhead): { template+: { spec+: { overhead: overhead } } }, - '#withOverheadMixin':: d.fn(help='Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/20190226-pod-overhead.md This field is alpha-level as of Kubernetes v1.16, and is only honored by servers that enable the PodOverhead feature.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='overhead', type=d.T.object)]), - withOverheadMixin(overhead): { template+: { spec+: { overhead+: overhead } } }, - '#withPreemptionPolicy':: d.fn(help='PreemptionPolicy is the Policy for preempting pods with lower priority. One of Never, PreemptLowerPriority. Defaults to PreemptLowerPriority if unset. This field is beta-level, gated by the NonPreemptingPriority feature-gate.', args=[d.arg(name='preemptionPolicy', type=d.T.string)]), - withPreemptionPolicy(preemptionPolicy): { template+: { spec+: { preemptionPolicy: preemptionPolicy } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { template+: { spec+: { priority: priority } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { template+: { spec+: { priorityClassName: priorityClassName } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { template+: { spec+: { restartPolicy: restartPolicy } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is a beta feature as of Kubernetes v1.14.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { template+: { spec+: { runtimeClassName: runtimeClassName } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { template+: { spec+: { schedulerName: schedulerName } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { template+: { spec+: { serviceAccount: serviceAccount } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { template+: { spec+: { serviceAccountName: serviceAccountName } } }, - '#withSetHostnameAsFQDN':: d.fn(help="If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default). In Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname). In Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters to FQDN. If a pod does not have FQDN, this has no effect. Default to false.", args=[d.arg(name='setHostnameAsFQDN', type=d.T.boolean)]), - withSetHostnameAsFQDN(setHostnameAsFQDN): { template+: { spec+: { setHostnameAsFQDN: setHostnameAsFQDN } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { template+: { spec+: { subdomain: subdomain } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } }, - '#withTopologySpreadConstraints':: d.fn(help='TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed.', args=[d.arg(name='topologySpreadConstraints', type=d.T.array)]), - withTopologySpreadConstraints(topologySpreadConstraints): { template+: { spec+: { topologySpreadConstraints: if std.isArray(v=topologySpreadConstraints) then topologySpreadConstraints else [topologySpreadConstraints] } } }, - '#withTopologySpreadConstraintsMixin':: d.fn(help='TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='topologySpreadConstraints', type=d.T.array)]), - withTopologySpreadConstraintsMixin(topologySpreadConstraints): { template+: { spec+: { topologySpreadConstraints+: if std.isArray(v=topologySpreadConstraints) then topologySpreadConstraints else [topologySpreadConstraints] } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } }, - }, - }, - '#withMinReadySeconds':: d.fn(help='Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)', args=[d.arg(name='minReadySeconds', type=d.T.integer)]), - withMinReadySeconds(minReadySeconds): { minReadySeconds: minReadySeconds }, - '#withPaused':: d.fn(help='Indicates that the deployment is paused.', args=[d.arg(name='paused', type=d.T.boolean)]), - withPaused(paused): { paused: paused }, - '#withProgressDeadlineSeconds':: d.fn(help='The maximum time in seconds for a deployment to make progress before it is considered to be failed. The deployment controller will continue to process failed deployments and a condition with a ProgressDeadlineExceeded reason will be surfaced in the deployment status. Note that progress will not be estimated during the time a deployment is paused. Defaults to 600s.', args=[d.arg(name='progressDeadlineSeconds', type=d.T.integer)]), - withProgressDeadlineSeconds(progressDeadlineSeconds): { progressDeadlineSeconds: progressDeadlineSeconds }, - '#withReplicas':: d.fn(help='Number of desired pods. This is a pointer to distinguish between explicit zero and not specified. Defaults to 1.', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { replicas: replicas }, - '#withRevisionHistoryLimit':: d.fn(help='The number of old ReplicaSets to retain to allow rollback. This is a pointer to distinguish between explicit zero and not specified. Defaults to 10.', args=[d.arg(name='revisionHistoryLimit', type=d.T.integer)]), - withRevisionHistoryLimit(revisionHistoryLimit): { revisionHistoryLimit: revisionHistoryLimit }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/deploymentStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/deploymentStatus.libsonnet deleted file mode 100644 index 30eed867943f..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/deploymentStatus.libsonnet +++ /dev/null @@ -1,24 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='deploymentStatus', url='', help='DeploymentStatus is the most recently observed status of the Deployment.'), - '#withAvailableReplicas':: d.fn(help='Total number of available pods (ready for at least minReadySeconds) targeted by this deployment.', args=[d.arg(name='availableReplicas', type=d.T.integer)]), - withAvailableReplicas(availableReplicas): { availableReplicas: availableReplicas }, - '#withCollisionCount':: d.fn(help='Count of hash collisions for the Deployment. The Deployment controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ReplicaSet.', args=[d.arg(name='collisionCount', type=d.T.integer)]), - withCollisionCount(collisionCount): { collisionCount: collisionCount }, - '#withConditions':: d.fn(help="Represents the latest available observations of a deployment's current state.", args=[d.arg(name='conditions', type=d.T.array)]), - withConditions(conditions): { conditions: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withConditionsMixin':: d.fn(help="Represents the latest available observations of a deployment's current state.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='conditions', type=d.T.array)]), - withConditionsMixin(conditions): { conditions+: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withObservedGeneration':: d.fn(help='The generation observed by the deployment controller.', args=[d.arg(name='observedGeneration', type=d.T.integer)]), - withObservedGeneration(observedGeneration): { observedGeneration: observedGeneration }, - '#withReadyReplicas':: d.fn(help='Total number of ready pods targeted by this deployment.', args=[d.arg(name='readyReplicas', type=d.T.integer)]), - withReadyReplicas(readyReplicas): { readyReplicas: readyReplicas }, - '#withReplicas':: d.fn(help='Total number of non-terminated pods targeted by this deployment (their labels match the selector).', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { replicas: replicas }, - '#withUnavailableReplicas':: d.fn(help='Total number of unavailable pods targeted by this deployment. This is the total number of pods that are still required for the deployment to have 100% available capacity. They may either be pods that are running but not yet available or pods that still have not been created.', args=[d.arg(name='unavailableReplicas', type=d.T.integer)]), - withUnavailableReplicas(unavailableReplicas): { unavailableReplicas: unavailableReplicas }, - '#withUpdatedReplicas':: d.fn(help='Total number of non-terminated pods targeted by this deployment that have the desired template spec.', args=[d.arg(name='updatedReplicas', type=d.T.integer)]), - withUpdatedReplicas(updatedReplicas): { updatedReplicas: updatedReplicas }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/deploymentStrategy.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/deploymentStrategy.libsonnet deleted file mode 100644 index aebf980782df..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/deploymentStrategy.libsonnet +++ /dev/null @@ -1,15 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='deploymentStrategy', url='', help='DeploymentStrategy describes how to replace existing pods with new ones.'), - '#rollingUpdate':: d.obj(help='Spec to control the desired behavior of rolling update.'), - rollingUpdate: { - '#withMaxSurge':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxSurge', type=d.T.string)]), - withMaxSurge(maxSurge): { rollingUpdate+: { maxSurge: maxSurge } }, - '#withMaxUnavailable':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxUnavailable', type=d.T.string)]), - withMaxUnavailable(maxUnavailable): { rollingUpdate+: { maxUnavailable: maxUnavailable } }, - }, - '#withType':: d.fn(help='Type of deployment. Can be "Recreate" or "RollingUpdate". Default is RollingUpdate.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/main.libsonnet deleted file mode 100644 index beecb814b3b9..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/main.libsonnet +++ /dev/null @@ -1,27 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1', url='', help=''), - controllerRevision: (import 'controllerRevision.libsonnet'), - daemonSet: (import 'daemonSet.libsonnet'), - daemonSetCondition: (import 'daemonSetCondition.libsonnet'), - daemonSetSpec: (import 'daemonSetSpec.libsonnet'), - daemonSetStatus: (import 'daemonSetStatus.libsonnet'), - daemonSetUpdateStrategy: (import 'daemonSetUpdateStrategy.libsonnet'), - deployment: (import 'deployment.libsonnet'), - deploymentCondition: (import 'deploymentCondition.libsonnet'), - deploymentSpec: (import 'deploymentSpec.libsonnet'), - deploymentStatus: (import 'deploymentStatus.libsonnet'), - deploymentStrategy: (import 'deploymentStrategy.libsonnet'), - replicaSet: (import 'replicaSet.libsonnet'), - replicaSetCondition: (import 'replicaSetCondition.libsonnet'), - replicaSetSpec: (import 'replicaSetSpec.libsonnet'), - replicaSetStatus: (import 'replicaSetStatus.libsonnet'), - rollingUpdateDaemonSet: (import 'rollingUpdateDaemonSet.libsonnet'), - rollingUpdateDeployment: (import 'rollingUpdateDeployment.libsonnet'), - rollingUpdateStatefulSetStrategy: (import 'rollingUpdateStatefulSetStrategy.libsonnet'), - statefulSet: (import 'statefulSet.libsonnet'), - statefulSetCondition: (import 'statefulSetCondition.libsonnet'), - statefulSetSpec: (import 'statefulSetSpec.libsonnet'), - statefulSetStatus: (import 'statefulSetStatus.libsonnet'), - statefulSetUpdateStrategy: (import 'statefulSetUpdateStrategy.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/replicaSet.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/replicaSet.libsonnet deleted file mode 100644 index 3136b87eb256..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/replicaSet.libsonnet +++ /dev/null @@ -1,313 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='replicaSet', url='', help='ReplicaSet ensures that a specified number of pod replicas are running at any given time.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Replicaset', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'apps/v1', - kind: 'ReplicaSet', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='ReplicaSetSpec is the specification of a ReplicaSet.'), - spec: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { spec+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { spec+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { spec+: { selector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { spec+: { selector+: { matchLabels+: matchLabels } } }, - }, - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { spec+: { template+: { metadata+: { annotations: annotations } } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { spec+: { template+: { metadata+: { annotations+: annotations } } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { spec+: { template+: { metadata+: { clusterName: clusterName } } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { spec+: { template+: { metadata+: { creationTimestamp: creationTimestamp } } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { spec+: { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { spec+: { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { spec+: { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { spec+: { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { spec+: { template+: { metadata+: { generateName: generateName } } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { spec+: { template+: { metadata+: { generation: generation } } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { spec+: { template+: { metadata+: { labels: labels } } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { spec+: { template+: { metadata+: { labels+: labels } } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { spec+: { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { spec+: { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { template+: { metadata+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { template+: { metadata+: { namespace: namespace } } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { spec+: { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { spec+: { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { spec+: { template+: { metadata+: { resourceVersion: resourceVersion } } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { spec+: { template+: { metadata+: { selfLink: selfLink } } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { template+: { metadata+: { uid: uid } } } }, - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } }, - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - }, - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { spec+: { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { spec+: { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { spec+: { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { spec+: { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { spec+: { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { spec+: { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } } }, - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } } }, - }, - '#seccompProfile':: d.obj(help="SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set."), - seccompProfile: { - '#withLocalhostProfile':: d.fn(help="localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is 'Localhost'.", args=[d.arg(name='localhostProfile', type=d.T.string)]), - withLocalhostProfile(localhostProfile): { spec+: { template+: { spec+: { securityContext+: { seccompProfile+: { localhostProfile: localhostProfile } } } } } }, - '#withType':: d.fn(help='type indicates which kind of seccomp profile will be applied. Valid options are:\n\nLocalhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { template+: { spec+: { securityContext+: { seccompProfile+: { type: type } } } } } }, - }, - '#windowsOptions':: d.obj(help='WindowsSecurityContextOptions contain Windows-specific options and credentials.'), - windowsOptions: { - '#withGmsaCredentialSpec':: d.fn(help='GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.', args=[d.arg(name='gmsaCredentialSpec', type=d.T.string)]), - withGmsaCredentialSpec(gmsaCredentialSpec): { spec+: { template+: { spec+: { securityContext+: { windowsOptions+: { gmsaCredentialSpec: gmsaCredentialSpec } } } } } }, - '#withGmsaCredentialSpecName':: d.fn(help='GMSACredentialSpecName is the name of the GMSA credential spec to use.', args=[d.arg(name='gmsaCredentialSpecName', type=d.T.string)]), - withGmsaCredentialSpecName(gmsaCredentialSpecName): { spec+: { template+: { spec+: { securityContext+: { windowsOptions+: { gmsaCredentialSpecName: gmsaCredentialSpecName } } } } } }, - '#withRunAsUserName':: d.fn(help='The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsUserName', type=d.T.string)]), - withRunAsUserName(runAsUserName): { spec+: { template+: { spec+: { securityContext+: { windowsOptions+: { runAsUserName: runAsUserName } } } } } }, - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { spec+: { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } } }, - '#withFsGroupChangePolicy':: d.fn(help='fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used.', args=[d.arg(name='fsGroupChangePolicy', type=d.T.string)]), - withFsGroupChangePolicy(fsGroupChangePolicy): { spec+: { template+: { spec+: { securityContext+: { fsGroupChangePolicy: fsGroupChangePolicy } } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { spec+: { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { spec+: { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { spec+: { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { spec+: { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { spec+: { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { spec+: { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { spec+: { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } }, - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { spec+: { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { spec+: { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { spec+: { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { spec+: { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { spec+: { template+: { spec+: { dnsPolicy: dnsPolicy } } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { spec+: { template+: { spec+: { enableServiceLinks: enableServiceLinks } } } }, - '#withEphemeralContainers':: d.fn(help="List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. This field is alpha-level and is only honored by servers that enable the EphemeralContainers feature.", args=[d.arg(name='ephemeralContainers', type=d.T.array)]), - withEphemeralContainers(ephemeralContainers): { spec+: { template+: { spec+: { ephemeralContainers: if std.isArray(v=ephemeralContainers) then ephemeralContainers else [ephemeralContainers] } } } }, - '#withEphemeralContainersMixin':: d.fn(help="List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. This field is alpha-level and is only honored by servers that enable the EphemeralContainers feature.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='ephemeralContainers', type=d.T.array)]), - withEphemeralContainersMixin(ephemeralContainers): { spec+: { template+: { spec+: { ephemeralContainers+: if std.isArray(v=ephemeralContainers) then ephemeralContainers else [ephemeralContainers] } } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { spec+: { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { spec+: { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { spec+: { template+: { spec+: { hostIPC: hostIPC } } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { spec+: { template+: { spec+: { hostNetwork: hostNetwork } } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { spec+: { template+: { spec+: { hostPID: hostPID } } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { spec+: { template+: { spec+: { hostname: hostname } } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { spec+: { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { spec+: { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { spec+: { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { spec+: { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { spec+: { template+: { spec+: { nodeName: nodeName } } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { spec+: { template+: { spec+: { nodeSelector: nodeSelector } } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { spec+: { template+: { spec+: { nodeSelector+: nodeSelector } } } }, - '#withOverhead':: d.fn(help='Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/20190226-pod-overhead.md This field is alpha-level as of Kubernetes v1.16, and is only honored by servers that enable the PodOverhead feature.', args=[d.arg(name='overhead', type=d.T.object)]), - withOverhead(overhead): { spec+: { template+: { spec+: { overhead: overhead } } } }, - '#withOverheadMixin':: d.fn(help='Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/20190226-pod-overhead.md This field is alpha-level as of Kubernetes v1.16, and is only honored by servers that enable the PodOverhead feature.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='overhead', type=d.T.object)]), - withOverheadMixin(overhead): { spec+: { template+: { spec+: { overhead+: overhead } } } }, - '#withPreemptionPolicy':: d.fn(help='PreemptionPolicy is the Policy for preempting pods with lower priority. One of Never, PreemptLowerPriority. Defaults to PreemptLowerPriority if unset. This field is beta-level, gated by the NonPreemptingPriority feature-gate.', args=[d.arg(name='preemptionPolicy', type=d.T.string)]), - withPreemptionPolicy(preemptionPolicy): { spec+: { template+: { spec+: { preemptionPolicy: preemptionPolicy } } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { spec+: { template+: { spec+: { priority: priority } } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { spec+: { template+: { spec+: { priorityClassName: priorityClassName } } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { spec+: { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { spec+: { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { spec+: { template+: { spec+: { restartPolicy: restartPolicy } } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is a beta feature as of Kubernetes v1.14.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { spec+: { template+: { spec+: { runtimeClassName: runtimeClassName } } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { spec+: { template+: { spec+: { schedulerName: schedulerName } } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { spec+: { template+: { spec+: { serviceAccount: serviceAccount } } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { spec+: { template+: { spec+: { serviceAccountName: serviceAccountName } } } }, - '#withSetHostnameAsFQDN':: d.fn(help="If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default). In Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname). In Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters to FQDN. If a pod does not have FQDN, this has no effect. Default to false.", args=[d.arg(name='setHostnameAsFQDN', type=d.T.boolean)]), - withSetHostnameAsFQDN(setHostnameAsFQDN): { spec+: { template+: { spec+: { setHostnameAsFQDN: setHostnameAsFQDN } } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { spec+: { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { spec+: { template+: { spec+: { subdomain: subdomain } } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { spec+: { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { spec+: { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { spec+: { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } }, - '#withTopologySpreadConstraints':: d.fn(help='TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed.', args=[d.arg(name='topologySpreadConstraints', type=d.T.array)]), - withTopologySpreadConstraints(topologySpreadConstraints): { spec+: { template+: { spec+: { topologySpreadConstraints: if std.isArray(v=topologySpreadConstraints) then topologySpreadConstraints else [topologySpreadConstraints] } } } }, - '#withTopologySpreadConstraintsMixin':: d.fn(help='TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='topologySpreadConstraints', type=d.T.array)]), - withTopologySpreadConstraintsMixin(topologySpreadConstraints): { spec+: { template+: { spec+: { topologySpreadConstraints+: if std.isArray(v=topologySpreadConstraints) then topologySpreadConstraints else [topologySpreadConstraints] } } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { spec+: { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { spec+: { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } } }, - }, - }, - '#withMinReadySeconds':: d.fn(help='Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)', args=[d.arg(name='minReadySeconds', type=d.T.integer)]), - withMinReadySeconds(minReadySeconds): { spec+: { minReadySeconds: minReadySeconds } }, - '#withReplicas':: d.fn(help='Replicas is the number of desired replicas. This is a pointer to distinguish between explicit zero and unspecified. Defaults to 1. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { spec+: { replicas: replicas } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/replicaSetCondition.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/replicaSetCondition.libsonnet deleted file mode 100644 index de9f448b195c..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/replicaSetCondition.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='replicaSetCondition', url='', help='ReplicaSetCondition describes the state of a replica set at a certain point.'), - '#withLastTransitionTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastTransitionTime', type=d.T.string)]), - withLastTransitionTime(lastTransitionTime): { lastTransitionTime: lastTransitionTime }, - '#withMessage':: d.fn(help='A human readable message indicating details about the transition.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withReason':: d.fn(help="The reason for the condition's last transition.", args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#withType':: d.fn(help='Type of replica set condition.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/replicaSetSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/replicaSetSpec.libsonnet deleted file mode 100644 index 5f1df0ac3034..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/replicaSetSpec.libsonnet +++ /dev/null @@ -1,260 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='replicaSetSpec', url='', help='ReplicaSetSpec is the specification of a ReplicaSet.'), - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { selector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { selector+: { matchLabels+: matchLabels } }, - }, - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { template+: { metadata+: { annotations: annotations } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { template+: { metadata+: { annotations+: annotations } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { template+: { metadata+: { clusterName: clusterName } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { template+: { metadata+: { creationTimestamp: creationTimestamp } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { template+: { metadata+: { generateName: generateName } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { template+: { metadata+: { generation: generation } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { template+: { metadata+: { labels: labels } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { template+: { metadata+: { labels+: labels } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { template+: { metadata+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { template+: { metadata+: { namespace: namespace } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { template+: { metadata+: { resourceVersion: resourceVersion } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { template+: { metadata+: { selfLink: selfLink } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { template+: { metadata+: { uid: uid } } }, - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } }, - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - }, - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } }, - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } }, - }, - '#seccompProfile':: d.obj(help="SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set."), - seccompProfile: { - '#withLocalhostProfile':: d.fn(help="localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is 'Localhost'.", args=[d.arg(name='localhostProfile', type=d.T.string)]), - withLocalhostProfile(localhostProfile): { template+: { spec+: { securityContext+: { seccompProfile+: { localhostProfile: localhostProfile } } } } }, - '#withType':: d.fn(help='type indicates which kind of seccomp profile will be applied. Valid options are:\n\nLocalhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { template+: { spec+: { securityContext+: { seccompProfile+: { type: type } } } } }, - }, - '#windowsOptions':: d.obj(help='WindowsSecurityContextOptions contain Windows-specific options and credentials.'), - windowsOptions: { - '#withGmsaCredentialSpec':: d.fn(help='GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.', args=[d.arg(name='gmsaCredentialSpec', type=d.T.string)]), - withGmsaCredentialSpec(gmsaCredentialSpec): { template+: { spec+: { securityContext+: { windowsOptions+: { gmsaCredentialSpec: gmsaCredentialSpec } } } } }, - '#withGmsaCredentialSpecName':: d.fn(help='GMSACredentialSpecName is the name of the GMSA credential spec to use.', args=[d.arg(name='gmsaCredentialSpecName', type=d.T.string)]), - withGmsaCredentialSpecName(gmsaCredentialSpecName): { template+: { spec+: { securityContext+: { windowsOptions+: { gmsaCredentialSpecName: gmsaCredentialSpecName } } } } }, - '#withRunAsUserName':: d.fn(help='The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsUserName', type=d.T.string)]), - withRunAsUserName(runAsUserName): { template+: { spec+: { securityContext+: { windowsOptions+: { runAsUserName: runAsUserName } } } } }, - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } }, - '#withFsGroupChangePolicy':: d.fn(help='fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used.', args=[d.arg(name='fsGroupChangePolicy', type=d.T.string)]), - withFsGroupChangePolicy(fsGroupChangePolicy): { template+: { spec+: { securityContext+: { fsGroupChangePolicy: fsGroupChangePolicy } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } }, - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { template+: { spec+: { dnsPolicy: dnsPolicy } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { template+: { spec+: { enableServiceLinks: enableServiceLinks } } }, - '#withEphemeralContainers':: d.fn(help="List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. This field is alpha-level and is only honored by servers that enable the EphemeralContainers feature.", args=[d.arg(name='ephemeralContainers', type=d.T.array)]), - withEphemeralContainers(ephemeralContainers): { template+: { spec+: { ephemeralContainers: if std.isArray(v=ephemeralContainers) then ephemeralContainers else [ephemeralContainers] } } }, - '#withEphemeralContainersMixin':: d.fn(help="List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. This field is alpha-level and is only honored by servers that enable the EphemeralContainers feature.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='ephemeralContainers', type=d.T.array)]), - withEphemeralContainersMixin(ephemeralContainers): { template+: { spec+: { ephemeralContainers+: if std.isArray(v=ephemeralContainers) then ephemeralContainers else [ephemeralContainers] } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { template+: { spec+: { hostIPC: hostIPC } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { template+: { spec+: { hostNetwork: hostNetwork } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { template+: { spec+: { hostPID: hostPID } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { template+: { spec+: { hostname: hostname } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { template+: { spec+: { nodeName: nodeName } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { template+: { spec+: { nodeSelector: nodeSelector } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { template+: { spec+: { nodeSelector+: nodeSelector } } }, - '#withOverhead':: d.fn(help='Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/20190226-pod-overhead.md This field is alpha-level as of Kubernetes v1.16, and is only honored by servers that enable the PodOverhead feature.', args=[d.arg(name='overhead', type=d.T.object)]), - withOverhead(overhead): { template+: { spec+: { overhead: overhead } } }, - '#withOverheadMixin':: d.fn(help='Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/20190226-pod-overhead.md This field is alpha-level as of Kubernetes v1.16, and is only honored by servers that enable the PodOverhead feature.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='overhead', type=d.T.object)]), - withOverheadMixin(overhead): { template+: { spec+: { overhead+: overhead } } }, - '#withPreemptionPolicy':: d.fn(help='PreemptionPolicy is the Policy for preempting pods with lower priority. One of Never, PreemptLowerPriority. Defaults to PreemptLowerPriority if unset. This field is beta-level, gated by the NonPreemptingPriority feature-gate.', args=[d.arg(name='preemptionPolicy', type=d.T.string)]), - withPreemptionPolicy(preemptionPolicy): { template+: { spec+: { preemptionPolicy: preemptionPolicy } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { template+: { spec+: { priority: priority } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { template+: { spec+: { priorityClassName: priorityClassName } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { template+: { spec+: { restartPolicy: restartPolicy } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is a beta feature as of Kubernetes v1.14.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { template+: { spec+: { runtimeClassName: runtimeClassName } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { template+: { spec+: { schedulerName: schedulerName } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { template+: { spec+: { serviceAccount: serviceAccount } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { template+: { spec+: { serviceAccountName: serviceAccountName } } }, - '#withSetHostnameAsFQDN':: d.fn(help="If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default). In Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname). In Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters to FQDN. If a pod does not have FQDN, this has no effect. Default to false.", args=[d.arg(name='setHostnameAsFQDN', type=d.T.boolean)]), - withSetHostnameAsFQDN(setHostnameAsFQDN): { template+: { spec+: { setHostnameAsFQDN: setHostnameAsFQDN } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { template+: { spec+: { subdomain: subdomain } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } }, - '#withTopologySpreadConstraints':: d.fn(help='TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed.', args=[d.arg(name='topologySpreadConstraints', type=d.T.array)]), - withTopologySpreadConstraints(topologySpreadConstraints): { template+: { spec+: { topologySpreadConstraints: if std.isArray(v=topologySpreadConstraints) then topologySpreadConstraints else [topologySpreadConstraints] } } }, - '#withTopologySpreadConstraintsMixin':: d.fn(help='TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='topologySpreadConstraints', type=d.T.array)]), - withTopologySpreadConstraintsMixin(topologySpreadConstraints): { template+: { spec+: { topologySpreadConstraints+: if std.isArray(v=topologySpreadConstraints) then topologySpreadConstraints else [topologySpreadConstraints] } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } }, - }, - }, - '#withMinReadySeconds':: d.fn(help='Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)', args=[d.arg(name='minReadySeconds', type=d.T.integer)]), - withMinReadySeconds(minReadySeconds): { minReadySeconds: minReadySeconds }, - '#withReplicas':: d.fn(help='Replicas is the number of desired replicas. This is a pointer to distinguish between explicit zero and unspecified. Defaults to 1. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { replicas: replicas }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/replicaSetStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/replicaSetStatus.libsonnet deleted file mode 100644 index d4249a73c490..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/replicaSetStatus.libsonnet +++ /dev/null @@ -1,20 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='replicaSetStatus', url='', help='ReplicaSetStatus represents the current status of a ReplicaSet.'), - '#withAvailableReplicas':: d.fn(help='The number of available replicas (ready for at least minReadySeconds) for this replica set.', args=[d.arg(name='availableReplicas', type=d.T.integer)]), - withAvailableReplicas(availableReplicas): { availableReplicas: availableReplicas }, - '#withConditions':: d.fn(help="Represents the latest available observations of a replica set's current state.", args=[d.arg(name='conditions', type=d.T.array)]), - withConditions(conditions): { conditions: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withConditionsMixin':: d.fn(help="Represents the latest available observations of a replica set's current state.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='conditions', type=d.T.array)]), - withConditionsMixin(conditions): { conditions+: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withFullyLabeledReplicas':: d.fn(help='The number of pods that have labels matching the labels of the pod template of the replicaset.', args=[d.arg(name='fullyLabeledReplicas', type=d.T.integer)]), - withFullyLabeledReplicas(fullyLabeledReplicas): { fullyLabeledReplicas: fullyLabeledReplicas }, - '#withObservedGeneration':: d.fn(help='ObservedGeneration reflects the generation of the most recently observed ReplicaSet.', args=[d.arg(name='observedGeneration', type=d.T.integer)]), - withObservedGeneration(observedGeneration): { observedGeneration: observedGeneration }, - '#withReadyReplicas':: d.fn(help='The number of ready replicas for this replica set.', args=[d.arg(name='readyReplicas', type=d.T.integer)]), - withReadyReplicas(readyReplicas): { readyReplicas: readyReplicas }, - '#withReplicas':: d.fn(help='Replicas is the most recently oberved number of replicas. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { replicas: replicas }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/rollingUpdateDaemonSet.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/rollingUpdateDaemonSet.libsonnet deleted file mode 100644 index f95cc1a140f8..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/rollingUpdateDaemonSet.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='rollingUpdateDaemonSet', url='', help='Spec to control the desired behavior of daemon set rolling update.'), - '#withMaxSurge':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxSurge', type=d.T.string)]), - withMaxSurge(maxSurge): { maxSurge: maxSurge }, - '#withMaxUnavailable':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxUnavailable', type=d.T.string)]), - withMaxUnavailable(maxUnavailable): { maxUnavailable: maxUnavailable }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/rollingUpdateDeployment.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/rollingUpdateDeployment.libsonnet deleted file mode 100644 index 113e3e3befaf..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/rollingUpdateDeployment.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='rollingUpdateDeployment', url='', help='Spec to control the desired behavior of rolling update.'), - '#withMaxSurge':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxSurge', type=d.T.string)]), - withMaxSurge(maxSurge): { maxSurge: maxSurge }, - '#withMaxUnavailable':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxUnavailable', type=d.T.string)]), - withMaxUnavailable(maxUnavailable): { maxUnavailable: maxUnavailable }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/rollingUpdateStatefulSetStrategy.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/rollingUpdateStatefulSetStrategy.libsonnet deleted file mode 100644 index 074c1fe8a50a..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/rollingUpdateStatefulSetStrategy.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='rollingUpdateStatefulSetStrategy', url='', help='RollingUpdateStatefulSetStrategy is used to communicate parameter for RollingUpdateStatefulSetStrategyType.'), - '#withPartition':: d.fn(help='Partition indicates the ordinal at which the StatefulSet should be partitioned. Default value is 0.', args=[d.arg(name='partition', type=d.T.integer)]), - withPartition(partition): { partition: partition }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/statefulSet.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/statefulSet.libsonnet deleted file mode 100644 index 153d9682cd3b..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/statefulSet.libsonnet +++ /dev/null @@ -1,331 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='statefulSet', url='', help='StatefulSet represents a set of pods with consistent identities. Identities are defined as:\n - Network: A single stable DNS and hostname.\n - Storage: As many VolumeClaims as requested.\nThe StatefulSet guarantees that a given network identity will always map to the same storage identity.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Statefulset', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'apps/v1', - kind: 'StatefulSet', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='A StatefulSetSpec is the specification of a StatefulSet.'), - spec: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { spec+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { spec+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { spec+: { selector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { spec+: { selector+: { matchLabels+: matchLabels } } }, - }, - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { spec+: { template+: { metadata+: { annotations: annotations } } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { spec+: { template+: { metadata+: { annotations+: annotations } } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { spec+: { template+: { metadata+: { clusterName: clusterName } } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { spec+: { template+: { metadata+: { creationTimestamp: creationTimestamp } } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { spec+: { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { spec+: { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { spec+: { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { spec+: { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { spec+: { template+: { metadata+: { generateName: generateName } } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { spec+: { template+: { metadata+: { generation: generation } } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { spec+: { template+: { metadata+: { labels: labels } } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { spec+: { template+: { metadata+: { labels+: labels } } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { spec+: { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { spec+: { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { template+: { metadata+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { template+: { metadata+: { namespace: namespace } } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { spec+: { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { spec+: { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { spec+: { template+: { metadata+: { resourceVersion: resourceVersion } } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { spec+: { template+: { metadata+: { selfLink: selfLink } } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { template+: { metadata+: { uid: uid } } } }, - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } }, - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - }, - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { spec+: { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { spec+: { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { spec+: { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { spec+: { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { spec+: { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { spec+: { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } } }, - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } } }, - }, - '#seccompProfile':: d.obj(help="SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set."), - seccompProfile: { - '#withLocalhostProfile':: d.fn(help="localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is 'Localhost'.", args=[d.arg(name='localhostProfile', type=d.T.string)]), - withLocalhostProfile(localhostProfile): { spec+: { template+: { spec+: { securityContext+: { seccompProfile+: { localhostProfile: localhostProfile } } } } } }, - '#withType':: d.fn(help='type indicates which kind of seccomp profile will be applied. Valid options are:\n\nLocalhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { template+: { spec+: { securityContext+: { seccompProfile+: { type: type } } } } } }, - }, - '#windowsOptions':: d.obj(help='WindowsSecurityContextOptions contain Windows-specific options and credentials.'), - windowsOptions: { - '#withGmsaCredentialSpec':: d.fn(help='GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.', args=[d.arg(name='gmsaCredentialSpec', type=d.T.string)]), - withGmsaCredentialSpec(gmsaCredentialSpec): { spec+: { template+: { spec+: { securityContext+: { windowsOptions+: { gmsaCredentialSpec: gmsaCredentialSpec } } } } } }, - '#withGmsaCredentialSpecName':: d.fn(help='GMSACredentialSpecName is the name of the GMSA credential spec to use.', args=[d.arg(name='gmsaCredentialSpecName', type=d.T.string)]), - withGmsaCredentialSpecName(gmsaCredentialSpecName): { spec+: { template+: { spec+: { securityContext+: { windowsOptions+: { gmsaCredentialSpecName: gmsaCredentialSpecName } } } } } }, - '#withRunAsUserName':: d.fn(help='The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsUserName', type=d.T.string)]), - withRunAsUserName(runAsUserName): { spec+: { template+: { spec+: { securityContext+: { windowsOptions+: { runAsUserName: runAsUserName } } } } } }, - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { spec+: { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } } }, - '#withFsGroupChangePolicy':: d.fn(help='fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used.', args=[d.arg(name='fsGroupChangePolicy', type=d.T.string)]), - withFsGroupChangePolicy(fsGroupChangePolicy): { spec+: { template+: { spec+: { securityContext+: { fsGroupChangePolicy: fsGroupChangePolicy } } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { spec+: { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { spec+: { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { spec+: { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { spec+: { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { spec+: { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { spec+: { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { spec+: { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } }, - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { spec+: { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { spec+: { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { spec+: { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { spec+: { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { spec+: { template+: { spec+: { dnsPolicy: dnsPolicy } } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { spec+: { template+: { spec+: { enableServiceLinks: enableServiceLinks } } } }, - '#withEphemeralContainers':: d.fn(help="List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. This field is alpha-level and is only honored by servers that enable the EphemeralContainers feature.", args=[d.arg(name='ephemeralContainers', type=d.T.array)]), - withEphemeralContainers(ephemeralContainers): { spec+: { template+: { spec+: { ephemeralContainers: if std.isArray(v=ephemeralContainers) then ephemeralContainers else [ephemeralContainers] } } } }, - '#withEphemeralContainersMixin':: d.fn(help="List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. This field is alpha-level and is only honored by servers that enable the EphemeralContainers feature.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='ephemeralContainers', type=d.T.array)]), - withEphemeralContainersMixin(ephemeralContainers): { spec+: { template+: { spec+: { ephemeralContainers+: if std.isArray(v=ephemeralContainers) then ephemeralContainers else [ephemeralContainers] } } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { spec+: { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { spec+: { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { spec+: { template+: { spec+: { hostIPC: hostIPC } } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { spec+: { template+: { spec+: { hostNetwork: hostNetwork } } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { spec+: { template+: { spec+: { hostPID: hostPID } } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { spec+: { template+: { spec+: { hostname: hostname } } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { spec+: { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { spec+: { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { spec+: { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { spec+: { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { spec+: { template+: { spec+: { nodeName: nodeName } } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { spec+: { template+: { spec+: { nodeSelector: nodeSelector } } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { spec+: { template+: { spec+: { nodeSelector+: nodeSelector } } } }, - '#withOverhead':: d.fn(help='Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/20190226-pod-overhead.md This field is alpha-level as of Kubernetes v1.16, and is only honored by servers that enable the PodOverhead feature.', args=[d.arg(name='overhead', type=d.T.object)]), - withOverhead(overhead): { spec+: { template+: { spec+: { overhead: overhead } } } }, - '#withOverheadMixin':: d.fn(help='Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/20190226-pod-overhead.md This field is alpha-level as of Kubernetes v1.16, and is only honored by servers that enable the PodOverhead feature.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='overhead', type=d.T.object)]), - withOverheadMixin(overhead): { spec+: { template+: { spec+: { overhead+: overhead } } } }, - '#withPreemptionPolicy':: d.fn(help='PreemptionPolicy is the Policy for preempting pods with lower priority. One of Never, PreemptLowerPriority. Defaults to PreemptLowerPriority if unset. This field is beta-level, gated by the NonPreemptingPriority feature-gate.', args=[d.arg(name='preemptionPolicy', type=d.T.string)]), - withPreemptionPolicy(preemptionPolicy): { spec+: { template+: { spec+: { preemptionPolicy: preemptionPolicy } } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { spec+: { template+: { spec+: { priority: priority } } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { spec+: { template+: { spec+: { priorityClassName: priorityClassName } } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { spec+: { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { spec+: { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { spec+: { template+: { spec+: { restartPolicy: restartPolicy } } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is a beta feature as of Kubernetes v1.14.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { spec+: { template+: { spec+: { runtimeClassName: runtimeClassName } } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { spec+: { template+: { spec+: { schedulerName: schedulerName } } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { spec+: { template+: { spec+: { serviceAccount: serviceAccount } } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { spec+: { template+: { spec+: { serviceAccountName: serviceAccountName } } } }, - '#withSetHostnameAsFQDN':: d.fn(help="If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default). In Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname). In Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters to FQDN. If a pod does not have FQDN, this has no effect. Default to false.", args=[d.arg(name='setHostnameAsFQDN', type=d.T.boolean)]), - withSetHostnameAsFQDN(setHostnameAsFQDN): { spec+: { template+: { spec+: { setHostnameAsFQDN: setHostnameAsFQDN } } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { spec+: { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { spec+: { template+: { spec+: { subdomain: subdomain } } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { spec+: { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { spec+: { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { spec+: { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } }, - '#withTopologySpreadConstraints':: d.fn(help='TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed.', args=[d.arg(name='topologySpreadConstraints', type=d.T.array)]), - withTopologySpreadConstraints(topologySpreadConstraints): { spec+: { template+: { spec+: { topologySpreadConstraints: if std.isArray(v=topologySpreadConstraints) then topologySpreadConstraints else [topologySpreadConstraints] } } } }, - '#withTopologySpreadConstraintsMixin':: d.fn(help='TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='topologySpreadConstraints', type=d.T.array)]), - withTopologySpreadConstraintsMixin(topologySpreadConstraints): { spec+: { template+: { spec+: { topologySpreadConstraints+: if std.isArray(v=topologySpreadConstraints) then topologySpreadConstraints else [topologySpreadConstraints] } } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { spec+: { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { spec+: { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } } }, - }, - }, - '#updateStrategy':: d.obj(help='StatefulSetUpdateStrategy indicates the strategy that the StatefulSet controller will use to perform updates. It includes any additional parameters necessary to perform the update for the indicated strategy.'), - updateStrategy: { - '#rollingUpdate':: d.obj(help='RollingUpdateStatefulSetStrategy is used to communicate parameter for RollingUpdateStatefulSetStrategyType.'), - rollingUpdate: { - '#withPartition':: d.fn(help='Partition indicates the ordinal at which the StatefulSet should be partitioned. Default value is 0.', args=[d.arg(name='partition', type=d.T.integer)]), - withPartition(partition): { spec+: { updateStrategy+: { rollingUpdate+: { partition: partition } } } }, - }, - '#withType':: d.fn(help='Type indicates the type of the StatefulSetUpdateStrategy. Default is RollingUpdate.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { updateStrategy+: { type: type } } }, - }, - '#withPodManagementPolicy':: d.fn(help='podManagementPolicy controls how pods are created during initial scale up, when replacing pods on nodes, or when scaling down. The default policy is `OrderedReady`, where pods are created in increasing order (pod-0, then pod-1, etc) and the controller will wait until each pod is ready before continuing. When scaling down, the pods are removed in the opposite order. The alternative policy is `Parallel` which will create pods in parallel to match the desired scale without waiting, and on scale down will delete all pods at once.', args=[d.arg(name='podManagementPolicy', type=d.T.string)]), - withPodManagementPolicy(podManagementPolicy): { spec+: { podManagementPolicy: podManagementPolicy } }, - '#withReplicas':: d.fn(help='replicas is the desired number of replicas of the given Template. These are replicas in the sense that they are instantiations of the same Template, but individual replicas also have a consistent identity. If unspecified, defaults to 1.', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { spec+: { replicas: replicas } }, - '#withRevisionHistoryLimit':: d.fn(help="revisionHistoryLimit is the maximum number of revisions that will be maintained in the StatefulSet's revision history. The revision history consists of all revisions not represented by a currently applied StatefulSetSpec version. The default value is 10.", args=[d.arg(name='revisionHistoryLimit', type=d.T.integer)]), - withRevisionHistoryLimit(revisionHistoryLimit): { spec+: { revisionHistoryLimit: revisionHistoryLimit } }, - '#withServiceName':: d.fn(help='serviceName is the name of the service that governs this StatefulSet. This service must exist before the StatefulSet, and is responsible for the network identity of the set. Pods get DNS/hostnames that follow the pattern: pod-specific-string.serviceName.default.svc.cluster.local where "pod-specific-string" is managed by the StatefulSet controller.', args=[d.arg(name='serviceName', type=d.T.string)]), - withServiceName(serviceName): { spec+: { serviceName: serviceName } }, - '#withVolumeClaimTemplates':: d.fn(help='volumeClaimTemplates is a list of claims that pods are allowed to reference. The StatefulSet controller is responsible for mapping network identities to claims in a way that maintains the identity of a pod. Every claim in this list must have at least one matching (by name) volumeMount in one container in the template. A claim in this list takes precedence over any volumes in the template, with the same name.', args=[d.arg(name='volumeClaimTemplates', type=d.T.array)]), - withVolumeClaimTemplates(volumeClaimTemplates): { spec+: { volumeClaimTemplates: if std.isArray(v=volumeClaimTemplates) then volumeClaimTemplates else [volumeClaimTemplates] } }, - '#withVolumeClaimTemplatesMixin':: d.fn(help='volumeClaimTemplates is a list of claims that pods are allowed to reference. The StatefulSet controller is responsible for mapping network identities to claims in a way that maintains the identity of a pod. Every claim in this list must have at least one matching (by name) volumeMount in one container in the template. A claim in this list takes precedence over any volumes in the template, with the same name.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumeClaimTemplates', type=d.T.array)]), - withVolumeClaimTemplatesMixin(volumeClaimTemplates): { spec+: { volumeClaimTemplates+: if std.isArray(v=volumeClaimTemplates) then volumeClaimTemplates else [volumeClaimTemplates] } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/statefulSetCondition.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/statefulSetCondition.libsonnet deleted file mode 100644 index f2bce71b2240..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/statefulSetCondition.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='statefulSetCondition', url='', help='StatefulSetCondition describes the state of a statefulset at a certain point.'), - '#withLastTransitionTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastTransitionTime', type=d.T.string)]), - withLastTransitionTime(lastTransitionTime): { lastTransitionTime: lastTransitionTime }, - '#withMessage':: d.fn(help='A human readable message indicating details about the transition.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withReason':: d.fn(help="The reason for the condition's last transition.", args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#withType':: d.fn(help='Type of statefulset condition.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/statefulSetSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/statefulSetSpec.libsonnet deleted file mode 100644 index 98473df9c3e6..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/statefulSetSpec.libsonnet +++ /dev/null @@ -1,278 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='statefulSetSpec', url='', help='A StatefulSetSpec is the specification of a StatefulSet.'), - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { selector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { selector+: { matchLabels+: matchLabels } }, - }, - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { template+: { metadata+: { annotations: annotations } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { template+: { metadata+: { annotations+: annotations } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { template+: { metadata+: { clusterName: clusterName } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { template+: { metadata+: { creationTimestamp: creationTimestamp } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { template+: { metadata+: { generateName: generateName } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { template+: { metadata+: { generation: generation } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { template+: { metadata+: { labels: labels } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { template+: { metadata+: { labels+: labels } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { template+: { metadata+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { template+: { metadata+: { namespace: namespace } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { template+: { metadata+: { resourceVersion: resourceVersion } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { template+: { metadata+: { selfLink: selfLink } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { template+: { metadata+: { uid: uid } } }, - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } }, - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - }, - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } }, - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } }, - }, - '#seccompProfile':: d.obj(help="SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set."), - seccompProfile: { - '#withLocalhostProfile':: d.fn(help="localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is 'Localhost'.", args=[d.arg(name='localhostProfile', type=d.T.string)]), - withLocalhostProfile(localhostProfile): { template+: { spec+: { securityContext+: { seccompProfile+: { localhostProfile: localhostProfile } } } } }, - '#withType':: d.fn(help='type indicates which kind of seccomp profile will be applied. Valid options are:\n\nLocalhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { template+: { spec+: { securityContext+: { seccompProfile+: { type: type } } } } }, - }, - '#windowsOptions':: d.obj(help='WindowsSecurityContextOptions contain Windows-specific options and credentials.'), - windowsOptions: { - '#withGmsaCredentialSpec':: d.fn(help='GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.', args=[d.arg(name='gmsaCredentialSpec', type=d.T.string)]), - withGmsaCredentialSpec(gmsaCredentialSpec): { template+: { spec+: { securityContext+: { windowsOptions+: { gmsaCredentialSpec: gmsaCredentialSpec } } } } }, - '#withGmsaCredentialSpecName':: d.fn(help='GMSACredentialSpecName is the name of the GMSA credential spec to use.', args=[d.arg(name='gmsaCredentialSpecName', type=d.T.string)]), - withGmsaCredentialSpecName(gmsaCredentialSpecName): { template+: { spec+: { securityContext+: { windowsOptions+: { gmsaCredentialSpecName: gmsaCredentialSpecName } } } } }, - '#withRunAsUserName':: d.fn(help='The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsUserName', type=d.T.string)]), - withRunAsUserName(runAsUserName): { template+: { spec+: { securityContext+: { windowsOptions+: { runAsUserName: runAsUserName } } } } }, - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } }, - '#withFsGroupChangePolicy':: d.fn(help='fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used.', args=[d.arg(name='fsGroupChangePolicy', type=d.T.string)]), - withFsGroupChangePolicy(fsGroupChangePolicy): { template+: { spec+: { securityContext+: { fsGroupChangePolicy: fsGroupChangePolicy } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } }, - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { template+: { spec+: { dnsPolicy: dnsPolicy } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { template+: { spec+: { enableServiceLinks: enableServiceLinks } } }, - '#withEphemeralContainers':: d.fn(help="List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. This field is alpha-level and is only honored by servers that enable the EphemeralContainers feature.", args=[d.arg(name='ephemeralContainers', type=d.T.array)]), - withEphemeralContainers(ephemeralContainers): { template+: { spec+: { ephemeralContainers: if std.isArray(v=ephemeralContainers) then ephemeralContainers else [ephemeralContainers] } } }, - '#withEphemeralContainersMixin':: d.fn(help="List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. This field is alpha-level and is only honored by servers that enable the EphemeralContainers feature.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='ephemeralContainers', type=d.T.array)]), - withEphemeralContainersMixin(ephemeralContainers): { template+: { spec+: { ephemeralContainers+: if std.isArray(v=ephemeralContainers) then ephemeralContainers else [ephemeralContainers] } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { template+: { spec+: { hostIPC: hostIPC } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { template+: { spec+: { hostNetwork: hostNetwork } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { template+: { spec+: { hostPID: hostPID } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { template+: { spec+: { hostname: hostname } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { template+: { spec+: { nodeName: nodeName } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { template+: { spec+: { nodeSelector: nodeSelector } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { template+: { spec+: { nodeSelector+: nodeSelector } } }, - '#withOverhead':: d.fn(help='Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/20190226-pod-overhead.md This field is alpha-level as of Kubernetes v1.16, and is only honored by servers that enable the PodOverhead feature.', args=[d.arg(name='overhead', type=d.T.object)]), - withOverhead(overhead): { template+: { spec+: { overhead: overhead } } }, - '#withOverheadMixin':: d.fn(help='Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/20190226-pod-overhead.md This field is alpha-level as of Kubernetes v1.16, and is only honored by servers that enable the PodOverhead feature.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='overhead', type=d.T.object)]), - withOverheadMixin(overhead): { template+: { spec+: { overhead+: overhead } } }, - '#withPreemptionPolicy':: d.fn(help='PreemptionPolicy is the Policy for preempting pods with lower priority. One of Never, PreemptLowerPriority. Defaults to PreemptLowerPriority if unset. This field is beta-level, gated by the NonPreemptingPriority feature-gate.', args=[d.arg(name='preemptionPolicy', type=d.T.string)]), - withPreemptionPolicy(preemptionPolicy): { template+: { spec+: { preemptionPolicy: preemptionPolicy } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { template+: { spec+: { priority: priority } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { template+: { spec+: { priorityClassName: priorityClassName } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { template+: { spec+: { restartPolicy: restartPolicy } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is a beta feature as of Kubernetes v1.14.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { template+: { spec+: { runtimeClassName: runtimeClassName } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { template+: { spec+: { schedulerName: schedulerName } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { template+: { spec+: { serviceAccount: serviceAccount } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { template+: { spec+: { serviceAccountName: serviceAccountName } } }, - '#withSetHostnameAsFQDN':: d.fn(help="If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default). In Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname). In Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters to FQDN. If a pod does not have FQDN, this has no effect. Default to false.", args=[d.arg(name='setHostnameAsFQDN', type=d.T.boolean)]), - withSetHostnameAsFQDN(setHostnameAsFQDN): { template+: { spec+: { setHostnameAsFQDN: setHostnameAsFQDN } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { template+: { spec+: { subdomain: subdomain } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } }, - '#withTopologySpreadConstraints':: d.fn(help='TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed.', args=[d.arg(name='topologySpreadConstraints', type=d.T.array)]), - withTopologySpreadConstraints(topologySpreadConstraints): { template+: { spec+: { topologySpreadConstraints: if std.isArray(v=topologySpreadConstraints) then topologySpreadConstraints else [topologySpreadConstraints] } } }, - '#withTopologySpreadConstraintsMixin':: d.fn(help='TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='topologySpreadConstraints', type=d.T.array)]), - withTopologySpreadConstraintsMixin(topologySpreadConstraints): { template+: { spec+: { topologySpreadConstraints+: if std.isArray(v=topologySpreadConstraints) then topologySpreadConstraints else [topologySpreadConstraints] } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } }, - }, - }, - '#updateStrategy':: d.obj(help='StatefulSetUpdateStrategy indicates the strategy that the StatefulSet controller will use to perform updates. It includes any additional parameters necessary to perform the update for the indicated strategy.'), - updateStrategy: { - '#rollingUpdate':: d.obj(help='RollingUpdateStatefulSetStrategy is used to communicate parameter for RollingUpdateStatefulSetStrategyType.'), - rollingUpdate: { - '#withPartition':: d.fn(help='Partition indicates the ordinal at which the StatefulSet should be partitioned. Default value is 0.', args=[d.arg(name='partition', type=d.T.integer)]), - withPartition(partition): { updateStrategy+: { rollingUpdate+: { partition: partition } } }, - }, - '#withType':: d.fn(help='Type indicates the type of the StatefulSetUpdateStrategy. Default is RollingUpdate.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { updateStrategy+: { type: type } }, - }, - '#withPodManagementPolicy':: d.fn(help='podManagementPolicy controls how pods are created during initial scale up, when replacing pods on nodes, or when scaling down. The default policy is `OrderedReady`, where pods are created in increasing order (pod-0, then pod-1, etc) and the controller will wait until each pod is ready before continuing. When scaling down, the pods are removed in the opposite order. The alternative policy is `Parallel` which will create pods in parallel to match the desired scale without waiting, and on scale down will delete all pods at once.', args=[d.arg(name='podManagementPolicy', type=d.T.string)]), - withPodManagementPolicy(podManagementPolicy): { podManagementPolicy: podManagementPolicy }, - '#withReplicas':: d.fn(help='replicas is the desired number of replicas of the given Template. These are replicas in the sense that they are instantiations of the same Template, but individual replicas also have a consistent identity. If unspecified, defaults to 1.', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { replicas: replicas }, - '#withRevisionHistoryLimit':: d.fn(help="revisionHistoryLimit is the maximum number of revisions that will be maintained in the StatefulSet's revision history. The revision history consists of all revisions not represented by a currently applied StatefulSetSpec version. The default value is 10.", args=[d.arg(name='revisionHistoryLimit', type=d.T.integer)]), - withRevisionHistoryLimit(revisionHistoryLimit): { revisionHistoryLimit: revisionHistoryLimit }, - '#withServiceName':: d.fn(help='serviceName is the name of the service that governs this StatefulSet. This service must exist before the StatefulSet, and is responsible for the network identity of the set. Pods get DNS/hostnames that follow the pattern: pod-specific-string.serviceName.default.svc.cluster.local where "pod-specific-string" is managed by the StatefulSet controller.', args=[d.arg(name='serviceName', type=d.T.string)]), - withServiceName(serviceName): { serviceName: serviceName }, - '#withVolumeClaimTemplates':: d.fn(help='volumeClaimTemplates is a list of claims that pods are allowed to reference. The StatefulSet controller is responsible for mapping network identities to claims in a way that maintains the identity of a pod. Every claim in this list must have at least one matching (by name) volumeMount in one container in the template. A claim in this list takes precedence over any volumes in the template, with the same name.', args=[d.arg(name='volumeClaimTemplates', type=d.T.array)]), - withVolumeClaimTemplates(volumeClaimTemplates): { volumeClaimTemplates: if std.isArray(v=volumeClaimTemplates) then volumeClaimTemplates else [volumeClaimTemplates] }, - '#withVolumeClaimTemplatesMixin':: d.fn(help='volumeClaimTemplates is a list of claims that pods are allowed to reference. The StatefulSet controller is responsible for mapping network identities to claims in a way that maintains the identity of a pod. Every claim in this list must have at least one matching (by name) volumeMount in one container in the template. A claim in this list takes precedence over any volumes in the template, with the same name.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumeClaimTemplates', type=d.T.array)]), - withVolumeClaimTemplatesMixin(volumeClaimTemplates): { volumeClaimTemplates+: if std.isArray(v=volumeClaimTemplates) then volumeClaimTemplates else [volumeClaimTemplates] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/statefulSetStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/statefulSetStatus.libsonnet deleted file mode 100644 index 8f5c4b7e4071..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/statefulSetStatus.libsonnet +++ /dev/null @@ -1,26 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='statefulSetStatus', url='', help='StatefulSetStatus represents the current state of a StatefulSet.'), - '#withCollisionCount':: d.fn(help='collisionCount is the count of hash collisions for the StatefulSet. The StatefulSet controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ControllerRevision.', args=[d.arg(name='collisionCount', type=d.T.integer)]), - withCollisionCount(collisionCount): { collisionCount: collisionCount }, - '#withConditions':: d.fn(help="Represents the latest available observations of a statefulset's current state.", args=[d.arg(name='conditions', type=d.T.array)]), - withConditions(conditions): { conditions: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withConditionsMixin':: d.fn(help="Represents the latest available observations of a statefulset's current state.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='conditions', type=d.T.array)]), - withConditionsMixin(conditions): { conditions+: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withCurrentReplicas':: d.fn(help='currentReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version indicated by currentRevision.', args=[d.arg(name='currentReplicas', type=d.T.integer)]), - withCurrentReplicas(currentReplicas): { currentReplicas: currentReplicas }, - '#withCurrentRevision':: d.fn(help='currentRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [0,currentReplicas).', args=[d.arg(name='currentRevision', type=d.T.string)]), - withCurrentRevision(currentRevision): { currentRevision: currentRevision }, - '#withObservedGeneration':: d.fn(help="observedGeneration is the most recent generation observed for this StatefulSet. It corresponds to the StatefulSet's generation, which is updated on mutation by the API Server.", args=[d.arg(name='observedGeneration', type=d.T.integer)]), - withObservedGeneration(observedGeneration): { observedGeneration: observedGeneration }, - '#withReadyReplicas':: d.fn(help='readyReplicas is the number of Pods created by the StatefulSet controller that have a Ready Condition.', args=[d.arg(name='readyReplicas', type=d.T.integer)]), - withReadyReplicas(readyReplicas): { readyReplicas: readyReplicas }, - '#withReplicas':: d.fn(help='replicas is the number of Pods created by the StatefulSet controller.', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { replicas: replicas }, - '#withUpdateRevision':: d.fn(help='updateRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [replicas-updatedReplicas,replicas)', args=[d.arg(name='updateRevision', type=d.T.string)]), - withUpdateRevision(updateRevision): { updateRevision: updateRevision }, - '#withUpdatedReplicas':: d.fn(help='updatedReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version indicated by updateRevision.', args=[d.arg(name='updatedReplicas', type=d.T.integer)]), - withUpdatedReplicas(updatedReplicas): { updatedReplicas: updatedReplicas }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/statefulSetUpdateStrategy.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/statefulSetUpdateStrategy.libsonnet deleted file mode 100644 index 0b0cbfe2ac1e..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/apps/v1/statefulSetUpdateStrategy.libsonnet +++ /dev/null @@ -1,13 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='statefulSetUpdateStrategy', url='', help='StatefulSetUpdateStrategy indicates the strategy that the StatefulSet controller will use to perform updates. It includes any additional parameters necessary to perform the update for the indicated strategy.'), - '#rollingUpdate':: d.obj(help='RollingUpdateStatefulSetStrategy is used to communicate parameter for RollingUpdateStatefulSetStrategyType.'), - rollingUpdate: { - '#withPartition':: d.fn(help='Partition indicates the ordinal at which the StatefulSet should be partitioned. Default value is 0.', args=[d.arg(name='partition', type=d.T.integer)]), - withPartition(partition): { rollingUpdate+: { partition: partition } }, - }, - '#withType':: d.fn(help='Type indicates the type of the StatefulSetUpdateStrategy. Default is RollingUpdate.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/main.libsonnet deleted file mode 100644 index 79f614c9bef9..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/main.libsonnet +++ /dev/null @@ -1,6 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='authentication', url='', help=''), - v1: (import 'v1/main.libsonnet'), - v1beta1: (import 'v1beta1/main.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1/boundObjectReference.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1/boundObjectReference.libsonnet deleted file mode 100644 index 574787c04476..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1/boundObjectReference.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='boundObjectReference', url='', help='BoundObjectReference is a reference to an object that a token is bound to.'), - '#withKind':: d.fn(help="Kind of the referent. Valid kinds are 'Pod' and 'Secret'.", args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { kind: kind }, - '#withName':: d.fn(help='Name of the referent.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withUid':: d.fn(help='UID of the referent.', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { uid: uid }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1/main.libsonnet deleted file mode 100644 index 05cedc80c763..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1/main.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1', url='', help=''), - boundObjectReference: (import 'boundObjectReference.libsonnet'), - tokenRequest: (import 'tokenRequest.libsonnet'), - tokenRequestSpec: (import 'tokenRequestSpec.libsonnet'), - tokenRequestStatus: (import 'tokenRequestStatus.libsonnet'), - tokenReview: (import 'tokenReview.libsonnet'), - tokenReviewSpec: (import 'tokenReviewSpec.libsonnet'), - tokenReviewStatus: (import 'tokenReviewStatus.libsonnet'), - userInfo: (import 'userInfo.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1/tokenRequest.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1/tokenRequest.libsonnet deleted file mode 100644 index f3be4ae3959d..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1/tokenRequest.libsonnet +++ /dev/null @@ -1,76 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='tokenRequest', url='', help='TokenRequest requests a token for a given service account.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Tokenrequest', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'authentication.k8s.io/v1', - kind: 'TokenRequest', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='TokenRequestSpec contains client provided parameters of a token request.'), - spec: { - '#boundObjectRef':: d.obj(help='BoundObjectReference is a reference to an object that a token is bound to.'), - boundObjectRef: { - '#withApiVersion':: d.fn(help='API version of the referent.', args=[d.arg(name='apiVersion', type=d.T.string)]), - withApiVersion(apiVersion): { spec+: { boundObjectRef+: { apiVersion: apiVersion } } }, - '#withKind':: d.fn(help="Kind of the referent. Valid kinds are 'Pod' and 'Secret'.", args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { boundObjectRef+: { kind: kind } } }, - '#withName':: d.fn(help='Name of the referent.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { boundObjectRef+: { name: name } } }, - '#withUid':: d.fn(help='UID of the referent.', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { boundObjectRef+: { uid: uid } } }, - }, - '#withAudiences':: d.fn(help='Audiences are the intendend audiences of the token. A recipient of a token must identitfy themself with an identifier in the list of audiences of the token, and otherwise should reject the token. A token issued for multiple audiences may be used to authenticate against any of the audiences listed but implies a high degree of trust between the target audiences.', args=[d.arg(name='audiences', type=d.T.array)]), - withAudiences(audiences): { spec+: { audiences: if std.isArray(v=audiences) then audiences else [audiences] } }, - '#withAudiencesMixin':: d.fn(help='Audiences are the intendend audiences of the token. A recipient of a token must identitfy themself with an identifier in the list of audiences of the token, and otherwise should reject the token. A token issued for multiple audiences may be used to authenticate against any of the audiences listed but implies a high degree of trust between the target audiences.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='audiences', type=d.T.array)]), - withAudiencesMixin(audiences): { spec+: { audiences+: if std.isArray(v=audiences) then audiences else [audiences] } }, - '#withExpirationSeconds':: d.fn(help="ExpirationSeconds is the requested duration of validity of the request. The token issuer may return a token with a different validity duration so a client needs to check the 'expiration' field in a response.", args=[d.arg(name='expirationSeconds', type=d.T.integer)]), - withExpirationSeconds(expirationSeconds): { spec+: { expirationSeconds: expirationSeconds } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1/tokenRequestSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1/tokenRequestSpec.libsonnet deleted file mode 100644 index 5fa0c6b77cba..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1/tokenRequestSpec.libsonnet +++ /dev/null @@ -1,23 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='tokenRequestSpec', url='', help='TokenRequestSpec contains client provided parameters of a token request.'), - '#boundObjectRef':: d.obj(help='BoundObjectReference is a reference to an object that a token is bound to.'), - boundObjectRef: { - '#withApiVersion':: d.fn(help='API version of the referent.', args=[d.arg(name='apiVersion', type=d.T.string)]), - withApiVersion(apiVersion): { boundObjectRef+: { apiVersion: apiVersion } }, - '#withKind':: d.fn(help="Kind of the referent. Valid kinds are 'Pod' and 'Secret'.", args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { boundObjectRef+: { kind: kind } }, - '#withName':: d.fn(help='Name of the referent.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { boundObjectRef+: { name: name } }, - '#withUid':: d.fn(help='UID of the referent.', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { boundObjectRef+: { uid: uid } }, - }, - '#withAudiences':: d.fn(help='Audiences are the intendend audiences of the token. A recipient of a token must identitfy themself with an identifier in the list of audiences of the token, and otherwise should reject the token. A token issued for multiple audiences may be used to authenticate against any of the audiences listed but implies a high degree of trust between the target audiences.', args=[d.arg(name='audiences', type=d.T.array)]), - withAudiences(audiences): { audiences: if std.isArray(v=audiences) then audiences else [audiences] }, - '#withAudiencesMixin':: d.fn(help='Audiences are the intendend audiences of the token. A recipient of a token must identitfy themself with an identifier in the list of audiences of the token, and otherwise should reject the token. A token issued for multiple audiences may be used to authenticate against any of the audiences listed but implies a high degree of trust between the target audiences.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='audiences', type=d.T.array)]), - withAudiencesMixin(audiences): { audiences+: if std.isArray(v=audiences) then audiences else [audiences] }, - '#withExpirationSeconds':: d.fn(help="ExpirationSeconds is the requested duration of validity of the request. The token issuer may return a token with a different validity duration so a client needs to check the 'expiration' field in a response.", args=[d.arg(name='expirationSeconds', type=d.T.integer)]), - withExpirationSeconds(expirationSeconds): { expirationSeconds: expirationSeconds }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1/tokenRequestStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1/tokenRequestStatus.libsonnet deleted file mode 100644 index d26b07133c47..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1/tokenRequestStatus.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='tokenRequestStatus', url='', help='TokenRequestStatus is the result of a token request.'), - '#withExpirationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='expirationTimestamp', type=d.T.string)]), - withExpirationTimestamp(expirationTimestamp): { expirationTimestamp: expirationTimestamp }, - '#withToken':: d.fn(help='Token is the opaque bearer token.', args=[d.arg(name='token', type=d.T.string)]), - withToken(token): { token: token }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1/tokenReview.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1/tokenReview.libsonnet deleted file mode 100644 index 2d2859787431..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1/tokenReview.libsonnet +++ /dev/null @@ -1,65 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='tokenReview', url='', help='TokenReview attempts to authenticate a token to a known user. Note: TokenReview requests may be cached by the webhook token authenticator plugin in the kube-apiserver.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Tokenreview', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'authentication.k8s.io/v1', - kind: 'TokenReview', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='TokenReviewSpec is a description of the token authentication request.'), - spec: { - '#withAudiences':: d.fn(help='Audiences is a list of the identifiers that the resource server presented with the token identifies as. Audience-aware token authenticators will verify that the token was intended for at least one of the audiences in this list. If no audiences are provided, the audience will default to the audience of the Kubernetes apiserver.', args=[d.arg(name='audiences', type=d.T.array)]), - withAudiences(audiences): { spec+: { audiences: if std.isArray(v=audiences) then audiences else [audiences] } }, - '#withAudiencesMixin':: d.fn(help='Audiences is a list of the identifiers that the resource server presented with the token identifies as. Audience-aware token authenticators will verify that the token was intended for at least one of the audiences in this list. If no audiences are provided, the audience will default to the audience of the Kubernetes apiserver.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='audiences', type=d.T.array)]), - withAudiencesMixin(audiences): { spec+: { audiences+: if std.isArray(v=audiences) then audiences else [audiences] } }, - '#withToken':: d.fn(help='Token is the opaque bearer token.', args=[d.arg(name='token', type=d.T.string)]), - withToken(token): { spec+: { token: token } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1/tokenReviewSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1/tokenReviewSpec.libsonnet deleted file mode 100644 index 0e0e0b8e3be5..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1/tokenReviewSpec.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='tokenReviewSpec', url='', help='TokenReviewSpec is a description of the token authentication request.'), - '#withAudiences':: d.fn(help='Audiences is a list of the identifiers that the resource server presented with the token identifies as. Audience-aware token authenticators will verify that the token was intended for at least one of the audiences in this list. If no audiences are provided, the audience will default to the audience of the Kubernetes apiserver.', args=[d.arg(name='audiences', type=d.T.array)]), - withAudiences(audiences): { audiences: if std.isArray(v=audiences) then audiences else [audiences] }, - '#withAudiencesMixin':: d.fn(help='Audiences is a list of the identifiers that the resource server presented with the token identifies as. Audience-aware token authenticators will verify that the token was intended for at least one of the audiences in this list. If no audiences are provided, the audience will default to the audience of the Kubernetes apiserver.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='audiences', type=d.T.array)]), - withAudiencesMixin(audiences): { audiences+: if std.isArray(v=audiences) then audiences else [audiences] }, - '#withToken':: d.fn(help='Token is the opaque bearer token.', args=[d.arg(name='token', type=d.T.string)]), - withToken(token): { token: token }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1/tokenReviewStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1/tokenReviewStatus.libsonnet deleted file mode 100644 index 3a816c739581..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1/tokenReviewStatus.libsonnet +++ /dev/null @@ -1,29 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='tokenReviewStatus', url='', help='TokenReviewStatus is the result of the token authentication request.'), - '#user':: d.obj(help='UserInfo holds the information about the user needed to implement the user.Info interface.'), - user: { - '#withExtra':: d.fn(help='Any additional information provided by the authenticator.', args=[d.arg(name='extra', type=d.T.object)]), - withExtra(extra): { user+: { extra: extra } }, - '#withExtraMixin':: d.fn(help='Any additional information provided by the authenticator.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='extra', type=d.T.object)]), - withExtraMixin(extra): { user+: { extra+: extra } }, - '#withGroups':: d.fn(help='The names of groups this user is a part of.', args=[d.arg(name='groups', type=d.T.array)]), - withGroups(groups): { user+: { groups: if std.isArray(v=groups) then groups else [groups] } }, - '#withGroupsMixin':: d.fn(help='The names of groups this user is a part of.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='groups', type=d.T.array)]), - withGroupsMixin(groups): { user+: { groups+: if std.isArray(v=groups) then groups else [groups] } }, - '#withUid':: d.fn(help='A unique value that identifies this user across time. If this user is deleted and another user by the same name is added, they will have different UIDs.', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { user+: { uid: uid } }, - '#withUsername':: d.fn(help='The name that uniquely identifies this user among all active users.', args=[d.arg(name='username', type=d.T.string)]), - withUsername(username): { user+: { username: username } }, - }, - '#withAudiences':: d.fn(help="Audiences are audience identifiers chosen by the authenticator that are compatible with both the TokenReview and token. An identifier is any identifier in the intersection of the TokenReviewSpec audiences and the token's audiences. A client of the TokenReview API that sets the spec.audiences field should validate that a compatible audience identifier is returned in the status.audiences field to ensure that the TokenReview server is audience aware. If a TokenReview returns an empty status.audience field where status.authenticated is 'true', the token is valid against the audience of the Kubernetes API server.", args=[d.arg(name='audiences', type=d.T.array)]), - withAudiences(audiences): { audiences: if std.isArray(v=audiences) then audiences else [audiences] }, - '#withAudiencesMixin':: d.fn(help="Audiences are audience identifiers chosen by the authenticator that are compatible with both the TokenReview and token. An identifier is any identifier in the intersection of the TokenReviewSpec audiences and the token's audiences. A client of the TokenReview API that sets the spec.audiences field should validate that a compatible audience identifier is returned in the status.audiences field to ensure that the TokenReview server is audience aware. If a TokenReview returns an empty status.audience field where status.authenticated is 'true', the token is valid against the audience of the Kubernetes API server.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='audiences', type=d.T.array)]), - withAudiencesMixin(audiences): { audiences+: if std.isArray(v=audiences) then audiences else [audiences] }, - '#withAuthenticated':: d.fn(help='Authenticated indicates that the token was associated with a known user.', args=[d.arg(name='authenticated', type=d.T.boolean)]), - withAuthenticated(authenticated): { authenticated: authenticated }, - '#withError':: d.fn(help="Error indicates that the token couldn't be checked", args=[d.arg(name='err', type=d.T.string)]), - withError(err): { 'error': err }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1/userInfo.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1/userInfo.libsonnet deleted file mode 100644 index 93ed829427f5..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1/userInfo.libsonnet +++ /dev/null @@ -1,18 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='userInfo', url='', help='UserInfo holds the information about the user needed to implement the user.Info interface.'), - '#withExtra':: d.fn(help='Any additional information provided by the authenticator.', args=[d.arg(name='extra', type=d.T.object)]), - withExtra(extra): { extra: extra }, - '#withExtraMixin':: d.fn(help='Any additional information provided by the authenticator.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='extra', type=d.T.object)]), - withExtraMixin(extra): { extra+: extra }, - '#withGroups':: d.fn(help='The names of groups this user is a part of.', args=[d.arg(name='groups', type=d.T.array)]), - withGroups(groups): { groups: if std.isArray(v=groups) then groups else [groups] }, - '#withGroupsMixin':: d.fn(help='The names of groups this user is a part of.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='groups', type=d.T.array)]), - withGroupsMixin(groups): { groups+: if std.isArray(v=groups) then groups else [groups] }, - '#withUid':: d.fn(help='A unique value that identifies this user across time. If this user is deleted and another user by the same name is added, they will have different UIDs.', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { uid: uid }, - '#withUsername':: d.fn(help='The name that uniquely identifies this user among all active users.', args=[d.arg(name='username', type=d.T.string)]), - withUsername(username): { username: username }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1beta1/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1beta1/main.libsonnet deleted file mode 100644 index 5c9a07f9a3c9..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1beta1/main.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1beta1', url='', help=''), - tokenReview: (import 'tokenReview.libsonnet'), - tokenReviewSpec: (import 'tokenReviewSpec.libsonnet'), - tokenReviewStatus: (import 'tokenReviewStatus.libsonnet'), - userInfo: (import 'userInfo.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1beta1/tokenReview.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1beta1/tokenReview.libsonnet deleted file mode 100644 index 18cb1ee0f2d4..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1beta1/tokenReview.libsonnet +++ /dev/null @@ -1,65 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='tokenReview', url='', help='TokenReview attempts to authenticate a token to a known user. Note: TokenReview requests may be cached by the webhook token authenticator plugin in the kube-apiserver.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Tokenreview', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'authentication.k8s.io/v1beta1', - kind: 'TokenReview', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='TokenReviewSpec is a description of the token authentication request.'), - spec: { - '#withAudiences':: d.fn(help='Audiences is a list of the identifiers that the resource server presented with the token identifies as. Audience-aware token authenticators will verify that the token was intended for at least one of the audiences in this list. If no audiences are provided, the audience will default to the audience of the Kubernetes apiserver.', args=[d.arg(name='audiences', type=d.T.array)]), - withAudiences(audiences): { spec+: { audiences: if std.isArray(v=audiences) then audiences else [audiences] } }, - '#withAudiencesMixin':: d.fn(help='Audiences is a list of the identifiers that the resource server presented with the token identifies as. Audience-aware token authenticators will verify that the token was intended for at least one of the audiences in this list. If no audiences are provided, the audience will default to the audience of the Kubernetes apiserver.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='audiences', type=d.T.array)]), - withAudiencesMixin(audiences): { spec+: { audiences+: if std.isArray(v=audiences) then audiences else [audiences] } }, - '#withToken':: d.fn(help='Token is the opaque bearer token.', args=[d.arg(name='token', type=d.T.string)]), - withToken(token): { spec+: { token: token } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1beta1/tokenReviewSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1beta1/tokenReviewSpec.libsonnet deleted file mode 100644 index 0e0e0b8e3be5..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1beta1/tokenReviewSpec.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='tokenReviewSpec', url='', help='TokenReviewSpec is a description of the token authentication request.'), - '#withAudiences':: d.fn(help='Audiences is a list of the identifiers that the resource server presented with the token identifies as. Audience-aware token authenticators will verify that the token was intended for at least one of the audiences in this list. If no audiences are provided, the audience will default to the audience of the Kubernetes apiserver.', args=[d.arg(name='audiences', type=d.T.array)]), - withAudiences(audiences): { audiences: if std.isArray(v=audiences) then audiences else [audiences] }, - '#withAudiencesMixin':: d.fn(help='Audiences is a list of the identifiers that the resource server presented with the token identifies as. Audience-aware token authenticators will verify that the token was intended for at least one of the audiences in this list. If no audiences are provided, the audience will default to the audience of the Kubernetes apiserver.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='audiences', type=d.T.array)]), - withAudiencesMixin(audiences): { audiences+: if std.isArray(v=audiences) then audiences else [audiences] }, - '#withToken':: d.fn(help='Token is the opaque bearer token.', args=[d.arg(name='token', type=d.T.string)]), - withToken(token): { token: token }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1beta1/tokenReviewStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1beta1/tokenReviewStatus.libsonnet deleted file mode 100644 index 3a816c739581..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1beta1/tokenReviewStatus.libsonnet +++ /dev/null @@ -1,29 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='tokenReviewStatus', url='', help='TokenReviewStatus is the result of the token authentication request.'), - '#user':: d.obj(help='UserInfo holds the information about the user needed to implement the user.Info interface.'), - user: { - '#withExtra':: d.fn(help='Any additional information provided by the authenticator.', args=[d.arg(name='extra', type=d.T.object)]), - withExtra(extra): { user+: { extra: extra } }, - '#withExtraMixin':: d.fn(help='Any additional information provided by the authenticator.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='extra', type=d.T.object)]), - withExtraMixin(extra): { user+: { extra+: extra } }, - '#withGroups':: d.fn(help='The names of groups this user is a part of.', args=[d.arg(name='groups', type=d.T.array)]), - withGroups(groups): { user+: { groups: if std.isArray(v=groups) then groups else [groups] } }, - '#withGroupsMixin':: d.fn(help='The names of groups this user is a part of.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='groups', type=d.T.array)]), - withGroupsMixin(groups): { user+: { groups+: if std.isArray(v=groups) then groups else [groups] } }, - '#withUid':: d.fn(help='A unique value that identifies this user across time. If this user is deleted and another user by the same name is added, they will have different UIDs.', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { user+: { uid: uid } }, - '#withUsername':: d.fn(help='The name that uniquely identifies this user among all active users.', args=[d.arg(name='username', type=d.T.string)]), - withUsername(username): { user+: { username: username } }, - }, - '#withAudiences':: d.fn(help="Audiences are audience identifiers chosen by the authenticator that are compatible with both the TokenReview and token. An identifier is any identifier in the intersection of the TokenReviewSpec audiences and the token's audiences. A client of the TokenReview API that sets the spec.audiences field should validate that a compatible audience identifier is returned in the status.audiences field to ensure that the TokenReview server is audience aware. If a TokenReview returns an empty status.audience field where status.authenticated is 'true', the token is valid against the audience of the Kubernetes API server.", args=[d.arg(name='audiences', type=d.T.array)]), - withAudiences(audiences): { audiences: if std.isArray(v=audiences) then audiences else [audiences] }, - '#withAudiencesMixin':: d.fn(help="Audiences are audience identifiers chosen by the authenticator that are compatible with both the TokenReview and token. An identifier is any identifier in the intersection of the TokenReviewSpec audiences and the token's audiences. A client of the TokenReview API that sets the spec.audiences field should validate that a compatible audience identifier is returned in the status.audiences field to ensure that the TokenReview server is audience aware. If a TokenReview returns an empty status.audience field where status.authenticated is 'true', the token is valid against the audience of the Kubernetes API server.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='audiences', type=d.T.array)]), - withAudiencesMixin(audiences): { audiences+: if std.isArray(v=audiences) then audiences else [audiences] }, - '#withAuthenticated':: d.fn(help='Authenticated indicates that the token was associated with a known user.', args=[d.arg(name='authenticated', type=d.T.boolean)]), - withAuthenticated(authenticated): { authenticated: authenticated }, - '#withError':: d.fn(help="Error indicates that the token couldn't be checked", args=[d.arg(name='err', type=d.T.string)]), - withError(err): { 'error': err }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1beta1/userInfo.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1beta1/userInfo.libsonnet deleted file mode 100644 index 93ed829427f5..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authentication/v1beta1/userInfo.libsonnet +++ /dev/null @@ -1,18 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='userInfo', url='', help='UserInfo holds the information about the user needed to implement the user.Info interface.'), - '#withExtra':: d.fn(help='Any additional information provided by the authenticator.', args=[d.arg(name='extra', type=d.T.object)]), - withExtra(extra): { extra: extra }, - '#withExtraMixin':: d.fn(help='Any additional information provided by the authenticator.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='extra', type=d.T.object)]), - withExtraMixin(extra): { extra+: extra }, - '#withGroups':: d.fn(help='The names of groups this user is a part of.', args=[d.arg(name='groups', type=d.T.array)]), - withGroups(groups): { groups: if std.isArray(v=groups) then groups else [groups] }, - '#withGroupsMixin':: d.fn(help='The names of groups this user is a part of.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='groups', type=d.T.array)]), - withGroupsMixin(groups): { groups+: if std.isArray(v=groups) then groups else [groups] }, - '#withUid':: d.fn(help='A unique value that identifies this user across time. If this user is deleted and another user by the same name is added, they will have different UIDs.', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { uid: uid }, - '#withUsername':: d.fn(help='The name that uniquely identifies this user among all active users.', args=[d.arg(name='username', type=d.T.string)]), - withUsername(username): { username: username }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/main.libsonnet deleted file mode 100644 index c56c20bb5532..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/main.libsonnet +++ /dev/null @@ -1,6 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='authorization', url='', help=''), - v1: (import 'v1/main.libsonnet'), - v1beta1: (import 'v1beta1/main.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/localSubjectAccessReview.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/localSubjectAccessReview.libsonnet deleted file mode 100644 index 53699d1dc218..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/localSubjectAccessReview.libsonnet +++ /dev/null @@ -1,95 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='localSubjectAccessReview', url='', help='LocalSubjectAccessReview checks whether or not a user or group can perform an action in a given namespace. Having a namespace scoped resource makes it much easier to grant namespace scoped policy that includes permissions checking.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Localsubjectaccessreview', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'authorization.k8s.io/v1', - kind: 'LocalSubjectAccessReview', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='SubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes must be set'), - spec: { - '#nonResourceAttributes':: d.obj(help='NonResourceAttributes includes the authorization attributes available for non-resource requests to the Authorizer interface'), - nonResourceAttributes: { - '#withPath':: d.fn(help='Path is the URL path of the request', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { spec+: { nonResourceAttributes+: { path: path } } }, - '#withVerb':: d.fn(help='Verb is the standard HTTP verb', args=[d.arg(name='verb', type=d.T.string)]), - withVerb(verb): { spec+: { nonResourceAttributes+: { verb: verb } } }, - }, - '#resourceAttributes':: d.obj(help='ResourceAttributes includes the authorization attributes available for resource requests to the Authorizer interface'), - resourceAttributes: { - '#withGroup':: d.fn(help='Group is the API Group of the Resource. "*" means all.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { spec+: { resourceAttributes+: { group: group } } }, - '#withName':: d.fn(help='Name is the name of the resource being requested for a "get" or deleted for a "delete". "" (empty) means all.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { resourceAttributes+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace is the namespace of the action being requested. Currently, there is no distinction between no namespace and all namespaces "" (empty) is defaulted for LocalSubjectAccessReviews "" (empty) is empty for cluster-scoped resources "" (empty) means "all" for namespace scoped resources from a SubjectAccessReview or SelfSubjectAccessReview', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { resourceAttributes+: { namespace: namespace } } }, - '#withResource':: d.fn(help='Resource is one of the existing resource types. "*" means all.', args=[d.arg(name='resource', type=d.T.string)]), - withResource(resource): { spec+: { resourceAttributes+: { resource: resource } } }, - '#withSubresource':: d.fn(help='Subresource is one of the existing resource types. "" means none.', args=[d.arg(name='subresource', type=d.T.string)]), - withSubresource(subresource): { spec+: { resourceAttributes+: { subresource: subresource } } }, - '#withVerb':: d.fn(help='Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy. "*" means all.', args=[d.arg(name='verb', type=d.T.string)]), - withVerb(verb): { spec+: { resourceAttributes+: { verb: verb } } }, - '#withVersion':: d.fn(help='Version is the API Version of the Resource. "*" means all.', args=[d.arg(name='version', type=d.T.string)]), - withVersion(version): { spec+: { resourceAttributes+: { version: version } } }, - }, - '#withExtra':: d.fn(help='Extra corresponds to the user.Info.GetExtra() method from the authenticator. Since that is input to the authorizer it needs a reflection here.', args=[d.arg(name='extra', type=d.T.object)]), - withExtra(extra): { spec+: { extra: extra } }, - '#withExtraMixin':: d.fn(help='Extra corresponds to the user.Info.GetExtra() method from the authenticator. Since that is input to the authorizer it needs a reflection here.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='extra', type=d.T.object)]), - withExtraMixin(extra): { spec+: { extra+: extra } }, - '#withGroups':: d.fn(help="Groups is the groups you're testing for.", args=[d.arg(name='groups', type=d.T.array)]), - withGroups(groups): { spec+: { groups: if std.isArray(v=groups) then groups else [groups] } }, - '#withGroupsMixin':: d.fn(help="Groups is the groups you're testing for.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='groups', type=d.T.array)]), - withGroupsMixin(groups): { spec+: { groups+: if std.isArray(v=groups) then groups else [groups] } }, - '#withUid':: d.fn(help='UID information about the requesting user.', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { uid: uid } }, - '#withUser':: d.fn(help="User is the user you're testing for. If you specify 'User' but not 'Groups', then is it interpreted as 'What if User were not a member of any groups", args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { user: user } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/main.libsonnet deleted file mode 100644 index 61af66b02b46..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/main.libsonnet +++ /dev/null @@ -1,17 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1', url='', help=''), - localSubjectAccessReview: (import 'localSubjectAccessReview.libsonnet'), - nonResourceAttributes: (import 'nonResourceAttributes.libsonnet'), - nonResourceRule: (import 'nonResourceRule.libsonnet'), - resourceAttributes: (import 'resourceAttributes.libsonnet'), - resourceRule: (import 'resourceRule.libsonnet'), - selfSubjectAccessReview: (import 'selfSubjectAccessReview.libsonnet'), - selfSubjectAccessReviewSpec: (import 'selfSubjectAccessReviewSpec.libsonnet'), - selfSubjectRulesReview: (import 'selfSubjectRulesReview.libsonnet'), - selfSubjectRulesReviewSpec: (import 'selfSubjectRulesReviewSpec.libsonnet'), - subjectAccessReview: (import 'subjectAccessReview.libsonnet'), - subjectAccessReviewSpec: (import 'subjectAccessReviewSpec.libsonnet'), - subjectAccessReviewStatus: (import 'subjectAccessReviewStatus.libsonnet'), - subjectRulesReviewStatus: (import 'subjectRulesReviewStatus.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/nonResourceAttributes.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/nonResourceAttributes.libsonnet deleted file mode 100644 index 1d6844be6b30..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/nonResourceAttributes.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='nonResourceAttributes', url='', help='NonResourceAttributes includes the authorization attributes available for non-resource requests to the Authorizer interface'), - '#withPath':: d.fn(help='Path is the URL path of the request', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { path: path }, - '#withVerb':: d.fn(help='Verb is the standard HTTP verb', args=[d.arg(name='verb', type=d.T.string)]), - withVerb(verb): { verb: verb }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/nonResourceRule.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/nonResourceRule.libsonnet deleted file mode 100644 index b138fef63dd1..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/nonResourceRule.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='nonResourceRule', url='', help='NonResourceRule holds information that describes a rule for the non-resource'), - '#withNonResourceURLs':: d.fn(help='NonResourceURLs is a set of partial urls that a user should have access to. *s are allowed, but only as the full, final step in the path. "*" means all.', args=[d.arg(name='nonResourceURLs', type=d.T.array)]), - withNonResourceURLs(nonResourceURLs): { nonResourceURLs: if std.isArray(v=nonResourceURLs) then nonResourceURLs else [nonResourceURLs] }, - '#withNonResourceURLsMixin':: d.fn(help='NonResourceURLs is a set of partial urls that a user should have access to. *s are allowed, but only as the full, final step in the path. "*" means all.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nonResourceURLs', type=d.T.array)]), - withNonResourceURLsMixin(nonResourceURLs): { nonResourceURLs+: if std.isArray(v=nonResourceURLs) then nonResourceURLs else [nonResourceURLs] }, - '#withVerbs':: d.fn(help='Verb is a list of kubernetes non-resource API verbs, like: get, post, put, delete, patch, head, options. "*" means all.', args=[d.arg(name='verbs', type=d.T.array)]), - withVerbs(verbs): { verbs: if std.isArray(v=verbs) then verbs else [verbs] }, - '#withVerbsMixin':: d.fn(help='Verb is a list of kubernetes non-resource API verbs, like: get, post, put, delete, patch, head, options. "*" means all.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='verbs', type=d.T.array)]), - withVerbsMixin(verbs): { verbs+: if std.isArray(v=verbs) then verbs else [verbs] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/resourceAttributes.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/resourceAttributes.libsonnet deleted file mode 100644 index 26234c41d705..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/resourceAttributes.libsonnet +++ /dev/null @@ -1,20 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='resourceAttributes', url='', help='ResourceAttributes includes the authorization attributes available for resource requests to the Authorizer interface'), - '#withGroup':: d.fn(help='Group is the API Group of the Resource. "*" means all.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { group: group }, - '#withName':: d.fn(help='Name is the name of the resource being requested for a "get" or deleted for a "delete". "" (empty) means all.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withNamespace':: d.fn(help='Namespace is the namespace of the action being requested. Currently, there is no distinction between no namespace and all namespaces "" (empty) is defaulted for LocalSubjectAccessReviews "" (empty) is empty for cluster-scoped resources "" (empty) means "all" for namespace scoped resources from a SubjectAccessReview or SelfSubjectAccessReview', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { namespace: namespace }, - '#withResource':: d.fn(help='Resource is one of the existing resource types. "*" means all.', args=[d.arg(name='resource', type=d.T.string)]), - withResource(resource): { resource: resource }, - '#withSubresource':: d.fn(help='Subresource is one of the existing resource types. "" means none.', args=[d.arg(name='subresource', type=d.T.string)]), - withSubresource(subresource): { subresource: subresource }, - '#withVerb':: d.fn(help='Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy. "*" means all.', args=[d.arg(name='verb', type=d.T.string)]), - withVerb(verb): { verb: verb }, - '#withVersion':: d.fn(help='Version is the API Version of the Resource. "*" means all.', args=[d.arg(name='version', type=d.T.string)]), - withVersion(version): { version: version }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/resourceRule.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/resourceRule.libsonnet deleted file mode 100644 index 70cdabcd5aad..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/resourceRule.libsonnet +++ /dev/null @@ -1,22 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='resourceRule', url='', help="ResourceRule is the list of actions the subject is allowed to perform on resources. The list ordering isn't significant, may contain duplicates, and possibly be incomplete."), - '#withApiGroups':: d.fn(help='APIGroups is the name of the APIGroup that contains the resources. If multiple API groups are specified, any action requested against one of the enumerated resources in any API group will be allowed. "*" means all.', args=[d.arg(name='apiGroups', type=d.T.array)]), - withApiGroups(apiGroups): { apiGroups: if std.isArray(v=apiGroups) then apiGroups else [apiGroups] }, - '#withApiGroupsMixin':: d.fn(help='APIGroups is the name of the APIGroup that contains the resources. If multiple API groups are specified, any action requested against one of the enumerated resources in any API group will be allowed. "*" means all.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='apiGroups', type=d.T.array)]), - withApiGroupsMixin(apiGroups): { apiGroups+: if std.isArray(v=apiGroups) then apiGroups else [apiGroups] }, - '#withResourceNames':: d.fn(help='ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed. "*" means all.', args=[d.arg(name='resourceNames', type=d.T.array)]), - withResourceNames(resourceNames): { resourceNames: if std.isArray(v=resourceNames) then resourceNames else [resourceNames] }, - '#withResourceNamesMixin':: d.fn(help='ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed. "*" means all.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='resourceNames', type=d.T.array)]), - withResourceNamesMixin(resourceNames): { resourceNames+: if std.isArray(v=resourceNames) then resourceNames else [resourceNames] }, - '#withResources':: d.fn(help="Resources is a list of resources this rule applies to. '*' means all in the specified apiGroups.\n '*/foo' represents the subresource 'foo' for all resources in the specified apiGroups.", args=[d.arg(name='resources', type=d.T.array)]), - withResources(resources): { resources: if std.isArray(v=resources) then resources else [resources] }, - '#withResourcesMixin':: d.fn(help="Resources is a list of resources this rule applies to. '*' means all in the specified apiGroups.\n '*/foo' represents the subresource 'foo' for all resources in the specified apiGroups.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='resources', type=d.T.array)]), - withResourcesMixin(resources): { resources+: if std.isArray(v=resources) then resources else [resources] }, - '#withVerbs':: d.fn(help='Verb is a list of kubernetes resource API verbs, like: get, list, watch, create, update, delete, proxy. "*" means all.', args=[d.arg(name='verbs', type=d.T.array)]), - withVerbs(verbs): { verbs: if std.isArray(v=verbs) then verbs else [verbs] }, - '#withVerbsMixin':: d.fn(help='Verb is a list of kubernetes resource API verbs, like: get, list, watch, create, update, delete, proxy. "*" means all.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='verbs', type=d.T.array)]), - withVerbsMixin(verbs): { verbs+: if std.isArray(v=verbs) then verbs else [verbs] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/selfSubjectAccessReview.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/selfSubjectAccessReview.libsonnet deleted file mode 100644 index 769b09c9e68e..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/selfSubjectAccessReview.libsonnet +++ /dev/null @@ -1,83 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='selfSubjectAccessReview', url='', help='SelfSubjectAccessReview checks whether or the current user can perform an action. Not filling in a spec.namespace means "in all namespaces". Self is a special case, because users should always be able to check whether they can perform an action'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Selfsubjectaccessreview', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'authorization.k8s.io/v1', - kind: 'SelfSubjectAccessReview', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='SelfSubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes must be set'), - spec: { - '#nonResourceAttributes':: d.obj(help='NonResourceAttributes includes the authorization attributes available for non-resource requests to the Authorizer interface'), - nonResourceAttributes: { - '#withPath':: d.fn(help='Path is the URL path of the request', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { spec+: { nonResourceAttributes+: { path: path } } }, - '#withVerb':: d.fn(help='Verb is the standard HTTP verb', args=[d.arg(name='verb', type=d.T.string)]), - withVerb(verb): { spec+: { nonResourceAttributes+: { verb: verb } } }, - }, - '#resourceAttributes':: d.obj(help='ResourceAttributes includes the authorization attributes available for resource requests to the Authorizer interface'), - resourceAttributes: { - '#withGroup':: d.fn(help='Group is the API Group of the Resource. "*" means all.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { spec+: { resourceAttributes+: { group: group } } }, - '#withName':: d.fn(help='Name is the name of the resource being requested for a "get" or deleted for a "delete". "" (empty) means all.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { resourceAttributes+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace is the namespace of the action being requested. Currently, there is no distinction between no namespace and all namespaces "" (empty) is defaulted for LocalSubjectAccessReviews "" (empty) is empty for cluster-scoped resources "" (empty) means "all" for namespace scoped resources from a SubjectAccessReview or SelfSubjectAccessReview', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { resourceAttributes+: { namespace: namespace } } }, - '#withResource':: d.fn(help='Resource is one of the existing resource types. "*" means all.', args=[d.arg(name='resource', type=d.T.string)]), - withResource(resource): { spec+: { resourceAttributes+: { resource: resource } } }, - '#withSubresource':: d.fn(help='Subresource is one of the existing resource types. "" means none.', args=[d.arg(name='subresource', type=d.T.string)]), - withSubresource(subresource): { spec+: { resourceAttributes+: { subresource: subresource } } }, - '#withVerb':: d.fn(help='Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy. "*" means all.', args=[d.arg(name='verb', type=d.T.string)]), - withVerb(verb): { spec+: { resourceAttributes+: { verb: verb } } }, - '#withVersion':: d.fn(help='Version is the API Version of the Resource. "*" means all.', args=[d.arg(name='version', type=d.T.string)]), - withVersion(version): { spec+: { resourceAttributes+: { version: version } } }, - }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/selfSubjectAccessReviewSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/selfSubjectAccessReviewSpec.libsonnet deleted file mode 100644 index 6462f5c5c18a..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/selfSubjectAccessReviewSpec.libsonnet +++ /dev/null @@ -1,30 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='selfSubjectAccessReviewSpec', url='', help='SelfSubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes must be set'), - '#nonResourceAttributes':: d.obj(help='NonResourceAttributes includes the authorization attributes available for non-resource requests to the Authorizer interface'), - nonResourceAttributes: { - '#withPath':: d.fn(help='Path is the URL path of the request', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { nonResourceAttributes+: { path: path } }, - '#withVerb':: d.fn(help='Verb is the standard HTTP verb', args=[d.arg(name='verb', type=d.T.string)]), - withVerb(verb): { nonResourceAttributes+: { verb: verb } }, - }, - '#resourceAttributes':: d.obj(help='ResourceAttributes includes the authorization attributes available for resource requests to the Authorizer interface'), - resourceAttributes: { - '#withGroup':: d.fn(help='Group is the API Group of the Resource. "*" means all.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { resourceAttributes+: { group: group } }, - '#withName':: d.fn(help='Name is the name of the resource being requested for a "get" or deleted for a "delete". "" (empty) means all.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { resourceAttributes+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace is the namespace of the action being requested. Currently, there is no distinction between no namespace and all namespaces "" (empty) is defaulted for LocalSubjectAccessReviews "" (empty) is empty for cluster-scoped resources "" (empty) means "all" for namespace scoped resources from a SubjectAccessReview or SelfSubjectAccessReview', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { resourceAttributes+: { namespace: namespace } }, - '#withResource':: d.fn(help='Resource is one of the existing resource types. "*" means all.', args=[d.arg(name='resource', type=d.T.string)]), - withResource(resource): { resourceAttributes+: { resource: resource } }, - '#withSubresource':: d.fn(help='Subresource is one of the existing resource types. "" means none.', args=[d.arg(name='subresource', type=d.T.string)]), - withSubresource(subresource): { resourceAttributes+: { subresource: subresource } }, - '#withVerb':: d.fn(help='Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy. "*" means all.', args=[d.arg(name='verb', type=d.T.string)]), - withVerb(verb): { resourceAttributes+: { verb: verb } }, - '#withVersion':: d.fn(help='Version is the API Version of the Resource. "*" means all.', args=[d.arg(name='version', type=d.T.string)]), - withVersion(version): { resourceAttributes+: { version: version } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/selfSubjectRulesReview.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/selfSubjectRulesReview.libsonnet deleted file mode 100644 index a11f3d1009d8..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/selfSubjectRulesReview.libsonnet +++ /dev/null @@ -1,61 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='selfSubjectRulesReview', url='', help="SelfSubjectRulesReview enumerates the set of actions the current user can perform within a namespace. The returned list of actions may be incomplete depending on the server's authorization mode, and any errors experienced during the evaluation. SelfSubjectRulesReview should be used by UIs to show/hide actions, or to quickly let an end user reason about their permissions. It should NOT Be used by external systems to drive authorization decisions as this raises confused deputy, cache lifetime/revocation, and correctness concerns. SubjectAccessReview, and LocalAccessReview are the correct way to defer authorization decisions to the API server."), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Selfsubjectrulesreview', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'authorization.k8s.io/v1', - kind: 'SelfSubjectRulesReview', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help=''), - spec: { - '#withNamespace':: d.fn(help='Namespace to evaluate rules for. Required.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { namespace: namespace } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/selfSubjectRulesReviewSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/selfSubjectRulesReviewSpec.libsonnet deleted file mode 100644 index e71b052da1a8..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/selfSubjectRulesReviewSpec.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='selfSubjectRulesReviewSpec', url='', help=''), - '#withNamespace':: d.fn(help='Namespace to evaluate rules for. Required.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { namespace: namespace }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/subjectAccessReview.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/subjectAccessReview.libsonnet deleted file mode 100644 index 6b5950055f11..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/subjectAccessReview.libsonnet +++ /dev/null @@ -1,95 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='subjectAccessReview', url='', help='SubjectAccessReview checks whether or not a user or group can perform an action.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Subjectaccessreview', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'authorization.k8s.io/v1', - kind: 'SubjectAccessReview', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='SubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes must be set'), - spec: { - '#nonResourceAttributes':: d.obj(help='NonResourceAttributes includes the authorization attributes available for non-resource requests to the Authorizer interface'), - nonResourceAttributes: { - '#withPath':: d.fn(help='Path is the URL path of the request', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { spec+: { nonResourceAttributes+: { path: path } } }, - '#withVerb':: d.fn(help='Verb is the standard HTTP verb', args=[d.arg(name='verb', type=d.T.string)]), - withVerb(verb): { spec+: { nonResourceAttributes+: { verb: verb } } }, - }, - '#resourceAttributes':: d.obj(help='ResourceAttributes includes the authorization attributes available for resource requests to the Authorizer interface'), - resourceAttributes: { - '#withGroup':: d.fn(help='Group is the API Group of the Resource. "*" means all.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { spec+: { resourceAttributes+: { group: group } } }, - '#withName':: d.fn(help='Name is the name of the resource being requested for a "get" or deleted for a "delete". "" (empty) means all.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { resourceAttributes+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace is the namespace of the action being requested. Currently, there is no distinction between no namespace and all namespaces "" (empty) is defaulted for LocalSubjectAccessReviews "" (empty) is empty for cluster-scoped resources "" (empty) means "all" for namespace scoped resources from a SubjectAccessReview or SelfSubjectAccessReview', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { resourceAttributes+: { namespace: namespace } } }, - '#withResource':: d.fn(help='Resource is one of the existing resource types. "*" means all.', args=[d.arg(name='resource', type=d.T.string)]), - withResource(resource): { spec+: { resourceAttributes+: { resource: resource } } }, - '#withSubresource':: d.fn(help='Subresource is one of the existing resource types. "" means none.', args=[d.arg(name='subresource', type=d.T.string)]), - withSubresource(subresource): { spec+: { resourceAttributes+: { subresource: subresource } } }, - '#withVerb':: d.fn(help='Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy. "*" means all.', args=[d.arg(name='verb', type=d.T.string)]), - withVerb(verb): { spec+: { resourceAttributes+: { verb: verb } } }, - '#withVersion':: d.fn(help='Version is the API Version of the Resource. "*" means all.', args=[d.arg(name='version', type=d.T.string)]), - withVersion(version): { spec+: { resourceAttributes+: { version: version } } }, - }, - '#withExtra':: d.fn(help='Extra corresponds to the user.Info.GetExtra() method from the authenticator. Since that is input to the authorizer it needs a reflection here.', args=[d.arg(name='extra', type=d.T.object)]), - withExtra(extra): { spec+: { extra: extra } }, - '#withExtraMixin':: d.fn(help='Extra corresponds to the user.Info.GetExtra() method from the authenticator. Since that is input to the authorizer it needs a reflection here.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='extra', type=d.T.object)]), - withExtraMixin(extra): { spec+: { extra+: extra } }, - '#withGroups':: d.fn(help="Groups is the groups you're testing for.", args=[d.arg(name='groups', type=d.T.array)]), - withGroups(groups): { spec+: { groups: if std.isArray(v=groups) then groups else [groups] } }, - '#withGroupsMixin':: d.fn(help="Groups is the groups you're testing for.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='groups', type=d.T.array)]), - withGroupsMixin(groups): { spec+: { groups+: if std.isArray(v=groups) then groups else [groups] } }, - '#withUid':: d.fn(help='UID information about the requesting user.', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { uid: uid } }, - '#withUser':: d.fn(help="User is the user you're testing for. If you specify 'User' but not 'Groups', then is it interpreted as 'What if User were not a member of any groups", args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { user: user } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/subjectAccessReviewSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/subjectAccessReviewSpec.libsonnet deleted file mode 100644 index 7f57a47fb2f5..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/subjectAccessReviewSpec.libsonnet +++ /dev/null @@ -1,42 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='subjectAccessReviewSpec', url='', help='SubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes must be set'), - '#nonResourceAttributes':: d.obj(help='NonResourceAttributes includes the authorization attributes available for non-resource requests to the Authorizer interface'), - nonResourceAttributes: { - '#withPath':: d.fn(help='Path is the URL path of the request', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { nonResourceAttributes+: { path: path } }, - '#withVerb':: d.fn(help='Verb is the standard HTTP verb', args=[d.arg(name='verb', type=d.T.string)]), - withVerb(verb): { nonResourceAttributes+: { verb: verb } }, - }, - '#resourceAttributes':: d.obj(help='ResourceAttributes includes the authorization attributes available for resource requests to the Authorizer interface'), - resourceAttributes: { - '#withGroup':: d.fn(help='Group is the API Group of the Resource. "*" means all.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { resourceAttributes+: { group: group } }, - '#withName':: d.fn(help='Name is the name of the resource being requested for a "get" or deleted for a "delete". "" (empty) means all.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { resourceAttributes+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace is the namespace of the action being requested. Currently, there is no distinction between no namespace and all namespaces "" (empty) is defaulted for LocalSubjectAccessReviews "" (empty) is empty for cluster-scoped resources "" (empty) means "all" for namespace scoped resources from a SubjectAccessReview or SelfSubjectAccessReview', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { resourceAttributes+: { namespace: namespace } }, - '#withResource':: d.fn(help='Resource is one of the existing resource types. "*" means all.', args=[d.arg(name='resource', type=d.T.string)]), - withResource(resource): { resourceAttributes+: { resource: resource } }, - '#withSubresource':: d.fn(help='Subresource is one of the existing resource types. "" means none.', args=[d.arg(name='subresource', type=d.T.string)]), - withSubresource(subresource): { resourceAttributes+: { subresource: subresource } }, - '#withVerb':: d.fn(help='Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy. "*" means all.', args=[d.arg(name='verb', type=d.T.string)]), - withVerb(verb): { resourceAttributes+: { verb: verb } }, - '#withVersion':: d.fn(help='Version is the API Version of the Resource. "*" means all.', args=[d.arg(name='version', type=d.T.string)]), - withVersion(version): { resourceAttributes+: { version: version } }, - }, - '#withExtra':: d.fn(help='Extra corresponds to the user.Info.GetExtra() method from the authenticator. Since that is input to the authorizer it needs a reflection here.', args=[d.arg(name='extra', type=d.T.object)]), - withExtra(extra): { extra: extra }, - '#withExtraMixin':: d.fn(help='Extra corresponds to the user.Info.GetExtra() method from the authenticator. Since that is input to the authorizer it needs a reflection here.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='extra', type=d.T.object)]), - withExtraMixin(extra): { extra+: extra }, - '#withGroups':: d.fn(help="Groups is the groups you're testing for.", args=[d.arg(name='groups', type=d.T.array)]), - withGroups(groups): { groups: if std.isArray(v=groups) then groups else [groups] }, - '#withGroupsMixin':: d.fn(help="Groups is the groups you're testing for.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='groups', type=d.T.array)]), - withGroupsMixin(groups): { groups+: if std.isArray(v=groups) then groups else [groups] }, - '#withUid':: d.fn(help='UID information about the requesting user.', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { uid: uid }, - '#withUser':: d.fn(help="User is the user you're testing for. If you specify 'User' but not 'Groups', then is it interpreted as 'What if User were not a member of any groups", args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { user: user }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/subjectAccessReviewStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/subjectAccessReviewStatus.libsonnet deleted file mode 100644 index e8b77e1031cd..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/subjectAccessReviewStatus.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='subjectAccessReviewStatus', url='', help='SubjectAccessReviewStatus'), - '#withAllowed':: d.fn(help='Allowed is required. True if the action would be allowed, false otherwise.', args=[d.arg(name='allowed', type=d.T.boolean)]), - withAllowed(allowed): { allowed: allowed }, - '#withDenied':: d.fn(help='Denied is optional. True if the action would be denied, otherwise false. If both allowed is false and denied is false, then the authorizer has no opinion on whether to authorize the action. Denied may not be true if Allowed is true.', args=[d.arg(name='denied', type=d.T.boolean)]), - withDenied(denied): { denied: denied }, - '#withEvaluationError':: d.fn(help='EvaluationError is an indication that some error occurred during the authorization check. It is entirely possible to get an error and be able to continue determine authorization status in spite of it. For instance, RBAC can be missing a role, but enough roles are still present and bound to reason about the request.', args=[d.arg(name='evaluationError', type=d.T.string)]), - withEvaluationError(evaluationError): { evaluationError: evaluationError }, - '#withReason':: d.fn(help='Reason is optional. It indicates why a request was allowed or denied.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/subjectRulesReviewStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/subjectRulesReviewStatus.libsonnet deleted file mode 100644 index 9dd07031d011..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1/subjectRulesReviewStatus.libsonnet +++ /dev/null @@ -1,18 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='subjectRulesReviewStatus', url='', help="SubjectRulesReviewStatus contains the result of a rules check. This check can be incomplete depending on the set of authorizers the server is configured with and any errors experienced during evaluation. Because authorization rules are additive, if a rule appears in a list it's safe to assume the subject has that permission, even if that list is incomplete."), - '#withEvaluationError':: d.fn(help="EvaluationError can appear in combination with Rules. It indicates an error occurred during rule evaluation, such as an authorizer that doesn't support rule evaluation, and that ResourceRules and/or NonResourceRules may be incomplete.", args=[d.arg(name='evaluationError', type=d.T.string)]), - withEvaluationError(evaluationError): { evaluationError: evaluationError }, - '#withIncomplete':: d.fn(help="Incomplete is true when the rules returned by this call are incomplete. This is most commonly encountered when an authorizer, such as an external authorizer, doesn't support rules evaluation.", args=[d.arg(name='incomplete', type=d.T.boolean)]), - withIncomplete(incomplete): { incomplete: incomplete }, - '#withNonResourceRules':: d.fn(help="NonResourceRules is the list of actions the subject is allowed to perform on non-resources. The list ordering isn't significant, may contain duplicates, and possibly be incomplete.", args=[d.arg(name='nonResourceRules', type=d.T.array)]), - withNonResourceRules(nonResourceRules): { nonResourceRules: if std.isArray(v=nonResourceRules) then nonResourceRules else [nonResourceRules] }, - '#withNonResourceRulesMixin':: d.fn(help="NonResourceRules is the list of actions the subject is allowed to perform on non-resources. The list ordering isn't significant, may contain duplicates, and possibly be incomplete.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nonResourceRules', type=d.T.array)]), - withNonResourceRulesMixin(nonResourceRules): { nonResourceRules+: if std.isArray(v=nonResourceRules) then nonResourceRules else [nonResourceRules] }, - '#withResourceRules':: d.fn(help="ResourceRules is the list of actions the subject is allowed to perform on resources. The list ordering isn't significant, may contain duplicates, and possibly be incomplete.", args=[d.arg(name='resourceRules', type=d.T.array)]), - withResourceRules(resourceRules): { resourceRules: if std.isArray(v=resourceRules) then resourceRules else [resourceRules] }, - '#withResourceRulesMixin':: d.fn(help="ResourceRules is the list of actions the subject is allowed to perform on resources. The list ordering isn't significant, may contain duplicates, and possibly be incomplete.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='resourceRules', type=d.T.array)]), - withResourceRulesMixin(resourceRules): { resourceRules+: if std.isArray(v=resourceRules) then resourceRules else [resourceRules] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/localSubjectAccessReview.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/localSubjectAccessReview.libsonnet deleted file mode 100644 index ce47e09014f2..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/localSubjectAccessReview.libsonnet +++ /dev/null @@ -1,95 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='localSubjectAccessReview', url='', help='LocalSubjectAccessReview checks whether or not a user or group can perform an action in a given namespace. Having a namespace scoped resource makes it much easier to grant namespace scoped policy that includes permissions checking.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Localsubjectaccessreview', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'authorization.k8s.io/v1beta1', - kind: 'LocalSubjectAccessReview', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='SubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes must be set'), - spec: { - '#nonResourceAttributes':: d.obj(help='NonResourceAttributes includes the authorization attributes available for non-resource requests to the Authorizer interface'), - nonResourceAttributes: { - '#withPath':: d.fn(help='Path is the URL path of the request', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { spec+: { nonResourceAttributes+: { path: path } } }, - '#withVerb':: d.fn(help='Verb is the standard HTTP verb', args=[d.arg(name='verb', type=d.T.string)]), - withVerb(verb): { spec+: { nonResourceAttributes+: { verb: verb } } }, - }, - '#resourceAttributes':: d.obj(help='ResourceAttributes includes the authorization attributes available for resource requests to the Authorizer interface'), - resourceAttributes: { - '#withGroup':: d.fn(help='Group is the API Group of the Resource. "*" means all.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { spec+: { resourceAttributes+: { group: group } } }, - '#withName':: d.fn(help='Name is the name of the resource being requested for a "get" or deleted for a "delete". "" (empty) means all.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { resourceAttributes+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace is the namespace of the action being requested. Currently, there is no distinction between no namespace and all namespaces "" (empty) is defaulted for LocalSubjectAccessReviews "" (empty) is empty for cluster-scoped resources "" (empty) means "all" for namespace scoped resources from a SubjectAccessReview or SelfSubjectAccessReview', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { resourceAttributes+: { namespace: namespace } } }, - '#withResource':: d.fn(help='Resource is one of the existing resource types. "*" means all.', args=[d.arg(name='resource', type=d.T.string)]), - withResource(resource): { spec+: { resourceAttributes+: { resource: resource } } }, - '#withSubresource':: d.fn(help='Subresource is one of the existing resource types. "" means none.', args=[d.arg(name='subresource', type=d.T.string)]), - withSubresource(subresource): { spec+: { resourceAttributes+: { subresource: subresource } } }, - '#withVerb':: d.fn(help='Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy. "*" means all.', args=[d.arg(name='verb', type=d.T.string)]), - withVerb(verb): { spec+: { resourceAttributes+: { verb: verb } } }, - '#withVersion':: d.fn(help='Version is the API Version of the Resource. "*" means all.', args=[d.arg(name='version', type=d.T.string)]), - withVersion(version): { spec+: { resourceAttributes+: { version: version } } }, - }, - '#withExtra':: d.fn(help='Extra corresponds to the user.Info.GetExtra() method from the authenticator. Since that is input to the authorizer it needs a reflection here.', args=[d.arg(name='extra', type=d.T.object)]), - withExtra(extra): { spec+: { extra: extra } }, - '#withExtraMixin':: d.fn(help='Extra corresponds to the user.Info.GetExtra() method from the authenticator. Since that is input to the authorizer it needs a reflection here.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='extra', type=d.T.object)]), - withExtraMixin(extra): { spec+: { extra+: extra } }, - '#withGroup':: d.fn(help="Groups is the groups you're testing for.", args=[d.arg(name='group', type=d.T.array)]), - withGroup(group): { spec+: { group: if std.isArray(v=group) then group else [group] } }, - '#withGroupMixin':: d.fn(help="Groups is the groups you're testing for.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='group', type=d.T.array)]), - withGroupMixin(group): { spec+: { group+: if std.isArray(v=group) then group else [group] } }, - '#withUid':: d.fn(help='UID information about the requesting user.', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { uid: uid } }, - '#withUser':: d.fn(help="User is the user you're testing for. If you specify 'User' but not 'Group', then is it interpreted as 'What if User were not a member of any groups", args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { user: user } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/main.libsonnet deleted file mode 100644 index 58919359023f..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/main.libsonnet +++ /dev/null @@ -1,17 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1beta1', url='', help=''), - localSubjectAccessReview: (import 'localSubjectAccessReview.libsonnet'), - nonResourceAttributes: (import 'nonResourceAttributes.libsonnet'), - nonResourceRule: (import 'nonResourceRule.libsonnet'), - resourceAttributes: (import 'resourceAttributes.libsonnet'), - resourceRule: (import 'resourceRule.libsonnet'), - selfSubjectAccessReview: (import 'selfSubjectAccessReview.libsonnet'), - selfSubjectAccessReviewSpec: (import 'selfSubjectAccessReviewSpec.libsonnet'), - selfSubjectRulesReview: (import 'selfSubjectRulesReview.libsonnet'), - selfSubjectRulesReviewSpec: (import 'selfSubjectRulesReviewSpec.libsonnet'), - subjectAccessReview: (import 'subjectAccessReview.libsonnet'), - subjectAccessReviewSpec: (import 'subjectAccessReviewSpec.libsonnet'), - subjectAccessReviewStatus: (import 'subjectAccessReviewStatus.libsonnet'), - subjectRulesReviewStatus: (import 'subjectRulesReviewStatus.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/nonResourceAttributes.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/nonResourceAttributes.libsonnet deleted file mode 100644 index 1d6844be6b30..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/nonResourceAttributes.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='nonResourceAttributes', url='', help='NonResourceAttributes includes the authorization attributes available for non-resource requests to the Authorizer interface'), - '#withPath':: d.fn(help='Path is the URL path of the request', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { path: path }, - '#withVerb':: d.fn(help='Verb is the standard HTTP verb', args=[d.arg(name='verb', type=d.T.string)]), - withVerb(verb): { verb: verb }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/nonResourceRule.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/nonResourceRule.libsonnet deleted file mode 100644 index b138fef63dd1..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/nonResourceRule.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='nonResourceRule', url='', help='NonResourceRule holds information that describes a rule for the non-resource'), - '#withNonResourceURLs':: d.fn(help='NonResourceURLs is a set of partial urls that a user should have access to. *s are allowed, but only as the full, final step in the path. "*" means all.', args=[d.arg(name='nonResourceURLs', type=d.T.array)]), - withNonResourceURLs(nonResourceURLs): { nonResourceURLs: if std.isArray(v=nonResourceURLs) then nonResourceURLs else [nonResourceURLs] }, - '#withNonResourceURLsMixin':: d.fn(help='NonResourceURLs is a set of partial urls that a user should have access to. *s are allowed, but only as the full, final step in the path. "*" means all.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nonResourceURLs', type=d.T.array)]), - withNonResourceURLsMixin(nonResourceURLs): { nonResourceURLs+: if std.isArray(v=nonResourceURLs) then nonResourceURLs else [nonResourceURLs] }, - '#withVerbs':: d.fn(help='Verb is a list of kubernetes non-resource API verbs, like: get, post, put, delete, patch, head, options. "*" means all.', args=[d.arg(name='verbs', type=d.T.array)]), - withVerbs(verbs): { verbs: if std.isArray(v=verbs) then verbs else [verbs] }, - '#withVerbsMixin':: d.fn(help='Verb is a list of kubernetes non-resource API verbs, like: get, post, put, delete, patch, head, options. "*" means all.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='verbs', type=d.T.array)]), - withVerbsMixin(verbs): { verbs+: if std.isArray(v=verbs) then verbs else [verbs] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/resourceAttributes.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/resourceAttributes.libsonnet deleted file mode 100644 index 26234c41d705..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/resourceAttributes.libsonnet +++ /dev/null @@ -1,20 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='resourceAttributes', url='', help='ResourceAttributes includes the authorization attributes available for resource requests to the Authorizer interface'), - '#withGroup':: d.fn(help='Group is the API Group of the Resource. "*" means all.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { group: group }, - '#withName':: d.fn(help='Name is the name of the resource being requested for a "get" or deleted for a "delete". "" (empty) means all.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withNamespace':: d.fn(help='Namespace is the namespace of the action being requested. Currently, there is no distinction between no namespace and all namespaces "" (empty) is defaulted for LocalSubjectAccessReviews "" (empty) is empty for cluster-scoped resources "" (empty) means "all" for namespace scoped resources from a SubjectAccessReview or SelfSubjectAccessReview', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { namespace: namespace }, - '#withResource':: d.fn(help='Resource is one of the existing resource types. "*" means all.', args=[d.arg(name='resource', type=d.T.string)]), - withResource(resource): { resource: resource }, - '#withSubresource':: d.fn(help='Subresource is one of the existing resource types. "" means none.', args=[d.arg(name='subresource', type=d.T.string)]), - withSubresource(subresource): { subresource: subresource }, - '#withVerb':: d.fn(help='Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy. "*" means all.', args=[d.arg(name='verb', type=d.T.string)]), - withVerb(verb): { verb: verb }, - '#withVersion':: d.fn(help='Version is the API Version of the Resource. "*" means all.', args=[d.arg(name='version', type=d.T.string)]), - withVersion(version): { version: version }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/resourceRule.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/resourceRule.libsonnet deleted file mode 100644 index 70cdabcd5aad..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/resourceRule.libsonnet +++ /dev/null @@ -1,22 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='resourceRule', url='', help="ResourceRule is the list of actions the subject is allowed to perform on resources. The list ordering isn't significant, may contain duplicates, and possibly be incomplete."), - '#withApiGroups':: d.fn(help='APIGroups is the name of the APIGroup that contains the resources. If multiple API groups are specified, any action requested against one of the enumerated resources in any API group will be allowed. "*" means all.', args=[d.arg(name='apiGroups', type=d.T.array)]), - withApiGroups(apiGroups): { apiGroups: if std.isArray(v=apiGroups) then apiGroups else [apiGroups] }, - '#withApiGroupsMixin':: d.fn(help='APIGroups is the name of the APIGroup that contains the resources. If multiple API groups are specified, any action requested against one of the enumerated resources in any API group will be allowed. "*" means all.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='apiGroups', type=d.T.array)]), - withApiGroupsMixin(apiGroups): { apiGroups+: if std.isArray(v=apiGroups) then apiGroups else [apiGroups] }, - '#withResourceNames':: d.fn(help='ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed. "*" means all.', args=[d.arg(name='resourceNames', type=d.T.array)]), - withResourceNames(resourceNames): { resourceNames: if std.isArray(v=resourceNames) then resourceNames else [resourceNames] }, - '#withResourceNamesMixin':: d.fn(help='ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed. "*" means all.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='resourceNames', type=d.T.array)]), - withResourceNamesMixin(resourceNames): { resourceNames+: if std.isArray(v=resourceNames) then resourceNames else [resourceNames] }, - '#withResources':: d.fn(help="Resources is a list of resources this rule applies to. '*' means all in the specified apiGroups.\n '*/foo' represents the subresource 'foo' for all resources in the specified apiGroups.", args=[d.arg(name='resources', type=d.T.array)]), - withResources(resources): { resources: if std.isArray(v=resources) then resources else [resources] }, - '#withResourcesMixin':: d.fn(help="Resources is a list of resources this rule applies to. '*' means all in the specified apiGroups.\n '*/foo' represents the subresource 'foo' for all resources in the specified apiGroups.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='resources', type=d.T.array)]), - withResourcesMixin(resources): { resources+: if std.isArray(v=resources) then resources else [resources] }, - '#withVerbs':: d.fn(help='Verb is a list of kubernetes resource API verbs, like: get, list, watch, create, update, delete, proxy. "*" means all.', args=[d.arg(name='verbs', type=d.T.array)]), - withVerbs(verbs): { verbs: if std.isArray(v=verbs) then verbs else [verbs] }, - '#withVerbsMixin':: d.fn(help='Verb is a list of kubernetes resource API verbs, like: get, list, watch, create, update, delete, proxy. "*" means all.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='verbs', type=d.T.array)]), - withVerbsMixin(verbs): { verbs+: if std.isArray(v=verbs) then verbs else [verbs] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/selfSubjectAccessReview.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/selfSubjectAccessReview.libsonnet deleted file mode 100644 index 3b7aabae75df..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/selfSubjectAccessReview.libsonnet +++ /dev/null @@ -1,83 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='selfSubjectAccessReview', url='', help='SelfSubjectAccessReview checks whether or the current user can perform an action. Not filling in a spec.namespace means "in all namespaces". Self is a special case, because users should always be able to check whether they can perform an action'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Selfsubjectaccessreview', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'authorization.k8s.io/v1beta1', - kind: 'SelfSubjectAccessReview', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='SelfSubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes must be set'), - spec: { - '#nonResourceAttributes':: d.obj(help='NonResourceAttributes includes the authorization attributes available for non-resource requests to the Authorizer interface'), - nonResourceAttributes: { - '#withPath':: d.fn(help='Path is the URL path of the request', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { spec+: { nonResourceAttributes+: { path: path } } }, - '#withVerb':: d.fn(help='Verb is the standard HTTP verb', args=[d.arg(name='verb', type=d.T.string)]), - withVerb(verb): { spec+: { nonResourceAttributes+: { verb: verb } } }, - }, - '#resourceAttributes':: d.obj(help='ResourceAttributes includes the authorization attributes available for resource requests to the Authorizer interface'), - resourceAttributes: { - '#withGroup':: d.fn(help='Group is the API Group of the Resource. "*" means all.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { spec+: { resourceAttributes+: { group: group } } }, - '#withName':: d.fn(help='Name is the name of the resource being requested for a "get" or deleted for a "delete". "" (empty) means all.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { resourceAttributes+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace is the namespace of the action being requested. Currently, there is no distinction between no namespace and all namespaces "" (empty) is defaulted for LocalSubjectAccessReviews "" (empty) is empty for cluster-scoped resources "" (empty) means "all" for namespace scoped resources from a SubjectAccessReview or SelfSubjectAccessReview', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { resourceAttributes+: { namespace: namespace } } }, - '#withResource':: d.fn(help='Resource is one of the existing resource types. "*" means all.', args=[d.arg(name='resource', type=d.T.string)]), - withResource(resource): { spec+: { resourceAttributes+: { resource: resource } } }, - '#withSubresource':: d.fn(help='Subresource is one of the existing resource types. "" means none.', args=[d.arg(name='subresource', type=d.T.string)]), - withSubresource(subresource): { spec+: { resourceAttributes+: { subresource: subresource } } }, - '#withVerb':: d.fn(help='Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy. "*" means all.', args=[d.arg(name='verb', type=d.T.string)]), - withVerb(verb): { spec+: { resourceAttributes+: { verb: verb } } }, - '#withVersion':: d.fn(help='Version is the API Version of the Resource. "*" means all.', args=[d.arg(name='version', type=d.T.string)]), - withVersion(version): { spec+: { resourceAttributes+: { version: version } } }, - }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/selfSubjectAccessReviewSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/selfSubjectAccessReviewSpec.libsonnet deleted file mode 100644 index 6462f5c5c18a..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/selfSubjectAccessReviewSpec.libsonnet +++ /dev/null @@ -1,30 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='selfSubjectAccessReviewSpec', url='', help='SelfSubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes must be set'), - '#nonResourceAttributes':: d.obj(help='NonResourceAttributes includes the authorization attributes available for non-resource requests to the Authorizer interface'), - nonResourceAttributes: { - '#withPath':: d.fn(help='Path is the URL path of the request', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { nonResourceAttributes+: { path: path } }, - '#withVerb':: d.fn(help='Verb is the standard HTTP verb', args=[d.arg(name='verb', type=d.T.string)]), - withVerb(verb): { nonResourceAttributes+: { verb: verb } }, - }, - '#resourceAttributes':: d.obj(help='ResourceAttributes includes the authorization attributes available for resource requests to the Authorizer interface'), - resourceAttributes: { - '#withGroup':: d.fn(help='Group is the API Group of the Resource. "*" means all.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { resourceAttributes+: { group: group } }, - '#withName':: d.fn(help='Name is the name of the resource being requested for a "get" or deleted for a "delete". "" (empty) means all.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { resourceAttributes+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace is the namespace of the action being requested. Currently, there is no distinction between no namespace and all namespaces "" (empty) is defaulted for LocalSubjectAccessReviews "" (empty) is empty for cluster-scoped resources "" (empty) means "all" for namespace scoped resources from a SubjectAccessReview or SelfSubjectAccessReview', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { resourceAttributes+: { namespace: namespace } }, - '#withResource':: d.fn(help='Resource is one of the existing resource types. "*" means all.', args=[d.arg(name='resource', type=d.T.string)]), - withResource(resource): { resourceAttributes+: { resource: resource } }, - '#withSubresource':: d.fn(help='Subresource is one of the existing resource types. "" means none.', args=[d.arg(name='subresource', type=d.T.string)]), - withSubresource(subresource): { resourceAttributes+: { subresource: subresource } }, - '#withVerb':: d.fn(help='Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy. "*" means all.', args=[d.arg(name='verb', type=d.T.string)]), - withVerb(verb): { resourceAttributes+: { verb: verb } }, - '#withVersion':: d.fn(help='Version is the API Version of the Resource. "*" means all.', args=[d.arg(name='version', type=d.T.string)]), - withVersion(version): { resourceAttributes+: { version: version } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/selfSubjectRulesReview.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/selfSubjectRulesReview.libsonnet deleted file mode 100644 index 195f074152fd..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/selfSubjectRulesReview.libsonnet +++ /dev/null @@ -1,61 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='selfSubjectRulesReview', url='', help="SelfSubjectRulesReview enumerates the set of actions the current user can perform within a namespace. The returned list of actions may be incomplete depending on the server's authorization mode, and any errors experienced during the evaluation. SelfSubjectRulesReview should be used by UIs to show/hide actions, or to quickly let an end user reason about their permissions. It should NOT Be used by external systems to drive authorization decisions as this raises confused deputy, cache lifetime/revocation, and correctness concerns. SubjectAccessReview, and LocalAccessReview are the correct way to defer authorization decisions to the API server."), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Selfsubjectrulesreview', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'authorization.k8s.io/v1beta1', - kind: 'SelfSubjectRulesReview', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help=''), - spec: { - '#withNamespace':: d.fn(help='Namespace to evaluate rules for. Required.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { namespace: namespace } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/selfSubjectRulesReviewSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/selfSubjectRulesReviewSpec.libsonnet deleted file mode 100644 index e71b052da1a8..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/selfSubjectRulesReviewSpec.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='selfSubjectRulesReviewSpec', url='', help=''), - '#withNamespace':: d.fn(help='Namespace to evaluate rules for. Required.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { namespace: namespace }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/subjectAccessReview.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/subjectAccessReview.libsonnet deleted file mode 100644 index eed66cb82aa5..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/subjectAccessReview.libsonnet +++ /dev/null @@ -1,95 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='subjectAccessReview', url='', help='SubjectAccessReview checks whether or not a user or group can perform an action.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Subjectaccessreview', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'authorization.k8s.io/v1beta1', - kind: 'SubjectAccessReview', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='SubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes must be set'), - spec: { - '#nonResourceAttributes':: d.obj(help='NonResourceAttributes includes the authorization attributes available for non-resource requests to the Authorizer interface'), - nonResourceAttributes: { - '#withPath':: d.fn(help='Path is the URL path of the request', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { spec+: { nonResourceAttributes+: { path: path } } }, - '#withVerb':: d.fn(help='Verb is the standard HTTP verb', args=[d.arg(name='verb', type=d.T.string)]), - withVerb(verb): { spec+: { nonResourceAttributes+: { verb: verb } } }, - }, - '#resourceAttributes':: d.obj(help='ResourceAttributes includes the authorization attributes available for resource requests to the Authorizer interface'), - resourceAttributes: { - '#withGroup':: d.fn(help='Group is the API Group of the Resource. "*" means all.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { spec+: { resourceAttributes+: { group: group } } }, - '#withName':: d.fn(help='Name is the name of the resource being requested for a "get" or deleted for a "delete". "" (empty) means all.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { resourceAttributes+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace is the namespace of the action being requested. Currently, there is no distinction between no namespace and all namespaces "" (empty) is defaulted for LocalSubjectAccessReviews "" (empty) is empty for cluster-scoped resources "" (empty) means "all" for namespace scoped resources from a SubjectAccessReview or SelfSubjectAccessReview', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { resourceAttributes+: { namespace: namespace } } }, - '#withResource':: d.fn(help='Resource is one of the existing resource types. "*" means all.', args=[d.arg(name='resource', type=d.T.string)]), - withResource(resource): { spec+: { resourceAttributes+: { resource: resource } } }, - '#withSubresource':: d.fn(help='Subresource is one of the existing resource types. "" means none.', args=[d.arg(name='subresource', type=d.T.string)]), - withSubresource(subresource): { spec+: { resourceAttributes+: { subresource: subresource } } }, - '#withVerb':: d.fn(help='Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy. "*" means all.', args=[d.arg(name='verb', type=d.T.string)]), - withVerb(verb): { spec+: { resourceAttributes+: { verb: verb } } }, - '#withVersion':: d.fn(help='Version is the API Version of the Resource. "*" means all.', args=[d.arg(name='version', type=d.T.string)]), - withVersion(version): { spec+: { resourceAttributes+: { version: version } } }, - }, - '#withExtra':: d.fn(help='Extra corresponds to the user.Info.GetExtra() method from the authenticator. Since that is input to the authorizer it needs a reflection here.', args=[d.arg(name='extra', type=d.T.object)]), - withExtra(extra): { spec+: { extra: extra } }, - '#withExtraMixin':: d.fn(help='Extra corresponds to the user.Info.GetExtra() method from the authenticator. Since that is input to the authorizer it needs a reflection here.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='extra', type=d.T.object)]), - withExtraMixin(extra): { spec+: { extra+: extra } }, - '#withGroup':: d.fn(help="Groups is the groups you're testing for.", args=[d.arg(name='group', type=d.T.array)]), - withGroup(group): { spec+: { group: if std.isArray(v=group) then group else [group] } }, - '#withGroupMixin':: d.fn(help="Groups is the groups you're testing for.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='group', type=d.T.array)]), - withGroupMixin(group): { spec+: { group+: if std.isArray(v=group) then group else [group] } }, - '#withUid':: d.fn(help='UID information about the requesting user.', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { uid: uid } }, - '#withUser':: d.fn(help="User is the user you're testing for. If you specify 'User' but not 'Group', then is it interpreted as 'What if User were not a member of any groups", args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { user: user } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/subjectAccessReviewSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/subjectAccessReviewSpec.libsonnet deleted file mode 100644 index 24f729e0a6e5..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/subjectAccessReviewSpec.libsonnet +++ /dev/null @@ -1,42 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='subjectAccessReviewSpec', url='', help='SubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes must be set'), - '#nonResourceAttributes':: d.obj(help='NonResourceAttributes includes the authorization attributes available for non-resource requests to the Authorizer interface'), - nonResourceAttributes: { - '#withPath':: d.fn(help='Path is the URL path of the request', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { nonResourceAttributes+: { path: path } }, - '#withVerb':: d.fn(help='Verb is the standard HTTP verb', args=[d.arg(name='verb', type=d.T.string)]), - withVerb(verb): { nonResourceAttributes+: { verb: verb } }, - }, - '#resourceAttributes':: d.obj(help='ResourceAttributes includes the authorization attributes available for resource requests to the Authorizer interface'), - resourceAttributes: { - '#withGroup':: d.fn(help='Group is the API Group of the Resource. "*" means all.', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { resourceAttributes+: { group: group } }, - '#withName':: d.fn(help='Name is the name of the resource being requested for a "get" or deleted for a "delete". "" (empty) means all.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { resourceAttributes+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace is the namespace of the action being requested. Currently, there is no distinction between no namespace and all namespaces "" (empty) is defaulted for LocalSubjectAccessReviews "" (empty) is empty for cluster-scoped resources "" (empty) means "all" for namespace scoped resources from a SubjectAccessReview or SelfSubjectAccessReview', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { resourceAttributes+: { namespace: namespace } }, - '#withResource':: d.fn(help='Resource is one of the existing resource types. "*" means all.', args=[d.arg(name='resource', type=d.T.string)]), - withResource(resource): { resourceAttributes+: { resource: resource } }, - '#withSubresource':: d.fn(help='Subresource is one of the existing resource types. "" means none.', args=[d.arg(name='subresource', type=d.T.string)]), - withSubresource(subresource): { resourceAttributes+: { subresource: subresource } }, - '#withVerb':: d.fn(help='Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy. "*" means all.', args=[d.arg(name='verb', type=d.T.string)]), - withVerb(verb): { resourceAttributes+: { verb: verb } }, - '#withVersion':: d.fn(help='Version is the API Version of the Resource. "*" means all.', args=[d.arg(name='version', type=d.T.string)]), - withVersion(version): { resourceAttributes+: { version: version } }, - }, - '#withExtra':: d.fn(help='Extra corresponds to the user.Info.GetExtra() method from the authenticator. Since that is input to the authorizer it needs a reflection here.', args=[d.arg(name='extra', type=d.T.object)]), - withExtra(extra): { extra: extra }, - '#withExtraMixin':: d.fn(help='Extra corresponds to the user.Info.GetExtra() method from the authenticator. Since that is input to the authorizer it needs a reflection here.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='extra', type=d.T.object)]), - withExtraMixin(extra): { extra+: extra }, - '#withGroup':: d.fn(help="Groups is the groups you're testing for.", args=[d.arg(name='group', type=d.T.array)]), - withGroup(group): { group: if std.isArray(v=group) then group else [group] }, - '#withGroupMixin':: d.fn(help="Groups is the groups you're testing for.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='group', type=d.T.array)]), - withGroupMixin(group): { group+: if std.isArray(v=group) then group else [group] }, - '#withUid':: d.fn(help='UID information about the requesting user.', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { uid: uid }, - '#withUser':: d.fn(help="User is the user you're testing for. If you specify 'User' but not 'Group', then is it interpreted as 'What if User were not a member of any groups", args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { user: user }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/subjectAccessReviewStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/subjectAccessReviewStatus.libsonnet deleted file mode 100644 index e8b77e1031cd..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/subjectAccessReviewStatus.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='subjectAccessReviewStatus', url='', help='SubjectAccessReviewStatus'), - '#withAllowed':: d.fn(help='Allowed is required. True if the action would be allowed, false otherwise.', args=[d.arg(name='allowed', type=d.T.boolean)]), - withAllowed(allowed): { allowed: allowed }, - '#withDenied':: d.fn(help='Denied is optional. True if the action would be denied, otherwise false. If both allowed is false and denied is false, then the authorizer has no opinion on whether to authorize the action. Denied may not be true if Allowed is true.', args=[d.arg(name='denied', type=d.T.boolean)]), - withDenied(denied): { denied: denied }, - '#withEvaluationError':: d.fn(help='EvaluationError is an indication that some error occurred during the authorization check. It is entirely possible to get an error and be able to continue determine authorization status in spite of it. For instance, RBAC can be missing a role, but enough roles are still present and bound to reason about the request.', args=[d.arg(name='evaluationError', type=d.T.string)]), - withEvaluationError(evaluationError): { evaluationError: evaluationError }, - '#withReason':: d.fn(help='Reason is optional. It indicates why a request was allowed or denied.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/subjectRulesReviewStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/subjectRulesReviewStatus.libsonnet deleted file mode 100644 index 9dd07031d011..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/authorization/v1beta1/subjectRulesReviewStatus.libsonnet +++ /dev/null @@ -1,18 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='subjectRulesReviewStatus', url='', help="SubjectRulesReviewStatus contains the result of a rules check. This check can be incomplete depending on the set of authorizers the server is configured with and any errors experienced during evaluation. Because authorization rules are additive, if a rule appears in a list it's safe to assume the subject has that permission, even if that list is incomplete."), - '#withEvaluationError':: d.fn(help="EvaluationError can appear in combination with Rules. It indicates an error occurred during rule evaluation, such as an authorizer that doesn't support rule evaluation, and that ResourceRules and/or NonResourceRules may be incomplete.", args=[d.arg(name='evaluationError', type=d.T.string)]), - withEvaluationError(evaluationError): { evaluationError: evaluationError }, - '#withIncomplete':: d.fn(help="Incomplete is true when the rules returned by this call are incomplete. This is most commonly encountered when an authorizer, such as an external authorizer, doesn't support rules evaluation.", args=[d.arg(name='incomplete', type=d.T.boolean)]), - withIncomplete(incomplete): { incomplete: incomplete }, - '#withNonResourceRules':: d.fn(help="NonResourceRules is the list of actions the subject is allowed to perform on non-resources. The list ordering isn't significant, may contain duplicates, and possibly be incomplete.", args=[d.arg(name='nonResourceRules', type=d.T.array)]), - withNonResourceRules(nonResourceRules): { nonResourceRules: if std.isArray(v=nonResourceRules) then nonResourceRules else [nonResourceRules] }, - '#withNonResourceRulesMixin':: d.fn(help="NonResourceRules is the list of actions the subject is allowed to perform on non-resources. The list ordering isn't significant, may contain duplicates, and possibly be incomplete.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nonResourceRules', type=d.T.array)]), - withNonResourceRulesMixin(nonResourceRules): { nonResourceRules+: if std.isArray(v=nonResourceRules) then nonResourceRules else [nonResourceRules] }, - '#withResourceRules':: d.fn(help="ResourceRules is the list of actions the subject is allowed to perform on resources. The list ordering isn't significant, may contain duplicates, and possibly be incomplete.", args=[d.arg(name='resourceRules', type=d.T.array)]), - withResourceRules(resourceRules): { resourceRules: if std.isArray(v=resourceRules) then resourceRules else [resourceRules] }, - '#withResourceRulesMixin':: d.fn(help="ResourceRules is the list of actions the subject is allowed to perform on resources. The list ordering isn't significant, may contain duplicates, and possibly be incomplete.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='resourceRules', type=d.T.array)]), - withResourceRulesMixin(resourceRules): { resourceRules+: if std.isArray(v=resourceRules) then resourceRules else [resourceRules] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/main.libsonnet deleted file mode 100644 index 69a8e08c746a..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/main.libsonnet +++ /dev/null @@ -1,7 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='autoscaling', url='', help=''), - v1: (import 'v1/main.libsonnet'), - v2beta1: (import 'v2beta1/main.libsonnet'), - v2beta2: (import 'v2beta2/main.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v1/crossVersionObjectReference.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v1/crossVersionObjectReference.libsonnet deleted file mode 100644 index b5eb31cc2e06..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v1/crossVersionObjectReference.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='crossVersionObjectReference', url='', help='CrossVersionObjectReference contains enough information to let you identify the referred resource.'), - '#withKind':: d.fn(help='Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds"', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { kind: kind }, - '#withName':: d.fn(help='Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v1/horizontalPodAutoscaler.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v1/horizontalPodAutoscaler.libsonnet deleted file mode 100644 index f5fe4e0088b8..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v1/horizontalPodAutoscaler.libsonnet +++ /dev/null @@ -1,74 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='horizontalPodAutoscaler', url='', help='configuration of a horizontal pod autoscaler.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Horizontalpodautoscaler', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'autoscaling/v1', - kind: 'HorizontalPodAutoscaler', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='specification of a horizontal pod autoscaler.'), - spec: { - '#scaleTargetRef':: d.obj(help='CrossVersionObjectReference contains enough information to let you identify the referred resource.'), - scaleTargetRef: { - '#withApiVersion':: d.fn(help='API version of the referent', args=[d.arg(name='apiVersion', type=d.T.string)]), - withApiVersion(apiVersion): { spec+: { scaleTargetRef+: { apiVersion: apiVersion } } }, - '#withKind':: d.fn(help='Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds"', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { scaleTargetRef+: { kind: kind } } }, - '#withName':: d.fn(help='Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { scaleTargetRef+: { name: name } } }, - }, - '#withMaxReplicas':: d.fn(help='upper limit for the number of pods that can be set by the autoscaler; cannot be smaller than MinReplicas.', args=[d.arg(name='maxReplicas', type=d.T.integer)]), - withMaxReplicas(maxReplicas): { spec+: { maxReplicas: maxReplicas } }, - '#withMinReplicas':: d.fn(help='minReplicas is the lower limit for the number of replicas to which the autoscaler can scale down. It defaults to 1 pod. minReplicas is allowed to be 0 if the alpha feature gate HPAScaleToZero is enabled and at least one Object or External metric is configured. Scaling is active as long as at least one metric value is available.', args=[d.arg(name='minReplicas', type=d.T.integer)]), - withMinReplicas(minReplicas): { spec+: { minReplicas: minReplicas } }, - '#withTargetCPUUtilizationPercentage':: d.fn(help='target average CPU utilization (represented as a percentage of requested CPU) over all the pods; if not specified the default autoscaling policy will be used.', args=[d.arg(name='targetCPUUtilizationPercentage', type=d.T.integer)]), - withTargetCPUUtilizationPercentage(targetCPUUtilizationPercentage): { spec+: { targetCPUUtilizationPercentage: targetCPUUtilizationPercentage } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v1/horizontalPodAutoscalerSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v1/horizontalPodAutoscalerSpec.libsonnet deleted file mode 100644 index 59c33f5ba085..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v1/horizontalPodAutoscalerSpec.libsonnet +++ /dev/null @@ -1,21 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='horizontalPodAutoscalerSpec', url='', help='specification of a horizontal pod autoscaler.'), - '#scaleTargetRef':: d.obj(help='CrossVersionObjectReference contains enough information to let you identify the referred resource.'), - scaleTargetRef: { - '#withApiVersion':: d.fn(help='API version of the referent', args=[d.arg(name='apiVersion', type=d.T.string)]), - withApiVersion(apiVersion): { scaleTargetRef+: { apiVersion: apiVersion } }, - '#withKind':: d.fn(help='Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds"', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { scaleTargetRef+: { kind: kind } }, - '#withName':: d.fn(help='Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { scaleTargetRef+: { name: name } }, - }, - '#withMaxReplicas':: d.fn(help='upper limit for the number of pods that can be set by the autoscaler; cannot be smaller than MinReplicas.', args=[d.arg(name='maxReplicas', type=d.T.integer)]), - withMaxReplicas(maxReplicas): { maxReplicas: maxReplicas }, - '#withMinReplicas':: d.fn(help='minReplicas is the lower limit for the number of replicas to which the autoscaler can scale down. It defaults to 1 pod. minReplicas is allowed to be 0 if the alpha feature gate HPAScaleToZero is enabled and at least one Object or External metric is configured. Scaling is active as long as at least one metric value is available.', args=[d.arg(name='minReplicas', type=d.T.integer)]), - withMinReplicas(minReplicas): { minReplicas: minReplicas }, - '#withTargetCPUUtilizationPercentage':: d.fn(help='target average CPU utilization (represented as a percentage of requested CPU) over all the pods; if not specified the default autoscaling policy will be used.', args=[d.arg(name='targetCPUUtilizationPercentage', type=d.T.integer)]), - withTargetCPUUtilizationPercentage(targetCPUUtilizationPercentage): { targetCPUUtilizationPercentage: targetCPUUtilizationPercentage }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v1/horizontalPodAutoscalerStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v1/horizontalPodAutoscalerStatus.libsonnet deleted file mode 100644 index c6c106848175..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v1/horizontalPodAutoscalerStatus.libsonnet +++ /dev/null @@ -1,16 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='horizontalPodAutoscalerStatus', url='', help='current status of a horizontal pod autoscaler'), - '#withCurrentCPUUtilizationPercentage':: d.fn(help='current average CPU utilization over all pods, represented as a percentage of requested CPU, e.g. 70 means that an average pod is using now 70% of its requested CPU.', args=[d.arg(name='currentCPUUtilizationPercentage', type=d.T.integer)]), - withCurrentCPUUtilizationPercentage(currentCPUUtilizationPercentage): { currentCPUUtilizationPercentage: currentCPUUtilizationPercentage }, - '#withCurrentReplicas':: d.fn(help='current number of replicas of pods managed by this autoscaler.', args=[d.arg(name='currentReplicas', type=d.T.integer)]), - withCurrentReplicas(currentReplicas): { currentReplicas: currentReplicas }, - '#withDesiredReplicas':: d.fn(help='desired number of replicas of pods managed by this autoscaler.', args=[d.arg(name='desiredReplicas', type=d.T.integer)]), - withDesiredReplicas(desiredReplicas): { desiredReplicas: desiredReplicas }, - '#withLastScaleTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastScaleTime', type=d.T.string)]), - withLastScaleTime(lastScaleTime): { lastScaleTime: lastScaleTime }, - '#withObservedGeneration':: d.fn(help='most recent generation observed by this autoscaler.', args=[d.arg(name='observedGeneration', type=d.T.integer)]), - withObservedGeneration(observedGeneration): { observedGeneration: observedGeneration }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v1/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v1/main.libsonnet deleted file mode 100644 index 2e4434d770bf..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v1/main.libsonnet +++ /dev/null @@ -1,11 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1', url='', help=''), - crossVersionObjectReference: (import 'crossVersionObjectReference.libsonnet'), - horizontalPodAutoscaler: (import 'horizontalPodAutoscaler.libsonnet'), - horizontalPodAutoscalerSpec: (import 'horizontalPodAutoscalerSpec.libsonnet'), - horizontalPodAutoscalerStatus: (import 'horizontalPodAutoscalerStatus.libsonnet'), - scale: (import 'scale.libsonnet'), - scaleSpec: (import 'scaleSpec.libsonnet'), - scaleStatus: (import 'scaleStatus.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v1/scale.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v1/scale.libsonnet deleted file mode 100644 index b0fc338a261b..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v1/scale.libsonnet +++ /dev/null @@ -1,61 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='scale', url='', help='Scale represents a scaling request for a resource.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Scale', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'autoscaling/v1', - kind: 'Scale', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='ScaleSpec describes the attributes of a scale subresource.'), - spec: { - '#withReplicas':: d.fn(help='desired number of instances for the scaled object.', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { spec+: { replicas: replicas } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v1/scaleSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v1/scaleSpec.libsonnet deleted file mode 100644 index ce55d2e4c948..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v1/scaleSpec.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='scaleSpec', url='', help='ScaleSpec describes the attributes of a scale subresource.'), - '#withReplicas':: d.fn(help='desired number of instances for the scaled object.', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { replicas: replicas }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v1/scaleStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v1/scaleStatus.libsonnet deleted file mode 100644 index bf3063385f74..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v1/scaleStatus.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='scaleStatus', url='', help='ScaleStatus represents the current status of a scale subresource.'), - '#withReplicas':: d.fn(help='actual number of observed instances of the scaled object.', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { replicas: replicas }, - '#withSelector':: d.fn(help='label query over pods that should match the replicas count. This is same as the label selector but in the string format to avoid introspection by clients. The string will be in the same format as the query-param syntax. More info about label selectors: http://kubernetes.io/docs/user-guide/labels#label-selectors', args=[d.arg(name='selector', type=d.T.string)]), - withSelector(selector): { selector: selector }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/containerResourceMetricSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/containerResourceMetricSource.libsonnet deleted file mode 100644 index 0942fd65c208..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/containerResourceMetricSource.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='containerResourceMetricSource', url='', help='ContainerResourceMetricSource indicates how to scale on a resource metric known to Kubernetes, as specified in requests and limits, describing each pod in the current scale target (e.g. CPU or memory). The values will be averaged together before being compared to the target. Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the "pods" source. Only one "target" type should be set.'), - '#withContainer':: d.fn(help='container is the name of the container in the pods of the scaling target', args=[d.arg(name='container', type=d.T.string)]), - withContainer(container): { container: container }, - '#withName':: d.fn(help='name is the name of the resource in question.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withTargetAverageUtilization':: d.fn(help='targetAverageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods.', args=[d.arg(name='targetAverageUtilization', type=d.T.integer)]), - withTargetAverageUtilization(targetAverageUtilization): { targetAverageUtilization: targetAverageUtilization }, - '#withTargetAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='targetAverageValue', type=d.T.string)]), - withTargetAverageValue(targetAverageValue): { targetAverageValue: targetAverageValue }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/containerResourceMetricStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/containerResourceMetricStatus.libsonnet deleted file mode 100644 index 76d9e3153241..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/containerResourceMetricStatus.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='containerResourceMetricStatus', url='', help='ContainerResourceMetricStatus indicates the current value of a resource metric known to Kubernetes, as specified in requests and limits, describing a single container in each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the "pods" source.'), - '#withContainer':: d.fn(help='container is the name of the container in the pods of the scaling target', args=[d.arg(name='container', type=d.T.string)]), - withContainer(container): { container: container }, - '#withCurrentAverageUtilization':: d.fn(help='currentAverageUtilization is the current value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. It will only be present if `targetAverageValue` was set in the corresponding metric specification.', args=[d.arg(name='currentAverageUtilization', type=d.T.integer)]), - withCurrentAverageUtilization(currentAverageUtilization): { currentAverageUtilization: currentAverageUtilization }, - '#withCurrentAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='currentAverageValue', type=d.T.string)]), - withCurrentAverageValue(currentAverageValue): { currentAverageValue: currentAverageValue }, - '#withName':: d.fn(help='name is the name of the resource in question.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/crossVersionObjectReference.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/crossVersionObjectReference.libsonnet deleted file mode 100644 index b5eb31cc2e06..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/crossVersionObjectReference.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='crossVersionObjectReference', url='', help='CrossVersionObjectReference contains enough information to let you identify the referred resource.'), - '#withKind':: d.fn(help='Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds"', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { kind: kind }, - '#withName':: d.fn(help='Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/externalMetricSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/externalMetricSource.libsonnet deleted file mode 100644 index 8551ffcb4f59..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/externalMetricSource.libsonnet +++ /dev/null @@ -1,23 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='externalMetricSource', url='', help='ExternalMetricSource indicates how to scale on a metric not associated with any Kubernetes object (for example length of queue in cloud messaging service, or QPS from loadbalancer running outside of cluster). Exactly one "target" type should be set.'), - '#metricSelector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - metricSelector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { metricSelector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { metricSelector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { metricSelector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { metricSelector+: { matchLabels+: matchLabels } }, - }, - '#withMetricName':: d.fn(help='metricName is the name of the metric in question.', args=[d.arg(name='metricName', type=d.T.string)]), - withMetricName(metricName): { metricName: metricName }, - '#withTargetAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='targetAverageValue', type=d.T.string)]), - withTargetAverageValue(targetAverageValue): { targetAverageValue: targetAverageValue }, - '#withTargetValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='targetValue', type=d.T.string)]), - withTargetValue(targetValue): { targetValue: targetValue }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/externalMetricStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/externalMetricStatus.libsonnet deleted file mode 100644 index 3bee0eb3c0f5..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/externalMetricStatus.libsonnet +++ /dev/null @@ -1,23 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='externalMetricStatus', url='', help='ExternalMetricStatus indicates the current value of a global metric not associated with any Kubernetes object.'), - '#metricSelector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - metricSelector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { metricSelector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { metricSelector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { metricSelector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { metricSelector+: { matchLabels+: matchLabels } }, - }, - '#withCurrentAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='currentAverageValue', type=d.T.string)]), - withCurrentAverageValue(currentAverageValue): { currentAverageValue: currentAverageValue }, - '#withCurrentValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='currentValue', type=d.T.string)]), - withCurrentValue(currentValue): { currentValue: currentValue }, - '#withMetricName':: d.fn(help='metricName is the name of a metric used for autoscaling in metric system.', args=[d.arg(name='metricName', type=d.T.string)]), - withMetricName(metricName): { metricName: metricName }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/horizontalPodAutoscaler.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/horizontalPodAutoscaler.libsonnet deleted file mode 100644 index 5f5ecc1b32e0..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/horizontalPodAutoscaler.libsonnet +++ /dev/null @@ -1,76 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='horizontalPodAutoscaler', url='', help='HorizontalPodAutoscaler is the configuration for a horizontal pod autoscaler, which automatically manages the replica count of any resource implementing the scale subresource based on the metrics specified.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Horizontalpodautoscaler', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'autoscaling/v2beta1', - kind: 'HorizontalPodAutoscaler', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='HorizontalPodAutoscalerSpec describes the desired functionality of the HorizontalPodAutoscaler.'), - spec: { - '#scaleTargetRef':: d.obj(help='CrossVersionObjectReference contains enough information to let you identify the referred resource.'), - scaleTargetRef: { - '#withApiVersion':: d.fn(help='API version of the referent', args=[d.arg(name='apiVersion', type=d.T.string)]), - withApiVersion(apiVersion): { spec+: { scaleTargetRef+: { apiVersion: apiVersion } } }, - '#withKind':: d.fn(help='Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds"', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { scaleTargetRef+: { kind: kind } } }, - '#withName':: d.fn(help='Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { scaleTargetRef+: { name: name } } }, - }, - '#withMaxReplicas':: d.fn(help='maxReplicas is the upper limit for the number of replicas to which the autoscaler can scale up. It cannot be less that minReplicas.', args=[d.arg(name='maxReplicas', type=d.T.integer)]), - withMaxReplicas(maxReplicas): { spec+: { maxReplicas: maxReplicas } }, - '#withMetrics':: d.fn(help='metrics contains the specifications for which to use to calculate the desired replica count (the maximum replica count across all metrics will be used). The desired replica count is calculated multiplying the ratio between the target value and the current value by the current number of pods. Ergo, metrics used must decrease as the pod count is increased, and vice-versa. See the individual metric source types for more information about how each type of metric must respond.', args=[d.arg(name='metrics', type=d.T.array)]), - withMetrics(metrics): { spec+: { metrics: if std.isArray(v=metrics) then metrics else [metrics] } }, - '#withMetricsMixin':: d.fn(help='metrics contains the specifications for which to use to calculate the desired replica count (the maximum replica count across all metrics will be used). The desired replica count is calculated multiplying the ratio between the target value and the current value by the current number of pods. Ergo, metrics used must decrease as the pod count is increased, and vice-versa. See the individual metric source types for more information about how each type of metric must respond.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='metrics', type=d.T.array)]), - withMetricsMixin(metrics): { spec+: { metrics+: if std.isArray(v=metrics) then metrics else [metrics] } }, - '#withMinReplicas':: d.fn(help='minReplicas is the lower limit for the number of replicas to which the autoscaler can scale down. It defaults to 1 pod. minReplicas is allowed to be 0 if the alpha feature gate HPAScaleToZero is enabled and at least one Object or External metric is configured. Scaling is active as long as at least one metric value is available.', args=[d.arg(name='minReplicas', type=d.T.integer)]), - withMinReplicas(minReplicas): { spec+: { minReplicas: minReplicas } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/horizontalPodAutoscalerCondition.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/horizontalPodAutoscalerCondition.libsonnet deleted file mode 100644 index 257ee9862b43..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/horizontalPodAutoscalerCondition.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='horizontalPodAutoscalerCondition', url='', help='HorizontalPodAutoscalerCondition describes the state of a HorizontalPodAutoscaler at a certain point.'), - '#withLastTransitionTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastTransitionTime', type=d.T.string)]), - withLastTransitionTime(lastTransitionTime): { lastTransitionTime: lastTransitionTime }, - '#withMessage':: d.fn(help='message is a human-readable explanation containing details about the transition', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withReason':: d.fn(help="reason is the reason for the condition's last transition.", args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#withType':: d.fn(help='type describes the current condition', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/horizontalPodAutoscalerSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/horizontalPodAutoscalerSpec.libsonnet deleted file mode 100644 index 7b1b7a6e468b..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/horizontalPodAutoscalerSpec.libsonnet +++ /dev/null @@ -1,23 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='horizontalPodAutoscalerSpec', url='', help='HorizontalPodAutoscalerSpec describes the desired functionality of the HorizontalPodAutoscaler.'), - '#scaleTargetRef':: d.obj(help='CrossVersionObjectReference contains enough information to let you identify the referred resource.'), - scaleTargetRef: { - '#withApiVersion':: d.fn(help='API version of the referent', args=[d.arg(name='apiVersion', type=d.T.string)]), - withApiVersion(apiVersion): { scaleTargetRef+: { apiVersion: apiVersion } }, - '#withKind':: d.fn(help='Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds"', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { scaleTargetRef+: { kind: kind } }, - '#withName':: d.fn(help='Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { scaleTargetRef+: { name: name } }, - }, - '#withMaxReplicas':: d.fn(help='maxReplicas is the upper limit for the number of replicas to which the autoscaler can scale up. It cannot be less that minReplicas.', args=[d.arg(name='maxReplicas', type=d.T.integer)]), - withMaxReplicas(maxReplicas): { maxReplicas: maxReplicas }, - '#withMetrics':: d.fn(help='metrics contains the specifications for which to use to calculate the desired replica count (the maximum replica count across all metrics will be used). The desired replica count is calculated multiplying the ratio between the target value and the current value by the current number of pods. Ergo, metrics used must decrease as the pod count is increased, and vice-versa. See the individual metric source types for more information about how each type of metric must respond.', args=[d.arg(name='metrics', type=d.T.array)]), - withMetrics(metrics): { metrics: if std.isArray(v=metrics) then metrics else [metrics] }, - '#withMetricsMixin':: d.fn(help='metrics contains the specifications for which to use to calculate the desired replica count (the maximum replica count across all metrics will be used). The desired replica count is calculated multiplying the ratio between the target value and the current value by the current number of pods. Ergo, metrics used must decrease as the pod count is increased, and vice-versa. See the individual metric source types for more information about how each type of metric must respond.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='metrics', type=d.T.array)]), - withMetricsMixin(metrics): { metrics+: if std.isArray(v=metrics) then metrics else [metrics] }, - '#withMinReplicas':: d.fn(help='minReplicas is the lower limit for the number of replicas to which the autoscaler can scale down. It defaults to 1 pod. minReplicas is allowed to be 0 if the alpha feature gate HPAScaleToZero is enabled and at least one Object or External metric is configured. Scaling is active as long as at least one metric value is available.', args=[d.arg(name='minReplicas', type=d.T.integer)]), - withMinReplicas(minReplicas): { minReplicas: minReplicas }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/horizontalPodAutoscalerStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/horizontalPodAutoscalerStatus.libsonnet deleted file mode 100644 index 93af309bcc34..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/horizontalPodAutoscalerStatus.libsonnet +++ /dev/null @@ -1,22 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='horizontalPodAutoscalerStatus', url='', help='HorizontalPodAutoscalerStatus describes the current status of a horizontal pod autoscaler.'), - '#withConditions':: d.fn(help='conditions is the set of conditions required for this autoscaler to scale its target, and indicates whether or not those conditions are met.', args=[d.arg(name='conditions', type=d.T.array)]), - withConditions(conditions): { conditions: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withConditionsMixin':: d.fn(help='conditions is the set of conditions required for this autoscaler to scale its target, and indicates whether or not those conditions are met.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='conditions', type=d.T.array)]), - withConditionsMixin(conditions): { conditions+: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withCurrentMetrics':: d.fn(help='currentMetrics is the last read state of the metrics used by this autoscaler.', args=[d.arg(name='currentMetrics', type=d.T.array)]), - withCurrentMetrics(currentMetrics): { currentMetrics: if std.isArray(v=currentMetrics) then currentMetrics else [currentMetrics] }, - '#withCurrentMetricsMixin':: d.fn(help='currentMetrics is the last read state of the metrics used by this autoscaler.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='currentMetrics', type=d.T.array)]), - withCurrentMetricsMixin(currentMetrics): { currentMetrics+: if std.isArray(v=currentMetrics) then currentMetrics else [currentMetrics] }, - '#withCurrentReplicas':: d.fn(help='currentReplicas is current number of replicas of pods managed by this autoscaler, as last seen by the autoscaler.', args=[d.arg(name='currentReplicas', type=d.T.integer)]), - withCurrentReplicas(currentReplicas): { currentReplicas: currentReplicas }, - '#withDesiredReplicas':: d.fn(help='desiredReplicas is the desired number of replicas of pods managed by this autoscaler, as last calculated by the autoscaler.', args=[d.arg(name='desiredReplicas', type=d.T.integer)]), - withDesiredReplicas(desiredReplicas): { desiredReplicas: desiredReplicas }, - '#withLastScaleTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastScaleTime', type=d.T.string)]), - withLastScaleTime(lastScaleTime): { lastScaleTime: lastScaleTime }, - '#withObservedGeneration':: d.fn(help='observedGeneration is the most recent generation observed by this autoscaler.', args=[d.arg(name='observedGeneration', type=d.T.integer)]), - withObservedGeneration(observedGeneration): { observedGeneration: observedGeneration }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/main.libsonnet deleted file mode 100644 index b178832c07c4..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/main.libsonnet +++ /dev/null @@ -1,21 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v2beta1', url='', help=''), - containerResourceMetricSource: (import 'containerResourceMetricSource.libsonnet'), - containerResourceMetricStatus: (import 'containerResourceMetricStatus.libsonnet'), - crossVersionObjectReference: (import 'crossVersionObjectReference.libsonnet'), - externalMetricSource: (import 'externalMetricSource.libsonnet'), - externalMetricStatus: (import 'externalMetricStatus.libsonnet'), - horizontalPodAutoscaler: (import 'horizontalPodAutoscaler.libsonnet'), - horizontalPodAutoscalerCondition: (import 'horizontalPodAutoscalerCondition.libsonnet'), - horizontalPodAutoscalerSpec: (import 'horizontalPodAutoscalerSpec.libsonnet'), - horizontalPodAutoscalerStatus: (import 'horizontalPodAutoscalerStatus.libsonnet'), - metricSpec: (import 'metricSpec.libsonnet'), - metricStatus: (import 'metricStatus.libsonnet'), - objectMetricSource: (import 'objectMetricSource.libsonnet'), - objectMetricStatus: (import 'objectMetricStatus.libsonnet'), - podsMetricSource: (import 'podsMetricSource.libsonnet'), - podsMetricStatus: (import 'podsMetricStatus.libsonnet'), - resourceMetricSource: (import 'resourceMetricSource.libsonnet'), - resourceMetricStatus: (import 'resourceMetricStatus.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/metricSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/metricSpec.libsonnet deleted file mode 100644 index af78c148fd6f..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/metricSpec.libsonnet +++ /dev/null @@ -1,95 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='metricSpec', url='', help='MetricSpec specifies how to scale based on a single metric (only `type` and one other matching field should be set at once).'), - '#containerResource':: d.obj(help='ContainerResourceMetricSource indicates how to scale on a resource metric known to Kubernetes, as specified in requests and limits, describing each pod in the current scale target (e.g. CPU or memory). The values will be averaged together before being compared to the target. Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the "pods" source. Only one "target" type should be set.'), - containerResource: { - '#withContainer':: d.fn(help='container is the name of the container in the pods of the scaling target', args=[d.arg(name='container', type=d.T.string)]), - withContainer(container): { containerResource+: { container: container } }, - '#withName':: d.fn(help='name is the name of the resource in question.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { containerResource+: { name: name } }, - '#withTargetAverageUtilization':: d.fn(help='targetAverageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods.', args=[d.arg(name='targetAverageUtilization', type=d.T.integer)]), - withTargetAverageUtilization(targetAverageUtilization): { containerResource+: { targetAverageUtilization: targetAverageUtilization } }, - '#withTargetAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='targetAverageValue', type=d.T.string)]), - withTargetAverageValue(targetAverageValue): { containerResource+: { targetAverageValue: targetAverageValue } }, - }, - '#external':: d.obj(help='ExternalMetricSource indicates how to scale on a metric not associated with any Kubernetes object (for example length of queue in cloud messaging service, or QPS from loadbalancer running outside of cluster). Exactly one "target" type should be set.'), - external: { - '#metricSelector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - metricSelector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { external+: { metricSelector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { external+: { metricSelector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { external+: { metricSelector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { external+: { metricSelector+: { matchLabels+: matchLabels } } }, - }, - '#withMetricName':: d.fn(help='metricName is the name of the metric in question.', args=[d.arg(name='metricName', type=d.T.string)]), - withMetricName(metricName): { external+: { metricName: metricName } }, - '#withTargetAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='targetAverageValue', type=d.T.string)]), - withTargetAverageValue(targetAverageValue): { external+: { targetAverageValue: targetAverageValue } }, - '#withTargetValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='targetValue', type=d.T.string)]), - withTargetValue(targetValue): { external+: { targetValue: targetValue } }, - }, - '#object':: d.obj(help='ObjectMetricSource indicates how to scale on a metric describing a kubernetes object (for example, hits-per-second on an Ingress object).'), - object: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { object+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { object+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { object+: { selector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { object+: { selector+: { matchLabels+: matchLabels } } }, - }, - '#target':: d.obj(help='CrossVersionObjectReference contains enough information to let you identify the referred resource.'), - target: { - '#withApiVersion':: d.fn(help='API version of the referent', args=[d.arg(name='apiVersion', type=d.T.string)]), - withApiVersion(apiVersion): { object+: { target+: { apiVersion: apiVersion } } }, - '#withKind':: d.fn(help='Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds"', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { object+: { target+: { kind: kind } } }, - '#withName':: d.fn(help='Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { object+: { target+: { name: name } } }, - }, - '#withAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='averageValue', type=d.T.string)]), - withAverageValue(averageValue): { object+: { averageValue: averageValue } }, - '#withMetricName':: d.fn(help='metricName is the name of the metric in question.', args=[d.arg(name='metricName', type=d.T.string)]), - withMetricName(metricName): { object+: { metricName: metricName } }, - '#withTargetValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='targetValue', type=d.T.string)]), - withTargetValue(targetValue): { object+: { targetValue: targetValue } }, - }, - '#pods':: d.obj(help='PodsMetricSource indicates how to scale on a metric describing each pod in the current scale target (for example, transactions-processed-per-second). The values will be averaged together before being compared to the target value.'), - pods: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { pods+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { pods+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { pods+: { selector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { pods+: { selector+: { matchLabels+: matchLabels } } }, - }, - '#withMetricName':: d.fn(help='metricName is the name of the metric in question', args=[d.arg(name='metricName', type=d.T.string)]), - withMetricName(metricName): { pods+: { metricName: metricName } }, - '#withTargetAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='targetAverageValue', type=d.T.string)]), - withTargetAverageValue(targetAverageValue): { pods+: { targetAverageValue: targetAverageValue } }, - }, - '#resource':: d.obj(help='ResourceMetricSource indicates how to scale on a resource metric known to Kubernetes, as specified in requests and limits, describing each pod in the current scale target (e.g. CPU or memory). The values will be averaged together before being compared to the target. Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the "pods" source. Only one "target" type should be set.'), - resource: { - '#withName':: d.fn(help='name is the name of the resource in question.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { resource+: { name: name } }, - '#withTargetAverageUtilization':: d.fn(help='targetAverageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods.', args=[d.arg(name='targetAverageUtilization', type=d.T.integer)]), - withTargetAverageUtilization(targetAverageUtilization): { resource+: { targetAverageUtilization: targetAverageUtilization } }, - '#withTargetAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='targetAverageValue', type=d.T.string)]), - withTargetAverageValue(targetAverageValue): { resource+: { targetAverageValue: targetAverageValue } }, - }, - '#withType':: d.fn(help='type is the type of metric source. It should be one of "ContainerResource", "External", "Object", "Pods" or "Resource", each mapping to a matching field in the object. Note: "ContainerResource" type is available on when the feature-gate HPAContainerMetrics is enabled', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/metricStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/metricStatus.libsonnet deleted file mode 100644 index e0cd90e992b6..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/metricStatus.libsonnet +++ /dev/null @@ -1,95 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='metricStatus', url='', help='MetricStatus describes the last-read state of a single metric.'), - '#containerResource':: d.obj(help='ContainerResourceMetricStatus indicates the current value of a resource metric known to Kubernetes, as specified in requests and limits, describing a single container in each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the "pods" source.'), - containerResource: { - '#withContainer':: d.fn(help='container is the name of the container in the pods of the scaling target', args=[d.arg(name='container', type=d.T.string)]), - withContainer(container): { containerResource+: { container: container } }, - '#withCurrentAverageUtilization':: d.fn(help='currentAverageUtilization is the current value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. It will only be present if `targetAverageValue` was set in the corresponding metric specification.', args=[d.arg(name='currentAverageUtilization', type=d.T.integer)]), - withCurrentAverageUtilization(currentAverageUtilization): { containerResource+: { currentAverageUtilization: currentAverageUtilization } }, - '#withCurrentAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='currentAverageValue', type=d.T.string)]), - withCurrentAverageValue(currentAverageValue): { containerResource+: { currentAverageValue: currentAverageValue } }, - '#withName':: d.fn(help='name is the name of the resource in question.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { containerResource+: { name: name } }, - }, - '#external':: d.obj(help='ExternalMetricStatus indicates the current value of a global metric not associated with any Kubernetes object.'), - external: { - '#metricSelector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - metricSelector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { external+: { metricSelector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { external+: { metricSelector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { external+: { metricSelector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { external+: { metricSelector+: { matchLabels+: matchLabels } } }, - }, - '#withCurrentAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='currentAverageValue', type=d.T.string)]), - withCurrentAverageValue(currentAverageValue): { external+: { currentAverageValue: currentAverageValue } }, - '#withCurrentValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='currentValue', type=d.T.string)]), - withCurrentValue(currentValue): { external+: { currentValue: currentValue } }, - '#withMetricName':: d.fn(help='metricName is the name of a metric used for autoscaling in metric system.', args=[d.arg(name='metricName', type=d.T.string)]), - withMetricName(metricName): { external+: { metricName: metricName } }, - }, - '#object':: d.obj(help='ObjectMetricStatus indicates the current value of a metric describing a kubernetes object (for example, hits-per-second on an Ingress object).'), - object: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { object+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { object+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { object+: { selector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { object+: { selector+: { matchLabels+: matchLabels } } }, - }, - '#target':: d.obj(help='CrossVersionObjectReference contains enough information to let you identify the referred resource.'), - target: { - '#withApiVersion':: d.fn(help='API version of the referent', args=[d.arg(name='apiVersion', type=d.T.string)]), - withApiVersion(apiVersion): { object+: { target+: { apiVersion: apiVersion } } }, - '#withKind':: d.fn(help='Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds"', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { object+: { target+: { kind: kind } } }, - '#withName':: d.fn(help='Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { object+: { target+: { name: name } } }, - }, - '#withAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='averageValue', type=d.T.string)]), - withAverageValue(averageValue): { object+: { averageValue: averageValue } }, - '#withCurrentValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='currentValue', type=d.T.string)]), - withCurrentValue(currentValue): { object+: { currentValue: currentValue } }, - '#withMetricName':: d.fn(help='metricName is the name of the metric in question.', args=[d.arg(name='metricName', type=d.T.string)]), - withMetricName(metricName): { object+: { metricName: metricName } }, - }, - '#pods':: d.obj(help='PodsMetricStatus indicates the current value of a metric describing each pod in the current scale target (for example, transactions-processed-per-second).'), - pods: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { pods+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { pods+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { pods+: { selector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { pods+: { selector+: { matchLabels+: matchLabels } } }, - }, - '#withCurrentAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='currentAverageValue', type=d.T.string)]), - withCurrentAverageValue(currentAverageValue): { pods+: { currentAverageValue: currentAverageValue } }, - '#withMetricName':: d.fn(help='metricName is the name of the metric in question', args=[d.arg(name='metricName', type=d.T.string)]), - withMetricName(metricName): { pods+: { metricName: metricName } }, - }, - '#resource':: d.obj(help='ResourceMetricStatus indicates the current value of a resource metric known to Kubernetes, as specified in requests and limits, describing each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the "pods" source.'), - resource: { - '#withCurrentAverageUtilization':: d.fn(help='currentAverageUtilization is the current value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. It will only be present if `targetAverageValue` was set in the corresponding metric specification.', args=[d.arg(name='currentAverageUtilization', type=d.T.integer)]), - withCurrentAverageUtilization(currentAverageUtilization): { resource+: { currentAverageUtilization: currentAverageUtilization } }, - '#withCurrentAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='currentAverageValue', type=d.T.string)]), - withCurrentAverageValue(currentAverageValue): { resource+: { currentAverageValue: currentAverageValue } }, - '#withName':: d.fn(help='name is the name of the resource in question.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { resource+: { name: name } }, - }, - '#withType':: d.fn(help='type is the type of metric source. It will be one of "ContainerResource", "External", "Object", "Pods" or "Resource", each corresponds to a matching field in the object. Note: "ContainerResource" type is available on when the feature-gate HPAContainerMetrics is enabled', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/objectMetricSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/objectMetricSource.libsonnet deleted file mode 100644 index f3448c1b4bde..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/objectMetricSource.libsonnet +++ /dev/null @@ -1,32 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='objectMetricSource', url='', help='ObjectMetricSource indicates how to scale on a metric describing a kubernetes object (for example, hits-per-second on an Ingress object).'), - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { selector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { selector+: { matchLabels+: matchLabels } }, - }, - '#target':: d.obj(help='CrossVersionObjectReference contains enough information to let you identify the referred resource.'), - target: { - '#withApiVersion':: d.fn(help='API version of the referent', args=[d.arg(name='apiVersion', type=d.T.string)]), - withApiVersion(apiVersion): { target+: { apiVersion: apiVersion } }, - '#withKind':: d.fn(help='Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds"', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { target+: { kind: kind } }, - '#withName':: d.fn(help='Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { target+: { name: name } }, - }, - '#withAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='averageValue', type=d.T.string)]), - withAverageValue(averageValue): { averageValue: averageValue }, - '#withMetricName':: d.fn(help='metricName is the name of the metric in question.', args=[d.arg(name='metricName', type=d.T.string)]), - withMetricName(metricName): { metricName: metricName }, - '#withTargetValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='targetValue', type=d.T.string)]), - withTargetValue(targetValue): { targetValue: targetValue }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/objectMetricStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/objectMetricStatus.libsonnet deleted file mode 100644 index 94b62be174c8..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/objectMetricStatus.libsonnet +++ /dev/null @@ -1,32 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='objectMetricStatus', url='', help='ObjectMetricStatus indicates the current value of a metric describing a kubernetes object (for example, hits-per-second on an Ingress object).'), - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { selector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { selector+: { matchLabels+: matchLabels } }, - }, - '#target':: d.obj(help='CrossVersionObjectReference contains enough information to let you identify the referred resource.'), - target: { - '#withApiVersion':: d.fn(help='API version of the referent', args=[d.arg(name='apiVersion', type=d.T.string)]), - withApiVersion(apiVersion): { target+: { apiVersion: apiVersion } }, - '#withKind':: d.fn(help='Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds"', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { target+: { kind: kind } }, - '#withName':: d.fn(help='Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { target+: { name: name } }, - }, - '#withAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='averageValue', type=d.T.string)]), - withAverageValue(averageValue): { averageValue: averageValue }, - '#withCurrentValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='currentValue', type=d.T.string)]), - withCurrentValue(currentValue): { currentValue: currentValue }, - '#withMetricName':: d.fn(help='metricName is the name of the metric in question.', args=[d.arg(name='metricName', type=d.T.string)]), - withMetricName(metricName): { metricName: metricName }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/podsMetricSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/podsMetricSource.libsonnet deleted file mode 100644 index 92085c51331e..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/podsMetricSource.libsonnet +++ /dev/null @@ -1,21 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='podsMetricSource', url='', help='PodsMetricSource indicates how to scale on a metric describing each pod in the current scale target (for example, transactions-processed-per-second). The values will be averaged together before being compared to the target value.'), - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { selector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { selector+: { matchLabels+: matchLabels } }, - }, - '#withMetricName':: d.fn(help='metricName is the name of the metric in question', args=[d.arg(name='metricName', type=d.T.string)]), - withMetricName(metricName): { metricName: metricName }, - '#withTargetAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='targetAverageValue', type=d.T.string)]), - withTargetAverageValue(targetAverageValue): { targetAverageValue: targetAverageValue }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/podsMetricStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/podsMetricStatus.libsonnet deleted file mode 100644 index d33f4b573d0c..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/podsMetricStatus.libsonnet +++ /dev/null @@ -1,21 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='podsMetricStatus', url='', help='PodsMetricStatus indicates the current value of a metric describing each pod in the current scale target (for example, transactions-processed-per-second).'), - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { selector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { selector+: { matchLabels+: matchLabels } }, - }, - '#withCurrentAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='currentAverageValue', type=d.T.string)]), - withCurrentAverageValue(currentAverageValue): { currentAverageValue: currentAverageValue }, - '#withMetricName':: d.fn(help='metricName is the name of the metric in question', args=[d.arg(name='metricName', type=d.T.string)]), - withMetricName(metricName): { metricName: metricName }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/resourceMetricSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/resourceMetricSource.libsonnet deleted file mode 100644 index f3d0dc447e3a..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/resourceMetricSource.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='resourceMetricSource', url='', help='ResourceMetricSource indicates how to scale on a resource metric known to Kubernetes, as specified in requests and limits, describing each pod in the current scale target (e.g. CPU or memory). The values will be averaged together before being compared to the target. Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the "pods" source. Only one "target" type should be set.'), - '#withName':: d.fn(help='name is the name of the resource in question.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withTargetAverageUtilization':: d.fn(help='targetAverageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods.', args=[d.arg(name='targetAverageUtilization', type=d.T.integer)]), - withTargetAverageUtilization(targetAverageUtilization): { targetAverageUtilization: targetAverageUtilization }, - '#withTargetAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='targetAverageValue', type=d.T.string)]), - withTargetAverageValue(targetAverageValue): { targetAverageValue: targetAverageValue }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/resourceMetricStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/resourceMetricStatus.libsonnet deleted file mode 100644 index 5a1c5ec38633..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta1/resourceMetricStatus.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='resourceMetricStatus', url='', help='ResourceMetricStatus indicates the current value of a resource metric known to Kubernetes, as specified in requests and limits, describing each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the "pods" source.'), - '#withCurrentAverageUtilization':: d.fn(help='currentAverageUtilization is the current value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. It will only be present if `targetAverageValue` was set in the corresponding metric specification.', args=[d.arg(name='currentAverageUtilization', type=d.T.integer)]), - withCurrentAverageUtilization(currentAverageUtilization): { currentAverageUtilization: currentAverageUtilization }, - '#withCurrentAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='currentAverageValue', type=d.T.string)]), - withCurrentAverageValue(currentAverageValue): { currentAverageValue: currentAverageValue }, - '#withName':: d.fn(help='name is the name of the resource in question.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/containerResourceMetricSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/containerResourceMetricSource.libsonnet deleted file mode 100644 index 98ec33a83361..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/containerResourceMetricSource.libsonnet +++ /dev/null @@ -1,21 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='containerResourceMetricSource', url='', help='ContainerResourceMetricSource indicates how to scale on a resource metric known to Kubernetes, as specified in requests and limits, describing each pod in the current scale target (e.g. CPU or memory). The values will be averaged together before being compared to the target. Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the "pods" source. Only one "target" type should be set.'), - '#target':: d.obj(help='MetricTarget defines the target value, average value, or average utilization of a specific metric'), - target: { - '#withAverageUtilization':: d.fn(help='averageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. Currently only valid for Resource metric source type', args=[d.arg(name='averageUtilization', type=d.T.integer)]), - withAverageUtilization(averageUtilization): { target+: { averageUtilization: averageUtilization } }, - '#withAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='averageValue', type=d.T.string)]), - withAverageValue(averageValue): { target+: { averageValue: averageValue } }, - '#withType':: d.fn(help='type represents whether the metric type is Utilization, Value, or AverageValue', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { target+: { type: type } }, - '#withValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='value', type=d.T.string)]), - withValue(value): { target+: { value: value } }, - }, - '#withContainer':: d.fn(help='container is the name of the container in the pods of the scaling target', args=[d.arg(name='container', type=d.T.string)]), - withContainer(container): { container: container }, - '#withName':: d.fn(help='name is the name of the resource in question.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/containerResourceMetricStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/containerResourceMetricStatus.libsonnet deleted file mode 100644 index 0726e9b4beec..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/containerResourceMetricStatus.libsonnet +++ /dev/null @@ -1,19 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='containerResourceMetricStatus', url='', help='ContainerResourceMetricStatus indicates the current value of a resource metric known to Kubernetes, as specified in requests and limits, describing a single container in each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the "pods" source.'), - '#current':: d.obj(help='MetricValueStatus holds the current value for a metric'), - current: { - '#withAverageUtilization':: d.fn(help='currentAverageUtilization is the current value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods.', args=[d.arg(name='averageUtilization', type=d.T.integer)]), - withAverageUtilization(averageUtilization): { current+: { averageUtilization: averageUtilization } }, - '#withAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='averageValue', type=d.T.string)]), - withAverageValue(averageValue): { current+: { averageValue: averageValue } }, - '#withValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='value', type=d.T.string)]), - withValue(value): { current+: { value: value } }, - }, - '#withContainer':: d.fn(help='Container is the name of the container in the pods of the scaling target', args=[d.arg(name='container', type=d.T.string)]), - withContainer(container): { container: container }, - '#withName':: d.fn(help='Name is the name of the resource in question.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/crossVersionObjectReference.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/crossVersionObjectReference.libsonnet deleted file mode 100644 index b5eb31cc2e06..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/crossVersionObjectReference.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='crossVersionObjectReference', url='', help='CrossVersionObjectReference contains enough information to let you identify the referred resource.'), - '#withKind':: d.fn(help='Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds"', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { kind: kind }, - '#withName':: d.fn(help='Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/externalMetricSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/externalMetricSource.libsonnet deleted file mode 100644 index 6acc212e1190..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/externalMetricSource.libsonnet +++ /dev/null @@ -1,33 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='externalMetricSource', url='', help='ExternalMetricSource indicates how to scale on a metric not associated with any Kubernetes object (for example length of queue in cloud messaging service, or QPS from loadbalancer running outside of cluster).'), - '#metric':: d.obj(help='MetricIdentifier defines the name and optionally selector for a metric'), - metric: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { metric+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { metric+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { metric+: { selector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { metric+: { selector+: { matchLabels+: matchLabels } } }, - }, - '#withName':: d.fn(help='name is the name of the given metric', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metric+: { name: name } }, - }, - '#target':: d.obj(help='MetricTarget defines the target value, average value, or average utilization of a specific metric'), - target: { - '#withAverageUtilization':: d.fn(help='averageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. Currently only valid for Resource metric source type', args=[d.arg(name='averageUtilization', type=d.T.integer)]), - withAverageUtilization(averageUtilization): { target+: { averageUtilization: averageUtilization } }, - '#withAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='averageValue', type=d.T.string)]), - withAverageValue(averageValue): { target+: { averageValue: averageValue } }, - '#withType':: d.fn(help='type represents whether the metric type is Utilization, Value, or AverageValue', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { target+: { type: type } }, - '#withValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='value', type=d.T.string)]), - withValue(value): { target+: { value: value } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/externalMetricStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/externalMetricStatus.libsonnet deleted file mode 100644 index 853b230e2a43..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/externalMetricStatus.libsonnet +++ /dev/null @@ -1,31 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='externalMetricStatus', url='', help='ExternalMetricStatus indicates the current value of a global metric not associated with any Kubernetes object.'), - '#current':: d.obj(help='MetricValueStatus holds the current value for a metric'), - current: { - '#withAverageUtilization':: d.fn(help='currentAverageUtilization is the current value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods.', args=[d.arg(name='averageUtilization', type=d.T.integer)]), - withAverageUtilization(averageUtilization): { current+: { averageUtilization: averageUtilization } }, - '#withAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='averageValue', type=d.T.string)]), - withAverageValue(averageValue): { current+: { averageValue: averageValue } }, - '#withValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='value', type=d.T.string)]), - withValue(value): { current+: { value: value } }, - }, - '#metric':: d.obj(help='MetricIdentifier defines the name and optionally selector for a metric'), - metric: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { metric+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { metric+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { metric+: { selector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { metric+: { selector+: { matchLabels+: matchLabels } } }, - }, - '#withName':: d.fn(help='name is the name of the given metric', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metric+: { name: name } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/horizontalPodAutoscaler.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/horizontalPodAutoscaler.libsonnet deleted file mode 100644 index f4c7fa78b095..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/horizontalPodAutoscaler.libsonnet +++ /dev/null @@ -1,101 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='horizontalPodAutoscaler', url='', help='HorizontalPodAutoscaler is the configuration for a horizontal pod autoscaler, which automatically manages the replica count of any resource implementing the scale subresource based on the metrics specified.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Horizontalpodautoscaler', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'autoscaling/v2beta2', - kind: 'HorizontalPodAutoscaler', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='HorizontalPodAutoscalerSpec describes the desired functionality of the HorizontalPodAutoscaler.'), - spec: { - '#behavior':: d.obj(help='HorizontalPodAutoscalerBehavior configures the scaling behavior of the target in both Up and Down directions (scaleUp and scaleDown fields respectively).'), - behavior: { - '#scaleDown':: d.obj(help='HPAScalingRules configures the scaling behavior for one direction. These Rules are applied after calculating DesiredReplicas from metrics for the HPA. They can limit the scaling velocity by specifying scaling policies. They can prevent flapping by specifying the stabilization window, so that the number of replicas is not set instantly, instead, the safest value from the stabilization window is chosen.'), - scaleDown: { - '#withPolicies':: d.fn(help='policies is a list of potential scaling polices which can be used during scaling. At least one policy must be specified, otherwise the HPAScalingRules will be discarded as invalid', args=[d.arg(name='policies', type=d.T.array)]), - withPolicies(policies): { spec+: { behavior+: { scaleDown+: { policies: if std.isArray(v=policies) then policies else [policies] } } } }, - '#withPoliciesMixin':: d.fn(help='policies is a list of potential scaling polices which can be used during scaling. At least one policy must be specified, otherwise the HPAScalingRules will be discarded as invalid\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='policies', type=d.T.array)]), - withPoliciesMixin(policies): { spec+: { behavior+: { scaleDown+: { policies+: if std.isArray(v=policies) then policies else [policies] } } } }, - '#withSelectPolicy':: d.fn(help='selectPolicy is used to specify which policy should be used. If not set, the default value MaxPolicySelect is used.', args=[d.arg(name='selectPolicy', type=d.T.string)]), - withSelectPolicy(selectPolicy): { spec+: { behavior+: { scaleDown+: { selectPolicy: selectPolicy } } } }, - '#withStabilizationWindowSeconds':: d.fn(help='StabilizationWindowSeconds is the number of seconds for which past recommendations should be considered while scaling up or scaling down. StabilizationWindowSeconds must be greater than or equal to zero and less than or equal to 3600 (one hour). If not set, use the default values: - For scale up: 0 (i.e. no stabilization is done). - For scale down: 300 (i.e. the stabilization window is 300 seconds long).', args=[d.arg(name='stabilizationWindowSeconds', type=d.T.integer)]), - withStabilizationWindowSeconds(stabilizationWindowSeconds): { spec+: { behavior+: { scaleDown+: { stabilizationWindowSeconds: stabilizationWindowSeconds } } } }, - }, - '#scaleUp':: d.obj(help='HPAScalingRules configures the scaling behavior for one direction. These Rules are applied after calculating DesiredReplicas from metrics for the HPA. They can limit the scaling velocity by specifying scaling policies. They can prevent flapping by specifying the stabilization window, so that the number of replicas is not set instantly, instead, the safest value from the stabilization window is chosen.'), - scaleUp: { - '#withPolicies':: d.fn(help='policies is a list of potential scaling polices which can be used during scaling. At least one policy must be specified, otherwise the HPAScalingRules will be discarded as invalid', args=[d.arg(name='policies', type=d.T.array)]), - withPolicies(policies): { spec+: { behavior+: { scaleUp+: { policies: if std.isArray(v=policies) then policies else [policies] } } } }, - '#withPoliciesMixin':: d.fn(help='policies is a list of potential scaling polices which can be used during scaling. At least one policy must be specified, otherwise the HPAScalingRules will be discarded as invalid\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='policies', type=d.T.array)]), - withPoliciesMixin(policies): { spec+: { behavior+: { scaleUp+: { policies+: if std.isArray(v=policies) then policies else [policies] } } } }, - '#withSelectPolicy':: d.fn(help='selectPolicy is used to specify which policy should be used. If not set, the default value MaxPolicySelect is used.', args=[d.arg(name='selectPolicy', type=d.T.string)]), - withSelectPolicy(selectPolicy): { spec+: { behavior+: { scaleUp+: { selectPolicy: selectPolicy } } } }, - '#withStabilizationWindowSeconds':: d.fn(help='StabilizationWindowSeconds is the number of seconds for which past recommendations should be considered while scaling up or scaling down. StabilizationWindowSeconds must be greater than or equal to zero and less than or equal to 3600 (one hour). If not set, use the default values: - For scale up: 0 (i.e. no stabilization is done). - For scale down: 300 (i.e. the stabilization window is 300 seconds long).', args=[d.arg(name='stabilizationWindowSeconds', type=d.T.integer)]), - withStabilizationWindowSeconds(stabilizationWindowSeconds): { spec+: { behavior+: { scaleUp+: { stabilizationWindowSeconds: stabilizationWindowSeconds } } } }, - }, - }, - '#scaleTargetRef':: d.obj(help='CrossVersionObjectReference contains enough information to let you identify the referred resource.'), - scaleTargetRef: { - '#withApiVersion':: d.fn(help='API version of the referent', args=[d.arg(name='apiVersion', type=d.T.string)]), - withApiVersion(apiVersion): { spec+: { scaleTargetRef+: { apiVersion: apiVersion } } }, - '#withKind':: d.fn(help='Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds"', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { scaleTargetRef+: { kind: kind } } }, - '#withName':: d.fn(help='Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { scaleTargetRef+: { name: name } } }, - }, - '#withMaxReplicas':: d.fn(help='maxReplicas is the upper limit for the number of replicas to which the autoscaler can scale up. It cannot be less that minReplicas.', args=[d.arg(name='maxReplicas', type=d.T.integer)]), - withMaxReplicas(maxReplicas): { spec+: { maxReplicas: maxReplicas } }, - '#withMetrics':: d.fn(help='metrics contains the specifications for which to use to calculate the desired replica count (the maximum replica count across all metrics will be used). The desired replica count is calculated multiplying the ratio between the target value and the current value by the current number of pods. Ergo, metrics used must decrease as the pod count is increased, and vice-versa. See the individual metric source types for more information about how each type of metric must respond. If not set, the default metric will be set to 80% average CPU utilization.', args=[d.arg(name='metrics', type=d.T.array)]), - withMetrics(metrics): { spec+: { metrics: if std.isArray(v=metrics) then metrics else [metrics] } }, - '#withMetricsMixin':: d.fn(help='metrics contains the specifications for which to use to calculate the desired replica count (the maximum replica count across all metrics will be used). The desired replica count is calculated multiplying the ratio between the target value and the current value by the current number of pods. Ergo, metrics used must decrease as the pod count is increased, and vice-versa. See the individual metric source types for more information about how each type of metric must respond. If not set, the default metric will be set to 80% average CPU utilization.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='metrics', type=d.T.array)]), - withMetricsMixin(metrics): { spec+: { metrics+: if std.isArray(v=metrics) then metrics else [metrics] } }, - '#withMinReplicas':: d.fn(help='minReplicas is the lower limit for the number of replicas to which the autoscaler can scale down. It defaults to 1 pod. minReplicas is allowed to be 0 if the alpha feature gate HPAScaleToZero is enabled and at least one Object or External metric is configured. Scaling is active as long as at least one metric value is available.', args=[d.arg(name='minReplicas', type=d.T.integer)]), - withMinReplicas(minReplicas): { spec+: { minReplicas: minReplicas } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/horizontalPodAutoscalerBehavior.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/horizontalPodAutoscalerBehavior.libsonnet deleted file mode 100644 index 742482967225..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/horizontalPodAutoscalerBehavior.libsonnet +++ /dev/null @@ -1,28 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='horizontalPodAutoscalerBehavior', url='', help='HorizontalPodAutoscalerBehavior configures the scaling behavior of the target in both Up and Down directions (scaleUp and scaleDown fields respectively).'), - '#scaleDown':: d.obj(help='HPAScalingRules configures the scaling behavior for one direction. These Rules are applied after calculating DesiredReplicas from metrics for the HPA. They can limit the scaling velocity by specifying scaling policies. They can prevent flapping by specifying the stabilization window, so that the number of replicas is not set instantly, instead, the safest value from the stabilization window is chosen.'), - scaleDown: { - '#withPolicies':: d.fn(help='policies is a list of potential scaling polices which can be used during scaling. At least one policy must be specified, otherwise the HPAScalingRules will be discarded as invalid', args=[d.arg(name='policies', type=d.T.array)]), - withPolicies(policies): { scaleDown+: { policies: if std.isArray(v=policies) then policies else [policies] } }, - '#withPoliciesMixin':: d.fn(help='policies is a list of potential scaling polices which can be used during scaling. At least one policy must be specified, otherwise the HPAScalingRules will be discarded as invalid\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='policies', type=d.T.array)]), - withPoliciesMixin(policies): { scaleDown+: { policies+: if std.isArray(v=policies) then policies else [policies] } }, - '#withSelectPolicy':: d.fn(help='selectPolicy is used to specify which policy should be used. If not set, the default value MaxPolicySelect is used.', args=[d.arg(name='selectPolicy', type=d.T.string)]), - withSelectPolicy(selectPolicy): { scaleDown+: { selectPolicy: selectPolicy } }, - '#withStabilizationWindowSeconds':: d.fn(help='StabilizationWindowSeconds is the number of seconds for which past recommendations should be considered while scaling up or scaling down. StabilizationWindowSeconds must be greater than or equal to zero and less than or equal to 3600 (one hour). If not set, use the default values: - For scale up: 0 (i.e. no stabilization is done). - For scale down: 300 (i.e. the stabilization window is 300 seconds long).', args=[d.arg(name='stabilizationWindowSeconds', type=d.T.integer)]), - withStabilizationWindowSeconds(stabilizationWindowSeconds): { scaleDown+: { stabilizationWindowSeconds: stabilizationWindowSeconds } }, - }, - '#scaleUp':: d.obj(help='HPAScalingRules configures the scaling behavior for one direction. These Rules are applied after calculating DesiredReplicas from metrics for the HPA. They can limit the scaling velocity by specifying scaling policies. They can prevent flapping by specifying the stabilization window, so that the number of replicas is not set instantly, instead, the safest value from the stabilization window is chosen.'), - scaleUp: { - '#withPolicies':: d.fn(help='policies is a list of potential scaling polices which can be used during scaling. At least one policy must be specified, otherwise the HPAScalingRules will be discarded as invalid', args=[d.arg(name='policies', type=d.T.array)]), - withPolicies(policies): { scaleUp+: { policies: if std.isArray(v=policies) then policies else [policies] } }, - '#withPoliciesMixin':: d.fn(help='policies is a list of potential scaling polices which can be used during scaling. At least one policy must be specified, otherwise the HPAScalingRules will be discarded as invalid\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='policies', type=d.T.array)]), - withPoliciesMixin(policies): { scaleUp+: { policies+: if std.isArray(v=policies) then policies else [policies] } }, - '#withSelectPolicy':: d.fn(help='selectPolicy is used to specify which policy should be used. If not set, the default value MaxPolicySelect is used.', args=[d.arg(name='selectPolicy', type=d.T.string)]), - withSelectPolicy(selectPolicy): { scaleUp+: { selectPolicy: selectPolicy } }, - '#withStabilizationWindowSeconds':: d.fn(help='StabilizationWindowSeconds is the number of seconds for which past recommendations should be considered while scaling up or scaling down. StabilizationWindowSeconds must be greater than or equal to zero and less than or equal to 3600 (one hour). If not set, use the default values: - For scale up: 0 (i.e. no stabilization is done). - For scale down: 300 (i.e. the stabilization window is 300 seconds long).', args=[d.arg(name='stabilizationWindowSeconds', type=d.T.integer)]), - withStabilizationWindowSeconds(stabilizationWindowSeconds): { scaleUp+: { stabilizationWindowSeconds: stabilizationWindowSeconds } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/horizontalPodAutoscalerCondition.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/horizontalPodAutoscalerCondition.libsonnet deleted file mode 100644 index 257ee9862b43..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/horizontalPodAutoscalerCondition.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='horizontalPodAutoscalerCondition', url='', help='HorizontalPodAutoscalerCondition describes the state of a HorizontalPodAutoscaler at a certain point.'), - '#withLastTransitionTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastTransitionTime', type=d.T.string)]), - withLastTransitionTime(lastTransitionTime): { lastTransitionTime: lastTransitionTime }, - '#withMessage':: d.fn(help='message is a human-readable explanation containing details about the transition', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withReason':: d.fn(help="reason is the reason for the condition's last transition.", args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#withType':: d.fn(help='type describes the current condition', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/horizontalPodAutoscalerSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/horizontalPodAutoscalerSpec.libsonnet deleted file mode 100644 index 33e95a22cc5a..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/horizontalPodAutoscalerSpec.libsonnet +++ /dev/null @@ -1,48 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='horizontalPodAutoscalerSpec', url='', help='HorizontalPodAutoscalerSpec describes the desired functionality of the HorizontalPodAutoscaler.'), - '#behavior':: d.obj(help='HorizontalPodAutoscalerBehavior configures the scaling behavior of the target in both Up and Down directions (scaleUp and scaleDown fields respectively).'), - behavior: { - '#scaleDown':: d.obj(help='HPAScalingRules configures the scaling behavior for one direction. These Rules are applied after calculating DesiredReplicas from metrics for the HPA. They can limit the scaling velocity by specifying scaling policies. They can prevent flapping by specifying the stabilization window, so that the number of replicas is not set instantly, instead, the safest value from the stabilization window is chosen.'), - scaleDown: { - '#withPolicies':: d.fn(help='policies is a list of potential scaling polices which can be used during scaling. At least one policy must be specified, otherwise the HPAScalingRules will be discarded as invalid', args=[d.arg(name='policies', type=d.T.array)]), - withPolicies(policies): { behavior+: { scaleDown+: { policies: if std.isArray(v=policies) then policies else [policies] } } }, - '#withPoliciesMixin':: d.fn(help='policies is a list of potential scaling polices which can be used during scaling. At least one policy must be specified, otherwise the HPAScalingRules will be discarded as invalid\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='policies', type=d.T.array)]), - withPoliciesMixin(policies): { behavior+: { scaleDown+: { policies+: if std.isArray(v=policies) then policies else [policies] } } }, - '#withSelectPolicy':: d.fn(help='selectPolicy is used to specify which policy should be used. If not set, the default value MaxPolicySelect is used.', args=[d.arg(name='selectPolicy', type=d.T.string)]), - withSelectPolicy(selectPolicy): { behavior+: { scaleDown+: { selectPolicy: selectPolicy } } }, - '#withStabilizationWindowSeconds':: d.fn(help='StabilizationWindowSeconds is the number of seconds for which past recommendations should be considered while scaling up or scaling down. StabilizationWindowSeconds must be greater than or equal to zero and less than or equal to 3600 (one hour). If not set, use the default values: - For scale up: 0 (i.e. no stabilization is done). - For scale down: 300 (i.e. the stabilization window is 300 seconds long).', args=[d.arg(name='stabilizationWindowSeconds', type=d.T.integer)]), - withStabilizationWindowSeconds(stabilizationWindowSeconds): { behavior+: { scaleDown+: { stabilizationWindowSeconds: stabilizationWindowSeconds } } }, - }, - '#scaleUp':: d.obj(help='HPAScalingRules configures the scaling behavior for one direction. These Rules are applied after calculating DesiredReplicas from metrics for the HPA. They can limit the scaling velocity by specifying scaling policies. They can prevent flapping by specifying the stabilization window, so that the number of replicas is not set instantly, instead, the safest value from the stabilization window is chosen.'), - scaleUp: { - '#withPolicies':: d.fn(help='policies is a list of potential scaling polices which can be used during scaling. At least one policy must be specified, otherwise the HPAScalingRules will be discarded as invalid', args=[d.arg(name='policies', type=d.T.array)]), - withPolicies(policies): { behavior+: { scaleUp+: { policies: if std.isArray(v=policies) then policies else [policies] } } }, - '#withPoliciesMixin':: d.fn(help='policies is a list of potential scaling polices which can be used during scaling. At least one policy must be specified, otherwise the HPAScalingRules will be discarded as invalid\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='policies', type=d.T.array)]), - withPoliciesMixin(policies): { behavior+: { scaleUp+: { policies+: if std.isArray(v=policies) then policies else [policies] } } }, - '#withSelectPolicy':: d.fn(help='selectPolicy is used to specify which policy should be used. If not set, the default value MaxPolicySelect is used.', args=[d.arg(name='selectPolicy', type=d.T.string)]), - withSelectPolicy(selectPolicy): { behavior+: { scaleUp+: { selectPolicy: selectPolicy } } }, - '#withStabilizationWindowSeconds':: d.fn(help='StabilizationWindowSeconds is the number of seconds for which past recommendations should be considered while scaling up or scaling down. StabilizationWindowSeconds must be greater than or equal to zero and less than or equal to 3600 (one hour). If not set, use the default values: - For scale up: 0 (i.e. no stabilization is done). - For scale down: 300 (i.e. the stabilization window is 300 seconds long).', args=[d.arg(name='stabilizationWindowSeconds', type=d.T.integer)]), - withStabilizationWindowSeconds(stabilizationWindowSeconds): { behavior+: { scaleUp+: { stabilizationWindowSeconds: stabilizationWindowSeconds } } }, - }, - }, - '#scaleTargetRef':: d.obj(help='CrossVersionObjectReference contains enough information to let you identify the referred resource.'), - scaleTargetRef: { - '#withApiVersion':: d.fn(help='API version of the referent', args=[d.arg(name='apiVersion', type=d.T.string)]), - withApiVersion(apiVersion): { scaleTargetRef+: { apiVersion: apiVersion } }, - '#withKind':: d.fn(help='Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds"', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { scaleTargetRef+: { kind: kind } }, - '#withName':: d.fn(help='Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { scaleTargetRef+: { name: name } }, - }, - '#withMaxReplicas':: d.fn(help='maxReplicas is the upper limit for the number of replicas to which the autoscaler can scale up. It cannot be less that minReplicas.', args=[d.arg(name='maxReplicas', type=d.T.integer)]), - withMaxReplicas(maxReplicas): { maxReplicas: maxReplicas }, - '#withMetrics':: d.fn(help='metrics contains the specifications for which to use to calculate the desired replica count (the maximum replica count across all metrics will be used). The desired replica count is calculated multiplying the ratio between the target value and the current value by the current number of pods. Ergo, metrics used must decrease as the pod count is increased, and vice-versa. See the individual metric source types for more information about how each type of metric must respond. If not set, the default metric will be set to 80% average CPU utilization.', args=[d.arg(name='metrics', type=d.T.array)]), - withMetrics(metrics): { metrics: if std.isArray(v=metrics) then metrics else [metrics] }, - '#withMetricsMixin':: d.fn(help='metrics contains the specifications for which to use to calculate the desired replica count (the maximum replica count across all metrics will be used). The desired replica count is calculated multiplying the ratio between the target value and the current value by the current number of pods. Ergo, metrics used must decrease as the pod count is increased, and vice-versa. See the individual metric source types for more information about how each type of metric must respond. If not set, the default metric will be set to 80% average CPU utilization.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='metrics', type=d.T.array)]), - withMetricsMixin(metrics): { metrics+: if std.isArray(v=metrics) then metrics else [metrics] }, - '#withMinReplicas':: d.fn(help='minReplicas is the lower limit for the number of replicas to which the autoscaler can scale down. It defaults to 1 pod. minReplicas is allowed to be 0 if the alpha feature gate HPAScaleToZero is enabled and at least one Object or External metric is configured. Scaling is active as long as at least one metric value is available.', args=[d.arg(name='minReplicas', type=d.T.integer)]), - withMinReplicas(minReplicas): { minReplicas: minReplicas }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/horizontalPodAutoscalerStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/horizontalPodAutoscalerStatus.libsonnet deleted file mode 100644 index 93af309bcc34..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/horizontalPodAutoscalerStatus.libsonnet +++ /dev/null @@ -1,22 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='horizontalPodAutoscalerStatus', url='', help='HorizontalPodAutoscalerStatus describes the current status of a horizontal pod autoscaler.'), - '#withConditions':: d.fn(help='conditions is the set of conditions required for this autoscaler to scale its target, and indicates whether or not those conditions are met.', args=[d.arg(name='conditions', type=d.T.array)]), - withConditions(conditions): { conditions: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withConditionsMixin':: d.fn(help='conditions is the set of conditions required for this autoscaler to scale its target, and indicates whether or not those conditions are met.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='conditions', type=d.T.array)]), - withConditionsMixin(conditions): { conditions+: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withCurrentMetrics':: d.fn(help='currentMetrics is the last read state of the metrics used by this autoscaler.', args=[d.arg(name='currentMetrics', type=d.T.array)]), - withCurrentMetrics(currentMetrics): { currentMetrics: if std.isArray(v=currentMetrics) then currentMetrics else [currentMetrics] }, - '#withCurrentMetricsMixin':: d.fn(help='currentMetrics is the last read state of the metrics used by this autoscaler.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='currentMetrics', type=d.T.array)]), - withCurrentMetricsMixin(currentMetrics): { currentMetrics+: if std.isArray(v=currentMetrics) then currentMetrics else [currentMetrics] }, - '#withCurrentReplicas':: d.fn(help='currentReplicas is current number of replicas of pods managed by this autoscaler, as last seen by the autoscaler.', args=[d.arg(name='currentReplicas', type=d.T.integer)]), - withCurrentReplicas(currentReplicas): { currentReplicas: currentReplicas }, - '#withDesiredReplicas':: d.fn(help='desiredReplicas is the desired number of replicas of pods managed by this autoscaler, as last calculated by the autoscaler.', args=[d.arg(name='desiredReplicas', type=d.T.integer)]), - withDesiredReplicas(desiredReplicas): { desiredReplicas: desiredReplicas }, - '#withLastScaleTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastScaleTime', type=d.T.string)]), - withLastScaleTime(lastScaleTime): { lastScaleTime: lastScaleTime }, - '#withObservedGeneration':: d.fn(help='observedGeneration is the most recent generation observed by this autoscaler.', args=[d.arg(name='observedGeneration', type=d.T.integer)]), - withObservedGeneration(observedGeneration): { observedGeneration: observedGeneration }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/hpaScalingPolicy.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/hpaScalingPolicy.libsonnet deleted file mode 100644 index 2538c7a6ed50..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/hpaScalingPolicy.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='hpaScalingPolicy', url='', help='HPAScalingPolicy is a single policy which must hold true for a specified past interval.'), - '#withPeriodSeconds':: d.fn(help='PeriodSeconds specifies the window of time for which the policy should hold true. PeriodSeconds must be greater than zero and less than or equal to 1800 (30 min).', args=[d.arg(name='periodSeconds', type=d.T.integer)]), - withPeriodSeconds(periodSeconds): { periodSeconds: periodSeconds }, - '#withType':: d.fn(help='Type is used to specify the scaling policy.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#withValue':: d.fn(help='Value contains the amount of change which is permitted by the policy. It must be greater than zero', args=[d.arg(name='value', type=d.T.integer)]), - withValue(value): { value: value }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/hpaScalingRules.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/hpaScalingRules.libsonnet deleted file mode 100644 index d45a3e289a09..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/hpaScalingRules.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='hpaScalingRules', url='', help='HPAScalingRules configures the scaling behavior for one direction. These Rules are applied after calculating DesiredReplicas from metrics for the HPA. They can limit the scaling velocity by specifying scaling policies. They can prevent flapping by specifying the stabilization window, so that the number of replicas is not set instantly, instead, the safest value from the stabilization window is chosen.'), - '#withPolicies':: d.fn(help='policies is a list of potential scaling polices which can be used during scaling. At least one policy must be specified, otherwise the HPAScalingRules will be discarded as invalid', args=[d.arg(name='policies', type=d.T.array)]), - withPolicies(policies): { policies: if std.isArray(v=policies) then policies else [policies] }, - '#withPoliciesMixin':: d.fn(help='policies is a list of potential scaling polices which can be used during scaling. At least one policy must be specified, otherwise the HPAScalingRules will be discarded as invalid\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='policies', type=d.T.array)]), - withPoliciesMixin(policies): { policies+: if std.isArray(v=policies) then policies else [policies] }, - '#withSelectPolicy':: d.fn(help='selectPolicy is used to specify which policy should be used. If not set, the default value MaxPolicySelect is used.', args=[d.arg(name='selectPolicy', type=d.T.string)]), - withSelectPolicy(selectPolicy): { selectPolicy: selectPolicy }, - '#withStabilizationWindowSeconds':: d.fn(help='StabilizationWindowSeconds is the number of seconds for which past recommendations should be considered while scaling up or scaling down. StabilizationWindowSeconds must be greater than or equal to zero and less than or equal to 3600 (one hour). If not set, use the default values: - For scale up: 0 (i.e. no stabilization is done). - For scale down: 300 (i.e. the stabilization window is 300 seconds long).', args=[d.arg(name='stabilizationWindowSeconds', type=d.T.integer)]), - withStabilizationWindowSeconds(stabilizationWindowSeconds): { stabilizationWindowSeconds: stabilizationWindowSeconds }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/main.libsonnet deleted file mode 100644 index 537b89b6cb19..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/main.libsonnet +++ /dev/null @@ -1,27 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v2beta2', url='', help=''), - containerResourceMetricSource: (import 'containerResourceMetricSource.libsonnet'), - containerResourceMetricStatus: (import 'containerResourceMetricStatus.libsonnet'), - crossVersionObjectReference: (import 'crossVersionObjectReference.libsonnet'), - externalMetricSource: (import 'externalMetricSource.libsonnet'), - externalMetricStatus: (import 'externalMetricStatus.libsonnet'), - horizontalPodAutoscaler: (import 'horizontalPodAutoscaler.libsonnet'), - horizontalPodAutoscalerBehavior: (import 'horizontalPodAutoscalerBehavior.libsonnet'), - horizontalPodAutoscalerCondition: (import 'horizontalPodAutoscalerCondition.libsonnet'), - horizontalPodAutoscalerSpec: (import 'horizontalPodAutoscalerSpec.libsonnet'), - horizontalPodAutoscalerStatus: (import 'horizontalPodAutoscalerStatus.libsonnet'), - hpaScalingPolicy: (import 'hpaScalingPolicy.libsonnet'), - hpaScalingRules: (import 'hpaScalingRules.libsonnet'), - metricIdentifier: (import 'metricIdentifier.libsonnet'), - metricSpec: (import 'metricSpec.libsonnet'), - metricStatus: (import 'metricStatus.libsonnet'), - metricTarget: (import 'metricTarget.libsonnet'), - metricValueStatus: (import 'metricValueStatus.libsonnet'), - objectMetricSource: (import 'objectMetricSource.libsonnet'), - objectMetricStatus: (import 'objectMetricStatus.libsonnet'), - podsMetricSource: (import 'podsMetricSource.libsonnet'), - podsMetricStatus: (import 'podsMetricStatus.libsonnet'), - resourceMetricSource: (import 'resourceMetricSource.libsonnet'), - resourceMetricStatus: (import 'resourceMetricStatus.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/metricIdentifier.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/metricIdentifier.libsonnet deleted file mode 100644 index 31bebd295f0a..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/metricIdentifier.libsonnet +++ /dev/null @@ -1,19 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='metricIdentifier', url='', help='MetricIdentifier defines the name and optionally selector for a metric'), - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { selector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { selector+: { matchLabels+: matchLabels } }, - }, - '#withName':: d.fn(help='name is the name of the given metric', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/metricSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/metricSpec.libsonnet deleted file mode 100644 index 402ceea167ca..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/metricSpec.libsonnet +++ /dev/null @@ -1,141 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='metricSpec', url='', help='MetricSpec specifies how to scale based on a single metric (only `type` and one other matching field should be set at once).'), - '#containerResource':: d.obj(help='ContainerResourceMetricSource indicates how to scale on a resource metric known to Kubernetes, as specified in requests and limits, describing each pod in the current scale target (e.g. CPU or memory). The values will be averaged together before being compared to the target. Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the "pods" source. Only one "target" type should be set.'), - containerResource: { - '#target':: d.obj(help='MetricTarget defines the target value, average value, or average utilization of a specific metric'), - target: { - '#withAverageUtilization':: d.fn(help='averageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. Currently only valid for Resource metric source type', args=[d.arg(name='averageUtilization', type=d.T.integer)]), - withAverageUtilization(averageUtilization): { containerResource+: { target+: { averageUtilization: averageUtilization } } }, - '#withAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='averageValue', type=d.T.string)]), - withAverageValue(averageValue): { containerResource+: { target+: { averageValue: averageValue } } }, - '#withType':: d.fn(help='type represents whether the metric type is Utilization, Value, or AverageValue', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { containerResource+: { target+: { type: type } } }, - '#withValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='value', type=d.T.string)]), - withValue(value): { containerResource+: { target+: { value: value } } }, - }, - '#withContainer':: d.fn(help='container is the name of the container in the pods of the scaling target', args=[d.arg(name='container', type=d.T.string)]), - withContainer(container): { containerResource+: { container: container } }, - '#withName':: d.fn(help='name is the name of the resource in question.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { containerResource+: { name: name } }, - }, - '#external':: d.obj(help='ExternalMetricSource indicates how to scale on a metric not associated with any Kubernetes object (for example length of queue in cloud messaging service, or QPS from loadbalancer running outside of cluster).'), - external: { - '#metric':: d.obj(help='MetricIdentifier defines the name and optionally selector for a metric'), - metric: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { external+: { metric+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { external+: { metric+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { external+: { metric+: { selector+: { matchLabels: matchLabels } } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { external+: { metric+: { selector+: { matchLabels+: matchLabels } } } }, - }, - '#withName':: d.fn(help='name is the name of the given metric', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { external+: { metric+: { name: name } } }, - }, - '#target':: d.obj(help='MetricTarget defines the target value, average value, or average utilization of a specific metric'), - target: { - '#withAverageUtilization':: d.fn(help='averageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. Currently only valid for Resource metric source type', args=[d.arg(name='averageUtilization', type=d.T.integer)]), - withAverageUtilization(averageUtilization): { external+: { target+: { averageUtilization: averageUtilization } } }, - '#withAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='averageValue', type=d.T.string)]), - withAverageValue(averageValue): { external+: { target+: { averageValue: averageValue } } }, - '#withType':: d.fn(help='type represents whether the metric type is Utilization, Value, or AverageValue', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { external+: { target+: { type: type } } }, - '#withValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='value', type=d.T.string)]), - withValue(value): { external+: { target+: { value: value } } }, - }, - }, - '#object':: d.obj(help='ObjectMetricSource indicates how to scale on a metric describing a kubernetes object (for example, hits-per-second on an Ingress object).'), - object: { - '#describedObject':: d.obj(help='CrossVersionObjectReference contains enough information to let you identify the referred resource.'), - describedObject: { - '#withApiVersion':: d.fn(help='API version of the referent', args=[d.arg(name='apiVersion', type=d.T.string)]), - withApiVersion(apiVersion): { object+: { describedObject+: { apiVersion: apiVersion } } }, - '#withKind':: d.fn(help='Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds"', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { object+: { describedObject+: { kind: kind } } }, - '#withName':: d.fn(help='Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { object+: { describedObject+: { name: name } } }, - }, - '#metric':: d.obj(help='MetricIdentifier defines the name and optionally selector for a metric'), - metric: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { object+: { metric+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { object+: { metric+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { object+: { metric+: { selector+: { matchLabels: matchLabels } } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { object+: { metric+: { selector+: { matchLabels+: matchLabels } } } }, - }, - '#withName':: d.fn(help='name is the name of the given metric', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { object+: { metric+: { name: name } } }, - }, - '#target':: d.obj(help='MetricTarget defines the target value, average value, or average utilization of a specific metric'), - target: { - '#withAverageUtilization':: d.fn(help='averageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. Currently only valid for Resource metric source type', args=[d.arg(name='averageUtilization', type=d.T.integer)]), - withAverageUtilization(averageUtilization): { object+: { target+: { averageUtilization: averageUtilization } } }, - '#withAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='averageValue', type=d.T.string)]), - withAverageValue(averageValue): { object+: { target+: { averageValue: averageValue } } }, - '#withType':: d.fn(help='type represents whether the metric type is Utilization, Value, or AverageValue', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { object+: { target+: { type: type } } }, - '#withValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='value', type=d.T.string)]), - withValue(value): { object+: { target+: { value: value } } }, - }, - }, - '#pods':: d.obj(help='PodsMetricSource indicates how to scale on a metric describing each pod in the current scale target (for example, transactions-processed-per-second). The values will be averaged together before being compared to the target value.'), - pods: { - '#metric':: d.obj(help='MetricIdentifier defines the name and optionally selector for a metric'), - metric: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { pods+: { metric+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { pods+: { metric+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { pods+: { metric+: { selector+: { matchLabels: matchLabels } } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { pods+: { metric+: { selector+: { matchLabels+: matchLabels } } } }, - }, - '#withName':: d.fn(help='name is the name of the given metric', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { pods+: { metric+: { name: name } } }, - }, - '#target':: d.obj(help='MetricTarget defines the target value, average value, or average utilization of a specific metric'), - target: { - '#withAverageUtilization':: d.fn(help='averageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. Currently only valid for Resource metric source type', args=[d.arg(name='averageUtilization', type=d.T.integer)]), - withAverageUtilization(averageUtilization): { pods+: { target+: { averageUtilization: averageUtilization } } }, - '#withAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='averageValue', type=d.T.string)]), - withAverageValue(averageValue): { pods+: { target+: { averageValue: averageValue } } }, - '#withType':: d.fn(help='type represents whether the metric type is Utilization, Value, or AverageValue', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { pods+: { target+: { type: type } } }, - '#withValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='value', type=d.T.string)]), - withValue(value): { pods+: { target+: { value: value } } }, - }, - }, - '#resource':: d.obj(help='ResourceMetricSource indicates how to scale on a resource metric known to Kubernetes, as specified in requests and limits, describing each pod in the current scale target (e.g. CPU or memory). The values will be averaged together before being compared to the target. Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the "pods" source. Only one "target" type should be set.'), - resource: { - '#target':: d.obj(help='MetricTarget defines the target value, average value, or average utilization of a specific metric'), - target: { - '#withAverageUtilization':: d.fn(help='averageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. Currently only valid for Resource metric source type', args=[d.arg(name='averageUtilization', type=d.T.integer)]), - withAverageUtilization(averageUtilization): { resource+: { target+: { averageUtilization: averageUtilization } } }, - '#withAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='averageValue', type=d.T.string)]), - withAverageValue(averageValue): { resource+: { target+: { averageValue: averageValue } } }, - '#withType':: d.fn(help='type represents whether the metric type is Utilization, Value, or AverageValue', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { resource+: { target+: { type: type } } }, - '#withValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='value', type=d.T.string)]), - withValue(value): { resource+: { target+: { value: value } } }, - }, - '#withName':: d.fn(help='name is the name of the resource in question.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { resource+: { name: name } }, - }, - '#withType':: d.fn(help='type is the type of metric source. It should be one of "ContainerResource", "External", "Object", "Pods" or "Resource", each mapping to a matching field in the object. Note: "ContainerResource" type is available on when the feature-gate HPAContainerMetrics is enabled', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/metricStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/metricStatus.libsonnet deleted file mode 100644 index 71f53e3d5d5a..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/metricStatus.libsonnet +++ /dev/null @@ -1,131 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='metricStatus', url='', help='MetricStatus describes the last-read state of a single metric.'), - '#containerResource':: d.obj(help='ContainerResourceMetricStatus indicates the current value of a resource metric known to Kubernetes, as specified in requests and limits, describing a single container in each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the "pods" source.'), - containerResource: { - '#current':: d.obj(help='MetricValueStatus holds the current value for a metric'), - current: { - '#withAverageUtilization':: d.fn(help='currentAverageUtilization is the current value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods.', args=[d.arg(name='averageUtilization', type=d.T.integer)]), - withAverageUtilization(averageUtilization): { containerResource+: { current+: { averageUtilization: averageUtilization } } }, - '#withAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='averageValue', type=d.T.string)]), - withAverageValue(averageValue): { containerResource+: { current+: { averageValue: averageValue } } }, - '#withValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='value', type=d.T.string)]), - withValue(value): { containerResource+: { current+: { value: value } } }, - }, - '#withContainer':: d.fn(help='Container is the name of the container in the pods of the scaling target', args=[d.arg(name='container', type=d.T.string)]), - withContainer(container): { containerResource+: { container: container } }, - '#withName':: d.fn(help='Name is the name of the resource in question.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { containerResource+: { name: name } }, - }, - '#external':: d.obj(help='ExternalMetricStatus indicates the current value of a global metric not associated with any Kubernetes object.'), - external: { - '#current':: d.obj(help='MetricValueStatus holds the current value for a metric'), - current: { - '#withAverageUtilization':: d.fn(help='currentAverageUtilization is the current value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods.', args=[d.arg(name='averageUtilization', type=d.T.integer)]), - withAverageUtilization(averageUtilization): { external+: { current+: { averageUtilization: averageUtilization } } }, - '#withAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='averageValue', type=d.T.string)]), - withAverageValue(averageValue): { external+: { current+: { averageValue: averageValue } } }, - '#withValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='value', type=d.T.string)]), - withValue(value): { external+: { current+: { value: value } } }, - }, - '#metric':: d.obj(help='MetricIdentifier defines the name and optionally selector for a metric'), - metric: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { external+: { metric+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { external+: { metric+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { external+: { metric+: { selector+: { matchLabels: matchLabels } } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { external+: { metric+: { selector+: { matchLabels+: matchLabels } } } }, - }, - '#withName':: d.fn(help='name is the name of the given metric', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { external+: { metric+: { name: name } } }, - }, - }, - '#object':: d.obj(help='ObjectMetricStatus indicates the current value of a metric describing a kubernetes object (for example, hits-per-second on an Ingress object).'), - object: { - '#current':: d.obj(help='MetricValueStatus holds the current value for a metric'), - current: { - '#withAverageUtilization':: d.fn(help='currentAverageUtilization is the current value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods.', args=[d.arg(name='averageUtilization', type=d.T.integer)]), - withAverageUtilization(averageUtilization): { object+: { current+: { averageUtilization: averageUtilization } } }, - '#withAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='averageValue', type=d.T.string)]), - withAverageValue(averageValue): { object+: { current+: { averageValue: averageValue } } }, - '#withValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='value', type=d.T.string)]), - withValue(value): { object+: { current+: { value: value } } }, - }, - '#describedObject':: d.obj(help='CrossVersionObjectReference contains enough information to let you identify the referred resource.'), - describedObject: { - '#withApiVersion':: d.fn(help='API version of the referent', args=[d.arg(name='apiVersion', type=d.T.string)]), - withApiVersion(apiVersion): { object+: { describedObject+: { apiVersion: apiVersion } } }, - '#withKind':: d.fn(help='Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds"', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { object+: { describedObject+: { kind: kind } } }, - '#withName':: d.fn(help='Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { object+: { describedObject+: { name: name } } }, - }, - '#metric':: d.obj(help='MetricIdentifier defines the name and optionally selector for a metric'), - metric: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { object+: { metric+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { object+: { metric+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { object+: { metric+: { selector+: { matchLabels: matchLabels } } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { object+: { metric+: { selector+: { matchLabels+: matchLabels } } } }, - }, - '#withName':: d.fn(help='name is the name of the given metric', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { object+: { metric+: { name: name } } }, - }, - }, - '#pods':: d.obj(help='PodsMetricStatus indicates the current value of a metric describing each pod in the current scale target (for example, transactions-processed-per-second).'), - pods: { - '#current':: d.obj(help='MetricValueStatus holds the current value for a metric'), - current: { - '#withAverageUtilization':: d.fn(help='currentAverageUtilization is the current value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods.', args=[d.arg(name='averageUtilization', type=d.T.integer)]), - withAverageUtilization(averageUtilization): { pods+: { current+: { averageUtilization: averageUtilization } } }, - '#withAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='averageValue', type=d.T.string)]), - withAverageValue(averageValue): { pods+: { current+: { averageValue: averageValue } } }, - '#withValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='value', type=d.T.string)]), - withValue(value): { pods+: { current+: { value: value } } }, - }, - '#metric':: d.obj(help='MetricIdentifier defines the name and optionally selector for a metric'), - metric: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { pods+: { metric+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { pods+: { metric+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { pods+: { metric+: { selector+: { matchLabels: matchLabels } } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { pods+: { metric+: { selector+: { matchLabels+: matchLabels } } } }, - }, - '#withName':: d.fn(help='name is the name of the given metric', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { pods+: { metric+: { name: name } } }, - }, - }, - '#resource':: d.obj(help='ResourceMetricStatus indicates the current value of a resource metric known to Kubernetes, as specified in requests and limits, describing each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the "pods" source.'), - resource: { - '#current':: d.obj(help='MetricValueStatus holds the current value for a metric'), - current: { - '#withAverageUtilization':: d.fn(help='currentAverageUtilization is the current value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods.', args=[d.arg(name='averageUtilization', type=d.T.integer)]), - withAverageUtilization(averageUtilization): { resource+: { current+: { averageUtilization: averageUtilization } } }, - '#withAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='averageValue', type=d.T.string)]), - withAverageValue(averageValue): { resource+: { current+: { averageValue: averageValue } } }, - '#withValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='value', type=d.T.string)]), - withValue(value): { resource+: { current+: { value: value } } }, - }, - '#withName':: d.fn(help='Name is the name of the resource in question.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { resource+: { name: name } }, - }, - '#withType':: d.fn(help='type is the type of metric source. It will be one of "ContainerResource", "External", "Object", "Pods" or "Resource", each corresponds to a matching field in the object. Note: "ContainerResource" type is available on when the feature-gate HPAContainerMetrics is enabled', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/metricTarget.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/metricTarget.libsonnet deleted file mode 100644 index 9e0add77400a..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/metricTarget.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='metricTarget', url='', help='MetricTarget defines the target value, average value, or average utilization of a specific metric'), - '#withAverageUtilization':: d.fn(help='averageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. Currently only valid for Resource metric source type', args=[d.arg(name='averageUtilization', type=d.T.integer)]), - withAverageUtilization(averageUtilization): { averageUtilization: averageUtilization }, - '#withAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='averageValue', type=d.T.string)]), - withAverageValue(averageValue): { averageValue: averageValue }, - '#withType':: d.fn(help='type represents whether the metric type is Utilization, Value, or AverageValue', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#withValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='value', type=d.T.string)]), - withValue(value): { value: value }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/metricValueStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/metricValueStatus.libsonnet deleted file mode 100644 index 35e9e68492f2..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/metricValueStatus.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='metricValueStatus', url='', help='MetricValueStatus holds the current value for a metric'), - '#withAverageUtilization':: d.fn(help='currentAverageUtilization is the current value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods.', args=[d.arg(name='averageUtilization', type=d.T.integer)]), - withAverageUtilization(averageUtilization): { averageUtilization: averageUtilization }, - '#withAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='averageValue', type=d.T.string)]), - withAverageValue(averageValue): { averageValue: averageValue }, - '#withValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='value', type=d.T.string)]), - withValue(value): { value: value }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/objectMetricSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/objectMetricSource.libsonnet deleted file mode 100644 index f360b97e84c5..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/objectMetricSource.libsonnet +++ /dev/null @@ -1,42 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='objectMetricSource', url='', help='ObjectMetricSource indicates how to scale on a metric describing a kubernetes object (for example, hits-per-second on an Ingress object).'), - '#describedObject':: d.obj(help='CrossVersionObjectReference contains enough information to let you identify the referred resource.'), - describedObject: { - '#withApiVersion':: d.fn(help='API version of the referent', args=[d.arg(name='apiVersion', type=d.T.string)]), - withApiVersion(apiVersion): { describedObject+: { apiVersion: apiVersion } }, - '#withKind':: d.fn(help='Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds"', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { describedObject+: { kind: kind } }, - '#withName':: d.fn(help='Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { describedObject+: { name: name } }, - }, - '#metric':: d.obj(help='MetricIdentifier defines the name and optionally selector for a metric'), - metric: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { metric+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { metric+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { metric+: { selector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { metric+: { selector+: { matchLabels+: matchLabels } } }, - }, - '#withName':: d.fn(help='name is the name of the given metric', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metric+: { name: name } }, - }, - '#target':: d.obj(help='MetricTarget defines the target value, average value, or average utilization of a specific metric'), - target: { - '#withAverageUtilization':: d.fn(help='averageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. Currently only valid for Resource metric source type', args=[d.arg(name='averageUtilization', type=d.T.integer)]), - withAverageUtilization(averageUtilization): { target+: { averageUtilization: averageUtilization } }, - '#withAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='averageValue', type=d.T.string)]), - withAverageValue(averageValue): { target+: { averageValue: averageValue } }, - '#withType':: d.fn(help='type represents whether the metric type is Utilization, Value, or AverageValue', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { target+: { type: type } }, - '#withValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='value', type=d.T.string)]), - withValue(value): { target+: { value: value } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/objectMetricStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/objectMetricStatus.libsonnet deleted file mode 100644 index ea885293c17f..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/objectMetricStatus.libsonnet +++ /dev/null @@ -1,40 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='objectMetricStatus', url='', help='ObjectMetricStatus indicates the current value of a metric describing a kubernetes object (for example, hits-per-second on an Ingress object).'), - '#current':: d.obj(help='MetricValueStatus holds the current value for a metric'), - current: { - '#withAverageUtilization':: d.fn(help='currentAverageUtilization is the current value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods.', args=[d.arg(name='averageUtilization', type=d.T.integer)]), - withAverageUtilization(averageUtilization): { current+: { averageUtilization: averageUtilization } }, - '#withAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='averageValue', type=d.T.string)]), - withAverageValue(averageValue): { current+: { averageValue: averageValue } }, - '#withValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='value', type=d.T.string)]), - withValue(value): { current+: { value: value } }, - }, - '#describedObject':: d.obj(help='CrossVersionObjectReference contains enough information to let you identify the referred resource.'), - describedObject: { - '#withApiVersion':: d.fn(help='API version of the referent', args=[d.arg(name='apiVersion', type=d.T.string)]), - withApiVersion(apiVersion): { describedObject+: { apiVersion: apiVersion } }, - '#withKind':: d.fn(help='Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds"', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { describedObject+: { kind: kind } }, - '#withName':: d.fn(help='Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { describedObject+: { name: name } }, - }, - '#metric':: d.obj(help='MetricIdentifier defines the name and optionally selector for a metric'), - metric: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { metric+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { metric+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { metric+: { selector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { metric+: { selector+: { matchLabels+: matchLabels } } }, - }, - '#withName':: d.fn(help='name is the name of the given metric', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metric+: { name: name } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/podsMetricSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/podsMetricSource.libsonnet deleted file mode 100644 index cba73286820c..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/podsMetricSource.libsonnet +++ /dev/null @@ -1,33 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='podsMetricSource', url='', help='PodsMetricSource indicates how to scale on a metric describing each pod in the current scale target (for example, transactions-processed-per-second). The values will be averaged together before being compared to the target value.'), - '#metric':: d.obj(help='MetricIdentifier defines the name and optionally selector for a metric'), - metric: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { metric+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { metric+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { metric+: { selector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { metric+: { selector+: { matchLabels+: matchLabels } } }, - }, - '#withName':: d.fn(help='name is the name of the given metric', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metric+: { name: name } }, - }, - '#target':: d.obj(help='MetricTarget defines the target value, average value, or average utilization of a specific metric'), - target: { - '#withAverageUtilization':: d.fn(help='averageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. Currently only valid for Resource metric source type', args=[d.arg(name='averageUtilization', type=d.T.integer)]), - withAverageUtilization(averageUtilization): { target+: { averageUtilization: averageUtilization } }, - '#withAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='averageValue', type=d.T.string)]), - withAverageValue(averageValue): { target+: { averageValue: averageValue } }, - '#withType':: d.fn(help='type represents whether the metric type is Utilization, Value, or AverageValue', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { target+: { type: type } }, - '#withValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='value', type=d.T.string)]), - withValue(value): { target+: { value: value } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/podsMetricStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/podsMetricStatus.libsonnet deleted file mode 100644 index 67deaad7dd5f..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/podsMetricStatus.libsonnet +++ /dev/null @@ -1,31 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='podsMetricStatus', url='', help='PodsMetricStatus indicates the current value of a metric describing each pod in the current scale target (for example, transactions-processed-per-second).'), - '#current':: d.obj(help='MetricValueStatus holds the current value for a metric'), - current: { - '#withAverageUtilization':: d.fn(help='currentAverageUtilization is the current value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods.', args=[d.arg(name='averageUtilization', type=d.T.integer)]), - withAverageUtilization(averageUtilization): { current+: { averageUtilization: averageUtilization } }, - '#withAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='averageValue', type=d.T.string)]), - withAverageValue(averageValue): { current+: { averageValue: averageValue } }, - '#withValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='value', type=d.T.string)]), - withValue(value): { current+: { value: value } }, - }, - '#metric':: d.obj(help='MetricIdentifier defines the name and optionally selector for a metric'), - metric: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { metric+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { metric+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { metric+: { selector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { metric+: { selector+: { matchLabels+: matchLabels } } }, - }, - '#withName':: d.fn(help='name is the name of the given metric', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metric+: { name: name } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/resourceMetricSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/resourceMetricSource.libsonnet deleted file mode 100644 index de5248cba81f..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/resourceMetricSource.libsonnet +++ /dev/null @@ -1,19 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='resourceMetricSource', url='', help='ResourceMetricSource indicates how to scale on a resource metric known to Kubernetes, as specified in requests and limits, describing each pod in the current scale target (e.g. CPU or memory). The values will be averaged together before being compared to the target. Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the "pods" source. Only one "target" type should be set.'), - '#target':: d.obj(help='MetricTarget defines the target value, average value, or average utilization of a specific metric'), - target: { - '#withAverageUtilization':: d.fn(help='averageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. Currently only valid for Resource metric source type', args=[d.arg(name='averageUtilization', type=d.T.integer)]), - withAverageUtilization(averageUtilization): { target+: { averageUtilization: averageUtilization } }, - '#withAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='averageValue', type=d.T.string)]), - withAverageValue(averageValue): { target+: { averageValue: averageValue } }, - '#withType':: d.fn(help='type represents whether the metric type is Utilization, Value, or AverageValue', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { target+: { type: type } }, - '#withValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='value', type=d.T.string)]), - withValue(value): { target+: { value: value } }, - }, - '#withName':: d.fn(help='name is the name of the resource in question.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/resourceMetricStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/resourceMetricStatus.libsonnet deleted file mode 100644 index 5e4623bb8861..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/autoscaling/v2beta2/resourceMetricStatus.libsonnet +++ /dev/null @@ -1,17 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='resourceMetricStatus', url='', help='ResourceMetricStatus indicates the current value of a resource metric known to Kubernetes, as specified in requests and limits, describing each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the "pods" source.'), - '#current':: d.obj(help='MetricValueStatus holds the current value for a metric'), - current: { - '#withAverageUtilization':: d.fn(help='currentAverageUtilization is the current value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods.', args=[d.arg(name='averageUtilization', type=d.T.integer)]), - withAverageUtilization(averageUtilization): { current+: { averageUtilization: averageUtilization } }, - '#withAverageValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='averageValue', type=d.T.string)]), - withAverageValue(averageValue): { current+: { averageValue: averageValue } }, - '#withValue':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='value', type=d.T.string)]), - withValue(value): { current+: { value: value } }, - }, - '#withName':: d.fn(help='Name is the name of the resource in question.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/main.libsonnet deleted file mode 100644 index f2a9271adbef..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/main.libsonnet +++ /dev/null @@ -1,6 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='batch', url='', help=''), - v1: (import 'v1/main.libsonnet'), - v1beta1: (import 'v1beta1/main.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1/cronJob.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1/cronJob.libsonnet deleted file mode 100644 index 76e9f0511435..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1/cronJob.libsonnet +++ /dev/null @@ -1,388 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='cronJob', url='', help='CronJob represents the configuration of a single cron job.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Cronjob', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'batch/v1', - kind: 'CronJob', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='CronJobSpec describes how the job execution will look like and when it will actually run.'), - spec: { - '#jobTemplate':: d.obj(help='JobTemplateSpec describes the data a Job should have when created from a template'), - jobTemplate: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { spec+: { jobTemplate+: { metadata+: { annotations: annotations } } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { spec+: { jobTemplate+: { metadata+: { annotations+: annotations } } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { spec+: { jobTemplate+: { metadata+: { clusterName: clusterName } } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { spec+: { jobTemplate+: { metadata+: { creationTimestamp: creationTimestamp } } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { spec+: { jobTemplate+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { spec+: { jobTemplate+: { metadata+: { deletionTimestamp: deletionTimestamp } } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { spec+: { jobTemplate+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { spec+: { jobTemplate+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { spec+: { jobTemplate+: { metadata+: { generateName: generateName } } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { spec+: { jobTemplate+: { metadata+: { generation: generation } } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { spec+: { jobTemplate+: { metadata+: { labels: labels } } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { spec+: { jobTemplate+: { metadata+: { labels+: labels } } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { spec+: { jobTemplate+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { spec+: { jobTemplate+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { jobTemplate+: { metadata+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { jobTemplate+: { metadata+: { namespace: namespace } } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { spec+: { jobTemplate+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { spec+: { jobTemplate+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { spec+: { jobTemplate+: { metadata+: { resourceVersion: resourceVersion } } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { spec+: { jobTemplate+: { metadata+: { selfLink: selfLink } } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { jobTemplate+: { metadata+: { uid: uid } } } }, - }, - '#spec':: d.obj(help='JobSpec describes how the job execution will look like.'), - spec: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { spec+: { jobTemplate+: { spec+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { spec+: { jobTemplate+: { spec+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { spec+: { jobTemplate+: { spec+: { selector+: { matchLabels: matchLabels } } } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { spec+: { jobTemplate+: { spec+: { selector+: { matchLabels+: matchLabels } } } } }, - }, - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { annotations: annotations } } } } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { annotations+: annotations } } } } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { clusterName: clusterName } } } } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { creationTimestamp: creationTimestamp } } } } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } } } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } } } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { generateName: generateName } } } } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { generation: generation } } } } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { labels: labels } } } } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { labels+: labels } } } } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { name: name } } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { namespace: namespace } } } } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { resourceVersion: resourceVersion } } } } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { selfLink: selfLink } } } } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { uid: uid } } } } } }, - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } } } }, - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } } }, - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } } }, - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } } }, - }, - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } } } } }, - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } } } } }, - }, - '#seccompProfile':: d.obj(help="SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set."), - seccompProfile: { - '#withLocalhostProfile':: d.fn(help="localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is 'Localhost'.", args=[d.arg(name='localhostProfile', type=d.T.string)]), - withLocalhostProfile(localhostProfile): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { seccompProfile+: { localhostProfile: localhostProfile } } } } } } } }, - '#withType':: d.fn(help='type indicates which kind of seccomp profile will be applied. Valid options are:\n\nLocalhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { seccompProfile+: { type: type } } } } } } } }, - }, - '#windowsOptions':: d.obj(help='WindowsSecurityContextOptions contain Windows-specific options and credentials.'), - windowsOptions: { - '#withGmsaCredentialSpec':: d.fn(help='GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.', args=[d.arg(name='gmsaCredentialSpec', type=d.T.string)]), - withGmsaCredentialSpec(gmsaCredentialSpec): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { windowsOptions+: { gmsaCredentialSpec: gmsaCredentialSpec } } } } } } } }, - '#withGmsaCredentialSpecName':: d.fn(help='GMSACredentialSpecName is the name of the GMSA credential spec to use.', args=[d.arg(name='gmsaCredentialSpecName', type=d.T.string)]), - withGmsaCredentialSpecName(gmsaCredentialSpecName): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { windowsOptions+: { gmsaCredentialSpecName: gmsaCredentialSpecName } } } } } } } }, - '#withRunAsUserName':: d.fn(help='The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsUserName', type=d.T.string)]), - withRunAsUserName(runAsUserName): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { windowsOptions+: { runAsUserName: runAsUserName } } } } } } } }, - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } } } } }, - '#withFsGroupChangePolicy':: d.fn(help='fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used.', args=[d.arg(name='fsGroupChangePolicy', type=d.T.string)]), - withFsGroupChangePolicy(fsGroupChangePolicy): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { fsGroupChangePolicy: fsGroupChangePolicy } } } } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } } } }, - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } } } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } } } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } } } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } } } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { dnsPolicy: dnsPolicy } } } } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { enableServiceLinks: enableServiceLinks } } } } } }, - '#withEphemeralContainers':: d.fn(help="List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. This field is alpha-level and is only honored by servers that enable the EphemeralContainers feature.", args=[d.arg(name='ephemeralContainers', type=d.T.array)]), - withEphemeralContainers(ephemeralContainers): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { ephemeralContainers: if std.isArray(v=ephemeralContainers) then ephemeralContainers else [ephemeralContainers] } } } } } }, - '#withEphemeralContainersMixin':: d.fn(help="List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. This field is alpha-level and is only honored by servers that enable the EphemeralContainers feature.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='ephemeralContainers', type=d.T.array)]), - withEphemeralContainersMixin(ephemeralContainers): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { ephemeralContainers+: if std.isArray(v=ephemeralContainers) then ephemeralContainers else [ephemeralContainers] } } } } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { hostIPC: hostIPC } } } } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { hostNetwork: hostNetwork } } } } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { hostPID: hostPID } } } } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { hostname: hostname } } } } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { nodeName: nodeName } } } } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { nodeSelector: nodeSelector } } } } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { nodeSelector+: nodeSelector } } } } } }, - '#withOverhead':: d.fn(help='Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/20190226-pod-overhead.md This field is alpha-level as of Kubernetes v1.16, and is only honored by servers that enable the PodOverhead feature.', args=[d.arg(name='overhead', type=d.T.object)]), - withOverhead(overhead): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { overhead: overhead } } } } } }, - '#withOverheadMixin':: d.fn(help='Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/20190226-pod-overhead.md This field is alpha-level as of Kubernetes v1.16, and is only honored by servers that enable the PodOverhead feature.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='overhead', type=d.T.object)]), - withOverheadMixin(overhead): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { overhead+: overhead } } } } } }, - '#withPreemptionPolicy':: d.fn(help='PreemptionPolicy is the Policy for preempting pods with lower priority. One of Never, PreemptLowerPriority. Defaults to PreemptLowerPriority if unset. This field is beta-level, gated by the NonPreemptingPriority feature-gate.', args=[d.arg(name='preemptionPolicy', type=d.T.string)]), - withPreemptionPolicy(preemptionPolicy): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { preemptionPolicy: preemptionPolicy } } } } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { priority: priority } } } } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { priorityClassName: priorityClassName } } } } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { restartPolicy: restartPolicy } } } } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is a beta feature as of Kubernetes v1.14.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { runtimeClassName: runtimeClassName } } } } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { schedulerName: schedulerName } } } } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { serviceAccount: serviceAccount } } } } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { serviceAccountName: serviceAccountName } } } } } }, - '#withSetHostnameAsFQDN':: d.fn(help="If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default). In Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname). In Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters to FQDN. If a pod does not have FQDN, this has no effect. Default to false.", args=[d.arg(name='setHostnameAsFQDN', type=d.T.boolean)]), - withSetHostnameAsFQDN(setHostnameAsFQDN): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { setHostnameAsFQDN: setHostnameAsFQDN } } } } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } } } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { subdomain: subdomain } } } } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } } } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } } } }, - '#withTopologySpreadConstraints':: d.fn(help='TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed.', args=[d.arg(name='topologySpreadConstraints', type=d.T.array)]), - withTopologySpreadConstraints(topologySpreadConstraints): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { topologySpreadConstraints: if std.isArray(v=topologySpreadConstraints) then topologySpreadConstraints else [topologySpreadConstraints] } } } } } }, - '#withTopologySpreadConstraintsMixin':: d.fn(help='TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='topologySpreadConstraints', type=d.T.array)]), - withTopologySpreadConstraintsMixin(topologySpreadConstraints): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { topologySpreadConstraints+: if std.isArray(v=topologySpreadConstraints) then topologySpreadConstraints else [topologySpreadConstraints] } } } } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } } } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } } } } }, - }, - }, - '#withActiveDeadlineSeconds':: d.fn(help='Specifies the duration in seconds relative to the startTime that the job may be continuously active before the system tries to terminate it; value must be positive integer. If a Job is suspended (at creation or through an update), this timer will effectively be stopped and reset when the Job is resumed again.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { spec+: { jobTemplate+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } } }, - '#withBackoffLimit':: d.fn(help='Specifies the number of retries before marking this job failed. Defaults to 6', args=[d.arg(name='backoffLimit', type=d.T.integer)]), - withBackoffLimit(backoffLimit): { spec+: { jobTemplate+: { spec+: { backoffLimit: backoffLimit } } } }, - '#withCompletionMode':: d.fn(help="CompletionMode specifies how Pod completions are tracked. It can be `NonIndexed` (default) or `Indexed`.\n\n`NonIndexed` means that the Job is considered complete when there have been .spec.completions successfully completed Pods. Each Pod completion is homologous to each other.\n\n`Indexed` means that the Pods of a Job get an associated completion index from 0 to (.spec.completions - 1), available in the annotation batch.kubernetes.io/job-completion-index. The Job is considered complete when there is one successfully completed Pod for each index. When value is `Indexed`, .spec.completions must be specified and `.spec.parallelism` must be less than or equal to 10^5.\n\nThis field is alpha-level and is only honored by servers that enable the IndexedJob feature gate. More completion modes can be added in the future. If the Job controller observes a mode that it doesn't recognize, the controller skips updates for the Job.", args=[d.arg(name='completionMode', type=d.T.string)]), - withCompletionMode(completionMode): { spec+: { jobTemplate+: { spec+: { completionMode: completionMode } } } }, - '#withCompletions':: d.fn(help='Specifies the desired number of successfully finished pods the job should be run with. Setting to nil means that the success of any pod signals the success of all pods, and allows parallelism to have any positive value. Setting to 1 means that parallelism is limited to 1 and the success of that pod signals the success of the job. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/', args=[d.arg(name='completions', type=d.T.integer)]), - withCompletions(completions): { spec+: { jobTemplate+: { spec+: { completions: completions } } } }, - '#withManualSelector':: d.fn(help='manualSelector controls generation of pod labels and pod selectors. Leave `manualSelector` unset unless you are certain what you are doing. When false or unset, the system pick labels unique to this job and appends those labels to the pod template. When true, the user is responsible for picking unique labels and specifying the selector. Failure to pick a unique label may cause this and other jobs to not function correctly. However, You may see `manualSelector=true` in jobs that were created with the old `extensions/v1beta1` API. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/#specifying-your-own-pod-selector', args=[d.arg(name='manualSelector', type=d.T.boolean)]), - withManualSelector(manualSelector): { spec+: { jobTemplate+: { spec+: { manualSelector: manualSelector } } } }, - '#withParallelism':: d.fn(help='Specifies the maximum desired number of pods the job should run at any given time. The actual number of pods running in steady state will be less than this number when ((.spec.completions - .status.successful) < .spec.parallelism), i.e. when the work left to do is less than max parallelism. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/', args=[d.arg(name='parallelism', type=d.T.integer)]), - withParallelism(parallelism): { spec+: { jobTemplate+: { spec+: { parallelism: parallelism } } } }, - '#withSuspend':: d.fn(help='Suspend specifies whether the Job controller should create Pods or not. If a Job is created with suspend set to true, no Pods are created by the Job controller. If a Job is suspended after creation (i.e. the flag goes from false to true), the Job controller will delete all active Pods associated with this Job. Users must design their workload to gracefully handle this. Suspending a Job will reset the StartTime field of the Job, effectively resetting the ActiveDeadlineSeconds timer too. This is an alpha field and requires the SuspendJob feature gate to be enabled; otherwise this field may not be set to true. Defaults to false.', args=[d.arg(name='suspend', type=d.T.boolean)]), - withSuspend(suspend): { spec+: { jobTemplate+: { spec+: { suspend: suspend } } } }, - '#withTtlSecondsAfterFinished':: d.fn(help="ttlSecondsAfterFinished limits the lifetime of a Job that has finished execution (either Complete or Failed). If this field is set, ttlSecondsAfterFinished after the Job finishes, it is eligible to be automatically deleted. When the Job is being deleted, its lifecycle guarantees (e.g. finalizers) will be honored. If this field is unset, the Job won't be automatically deleted. If this field is set to zero, the Job becomes eligible to be deleted immediately after it finishes. This field is alpha-level and is only honored by servers that enable the TTLAfterFinished feature.", args=[d.arg(name='ttlSecondsAfterFinished', type=d.T.integer)]), - withTtlSecondsAfterFinished(ttlSecondsAfterFinished): { spec+: { jobTemplate+: { spec+: { ttlSecondsAfterFinished: ttlSecondsAfterFinished } } } }, - }, - }, - '#withConcurrencyPolicy':: d.fn(help="Specifies how to treat concurrent executions of a Job. Valid values are: - 'Allow' (default): allows CronJobs to run concurrently; - 'Forbid': forbids concurrent runs, skipping next run if previous run hasn't finished yet; - 'Replace': cancels currently running job and replaces it with a new one", args=[d.arg(name='concurrencyPolicy', type=d.T.string)]), - withConcurrencyPolicy(concurrencyPolicy): { spec+: { concurrencyPolicy: concurrencyPolicy } }, - '#withFailedJobsHistoryLimit':: d.fn(help='The number of failed finished jobs to retain. Value must be non-negative integer. Defaults to 1.', args=[d.arg(name='failedJobsHistoryLimit', type=d.T.integer)]), - withFailedJobsHistoryLimit(failedJobsHistoryLimit): { spec+: { failedJobsHistoryLimit: failedJobsHistoryLimit } }, - '#withSchedule':: d.fn(help='The schedule in Cron format, see https://en.wikipedia.org/wiki/Cron.', args=[d.arg(name='schedule', type=d.T.string)]), - withSchedule(schedule): { spec+: { schedule: schedule } }, - '#withStartingDeadlineSeconds':: d.fn(help='Optional deadline in seconds for starting the job if it misses scheduled time for any reason. Missed jobs executions will be counted as failed ones.', args=[d.arg(name='startingDeadlineSeconds', type=d.T.integer)]), - withStartingDeadlineSeconds(startingDeadlineSeconds): { spec+: { startingDeadlineSeconds: startingDeadlineSeconds } }, - '#withSuccessfulJobsHistoryLimit':: d.fn(help='The number of successful finished jobs to retain. Value must be non-negative integer. Defaults to 3.', args=[d.arg(name='successfulJobsHistoryLimit', type=d.T.integer)]), - withSuccessfulJobsHistoryLimit(successfulJobsHistoryLimit): { spec+: { successfulJobsHistoryLimit: successfulJobsHistoryLimit } }, - '#withSuspend':: d.fn(help='This flag tells the controller to suspend subsequent executions, it does not apply to already started executions. Defaults to false.', args=[d.arg(name='suspend', type=d.T.boolean)]), - withSuspend(suspend): { spec+: { suspend: suspend } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1/cronJobSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1/cronJobSpec.libsonnet deleted file mode 100644 index 14e0aaa68183..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1/cronJobSpec.libsonnet +++ /dev/null @@ -1,335 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='cronJobSpec', url='', help='CronJobSpec describes how the job execution will look like and when it will actually run.'), - '#jobTemplate':: d.obj(help='JobTemplateSpec describes the data a Job should have when created from a template'), - jobTemplate: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { jobTemplate+: { metadata+: { annotations: annotations } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { jobTemplate+: { metadata+: { annotations+: annotations } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { jobTemplate+: { metadata+: { clusterName: clusterName } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { jobTemplate+: { metadata+: { creationTimestamp: creationTimestamp } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { jobTemplate+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { jobTemplate+: { metadata+: { deletionTimestamp: deletionTimestamp } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { jobTemplate+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { jobTemplate+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { jobTemplate+: { metadata+: { generateName: generateName } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { jobTemplate+: { metadata+: { generation: generation } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { jobTemplate+: { metadata+: { labels: labels } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { jobTemplate+: { metadata+: { labels+: labels } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { jobTemplate+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { jobTemplate+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { jobTemplate+: { metadata+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { jobTemplate+: { metadata+: { namespace: namespace } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { jobTemplate+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { jobTemplate+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { jobTemplate+: { metadata+: { resourceVersion: resourceVersion } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { jobTemplate+: { metadata+: { selfLink: selfLink } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { jobTemplate+: { metadata+: { uid: uid } } }, - }, - '#spec':: d.obj(help='JobSpec describes how the job execution will look like.'), - spec: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { jobTemplate+: { spec+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { jobTemplate+: { spec+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { jobTemplate+: { spec+: { selector+: { matchLabels: matchLabels } } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { jobTemplate+: { spec+: { selector+: { matchLabels+: matchLabels } } } }, - }, - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { jobTemplate+: { spec+: { template+: { metadata+: { annotations: annotations } } } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { jobTemplate+: { spec+: { template+: { metadata+: { annotations+: annotations } } } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { jobTemplate+: { spec+: { template+: { metadata+: { clusterName: clusterName } } } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { jobTemplate+: { spec+: { template+: { metadata+: { creationTimestamp: creationTimestamp } } } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { jobTemplate+: { spec+: { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { jobTemplate+: { spec+: { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { jobTemplate+: { spec+: { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { jobTemplate+: { spec+: { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { jobTemplate+: { spec+: { template+: { metadata+: { generateName: generateName } } } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { jobTemplate+: { spec+: { template+: { metadata+: { generation: generation } } } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { jobTemplate+: { spec+: { template+: { metadata+: { labels: labels } } } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { jobTemplate+: { spec+: { template+: { metadata+: { labels+: labels } } } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { jobTemplate+: { spec+: { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { jobTemplate+: { spec+: { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { jobTemplate+: { spec+: { template+: { metadata+: { name: name } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { jobTemplate+: { spec+: { template+: { metadata+: { namespace: namespace } } } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { jobTemplate+: { spec+: { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { jobTemplate+: { spec+: { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { jobTemplate+: { spec+: { template+: { metadata+: { resourceVersion: resourceVersion } } } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { jobTemplate+: { spec+: { template+: { metadata+: { selfLink: selfLink } } } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { jobTemplate+: { spec+: { template+: { metadata+: { uid: uid } } } } }, - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } } }, - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } }, - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } }, - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } }, - }, - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { jobTemplate+: { spec+: { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { jobTemplate+: { spec+: { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { jobTemplate+: { spec+: { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { jobTemplate+: { spec+: { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { jobTemplate+: { spec+: { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { jobTemplate+: { spec+: { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } } } }, - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } } } }, - }, - '#seccompProfile':: d.obj(help="SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set."), - seccompProfile: { - '#withLocalhostProfile':: d.fn(help="localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is 'Localhost'.", args=[d.arg(name='localhostProfile', type=d.T.string)]), - withLocalhostProfile(localhostProfile): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { seccompProfile+: { localhostProfile: localhostProfile } } } } } } }, - '#withType':: d.fn(help='type indicates which kind of seccomp profile will be applied. Valid options are:\n\nLocalhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { seccompProfile+: { type: type } } } } } } }, - }, - '#windowsOptions':: d.obj(help='WindowsSecurityContextOptions contain Windows-specific options and credentials.'), - windowsOptions: { - '#withGmsaCredentialSpec':: d.fn(help='GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.', args=[d.arg(name='gmsaCredentialSpec', type=d.T.string)]), - withGmsaCredentialSpec(gmsaCredentialSpec): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { windowsOptions+: { gmsaCredentialSpec: gmsaCredentialSpec } } } } } } }, - '#withGmsaCredentialSpecName':: d.fn(help='GMSACredentialSpecName is the name of the GMSA credential spec to use.', args=[d.arg(name='gmsaCredentialSpecName', type=d.T.string)]), - withGmsaCredentialSpecName(gmsaCredentialSpecName): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { windowsOptions+: { gmsaCredentialSpecName: gmsaCredentialSpecName } } } } } } }, - '#withRunAsUserName':: d.fn(help='The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsUserName', type=d.T.string)]), - withRunAsUserName(runAsUserName): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { windowsOptions+: { runAsUserName: runAsUserName } } } } } } }, - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } } } }, - '#withFsGroupChangePolicy':: d.fn(help='fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used.', args=[d.arg(name='fsGroupChangePolicy', type=d.T.string)]), - withFsGroupChangePolicy(fsGroupChangePolicy): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { fsGroupChangePolicy: fsGroupChangePolicy } } } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } } }, - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { jobTemplate+: { spec+: { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { jobTemplate+: { spec+: { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { jobTemplate+: { spec+: { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { jobTemplate+: { spec+: { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { jobTemplate+: { spec+: { template+: { spec+: { dnsPolicy: dnsPolicy } } } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { jobTemplate+: { spec+: { template+: { spec+: { enableServiceLinks: enableServiceLinks } } } } }, - '#withEphemeralContainers':: d.fn(help="List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. This field is alpha-level and is only honored by servers that enable the EphemeralContainers feature.", args=[d.arg(name='ephemeralContainers', type=d.T.array)]), - withEphemeralContainers(ephemeralContainers): { jobTemplate+: { spec+: { template+: { spec+: { ephemeralContainers: if std.isArray(v=ephemeralContainers) then ephemeralContainers else [ephemeralContainers] } } } } }, - '#withEphemeralContainersMixin':: d.fn(help="List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. This field is alpha-level and is only honored by servers that enable the EphemeralContainers feature.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='ephemeralContainers', type=d.T.array)]), - withEphemeralContainersMixin(ephemeralContainers): { jobTemplate+: { spec+: { template+: { spec+: { ephemeralContainers+: if std.isArray(v=ephemeralContainers) then ephemeralContainers else [ephemeralContainers] } } } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { jobTemplate+: { spec+: { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { jobTemplate+: { spec+: { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { jobTemplate+: { spec+: { template+: { spec+: { hostIPC: hostIPC } } } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { jobTemplate+: { spec+: { template+: { spec+: { hostNetwork: hostNetwork } } } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { jobTemplate+: { spec+: { template+: { spec+: { hostPID: hostPID } } } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { jobTemplate+: { spec+: { template+: { spec+: { hostname: hostname } } } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { jobTemplate+: { spec+: { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { jobTemplate+: { spec+: { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { jobTemplate+: { spec+: { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { jobTemplate+: { spec+: { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { jobTemplate+: { spec+: { template+: { spec+: { nodeName: nodeName } } } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { jobTemplate+: { spec+: { template+: { spec+: { nodeSelector: nodeSelector } } } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { jobTemplate+: { spec+: { template+: { spec+: { nodeSelector+: nodeSelector } } } } }, - '#withOverhead':: d.fn(help='Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/20190226-pod-overhead.md This field is alpha-level as of Kubernetes v1.16, and is only honored by servers that enable the PodOverhead feature.', args=[d.arg(name='overhead', type=d.T.object)]), - withOverhead(overhead): { jobTemplate+: { spec+: { template+: { spec+: { overhead: overhead } } } } }, - '#withOverheadMixin':: d.fn(help='Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/20190226-pod-overhead.md This field is alpha-level as of Kubernetes v1.16, and is only honored by servers that enable the PodOverhead feature.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='overhead', type=d.T.object)]), - withOverheadMixin(overhead): { jobTemplate+: { spec+: { template+: { spec+: { overhead+: overhead } } } } }, - '#withPreemptionPolicy':: d.fn(help='PreemptionPolicy is the Policy for preempting pods with lower priority. One of Never, PreemptLowerPriority. Defaults to PreemptLowerPriority if unset. This field is beta-level, gated by the NonPreemptingPriority feature-gate.', args=[d.arg(name='preemptionPolicy', type=d.T.string)]), - withPreemptionPolicy(preemptionPolicy): { jobTemplate+: { spec+: { template+: { spec+: { preemptionPolicy: preemptionPolicy } } } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { jobTemplate+: { spec+: { template+: { spec+: { priority: priority } } } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { jobTemplate+: { spec+: { template+: { spec+: { priorityClassName: priorityClassName } } } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { jobTemplate+: { spec+: { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { jobTemplate+: { spec+: { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { jobTemplate+: { spec+: { template+: { spec+: { restartPolicy: restartPolicy } } } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is a beta feature as of Kubernetes v1.14.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { jobTemplate+: { spec+: { template+: { spec+: { runtimeClassName: runtimeClassName } } } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { jobTemplate+: { spec+: { template+: { spec+: { schedulerName: schedulerName } } } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { jobTemplate+: { spec+: { template+: { spec+: { serviceAccount: serviceAccount } } } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { jobTemplate+: { spec+: { template+: { spec+: { serviceAccountName: serviceAccountName } } } } }, - '#withSetHostnameAsFQDN':: d.fn(help="If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default). In Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname). In Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters to FQDN. If a pod does not have FQDN, this has no effect. Default to false.", args=[d.arg(name='setHostnameAsFQDN', type=d.T.boolean)]), - withSetHostnameAsFQDN(setHostnameAsFQDN): { jobTemplate+: { spec+: { template+: { spec+: { setHostnameAsFQDN: setHostnameAsFQDN } } } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { jobTemplate+: { spec+: { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { jobTemplate+: { spec+: { template+: { spec+: { subdomain: subdomain } } } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { jobTemplate+: { spec+: { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { jobTemplate+: { spec+: { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { jobTemplate+: { spec+: { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } } }, - '#withTopologySpreadConstraints':: d.fn(help='TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed.', args=[d.arg(name='topologySpreadConstraints', type=d.T.array)]), - withTopologySpreadConstraints(topologySpreadConstraints): { jobTemplate+: { spec+: { template+: { spec+: { topologySpreadConstraints: if std.isArray(v=topologySpreadConstraints) then topologySpreadConstraints else [topologySpreadConstraints] } } } } }, - '#withTopologySpreadConstraintsMixin':: d.fn(help='TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='topologySpreadConstraints', type=d.T.array)]), - withTopologySpreadConstraintsMixin(topologySpreadConstraints): { jobTemplate+: { spec+: { template+: { spec+: { topologySpreadConstraints+: if std.isArray(v=topologySpreadConstraints) then topologySpreadConstraints else [topologySpreadConstraints] } } } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { jobTemplate+: { spec+: { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { jobTemplate+: { spec+: { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } } } }, - }, - }, - '#withActiveDeadlineSeconds':: d.fn(help='Specifies the duration in seconds relative to the startTime that the job may be continuously active before the system tries to terminate it; value must be positive integer. If a Job is suspended (at creation or through an update), this timer will effectively be stopped and reset when the Job is resumed again.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { jobTemplate+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } }, - '#withBackoffLimit':: d.fn(help='Specifies the number of retries before marking this job failed. Defaults to 6', args=[d.arg(name='backoffLimit', type=d.T.integer)]), - withBackoffLimit(backoffLimit): { jobTemplate+: { spec+: { backoffLimit: backoffLimit } } }, - '#withCompletionMode':: d.fn(help="CompletionMode specifies how Pod completions are tracked. It can be `NonIndexed` (default) or `Indexed`.\n\n`NonIndexed` means that the Job is considered complete when there have been .spec.completions successfully completed Pods. Each Pod completion is homologous to each other.\n\n`Indexed` means that the Pods of a Job get an associated completion index from 0 to (.spec.completions - 1), available in the annotation batch.kubernetes.io/job-completion-index. The Job is considered complete when there is one successfully completed Pod for each index. When value is `Indexed`, .spec.completions must be specified and `.spec.parallelism` must be less than or equal to 10^5.\n\nThis field is alpha-level and is only honored by servers that enable the IndexedJob feature gate. More completion modes can be added in the future. If the Job controller observes a mode that it doesn't recognize, the controller skips updates for the Job.", args=[d.arg(name='completionMode', type=d.T.string)]), - withCompletionMode(completionMode): { jobTemplate+: { spec+: { completionMode: completionMode } } }, - '#withCompletions':: d.fn(help='Specifies the desired number of successfully finished pods the job should be run with. Setting to nil means that the success of any pod signals the success of all pods, and allows parallelism to have any positive value. Setting to 1 means that parallelism is limited to 1 and the success of that pod signals the success of the job. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/', args=[d.arg(name='completions', type=d.T.integer)]), - withCompletions(completions): { jobTemplate+: { spec+: { completions: completions } } }, - '#withManualSelector':: d.fn(help='manualSelector controls generation of pod labels and pod selectors. Leave `manualSelector` unset unless you are certain what you are doing. When false or unset, the system pick labels unique to this job and appends those labels to the pod template. When true, the user is responsible for picking unique labels and specifying the selector. Failure to pick a unique label may cause this and other jobs to not function correctly. However, You may see `manualSelector=true` in jobs that were created with the old `extensions/v1beta1` API. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/#specifying-your-own-pod-selector', args=[d.arg(name='manualSelector', type=d.T.boolean)]), - withManualSelector(manualSelector): { jobTemplate+: { spec+: { manualSelector: manualSelector } } }, - '#withParallelism':: d.fn(help='Specifies the maximum desired number of pods the job should run at any given time. The actual number of pods running in steady state will be less than this number when ((.spec.completions - .status.successful) < .spec.parallelism), i.e. when the work left to do is less than max parallelism. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/', args=[d.arg(name='parallelism', type=d.T.integer)]), - withParallelism(parallelism): { jobTemplate+: { spec+: { parallelism: parallelism } } }, - '#withSuspend':: d.fn(help='Suspend specifies whether the Job controller should create Pods or not. If a Job is created with suspend set to true, no Pods are created by the Job controller. If a Job is suspended after creation (i.e. the flag goes from false to true), the Job controller will delete all active Pods associated with this Job. Users must design their workload to gracefully handle this. Suspending a Job will reset the StartTime field of the Job, effectively resetting the ActiveDeadlineSeconds timer too. This is an alpha field and requires the SuspendJob feature gate to be enabled; otherwise this field may not be set to true. Defaults to false.', args=[d.arg(name='suspend', type=d.T.boolean)]), - withSuspend(suspend): { jobTemplate+: { spec+: { suspend: suspend } } }, - '#withTtlSecondsAfterFinished':: d.fn(help="ttlSecondsAfterFinished limits the lifetime of a Job that has finished execution (either Complete or Failed). If this field is set, ttlSecondsAfterFinished after the Job finishes, it is eligible to be automatically deleted. When the Job is being deleted, its lifecycle guarantees (e.g. finalizers) will be honored. If this field is unset, the Job won't be automatically deleted. If this field is set to zero, the Job becomes eligible to be deleted immediately after it finishes. This field is alpha-level and is only honored by servers that enable the TTLAfterFinished feature.", args=[d.arg(name='ttlSecondsAfterFinished', type=d.T.integer)]), - withTtlSecondsAfterFinished(ttlSecondsAfterFinished): { jobTemplate+: { spec+: { ttlSecondsAfterFinished: ttlSecondsAfterFinished } } }, - }, - }, - '#withConcurrencyPolicy':: d.fn(help="Specifies how to treat concurrent executions of a Job. Valid values are: - 'Allow' (default): allows CronJobs to run concurrently; - 'Forbid': forbids concurrent runs, skipping next run if previous run hasn't finished yet; - 'Replace': cancels currently running job and replaces it with a new one", args=[d.arg(name='concurrencyPolicy', type=d.T.string)]), - withConcurrencyPolicy(concurrencyPolicy): { concurrencyPolicy: concurrencyPolicy }, - '#withFailedJobsHistoryLimit':: d.fn(help='The number of failed finished jobs to retain. Value must be non-negative integer. Defaults to 1.', args=[d.arg(name='failedJobsHistoryLimit', type=d.T.integer)]), - withFailedJobsHistoryLimit(failedJobsHistoryLimit): { failedJobsHistoryLimit: failedJobsHistoryLimit }, - '#withSchedule':: d.fn(help='The schedule in Cron format, see https://en.wikipedia.org/wiki/Cron.', args=[d.arg(name='schedule', type=d.T.string)]), - withSchedule(schedule): { schedule: schedule }, - '#withStartingDeadlineSeconds':: d.fn(help='Optional deadline in seconds for starting the job if it misses scheduled time for any reason. Missed jobs executions will be counted as failed ones.', args=[d.arg(name='startingDeadlineSeconds', type=d.T.integer)]), - withStartingDeadlineSeconds(startingDeadlineSeconds): { startingDeadlineSeconds: startingDeadlineSeconds }, - '#withSuccessfulJobsHistoryLimit':: d.fn(help='The number of successful finished jobs to retain. Value must be non-negative integer. Defaults to 3.', args=[d.arg(name='successfulJobsHistoryLimit', type=d.T.integer)]), - withSuccessfulJobsHistoryLimit(successfulJobsHistoryLimit): { successfulJobsHistoryLimit: successfulJobsHistoryLimit }, - '#withSuspend':: d.fn(help='This flag tells the controller to suspend subsequent executions, it does not apply to already started executions. Defaults to false.', args=[d.arg(name='suspend', type=d.T.boolean)]), - withSuspend(suspend): { suspend: suspend }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1/cronJobStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1/cronJobStatus.libsonnet deleted file mode 100644 index 9659da576683..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1/cronJobStatus.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='cronJobStatus', url='', help='CronJobStatus represents the current state of a cron job.'), - '#withActive':: d.fn(help='A list of pointers to currently running jobs.', args=[d.arg(name='active', type=d.T.array)]), - withActive(active): { active: if std.isArray(v=active) then active else [active] }, - '#withActiveMixin':: d.fn(help='A list of pointers to currently running jobs.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='active', type=d.T.array)]), - withActiveMixin(active): { active+: if std.isArray(v=active) then active else [active] }, - '#withLastScheduleTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastScheduleTime', type=d.T.string)]), - withLastScheduleTime(lastScheduleTime): { lastScheduleTime: lastScheduleTime }, - '#withLastSuccessfulTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastSuccessfulTime', type=d.T.string)]), - withLastSuccessfulTime(lastSuccessfulTime): { lastSuccessfulTime: lastSuccessfulTime }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1/job.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1/job.libsonnet deleted file mode 100644 index 3598de94af3b..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1/job.libsonnet +++ /dev/null @@ -1,325 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='job', url='', help='Job represents the configuration of a single job.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Job', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'batch/v1', - kind: 'Job', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='JobSpec describes how the job execution will look like.'), - spec: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { spec+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { spec+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { spec+: { selector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { spec+: { selector+: { matchLabels+: matchLabels } } }, - }, - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { spec+: { template+: { metadata+: { annotations: annotations } } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { spec+: { template+: { metadata+: { annotations+: annotations } } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { spec+: { template+: { metadata+: { clusterName: clusterName } } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { spec+: { template+: { metadata+: { creationTimestamp: creationTimestamp } } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { spec+: { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { spec+: { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { spec+: { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { spec+: { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { spec+: { template+: { metadata+: { generateName: generateName } } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { spec+: { template+: { metadata+: { generation: generation } } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { spec+: { template+: { metadata+: { labels: labels } } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { spec+: { template+: { metadata+: { labels+: labels } } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { spec+: { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { spec+: { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { template+: { metadata+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { template+: { metadata+: { namespace: namespace } } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { spec+: { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { spec+: { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { spec+: { template+: { metadata+: { resourceVersion: resourceVersion } } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { spec+: { template+: { metadata+: { selfLink: selfLink } } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { template+: { metadata+: { uid: uid } } } }, - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } }, - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - }, - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { spec+: { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { spec+: { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { spec+: { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { spec+: { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { spec+: { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { spec+: { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } } }, - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } } }, - }, - '#seccompProfile':: d.obj(help="SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set."), - seccompProfile: { - '#withLocalhostProfile':: d.fn(help="localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is 'Localhost'.", args=[d.arg(name='localhostProfile', type=d.T.string)]), - withLocalhostProfile(localhostProfile): { spec+: { template+: { spec+: { securityContext+: { seccompProfile+: { localhostProfile: localhostProfile } } } } } }, - '#withType':: d.fn(help='type indicates which kind of seccomp profile will be applied. Valid options are:\n\nLocalhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { template+: { spec+: { securityContext+: { seccompProfile+: { type: type } } } } } }, - }, - '#windowsOptions':: d.obj(help='WindowsSecurityContextOptions contain Windows-specific options and credentials.'), - windowsOptions: { - '#withGmsaCredentialSpec':: d.fn(help='GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.', args=[d.arg(name='gmsaCredentialSpec', type=d.T.string)]), - withGmsaCredentialSpec(gmsaCredentialSpec): { spec+: { template+: { spec+: { securityContext+: { windowsOptions+: { gmsaCredentialSpec: gmsaCredentialSpec } } } } } }, - '#withGmsaCredentialSpecName':: d.fn(help='GMSACredentialSpecName is the name of the GMSA credential spec to use.', args=[d.arg(name='gmsaCredentialSpecName', type=d.T.string)]), - withGmsaCredentialSpecName(gmsaCredentialSpecName): { spec+: { template+: { spec+: { securityContext+: { windowsOptions+: { gmsaCredentialSpecName: gmsaCredentialSpecName } } } } } }, - '#withRunAsUserName':: d.fn(help='The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsUserName', type=d.T.string)]), - withRunAsUserName(runAsUserName): { spec+: { template+: { spec+: { securityContext+: { windowsOptions+: { runAsUserName: runAsUserName } } } } } }, - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { spec+: { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } } }, - '#withFsGroupChangePolicy':: d.fn(help='fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used.', args=[d.arg(name='fsGroupChangePolicy', type=d.T.string)]), - withFsGroupChangePolicy(fsGroupChangePolicy): { spec+: { template+: { spec+: { securityContext+: { fsGroupChangePolicy: fsGroupChangePolicy } } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { spec+: { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { spec+: { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { spec+: { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { spec+: { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { spec+: { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { spec+: { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { spec+: { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } }, - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { spec+: { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { spec+: { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { spec+: { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { spec+: { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { spec+: { template+: { spec+: { dnsPolicy: dnsPolicy } } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { spec+: { template+: { spec+: { enableServiceLinks: enableServiceLinks } } } }, - '#withEphemeralContainers':: d.fn(help="List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. This field is alpha-level and is only honored by servers that enable the EphemeralContainers feature.", args=[d.arg(name='ephemeralContainers', type=d.T.array)]), - withEphemeralContainers(ephemeralContainers): { spec+: { template+: { spec+: { ephemeralContainers: if std.isArray(v=ephemeralContainers) then ephemeralContainers else [ephemeralContainers] } } } }, - '#withEphemeralContainersMixin':: d.fn(help="List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. This field is alpha-level and is only honored by servers that enable the EphemeralContainers feature.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='ephemeralContainers', type=d.T.array)]), - withEphemeralContainersMixin(ephemeralContainers): { spec+: { template+: { spec+: { ephemeralContainers+: if std.isArray(v=ephemeralContainers) then ephemeralContainers else [ephemeralContainers] } } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { spec+: { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { spec+: { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { spec+: { template+: { spec+: { hostIPC: hostIPC } } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { spec+: { template+: { spec+: { hostNetwork: hostNetwork } } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { spec+: { template+: { spec+: { hostPID: hostPID } } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { spec+: { template+: { spec+: { hostname: hostname } } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { spec+: { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { spec+: { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { spec+: { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { spec+: { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { spec+: { template+: { spec+: { nodeName: nodeName } } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { spec+: { template+: { spec+: { nodeSelector: nodeSelector } } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { spec+: { template+: { spec+: { nodeSelector+: nodeSelector } } } }, - '#withOverhead':: d.fn(help='Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/20190226-pod-overhead.md This field is alpha-level as of Kubernetes v1.16, and is only honored by servers that enable the PodOverhead feature.', args=[d.arg(name='overhead', type=d.T.object)]), - withOverhead(overhead): { spec+: { template+: { spec+: { overhead: overhead } } } }, - '#withOverheadMixin':: d.fn(help='Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/20190226-pod-overhead.md This field is alpha-level as of Kubernetes v1.16, and is only honored by servers that enable the PodOverhead feature.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='overhead', type=d.T.object)]), - withOverheadMixin(overhead): { spec+: { template+: { spec+: { overhead+: overhead } } } }, - '#withPreemptionPolicy':: d.fn(help='PreemptionPolicy is the Policy for preempting pods with lower priority. One of Never, PreemptLowerPriority. Defaults to PreemptLowerPriority if unset. This field is beta-level, gated by the NonPreemptingPriority feature-gate.', args=[d.arg(name='preemptionPolicy', type=d.T.string)]), - withPreemptionPolicy(preemptionPolicy): { spec+: { template+: { spec+: { preemptionPolicy: preemptionPolicy } } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { spec+: { template+: { spec+: { priority: priority } } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { spec+: { template+: { spec+: { priorityClassName: priorityClassName } } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { spec+: { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { spec+: { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { spec+: { template+: { spec+: { restartPolicy: restartPolicy } } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is a beta feature as of Kubernetes v1.14.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { spec+: { template+: { spec+: { runtimeClassName: runtimeClassName } } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { spec+: { template+: { spec+: { schedulerName: schedulerName } } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { spec+: { template+: { spec+: { serviceAccount: serviceAccount } } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { spec+: { template+: { spec+: { serviceAccountName: serviceAccountName } } } }, - '#withSetHostnameAsFQDN':: d.fn(help="If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default). In Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname). In Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters to FQDN. If a pod does not have FQDN, this has no effect. Default to false.", args=[d.arg(name='setHostnameAsFQDN', type=d.T.boolean)]), - withSetHostnameAsFQDN(setHostnameAsFQDN): { spec+: { template+: { spec+: { setHostnameAsFQDN: setHostnameAsFQDN } } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { spec+: { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { spec+: { template+: { spec+: { subdomain: subdomain } } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { spec+: { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { spec+: { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { spec+: { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } }, - '#withTopologySpreadConstraints':: d.fn(help='TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed.', args=[d.arg(name='topologySpreadConstraints', type=d.T.array)]), - withTopologySpreadConstraints(topologySpreadConstraints): { spec+: { template+: { spec+: { topologySpreadConstraints: if std.isArray(v=topologySpreadConstraints) then topologySpreadConstraints else [topologySpreadConstraints] } } } }, - '#withTopologySpreadConstraintsMixin':: d.fn(help='TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='topologySpreadConstraints', type=d.T.array)]), - withTopologySpreadConstraintsMixin(topologySpreadConstraints): { spec+: { template+: { spec+: { topologySpreadConstraints+: if std.isArray(v=topologySpreadConstraints) then topologySpreadConstraints else [topologySpreadConstraints] } } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { spec+: { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { spec+: { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } } }, - }, - }, - '#withActiveDeadlineSeconds':: d.fn(help='Specifies the duration in seconds relative to the startTime that the job may be continuously active before the system tries to terminate it; value must be positive integer. If a Job is suspended (at creation or through an update), this timer will effectively be stopped and reset when the Job is resumed again.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } }, - '#withBackoffLimit':: d.fn(help='Specifies the number of retries before marking this job failed. Defaults to 6', args=[d.arg(name='backoffLimit', type=d.T.integer)]), - withBackoffLimit(backoffLimit): { spec+: { backoffLimit: backoffLimit } }, - '#withCompletionMode':: d.fn(help="CompletionMode specifies how Pod completions are tracked. It can be `NonIndexed` (default) or `Indexed`.\n\n`NonIndexed` means that the Job is considered complete when there have been .spec.completions successfully completed Pods. Each Pod completion is homologous to each other.\n\n`Indexed` means that the Pods of a Job get an associated completion index from 0 to (.spec.completions - 1), available in the annotation batch.kubernetes.io/job-completion-index. The Job is considered complete when there is one successfully completed Pod for each index. When value is `Indexed`, .spec.completions must be specified and `.spec.parallelism` must be less than or equal to 10^5.\n\nThis field is alpha-level and is only honored by servers that enable the IndexedJob feature gate. More completion modes can be added in the future. If the Job controller observes a mode that it doesn't recognize, the controller skips updates for the Job.", args=[d.arg(name='completionMode', type=d.T.string)]), - withCompletionMode(completionMode): { spec+: { completionMode: completionMode } }, - '#withCompletions':: d.fn(help='Specifies the desired number of successfully finished pods the job should be run with. Setting to nil means that the success of any pod signals the success of all pods, and allows parallelism to have any positive value. Setting to 1 means that parallelism is limited to 1 and the success of that pod signals the success of the job. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/', args=[d.arg(name='completions', type=d.T.integer)]), - withCompletions(completions): { spec+: { completions: completions } }, - '#withManualSelector':: d.fn(help='manualSelector controls generation of pod labels and pod selectors. Leave `manualSelector` unset unless you are certain what you are doing. When false or unset, the system pick labels unique to this job and appends those labels to the pod template. When true, the user is responsible for picking unique labels and specifying the selector. Failure to pick a unique label may cause this and other jobs to not function correctly. However, You may see `manualSelector=true` in jobs that were created with the old `extensions/v1beta1` API. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/#specifying-your-own-pod-selector', args=[d.arg(name='manualSelector', type=d.T.boolean)]), - withManualSelector(manualSelector): { spec+: { manualSelector: manualSelector } }, - '#withParallelism':: d.fn(help='Specifies the maximum desired number of pods the job should run at any given time. The actual number of pods running in steady state will be less than this number when ((.spec.completions - .status.successful) < .spec.parallelism), i.e. when the work left to do is less than max parallelism. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/', args=[d.arg(name='parallelism', type=d.T.integer)]), - withParallelism(parallelism): { spec+: { parallelism: parallelism } }, - '#withSuspend':: d.fn(help='Suspend specifies whether the Job controller should create Pods or not. If a Job is created with suspend set to true, no Pods are created by the Job controller. If a Job is suspended after creation (i.e. the flag goes from false to true), the Job controller will delete all active Pods associated with this Job. Users must design their workload to gracefully handle this. Suspending a Job will reset the StartTime field of the Job, effectively resetting the ActiveDeadlineSeconds timer too. This is an alpha field and requires the SuspendJob feature gate to be enabled; otherwise this field may not be set to true. Defaults to false.', args=[d.arg(name='suspend', type=d.T.boolean)]), - withSuspend(suspend): { spec+: { suspend: suspend } }, - '#withTtlSecondsAfterFinished':: d.fn(help="ttlSecondsAfterFinished limits the lifetime of a Job that has finished execution (either Complete or Failed). If this field is set, ttlSecondsAfterFinished after the Job finishes, it is eligible to be automatically deleted. When the Job is being deleted, its lifecycle guarantees (e.g. finalizers) will be honored. If this field is unset, the Job won't be automatically deleted. If this field is set to zero, the Job becomes eligible to be deleted immediately after it finishes. This field is alpha-level and is only honored by servers that enable the TTLAfterFinished feature.", args=[d.arg(name='ttlSecondsAfterFinished', type=d.T.integer)]), - withTtlSecondsAfterFinished(ttlSecondsAfterFinished): { spec+: { ttlSecondsAfterFinished: ttlSecondsAfterFinished } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1/jobCondition.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1/jobCondition.libsonnet deleted file mode 100644 index 4fddec451bc5..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1/jobCondition.libsonnet +++ /dev/null @@ -1,16 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='jobCondition', url='', help='JobCondition describes current state of a job.'), - '#withLastProbeTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastProbeTime', type=d.T.string)]), - withLastProbeTime(lastProbeTime): { lastProbeTime: lastProbeTime }, - '#withLastTransitionTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastTransitionTime', type=d.T.string)]), - withLastTransitionTime(lastTransitionTime): { lastTransitionTime: lastTransitionTime }, - '#withMessage':: d.fn(help='Human readable message indicating details about last transition.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withReason':: d.fn(help="(brief) reason for the condition's last transition.", args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#withType':: d.fn(help='Type of job condition, Complete or Failed.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1/jobSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1/jobSpec.libsonnet deleted file mode 100644 index 3b9bd2554d0e..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1/jobSpec.libsonnet +++ /dev/null @@ -1,272 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='jobSpec', url='', help='JobSpec describes how the job execution will look like.'), - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { selector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { selector+: { matchLabels+: matchLabels } }, - }, - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { template+: { metadata+: { annotations: annotations } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { template+: { metadata+: { annotations+: annotations } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { template+: { metadata+: { clusterName: clusterName } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { template+: { metadata+: { creationTimestamp: creationTimestamp } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { template+: { metadata+: { generateName: generateName } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { template+: { metadata+: { generation: generation } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { template+: { metadata+: { labels: labels } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { template+: { metadata+: { labels+: labels } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { template+: { metadata+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { template+: { metadata+: { namespace: namespace } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { template+: { metadata+: { resourceVersion: resourceVersion } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { template+: { metadata+: { selfLink: selfLink } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { template+: { metadata+: { uid: uid } } }, - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } }, - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - }, - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } }, - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } }, - }, - '#seccompProfile':: d.obj(help="SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set."), - seccompProfile: { - '#withLocalhostProfile':: d.fn(help="localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is 'Localhost'.", args=[d.arg(name='localhostProfile', type=d.T.string)]), - withLocalhostProfile(localhostProfile): { template+: { spec+: { securityContext+: { seccompProfile+: { localhostProfile: localhostProfile } } } } }, - '#withType':: d.fn(help='type indicates which kind of seccomp profile will be applied. Valid options are:\n\nLocalhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { template+: { spec+: { securityContext+: { seccompProfile+: { type: type } } } } }, - }, - '#windowsOptions':: d.obj(help='WindowsSecurityContextOptions contain Windows-specific options and credentials.'), - windowsOptions: { - '#withGmsaCredentialSpec':: d.fn(help='GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.', args=[d.arg(name='gmsaCredentialSpec', type=d.T.string)]), - withGmsaCredentialSpec(gmsaCredentialSpec): { template+: { spec+: { securityContext+: { windowsOptions+: { gmsaCredentialSpec: gmsaCredentialSpec } } } } }, - '#withGmsaCredentialSpecName':: d.fn(help='GMSACredentialSpecName is the name of the GMSA credential spec to use.', args=[d.arg(name='gmsaCredentialSpecName', type=d.T.string)]), - withGmsaCredentialSpecName(gmsaCredentialSpecName): { template+: { spec+: { securityContext+: { windowsOptions+: { gmsaCredentialSpecName: gmsaCredentialSpecName } } } } }, - '#withRunAsUserName':: d.fn(help='The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsUserName', type=d.T.string)]), - withRunAsUserName(runAsUserName): { template+: { spec+: { securityContext+: { windowsOptions+: { runAsUserName: runAsUserName } } } } }, - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } }, - '#withFsGroupChangePolicy':: d.fn(help='fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used.', args=[d.arg(name='fsGroupChangePolicy', type=d.T.string)]), - withFsGroupChangePolicy(fsGroupChangePolicy): { template+: { spec+: { securityContext+: { fsGroupChangePolicy: fsGroupChangePolicy } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } }, - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { template+: { spec+: { dnsPolicy: dnsPolicy } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { template+: { spec+: { enableServiceLinks: enableServiceLinks } } }, - '#withEphemeralContainers':: d.fn(help="List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. This field is alpha-level and is only honored by servers that enable the EphemeralContainers feature.", args=[d.arg(name='ephemeralContainers', type=d.T.array)]), - withEphemeralContainers(ephemeralContainers): { template+: { spec+: { ephemeralContainers: if std.isArray(v=ephemeralContainers) then ephemeralContainers else [ephemeralContainers] } } }, - '#withEphemeralContainersMixin':: d.fn(help="List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. This field is alpha-level and is only honored by servers that enable the EphemeralContainers feature.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='ephemeralContainers', type=d.T.array)]), - withEphemeralContainersMixin(ephemeralContainers): { template+: { spec+: { ephemeralContainers+: if std.isArray(v=ephemeralContainers) then ephemeralContainers else [ephemeralContainers] } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { template+: { spec+: { hostIPC: hostIPC } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { template+: { spec+: { hostNetwork: hostNetwork } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { template+: { spec+: { hostPID: hostPID } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { template+: { spec+: { hostname: hostname } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { template+: { spec+: { nodeName: nodeName } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { template+: { spec+: { nodeSelector: nodeSelector } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { template+: { spec+: { nodeSelector+: nodeSelector } } }, - '#withOverhead':: d.fn(help='Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/20190226-pod-overhead.md This field is alpha-level as of Kubernetes v1.16, and is only honored by servers that enable the PodOverhead feature.', args=[d.arg(name='overhead', type=d.T.object)]), - withOverhead(overhead): { template+: { spec+: { overhead: overhead } } }, - '#withOverheadMixin':: d.fn(help='Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/20190226-pod-overhead.md This field is alpha-level as of Kubernetes v1.16, and is only honored by servers that enable the PodOverhead feature.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='overhead', type=d.T.object)]), - withOverheadMixin(overhead): { template+: { spec+: { overhead+: overhead } } }, - '#withPreemptionPolicy':: d.fn(help='PreemptionPolicy is the Policy for preempting pods with lower priority. One of Never, PreemptLowerPriority. Defaults to PreemptLowerPriority if unset. This field is beta-level, gated by the NonPreemptingPriority feature-gate.', args=[d.arg(name='preemptionPolicy', type=d.T.string)]), - withPreemptionPolicy(preemptionPolicy): { template+: { spec+: { preemptionPolicy: preemptionPolicy } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { template+: { spec+: { priority: priority } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { template+: { spec+: { priorityClassName: priorityClassName } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { template+: { spec+: { restartPolicy: restartPolicy } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is a beta feature as of Kubernetes v1.14.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { template+: { spec+: { runtimeClassName: runtimeClassName } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { template+: { spec+: { schedulerName: schedulerName } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { template+: { spec+: { serviceAccount: serviceAccount } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { template+: { spec+: { serviceAccountName: serviceAccountName } } }, - '#withSetHostnameAsFQDN':: d.fn(help="If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default). In Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname). In Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters to FQDN. If a pod does not have FQDN, this has no effect. Default to false.", args=[d.arg(name='setHostnameAsFQDN', type=d.T.boolean)]), - withSetHostnameAsFQDN(setHostnameAsFQDN): { template+: { spec+: { setHostnameAsFQDN: setHostnameAsFQDN } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { template+: { spec+: { subdomain: subdomain } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } }, - '#withTopologySpreadConstraints':: d.fn(help='TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed.', args=[d.arg(name='topologySpreadConstraints', type=d.T.array)]), - withTopologySpreadConstraints(topologySpreadConstraints): { template+: { spec+: { topologySpreadConstraints: if std.isArray(v=topologySpreadConstraints) then topologySpreadConstraints else [topologySpreadConstraints] } } }, - '#withTopologySpreadConstraintsMixin':: d.fn(help='TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='topologySpreadConstraints', type=d.T.array)]), - withTopologySpreadConstraintsMixin(topologySpreadConstraints): { template+: { spec+: { topologySpreadConstraints+: if std.isArray(v=topologySpreadConstraints) then topologySpreadConstraints else [topologySpreadConstraints] } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } }, - }, - }, - '#withActiveDeadlineSeconds':: d.fn(help='Specifies the duration in seconds relative to the startTime that the job may be continuously active before the system tries to terminate it; value must be positive integer. If a Job is suspended (at creation or through an update), this timer will effectively be stopped and reset when the Job is resumed again.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { activeDeadlineSeconds: activeDeadlineSeconds }, - '#withBackoffLimit':: d.fn(help='Specifies the number of retries before marking this job failed. Defaults to 6', args=[d.arg(name='backoffLimit', type=d.T.integer)]), - withBackoffLimit(backoffLimit): { backoffLimit: backoffLimit }, - '#withCompletionMode':: d.fn(help="CompletionMode specifies how Pod completions are tracked. It can be `NonIndexed` (default) or `Indexed`.\n\n`NonIndexed` means that the Job is considered complete when there have been .spec.completions successfully completed Pods. Each Pod completion is homologous to each other.\n\n`Indexed` means that the Pods of a Job get an associated completion index from 0 to (.spec.completions - 1), available in the annotation batch.kubernetes.io/job-completion-index. The Job is considered complete when there is one successfully completed Pod for each index. When value is `Indexed`, .spec.completions must be specified and `.spec.parallelism` must be less than or equal to 10^5.\n\nThis field is alpha-level and is only honored by servers that enable the IndexedJob feature gate. More completion modes can be added in the future. If the Job controller observes a mode that it doesn't recognize, the controller skips updates for the Job.", args=[d.arg(name='completionMode', type=d.T.string)]), - withCompletionMode(completionMode): { completionMode: completionMode }, - '#withCompletions':: d.fn(help='Specifies the desired number of successfully finished pods the job should be run with. Setting to nil means that the success of any pod signals the success of all pods, and allows parallelism to have any positive value. Setting to 1 means that parallelism is limited to 1 and the success of that pod signals the success of the job. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/', args=[d.arg(name='completions', type=d.T.integer)]), - withCompletions(completions): { completions: completions }, - '#withManualSelector':: d.fn(help='manualSelector controls generation of pod labels and pod selectors. Leave `manualSelector` unset unless you are certain what you are doing. When false or unset, the system pick labels unique to this job and appends those labels to the pod template. When true, the user is responsible for picking unique labels and specifying the selector. Failure to pick a unique label may cause this and other jobs to not function correctly. However, You may see `manualSelector=true` in jobs that were created with the old `extensions/v1beta1` API. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/#specifying-your-own-pod-selector', args=[d.arg(name='manualSelector', type=d.T.boolean)]), - withManualSelector(manualSelector): { manualSelector: manualSelector }, - '#withParallelism':: d.fn(help='Specifies the maximum desired number of pods the job should run at any given time. The actual number of pods running in steady state will be less than this number when ((.spec.completions - .status.successful) < .spec.parallelism), i.e. when the work left to do is less than max parallelism. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/', args=[d.arg(name='parallelism', type=d.T.integer)]), - withParallelism(parallelism): { parallelism: parallelism }, - '#withSuspend':: d.fn(help='Suspend specifies whether the Job controller should create Pods or not. If a Job is created with suspend set to true, no Pods are created by the Job controller. If a Job is suspended after creation (i.e. the flag goes from false to true), the Job controller will delete all active Pods associated with this Job. Users must design their workload to gracefully handle this. Suspending a Job will reset the StartTime field of the Job, effectively resetting the ActiveDeadlineSeconds timer too. This is an alpha field and requires the SuspendJob feature gate to be enabled; otherwise this field may not be set to true. Defaults to false.', args=[d.arg(name='suspend', type=d.T.boolean)]), - withSuspend(suspend): { suspend: suspend }, - '#withTtlSecondsAfterFinished':: d.fn(help="ttlSecondsAfterFinished limits the lifetime of a Job that has finished execution (either Complete or Failed). If this field is set, ttlSecondsAfterFinished after the Job finishes, it is eligible to be automatically deleted. When the Job is being deleted, its lifecycle guarantees (e.g. finalizers) will be honored. If this field is unset, the Job won't be automatically deleted. If this field is set to zero, the Job becomes eligible to be deleted immediately after it finishes. This field is alpha-level and is only honored by servers that enable the TTLAfterFinished feature.", args=[d.arg(name='ttlSecondsAfterFinished', type=d.T.integer)]), - withTtlSecondsAfterFinished(ttlSecondsAfterFinished): { ttlSecondsAfterFinished: ttlSecondsAfterFinished }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1/jobStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1/jobStatus.libsonnet deleted file mode 100644 index ee23d96b0fc0..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1/jobStatus.libsonnet +++ /dev/null @@ -1,22 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='jobStatus', url='', help='JobStatus represents the current state of a Job.'), - '#withActive':: d.fn(help='The number of actively running pods.', args=[d.arg(name='active', type=d.T.integer)]), - withActive(active): { active: active }, - '#withCompletedIndexes':: d.fn(help='CompletedIndexes holds the completed indexes when .spec.completionMode = "Indexed" in a text format. The indexes are represented as decimal integers separated by commas. The numbers are listed in increasing order. Three or more consecutive numbers are compressed and represented by the first and last element of the series, separated by a hyphen. For example, if the completed indexes are 1, 3, 4, 5 and 7, they are represented as "1,3-5,7".', args=[d.arg(name='completedIndexes', type=d.T.string)]), - withCompletedIndexes(completedIndexes): { completedIndexes: completedIndexes }, - '#withCompletionTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='completionTime', type=d.T.string)]), - withCompletionTime(completionTime): { completionTime: completionTime }, - '#withConditions':: d.fn(help="The latest available observations of an object's current state. When a Job fails, one of the conditions will have type 'Failed' and status true. When a Job is suspended, one of the conditions will have type 'Suspended' and status true; when the Job is resumed, the status of this condition will become false. When a Job is completed, one of the conditions will have type 'Complete' and status true. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/", args=[d.arg(name='conditions', type=d.T.array)]), - withConditions(conditions): { conditions: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withConditionsMixin':: d.fn(help="The latest available observations of an object's current state. When a Job fails, one of the conditions will have type 'Failed' and status true. When a Job is suspended, one of the conditions will have type 'Suspended' and status true; when the Job is resumed, the status of this condition will become false. When a Job is completed, one of the conditions will have type 'Complete' and status true. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='conditions', type=d.T.array)]), - withConditionsMixin(conditions): { conditions+: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withFailed':: d.fn(help='The number of pods which reached phase Failed.', args=[d.arg(name='failed', type=d.T.integer)]), - withFailed(failed): { failed: failed }, - '#withStartTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='startTime', type=d.T.string)]), - withStartTime(startTime): { startTime: startTime }, - '#withSucceeded':: d.fn(help='The number of pods which reached phase Succeeded.', args=[d.arg(name='succeeded', type=d.T.integer)]), - withSucceeded(succeeded): { succeeded: succeeded }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1/jobTemplateSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1/jobTemplateSpec.libsonnet deleted file mode 100644 index 9e276e109d1c..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1/jobTemplateSpec.libsonnet +++ /dev/null @@ -1,320 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='jobTemplateSpec', url='', help='JobTemplateSpec describes the data a Job should have when created from a template'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#spec':: d.obj(help='JobSpec describes how the job execution will look like.'), - spec: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { spec+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { spec+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { spec+: { selector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { spec+: { selector+: { matchLabels+: matchLabels } } }, - }, - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { spec+: { template+: { metadata+: { annotations: annotations } } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { spec+: { template+: { metadata+: { annotations+: annotations } } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { spec+: { template+: { metadata+: { clusterName: clusterName } } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { spec+: { template+: { metadata+: { creationTimestamp: creationTimestamp } } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { spec+: { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { spec+: { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { spec+: { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { spec+: { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { spec+: { template+: { metadata+: { generateName: generateName } } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { spec+: { template+: { metadata+: { generation: generation } } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { spec+: { template+: { metadata+: { labels: labels } } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { spec+: { template+: { metadata+: { labels+: labels } } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { spec+: { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { spec+: { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { template+: { metadata+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { template+: { metadata+: { namespace: namespace } } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { spec+: { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { spec+: { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { spec+: { template+: { metadata+: { resourceVersion: resourceVersion } } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { spec+: { template+: { metadata+: { selfLink: selfLink } } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { template+: { metadata+: { uid: uid } } } }, - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } }, - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - }, - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { spec+: { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { spec+: { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { spec+: { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { spec+: { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { spec+: { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { spec+: { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } } }, - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } } }, - }, - '#seccompProfile':: d.obj(help="SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set."), - seccompProfile: { - '#withLocalhostProfile':: d.fn(help="localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is 'Localhost'.", args=[d.arg(name='localhostProfile', type=d.T.string)]), - withLocalhostProfile(localhostProfile): { spec+: { template+: { spec+: { securityContext+: { seccompProfile+: { localhostProfile: localhostProfile } } } } } }, - '#withType':: d.fn(help='type indicates which kind of seccomp profile will be applied. Valid options are:\n\nLocalhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { template+: { spec+: { securityContext+: { seccompProfile+: { type: type } } } } } }, - }, - '#windowsOptions':: d.obj(help='WindowsSecurityContextOptions contain Windows-specific options and credentials.'), - windowsOptions: { - '#withGmsaCredentialSpec':: d.fn(help='GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.', args=[d.arg(name='gmsaCredentialSpec', type=d.T.string)]), - withGmsaCredentialSpec(gmsaCredentialSpec): { spec+: { template+: { spec+: { securityContext+: { windowsOptions+: { gmsaCredentialSpec: gmsaCredentialSpec } } } } } }, - '#withGmsaCredentialSpecName':: d.fn(help='GMSACredentialSpecName is the name of the GMSA credential spec to use.', args=[d.arg(name='gmsaCredentialSpecName', type=d.T.string)]), - withGmsaCredentialSpecName(gmsaCredentialSpecName): { spec+: { template+: { spec+: { securityContext+: { windowsOptions+: { gmsaCredentialSpecName: gmsaCredentialSpecName } } } } } }, - '#withRunAsUserName':: d.fn(help='The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsUserName', type=d.T.string)]), - withRunAsUserName(runAsUserName): { spec+: { template+: { spec+: { securityContext+: { windowsOptions+: { runAsUserName: runAsUserName } } } } } }, - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { spec+: { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } } }, - '#withFsGroupChangePolicy':: d.fn(help='fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used.', args=[d.arg(name='fsGroupChangePolicy', type=d.T.string)]), - withFsGroupChangePolicy(fsGroupChangePolicy): { spec+: { template+: { spec+: { securityContext+: { fsGroupChangePolicy: fsGroupChangePolicy } } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { spec+: { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { spec+: { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { spec+: { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { spec+: { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { spec+: { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { spec+: { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { spec+: { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } }, - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { spec+: { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { spec+: { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { spec+: { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { spec+: { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { spec+: { template+: { spec+: { dnsPolicy: dnsPolicy } } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { spec+: { template+: { spec+: { enableServiceLinks: enableServiceLinks } } } }, - '#withEphemeralContainers':: d.fn(help="List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. This field is alpha-level and is only honored by servers that enable the EphemeralContainers feature.", args=[d.arg(name='ephemeralContainers', type=d.T.array)]), - withEphemeralContainers(ephemeralContainers): { spec+: { template+: { spec+: { ephemeralContainers: if std.isArray(v=ephemeralContainers) then ephemeralContainers else [ephemeralContainers] } } } }, - '#withEphemeralContainersMixin':: d.fn(help="List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. This field is alpha-level and is only honored by servers that enable the EphemeralContainers feature.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='ephemeralContainers', type=d.T.array)]), - withEphemeralContainersMixin(ephemeralContainers): { spec+: { template+: { spec+: { ephemeralContainers+: if std.isArray(v=ephemeralContainers) then ephemeralContainers else [ephemeralContainers] } } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { spec+: { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { spec+: { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { spec+: { template+: { spec+: { hostIPC: hostIPC } } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { spec+: { template+: { spec+: { hostNetwork: hostNetwork } } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { spec+: { template+: { spec+: { hostPID: hostPID } } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { spec+: { template+: { spec+: { hostname: hostname } } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { spec+: { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { spec+: { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { spec+: { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { spec+: { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { spec+: { template+: { spec+: { nodeName: nodeName } } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { spec+: { template+: { spec+: { nodeSelector: nodeSelector } } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { spec+: { template+: { spec+: { nodeSelector+: nodeSelector } } } }, - '#withOverhead':: d.fn(help='Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/20190226-pod-overhead.md This field is alpha-level as of Kubernetes v1.16, and is only honored by servers that enable the PodOverhead feature.', args=[d.arg(name='overhead', type=d.T.object)]), - withOverhead(overhead): { spec+: { template+: { spec+: { overhead: overhead } } } }, - '#withOverheadMixin':: d.fn(help='Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/20190226-pod-overhead.md This field is alpha-level as of Kubernetes v1.16, and is only honored by servers that enable the PodOverhead feature.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='overhead', type=d.T.object)]), - withOverheadMixin(overhead): { spec+: { template+: { spec+: { overhead+: overhead } } } }, - '#withPreemptionPolicy':: d.fn(help='PreemptionPolicy is the Policy for preempting pods with lower priority. One of Never, PreemptLowerPriority. Defaults to PreemptLowerPriority if unset. This field is beta-level, gated by the NonPreemptingPriority feature-gate.', args=[d.arg(name='preemptionPolicy', type=d.T.string)]), - withPreemptionPolicy(preemptionPolicy): { spec+: { template+: { spec+: { preemptionPolicy: preemptionPolicy } } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { spec+: { template+: { spec+: { priority: priority } } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { spec+: { template+: { spec+: { priorityClassName: priorityClassName } } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { spec+: { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { spec+: { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { spec+: { template+: { spec+: { restartPolicy: restartPolicy } } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is a beta feature as of Kubernetes v1.14.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { spec+: { template+: { spec+: { runtimeClassName: runtimeClassName } } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { spec+: { template+: { spec+: { schedulerName: schedulerName } } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { spec+: { template+: { spec+: { serviceAccount: serviceAccount } } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { spec+: { template+: { spec+: { serviceAccountName: serviceAccountName } } } }, - '#withSetHostnameAsFQDN':: d.fn(help="If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default). In Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname). In Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters to FQDN. If a pod does not have FQDN, this has no effect. Default to false.", args=[d.arg(name='setHostnameAsFQDN', type=d.T.boolean)]), - withSetHostnameAsFQDN(setHostnameAsFQDN): { spec+: { template+: { spec+: { setHostnameAsFQDN: setHostnameAsFQDN } } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { spec+: { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { spec+: { template+: { spec+: { subdomain: subdomain } } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { spec+: { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { spec+: { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { spec+: { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } }, - '#withTopologySpreadConstraints':: d.fn(help='TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed.', args=[d.arg(name='topologySpreadConstraints', type=d.T.array)]), - withTopologySpreadConstraints(topologySpreadConstraints): { spec+: { template+: { spec+: { topologySpreadConstraints: if std.isArray(v=topologySpreadConstraints) then topologySpreadConstraints else [topologySpreadConstraints] } } } }, - '#withTopologySpreadConstraintsMixin':: d.fn(help='TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='topologySpreadConstraints', type=d.T.array)]), - withTopologySpreadConstraintsMixin(topologySpreadConstraints): { spec+: { template+: { spec+: { topologySpreadConstraints+: if std.isArray(v=topologySpreadConstraints) then topologySpreadConstraints else [topologySpreadConstraints] } } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { spec+: { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { spec+: { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } } }, - }, - }, - '#withActiveDeadlineSeconds':: d.fn(help='Specifies the duration in seconds relative to the startTime that the job may be continuously active before the system tries to terminate it; value must be positive integer. If a Job is suspended (at creation or through an update), this timer will effectively be stopped and reset when the Job is resumed again.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } }, - '#withBackoffLimit':: d.fn(help='Specifies the number of retries before marking this job failed. Defaults to 6', args=[d.arg(name='backoffLimit', type=d.T.integer)]), - withBackoffLimit(backoffLimit): { spec+: { backoffLimit: backoffLimit } }, - '#withCompletionMode':: d.fn(help="CompletionMode specifies how Pod completions are tracked. It can be `NonIndexed` (default) or `Indexed`.\n\n`NonIndexed` means that the Job is considered complete when there have been .spec.completions successfully completed Pods. Each Pod completion is homologous to each other.\n\n`Indexed` means that the Pods of a Job get an associated completion index from 0 to (.spec.completions - 1), available in the annotation batch.kubernetes.io/job-completion-index. The Job is considered complete when there is one successfully completed Pod for each index. When value is `Indexed`, .spec.completions must be specified and `.spec.parallelism` must be less than or equal to 10^5.\n\nThis field is alpha-level and is only honored by servers that enable the IndexedJob feature gate. More completion modes can be added in the future. If the Job controller observes a mode that it doesn't recognize, the controller skips updates for the Job.", args=[d.arg(name='completionMode', type=d.T.string)]), - withCompletionMode(completionMode): { spec+: { completionMode: completionMode } }, - '#withCompletions':: d.fn(help='Specifies the desired number of successfully finished pods the job should be run with. Setting to nil means that the success of any pod signals the success of all pods, and allows parallelism to have any positive value. Setting to 1 means that parallelism is limited to 1 and the success of that pod signals the success of the job. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/', args=[d.arg(name='completions', type=d.T.integer)]), - withCompletions(completions): { spec+: { completions: completions } }, - '#withManualSelector':: d.fn(help='manualSelector controls generation of pod labels and pod selectors. Leave `manualSelector` unset unless you are certain what you are doing. When false or unset, the system pick labels unique to this job and appends those labels to the pod template. When true, the user is responsible for picking unique labels and specifying the selector. Failure to pick a unique label may cause this and other jobs to not function correctly. However, You may see `manualSelector=true` in jobs that were created with the old `extensions/v1beta1` API. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/#specifying-your-own-pod-selector', args=[d.arg(name='manualSelector', type=d.T.boolean)]), - withManualSelector(manualSelector): { spec+: { manualSelector: manualSelector } }, - '#withParallelism':: d.fn(help='Specifies the maximum desired number of pods the job should run at any given time. The actual number of pods running in steady state will be less than this number when ((.spec.completions - .status.successful) < .spec.parallelism), i.e. when the work left to do is less than max parallelism. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/', args=[d.arg(name='parallelism', type=d.T.integer)]), - withParallelism(parallelism): { spec+: { parallelism: parallelism } }, - '#withSuspend':: d.fn(help='Suspend specifies whether the Job controller should create Pods or not. If a Job is created with suspend set to true, no Pods are created by the Job controller. If a Job is suspended after creation (i.e. the flag goes from false to true), the Job controller will delete all active Pods associated with this Job. Users must design their workload to gracefully handle this. Suspending a Job will reset the StartTime field of the Job, effectively resetting the ActiveDeadlineSeconds timer too. This is an alpha field and requires the SuspendJob feature gate to be enabled; otherwise this field may not be set to true. Defaults to false.', args=[d.arg(name='suspend', type=d.T.boolean)]), - withSuspend(suspend): { spec+: { suspend: suspend } }, - '#withTtlSecondsAfterFinished':: d.fn(help="ttlSecondsAfterFinished limits the lifetime of a Job that has finished execution (either Complete or Failed). If this field is set, ttlSecondsAfterFinished after the Job finishes, it is eligible to be automatically deleted. When the Job is being deleted, its lifecycle guarantees (e.g. finalizers) will be honored. If this field is unset, the Job won't be automatically deleted. If this field is set to zero, the Job becomes eligible to be deleted immediately after it finishes. This field is alpha-level and is only honored by servers that enable the TTLAfterFinished feature.", args=[d.arg(name='ttlSecondsAfterFinished', type=d.T.integer)]), - withTtlSecondsAfterFinished(ttlSecondsAfterFinished): { spec+: { ttlSecondsAfterFinished: ttlSecondsAfterFinished } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1/main.libsonnet deleted file mode 100644 index 1d5e7ebdf2e1..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1/main.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1', url='', help=''), - cronJob: (import 'cronJob.libsonnet'), - cronJobSpec: (import 'cronJobSpec.libsonnet'), - cronJobStatus: (import 'cronJobStatus.libsonnet'), - job: (import 'job.libsonnet'), - jobCondition: (import 'jobCondition.libsonnet'), - jobSpec: (import 'jobSpec.libsonnet'), - jobStatus: (import 'jobStatus.libsonnet'), - jobTemplateSpec: (import 'jobTemplateSpec.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1beta1/cronJob.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1beta1/cronJob.libsonnet deleted file mode 100644 index a60f0cfcfe31..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1beta1/cronJob.libsonnet +++ /dev/null @@ -1,388 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='cronJob', url='', help='CronJob represents the configuration of a single cron job.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Cronjob', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'batch/v1beta1', - kind: 'CronJob', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='CronJobSpec describes how the job execution will look like and when it will actually run.'), - spec: { - '#jobTemplate':: d.obj(help='JobTemplateSpec describes the data a Job should have when created from a template'), - jobTemplate: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { spec+: { jobTemplate+: { metadata+: { annotations: annotations } } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { spec+: { jobTemplate+: { metadata+: { annotations+: annotations } } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { spec+: { jobTemplate+: { metadata+: { clusterName: clusterName } } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { spec+: { jobTemplate+: { metadata+: { creationTimestamp: creationTimestamp } } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { spec+: { jobTemplate+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { spec+: { jobTemplate+: { metadata+: { deletionTimestamp: deletionTimestamp } } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { spec+: { jobTemplate+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { spec+: { jobTemplate+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { spec+: { jobTemplate+: { metadata+: { generateName: generateName } } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { spec+: { jobTemplate+: { metadata+: { generation: generation } } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { spec+: { jobTemplate+: { metadata+: { labels: labels } } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { spec+: { jobTemplate+: { metadata+: { labels+: labels } } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { spec+: { jobTemplate+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { spec+: { jobTemplate+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { jobTemplate+: { metadata+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { jobTemplate+: { metadata+: { namespace: namespace } } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { spec+: { jobTemplate+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { spec+: { jobTemplate+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { spec+: { jobTemplate+: { metadata+: { resourceVersion: resourceVersion } } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { spec+: { jobTemplate+: { metadata+: { selfLink: selfLink } } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { jobTemplate+: { metadata+: { uid: uid } } } }, - }, - '#spec':: d.obj(help='JobSpec describes how the job execution will look like.'), - spec: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { spec+: { jobTemplate+: { spec+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { spec+: { jobTemplate+: { spec+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { spec+: { jobTemplate+: { spec+: { selector+: { matchLabels: matchLabels } } } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { spec+: { jobTemplate+: { spec+: { selector+: { matchLabels+: matchLabels } } } } }, - }, - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { annotations: annotations } } } } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { annotations+: annotations } } } } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { clusterName: clusterName } } } } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { creationTimestamp: creationTimestamp } } } } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } } } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } } } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { generateName: generateName } } } } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { generation: generation } } } } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { labels: labels } } } } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { labels+: labels } } } } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { name: name } } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { namespace: namespace } } } } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { resourceVersion: resourceVersion } } } } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { selfLink: selfLink } } } } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { jobTemplate+: { spec+: { template+: { metadata+: { uid: uid } } } } } }, - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } } } }, - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } } }, - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } } }, - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } } }, - }, - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } } } } }, - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } } } } }, - }, - '#seccompProfile':: d.obj(help="SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set."), - seccompProfile: { - '#withLocalhostProfile':: d.fn(help="localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is 'Localhost'.", args=[d.arg(name='localhostProfile', type=d.T.string)]), - withLocalhostProfile(localhostProfile): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { seccompProfile+: { localhostProfile: localhostProfile } } } } } } } }, - '#withType':: d.fn(help='type indicates which kind of seccomp profile will be applied. Valid options are:\n\nLocalhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { seccompProfile+: { type: type } } } } } } } }, - }, - '#windowsOptions':: d.obj(help='WindowsSecurityContextOptions contain Windows-specific options and credentials.'), - windowsOptions: { - '#withGmsaCredentialSpec':: d.fn(help='GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.', args=[d.arg(name='gmsaCredentialSpec', type=d.T.string)]), - withGmsaCredentialSpec(gmsaCredentialSpec): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { windowsOptions+: { gmsaCredentialSpec: gmsaCredentialSpec } } } } } } } }, - '#withGmsaCredentialSpecName':: d.fn(help='GMSACredentialSpecName is the name of the GMSA credential spec to use.', args=[d.arg(name='gmsaCredentialSpecName', type=d.T.string)]), - withGmsaCredentialSpecName(gmsaCredentialSpecName): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { windowsOptions+: { gmsaCredentialSpecName: gmsaCredentialSpecName } } } } } } } }, - '#withRunAsUserName':: d.fn(help='The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsUserName', type=d.T.string)]), - withRunAsUserName(runAsUserName): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { windowsOptions+: { runAsUserName: runAsUserName } } } } } } } }, - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } } } } }, - '#withFsGroupChangePolicy':: d.fn(help='fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used.', args=[d.arg(name='fsGroupChangePolicy', type=d.T.string)]), - withFsGroupChangePolicy(fsGroupChangePolicy): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { fsGroupChangePolicy: fsGroupChangePolicy } } } } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } } } }, - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } } } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } } } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } } } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } } } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { dnsPolicy: dnsPolicy } } } } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { enableServiceLinks: enableServiceLinks } } } } } }, - '#withEphemeralContainers':: d.fn(help="List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. This field is alpha-level and is only honored by servers that enable the EphemeralContainers feature.", args=[d.arg(name='ephemeralContainers', type=d.T.array)]), - withEphemeralContainers(ephemeralContainers): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { ephemeralContainers: if std.isArray(v=ephemeralContainers) then ephemeralContainers else [ephemeralContainers] } } } } } }, - '#withEphemeralContainersMixin':: d.fn(help="List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. This field is alpha-level and is only honored by servers that enable the EphemeralContainers feature.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='ephemeralContainers', type=d.T.array)]), - withEphemeralContainersMixin(ephemeralContainers): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { ephemeralContainers+: if std.isArray(v=ephemeralContainers) then ephemeralContainers else [ephemeralContainers] } } } } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { hostIPC: hostIPC } } } } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { hostNetwork: hostNetwork } } } } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { hostPID: hostPID } } } } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { hostname: hostname } } } } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { nodeName: nodeName } } } } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { nodeSelector: nodeSelector } } } } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { nodeSelector+: nodeSelector } } } } } }, - '#withOverhead':: d.fn(help='Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/20190226-pod-overhead.md This field is alpha-level as of Kubernetes v1.16, and is only honored by servers that enable the PodOverhead feature.', args=[d.arg(name='overhead', type=d.T.object)]), - withOverhead(overhead): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { overhead: overhead } } } } } }, - '#withOverheadMixin':: d.fn(help='Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/20190226-pod-overhead.md This field is alpha-level as of Kubernetes v1.16, and is only honored by servers that enable the PodOverhead feature.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='overhead', type=d.T.object)]), - withOverheadMixin(overhead): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { overhead+: overhead } } } } } }, - '#withPreemptionPolicy':: d.fn(help='PreemptionPolicy is the Policy for preempting pods with lower priority. One of Never, PreemptLowerPriority. Defaults to PreemptLowerPriority if unset. This field is beta-level, gated by the NonPreemptingPriority feature-gate.', args=[d.arg(name='preemptionPolicy', type=d.T.string)]), - withPreemptionPolicy(preemptionPolicy): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { preemptionPolicy: preemptionPolicy } } } } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { priority: priority } } } } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { priorityClassName: priorityClassName } } } } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { restartPolicy: restartPolicy } } } } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is a beta feature as of Kubernetes v1.14.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { runtimeClassName: runtimeClassName } } } } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { schedulerName: schedulerName } } } } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { serviceAccount: serviceAccount } } } } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { serviceAccountName: serviceAccountName } } } } } }, - '#withSetHostnameAsFQDN':: d.fn(help="If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default). In Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname). In Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters to FQDN. If a pod does not have FQDN, this has no effect. Default to false.", args=[d.arg(name='setHostnameAsFQDN', type=d.T.boolean)]), - withSetHostnameAsFQDN(setHostnameAsFQDN): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { setHostnameAsFQDN: setHostnameAsFQDN } } } } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } } } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { subdomain: subdomain } } } } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } } } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } } } }, - '#withTopologySpreadConstraints':: d.fn(help='TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed.', args=[d.arg(name='topologySpreadConstraints', type=d.T.array)]), - withTopologySpreadConstraints(topologySpreadConstraints): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { topologySpreadConstraints: if std.isArray(v=topologySpreadConstraints) then topologySpreadConstraints else [topologySpreadConstraints] } } } } } }, - '#withTopologySpreadConstraintsMixin':: d.fn(help='TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='topologySpreadConstraints', type=d.T.array)]), - withTopologySpreadConstraintsMixin(topologySpreadConstraints): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { topologySpreadConstraints+: if std.isArray(v=topologySpreadConstraints) then topologySpreadConstraints else [topologySpreadConstraints] } } } } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } } } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { spec+: { jobTemplate+: { spec+: { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } } } } }, - }, - }, - '#withActiveDeadlineSeconds':: d.fn(help='Specifies the duration in seconds relative to the startTime that the job may be continuously active before the system tries to terminate it; value must be positive integer. If a Job is suspended (at creation or through an update), this timer will effectively be stopped and reset when the Job is resumed again.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { spec+: { jobTemplate+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } } }, - '#withBackoffLimit':: d.fn(help='Specifies the number of retries before marking this job failed. Defaults to 6', args=[d.arg(name='backoffLimit', type=d.T.integer)]), - withBackoffLimit(backoffLimit): { spec+: { jobTemplate+: { spec+: { backoffLimit: backoffLimit } } } }, - '#withCompletionMode':: d.fn(help="CompletionMode specifies how Pod completions are tracked. It can be `NonIndexed` (default) or `Indexed`.\n\n`NonIndexed` means that the Job is considered complete when there have been .spec.completions successfully completed Pods. Each Pod completion is homologous to each other.\n\n`Indexed` means that the Pods of a Job get an associated completion index from 0 to (.spec.completions - 1), available in the annotation batch.kubernetes.io/job-completion-index. The Job is considered complete when there is one successfully completed Pod for each index. When value is `Indexed`, .spec.completions must be specified and `.spec.parallelism` must be less than or equal to 10^5.\n\nThis field is alpha-level and is only honored by servers that enable the IndexedJob feature gate. More completion modes can be added in the future. If the Job controller observes a mode that it doesn't recognize, the controller skips updates for the Job.", args=[d.arg(name='completionMode', type=d.T.string)]), - withCompletionMode(completionMode): { spec+: { jobTemplate+: { spec+: { completionMode: completionMode } } } }, - '#withCompletions':: d.fn(help='Specifies the desired number of successfully finished pods the job should be run with. Setting to nil means that the success of any pod signals the success of all pods, and allows parallelism to have any positive value. Setting to 1 means that parallelism is limited to 1 and the success of that pod signals the success of the job. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/', args=[d.arg(name='completions', type=d.T.integer)]), - withCompletions(completions): { spec+: { jobTemplate+: { spec+: { completions: completions } } } }, - '#withManualSelector':: d.fn(help='manualSelector controls generation of pod labels and pod selectors. Leave `manualSelector` unset unless you are certain what you are doing. When false or unset, the system pick labels unique to this job and appends those labels to the pod template. When true, the user is responsible for picking unique labels and specifying the selector. Failure to pick a unique label may cause this and other jobs to not function correctly. However, You may see `manualSelector=true` in jobs that were created with the old `extensions/v1beta1` API. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/#specifying-your-own-pod-selector', args=[d.arg(name='manualSelector', type=d.T.boolean)]), - withManualSelector(manualSelector): { spec+: { jobTemplate+: { spec+: { manualSelector: manualSelector } } } }, - '#withParallelism':: d.fn(help='Specifies the maximum desired number of pods the job should run at any given time. The actual number of pods running in steady state will be less than this number when ((.spec.completions - .status.successful) < .spec.parallelism), i.e. when the work left to do is less than max parallelism. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/', args=[d.arg(name='parallelism', type=d.T.integer)]), - withParallelism(parallelism): { spec+: { jobTemplate+: { spec+: { parallelism: parallelism } } } }, - '#withSuspend':: d.fn(help='Suspend specifies whether the Job controller should create Pods or not. If a Job is created with suspend set to true, no Pods are created by the Job controller. If a Job is suspended after creation (i.e. the flag goes from false to true), the Job controller will delete all active Pods associated with this Job. Users must design their workload to gracefully handle this. Suspending a Job will reset the StartTime field of the Job, effectively resetting the ActiveDeadlineSeconds timer too. This is an alpha field and requires the SuspendJob feature gate to be enabled; otherwise this field may not be set to true. Defaults to false.', args=[d.arg(name='suspend', type=d.T.boolean)]), - withSuspend(suspend): { spec+: { jobTemplate+: { spec+: { suspend: suspend } } } }, - '#withTtlSecondsAfterFinished':: d.fn(help="ttlSecondsAfterFinished limits the lifetime of a Job that has finished execution (either Complete or Failed). If this field is set, ttlSecondsAfterFinished after the Job finishes, it is eligible to be automatically deleted. When the Job is being deleted, its lifecycle guarantees (e.g. finalizers) will be honored. If this field is unset, the Job won't be automatically deleted. If this field is set to zero, the Job becomes eligible to be deleted immediately after it finishes. This field is alpha-level and is only honored by servers that enable the TTLAfterFinished feature.", args=[d.arg(name='ttlSecondsAfterFinished', type=d.T.integer)]), - withTtlSecondsAfterFinished(ttlSecondsAfterFinished): { spec+: { jobTemplate+: { spec+: { ttlSecondsAfterFinished: ttlSecondsAfterFinished } } } }, - }, - }, - '#withConcurrencyPolicy':: d.fn(help="Specifies how to treat concurrent executions of a Job. Valid values are: - 'Allow' (default): allows CronJobs to run concurrently; - 'Forbid': forbids concurrent runs, skipping next run if previous run hasn't finished yet; - 'Replace': cancels currently running job and replaces it with a new one", args=[d.arg(name='concurrencyPolicy', type=d.T.string)]), - withConcurrencyPolicy(concurrencyPolicy): { spec+: { concurrencyPolicy: concurrencyPolicy } }, - '#withFailedJobsHistoryLimit':: d.fn(help='The number of failed finished jobs to retain. This is a pointer to distinguish between explicit zero and not specified. Defaults to 1.', args=[d.arg(name='failedJobsHistoryLimit', type=d.T.integer)]), - withFailedJobsHistoryLimit(failedJobsHistoryLimit): { spec+: { failedJobsHistoryLimit: failedJobsHistoryLimit } }, - '#withSchedule':: d.fn(help='The schedule in Cron format, see https://en.wikipedia.org/wiki/Cron.', args=[d.arg(name='schedule', type=d.T.string)]), - withSchedule(schedule): { spec+: { schedule: schedule } }, - '#withStartingDeadlineSeconds':: d.fn(help='Optional deadline in seconds for starting the job if it misses scheduled time for any reason. Missed jobs executions will be counted as failed ones.', args=[d.arg(name='startingDeadlineSeconds', type=d.T.integer)]), - withStartingDeadlineSeconds(startingDeadlineSeconds): { spec+: { startingDeadlineSeconds: startingDeadlineSeconds } }, - '#withSuccessfulJobsHistoryLimit':: d.fn(help='The number of successful finished jobs to retain. This is a pointer to distinguish between explicit zero and not specified. Defaults to 3.', args=[d.arg(name='successfulJobsHistoryLimit', type=d.T.integer)]), - withSuccessfulJobsHistoryLimit(successfulJobsHistoryLimit): { spec+: { successfulJobsHistoryLimit: successfulJobsHistoryLimit } }, - '#withSuspend':: d.fn(help='This flag tells the controller to suspend subsequent executions, it does not apply to already started executions. Defaults to false.', args=[d.arg(name='suspend', type=d.T.boolean)]), - withSuspend(suspend): { spec+: { suspend: suspend } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1beta1/cronJobSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1beta1/cronJobSpec.libsonnet deleted file mode 100644 index 93a9699e22ff..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1beta1/cronJobSpec.libsonnet +++ /dev/null @@ -1,335 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='cronJobSpec', url='', help='CronJobSpec describes how the job execution will look like and when it will actually run.'), - '#jobTemplate':: d.obj(help='JobTemplateSpec describes the data a Job should have when created from a template'), - jobTemplate: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { jobTemplate+: { metadata+: { annotations: annotations } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { jobTemplate+: { metadata+: { annotations+: annotations } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { jobTemplate+: { metadata+: { clusterName: clusterName } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { jobTemplate+: { metadata+: { creationTimestamp: creationTimestamp } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { jobTemplate+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { jobTemplate+: { metadata+: { deletionTimestamp: deletionTimestamp } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { jobTemplate+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { jobTemplate+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { jobTemplate+: { metadata+: { generateName: generateName } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { jobTemplate+: { metadata+: { generation: generation } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { jobTemplate+: { metadata+: { labels: labels } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { jobTemplate+: { metadata+: { labels+: labels } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { jobTemplate+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { jobTemplate+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { jobTemplate+: { metadata+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { jobTemplate+: { metadata+: { namespace: namespace } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { jobTemplate+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { jobTemplate+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { jobTemplate+: { metadata+: { resourceVersion: resourceVersion } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { jobTemplate+: { metadata+: { selfLink: selfLink } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { jobTemplate+: { metadata+: { uid: uid } } }, - }, - '#spec':: d.obj(help='JobSpec describes how the job execution will look like.'), - spec: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { jobTemplate+: { spec+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { jobTemplate+: { spec+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { jobTemplate+: { spec+: { selector+: { matchLabels: matchLabels } } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { jobTemplate+: { spec+: { selector+: { matchLabels+: matchLabels } } } }, - }, - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { jobTemplate+: { spec+: { template+: { metadata+: { annotations: annotations } } } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { jobTemplate+: { spec+: { template+: { metadata+: { annotations+: annotations } } } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { jobTemplate+: { spec+: { template+: { metadata+: { clusterName: clusterName } } } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { jobTemplate+: { spec+: { template+: { metadata+: { creationTimestamp: creationTimestamp } } } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { jobTemplate+: { spec+: { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { jobTemplate+: { spec+: { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { jobTemplate+: { spec+: { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { jobTemplate+: { spec+: { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { jobTemplate+: { spec+: { template+: { metadata+: { generateName: generateName } } } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { jobTemplate+: { spec+: { template+: { metadata+: { generation: generation } } } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { jobTemplate+: { spec+: { template+: { metadata+: { labels: labels } } } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { jobTemplate+: { spec+: { template+: { metadata+: { labels+: labels } } } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { jobTemplate+: { spec+: { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { jobTemplate+: { spec+: { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { jobTemplate+: { spec+: { template+: { metadata+: { name: name } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { jobTemplate+: { spec+: { template+: { metadata+: { namespace: namespace } } } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { jobTemplate+: { spec+: { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { jobTemplate+: { spec+: { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { jobTemplate+: { spec+: { template+: { metadata+: { resourceVersion: resourceVersion } } } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { jobTemplate+: { spec+: { template+: { metadata+: { selfLink: selfLink } } } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { jobTemplate+: { spec+: { template+: { metadata+: { uid: uid } } } } }, - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } } }, - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } }, - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } }, - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { jobTemplate+: { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } } }, - }, - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { jobTemplate+: { spec+: { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { jobTemplate+: { spec+: { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { jobTemplate+: { spec+: { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { jobTemplate+: { spec+: { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { jobTemplate+: { spec+: { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { jobTemplate+: { spec+: { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } } } }, - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } } } }, - }, - '#seccompProfile':: d.obj(help="SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set."), - seccompProfile: { - '#withLocalhostProfile':: d.fn(help="localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is 'Localhost'.", args=[d.arg(name='localhostProfile', type=d.T.string)]), - withLocalhostProfile(localhostProfile): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { seccompProfile+: { localhostProfile: localhostProfile } } } } } } }, - '#withType':: d.fn(help='type indicates which kind of seccomp profile will be applied. Valid options are:\n\nLocalhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { seccompProfile+: { type: type } } } } } } }, - }, - '#windowsOptions':: d.obj(help='WindowsSecurityContextOptions contain Windows-specific options and credentials.'), - windowsOptions: { - '#withGmsaCredentialSpec':: d.fn(help='GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.', args=[d.arg(name='gmsaCredentialSpec', type=d.T.string)]), - withGmsaCredentialSpec(gmsaCredentialSpec): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { windowsOptions+: { gmsaCredentialSpec: gmsaCredentialSpec } } } } } } }, - '#withGmsaCredentialSpecName':: d.fn(help='GMSACredentialSpecName is the name of the GMSA credential spec to use.', args=[d.arg(name='gmsaCredentialSpecName', type=d.T.string)]), - withGmsaCredentialSpecName(gmsaCredentialSpecName): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { windowsOptions+: { gmsaCredentialSpecName: gmsaCredentialSpecName } } } } } } }, - '#withRunAsUserName':: d.fn(help='The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsUserName', type=d.T.string)]), - withRunAsUserName(runAsUserName): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { windowsOptions+: { runAsUserName: runAsUserName } } } } } } }, - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } } } }, - '#withFsGroupChangePolicy':: d.fn(help='fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used.', args=[d.arg(name='fsGroupChangePolicy', type=d.T.string)]), - withFsGroupChangePolicy(fsGroupChangePolicy): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { fsGroupChangePolicy: fsGroupChangePolicy } } } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { jobTemplate+: { spec+: { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } } }, - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { jobTemplate+: { spec+: { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { jobTemplate+: { spec+: { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { jobTemplate+: { spec+: { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { jobTemplate+: { spec+: { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { jobTemplate+: { spec+: { template+: { spec+: { dnsPolicy: dnsPolicy } } } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { jobTemplate+: { spec+: { template+: { spec+: { enableServiceLinks: enableServiceLinks } } } } }, - '#withEphemeralContainers':: d.fn(help="List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. This field is alpha-level and is only honored by servers that enable the EphemeralContainers feature.", args=[d.arg(name='ephemeralContainers', type=d.T.array)]), - withEphemeralContainers(ephemeralContainers): { jobTemplate+: { spec+: { template+: { spec+: { ephemeralContainers: if std.isArray(v=ephemeralContainers) then ephemeralContainers else [ephemeralContainers] } } } } }, - '#withEphemeralContainersMixin':: d.fn(help="List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. This field is alpha-level and is only honored by servers that enable the EphemeralContainers feature.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='ephemeralContainers', type=d.T.array)]), - withEphemeralContainersMixin(ephemeralContainers): { jobTemplate+: { spec+: { template+: { spec+: { ephemeralContainers+: if std.isArray(v=ephemeralContainers) then ephemeralContainers else [ephemeralContainers] } } } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { jobTemplate+: { spec+: { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { jobTemplate+: { spec+: { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { jobTemplate+: { spec+: { template+: { spec+: { hostIPC: hostIPC } } } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { jobTemplate+: { spec+: { template+: { spec+: { hostNetwork: hostNetwork } } } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { jobTemplate+: { spec+: { template+: { spec+: { hostPID: hostPID } } } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { jobTemplate+: { spec+: { template+: { spec+: { hostname: hostname } } } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { jobTemplate+: { spec+: { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { jobTemplate+: { spec+: { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { jobTemplate+: { spec+: { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { jobTemplate+: { spec+: { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { jobTemplate+: { spec+: { template+: { spec+: { nodeName: nodeName } } } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { jobTemplate+: { spec+: { template+: { spec+: { nodeSelector: nodeSelector } } } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { jobTemplate+: { spec+: { template+: { spec+: { nodeSelector+: nodeSelector } } } } }, - '#withOverhead':: d.fn(help='Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/20190226-pod-overhead.md This field is alpha-level as of Kubernetes v1.16, and is only honored by servers that enable the PodOverhead feature.', args=[d.arg(name='overhead', type=d.T.object)]), - withOverhead(overhead): { jobTemplate+: { spec+: { template+: { spec+: { overhead: overhead } } } } }, - '#withOverheadMixin':: d.fn(help='Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/20190226-pod-overhead.md This field is alpha-level as of Kubernetes v1.16, and is only honored by servers that enable the PodOverhead feature.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='overhead', type=d.T.object)]), - withOverheadMixin(overhead): { jobTemplate+: { spec+: { template+: { spec+: { overhead+: overhead } } } } }, - '#withPreemptionPolicy':: d.fn(help='PreemptionPolicy is the Policy for preempting pods with lower priority. One of Never, PreemptLowerPriority. Defaults to PreemptLowerPriority if unset. This field is beta-level, gated by the NonPreemptingPriority feature-gate.', args=[d.arg(name='preemptionPolicy', type=d.T.string)]), - withPreemptionPolicy(preemptionPolicy): { jobTemplate+: { spec+: { template+: { spec+: { preemptionPolicy: preemptionPolicy } } } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { jobTemplate+: { spec+: { template+: { spec+: { priority: priority } } } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { jobTemplate+: { spec+: { template+: { spec+: { priorityClassName: priorityClassName } } } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { jobTemplate+: { spec+: { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { jobTemplate+: { spec+: { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { jobTemplate+: { spec+: { template+: { spec+: { restartPolicy: restartPolicy } } } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is a beta feature as of Kubernetes v1.14.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { jobTemplate+: { spec+: { template+: { spec+: { runtimeClassName: runtimeClassName } } } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { jobTemplate+: { spec+: { template+: { spec+: { schedulerName: schedulerName } } } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { jobTemplate+: { spec+: { template+: { spec+: { serviceAccount: serviceAccount } } } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { jobTemplate+: { spec+: { template+: { spec+: { serviceAccountName: serviceAccountName } } } } }, - '#withSetHostnameAsFQDN':: d.fn(help="If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default). In Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname). In Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters to FQDN. If a pod does not have FQDN, this has no effect. Default to false.", args=[d.arg(name='setHostnameAsFQDN', type=d.T.boolean)]), - withSetHostnameAsFQDN(setHostnameAsFQDN): { jobTemplate+: { spec+: { template+: { spec+: { setHostnameAsFQDN: setHostnameAsFQDN } } } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { jobTemplate+: { spec+: { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { jobTemplate+: { spec+: { template+: { spec+: { subdomain: subdomain } } } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { jobTemplate+: { spec+: { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { jobTemplate+: { spec+: { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { jobTemplate+: { spec+: { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } } }, - '#withTopologySpreadConstraints':: d.fn(help='TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed.', args=[d.arg(name='topologySpreadConstraints', type=d.T.array)]), - withTopologySpreadConstraints(topologySpreadConstraints): { jobTemplate+: { spec+: { template+: { spec+: { topologySpreadConstraints: if std.isArray(v=topologySpreadConstraints) then topologySpreadConstraints else [topologySpreadConstraints] } } } } }, - '#withTopologySpreadConstraintsMixin':: d.fn(help='TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='topologySpreadConstraints', type=d.T.array)]), - withTopologySpreadConstraintsMixin(topologySpreadConstraints): { jobTemplate+: { spec+: { template+: { spec+: { topologySpreadConstraints+: if std.isArray(v=topologySpreadConstraints) then topologySpreadConstraints else [topologySpreadConstraints] } } } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { jobTemplate+: { spec+: { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { jobTemplate+: { spec+: { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } } } }, - }, - }, - '#withActiveDeadlineSeconds':: d.fn(help='Specifies the duration in seconds relative to the startTime that the job may be continuously active before the system tries to terminate it; value must be positive integer. If a Job is suspended (at creation or through an update), this timer will effectively be stopped and reset when the Job is resumed again.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { jobTemplate+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } }, - '#withBackoffLimit':: d.fn(help='Specifies the number of retries before marking this job failed. Defaults to 6', args=[d.arg(name='backoffLimit', type=d.T.integer)]), - withBackoffLimit(backoffLimit): { jobTemplate+: { spec+: { backoffLimit: backoffLimit } } }, - '#withCompletionMode':: d.fn(help="CompletionMode specifies how Pod completions are tracked. It can be `NonIndexed` (default) or `Indexed`.\n\n`NonIndexed` means that the Job is considered complete when there have been .spec.completions successfully completed Pods. Each Pod completion is homologous to each other.\n\n`Indexed` means that the Pods of a Job get an associated completion index from 0 to (.spec.completions - 1), available in the annotation batch.kubernetes.io/job-completion-index. The Job is considered complete when there is one successfully completed Pod for each index. When value is `Indexed`, .spec.completions must be specified and `.spec.parallelism` must be less than or equal to 10^5.\n\nThis field is alpha-level and is only honored by servers that enable the IndexedJob feature gate. More completion modes can be added in the future. If the Job controller observes a mode that it doesn't recognize, the controller skips updates for the Job.", args=[d.arg(name='completionMode', type=d.T.string)]), - withCompletionMode(completionMode): { jobTemplate+: { spec+: { completionMode: completionMode } } }, - '#withCompletions':: d.fn(help='Specifies the desired number of successfully finished pods the job should be run with. Setting to nil means that the success of any pod signals the success of all pods, and allows parallelism to have any positive value. Setting to 1 means that parallelism is limited to 1 and the success of that pod signals the success of the job. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/', args=[d.arg(name='completions', type=d.T.integer)]), - withCompletions(completions): { jobTemplate+: { spec+: { completions: completions } } }, - '#withManualSelector':: d.fn(help='manualSelector controls generation of pod labels and pod selectors. Leave `manualSelector` unset unless you are certain what you are doing. When false or unset, the system pick labels unique to this job and appends those labels to the pod template. When true, the user is responsible for picking unique labels and specifying the selector. Failure to pick a unique label may cause this and other jobs to not function correctly. However, You may see `manualSelector=true` in jobs that were created with the old `extensions/v1beta1` API. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/#specifying-your-own-pod-selector', args=[d.arg(name='manualSelector', type=d.T.boolean)]), - withManualSelector(manualSelector): { jobTemplate+: { spec+: { manualSelector: manualSelector } } }, - '#withParallelism':: d.fn(help='Specifies the maximum desired number of pods the job should run at any given time. The actual number of pods running in steady state will be less than this number when ((.spec.completions - .status.successful) < .spec.parallelism), i.e. when the work left to do is less than max parallelism. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/', args=[d.arg(name='parallelism', type=d.T.integer)]), - withParallelism(parallelism): { jobTemplate+: { spec+: { parallelism: parallelism } } }, - '#withSuspend':: d.fn(help='Suspend specifies whether the Job controller should create Pods or not. If a Job is created with suspend set to true, no Pods are created by the Job controller. If a Job is suspended after creation (i.e. the flag goes from false to true), the Job controller will delete all active Pods associated with this Job. Users must design their workload to gracefully handle this. Suspending a Job will reset the StartTime field of the Job, effectively resetting the ActiveDeadlineSeconds timer too. This is an alpha field and requires the SuspendJob feature gate to be enabled; otherwise this field may not be set to true. Defaults to false.', args=[d.arg(name='suspend', type=d.T.boolean)]), - withSuspend(suspend): { jobTemplate+: { spec+: { suspend: suspend } } }, - '#withTtlSecondsAfterFinished':: d.fn(help="ttlSecondsAfterFinished limits the lifetime of a Job that has finished execution (either Complete or Failed). If this field is set, ttlSecondsAfterFinished after the Job finishes, it is eligible to be automatically deleted. When the Job is being deleted, its lifecycle guarantees (e.g. finalizers) will be honored. If this field is unset, the Job won't be automatically deleted. If this field is set to zero, the Job becomes eligible to be deleted immediately after it finishes. This field is alpha-level and is only honored by servers that enable the TTLAfterFinished feature.", args=[d.arg(name='ttlSecondsAfterFinished', type=d.T.integer)]), - withTtlSecondsAfterFinished(ttlSecondsAfterFinished): { jobTemplate+: { spec+: { ttlSecondsAfterFinished: ttlSecondsAfterFinished } } }, - }, - }, - '#withConcurrencyPolicy':: d.fn(help="Specifies how to treat concurrent executions of a Job. Valid values are: - 'Allow' (default): allows CronJobs to run concurrently; - 'Forbid': forbids concurrent runs, skipping next run if previous run hasn't finished yet; - 'Replace': cancels currently running job and replaces it with a new one", args=[d.arg(name='concurrencyPolicy', type=d.T.string)]), - withConcurrencyPolicy(concurrencyPolicy): { concurrencyPolicy: concurrencyPolicy }, - '#withFailedJobsHistoryLimit':: d.fn(help='The number of failed finished jobs to retain. This is a pointer to distinguish between explicit zero and not specified. Defaults to 1.', args=[d.arg(name='failedJobsHistoryLimit', type=d.T.integer)]), - withFailedJobsHistoryLimit(failedJobsHistoryLimit): { failedJobsHistoryLimit: failedJobsHistoryLimit }, - '#withSchedule':: d.fn(help='The schedule in Cron format, see https://en.wikipedia.org/wiki/Cron.', args=[d.arg(name='schedule', type=d.T.string)]), - withSchedule(schedule): { schedule: schedule }, - '#withStartingDeadlineSeconds':: d.fn(help='Optional deadline in seconds for starting the job if it misses scheduled time for any reason. Missed jobs executions will be counted as failed ones.', args=[d.arg(name='startingDeadlineSeconds', type=d.T.integer)]), - withStartingDeadlineSeconds(startingDeadlineSeconds): { startingDeadlineSeconds: startingDeadlineSeconds }, - '#withSuccessfulJobsHistoryLimit':: d.fn(help='The number of successful finished jobs to retain. This is a pointer to distinguish between explicit zero and not specified. Defaults to 3.', args=[d.arg(name='successfulJobsHistoryLimit', type=d.T.integer)]), - withSuccessfulJobsHistoryLimit(successfulJobsHistoryLimit): { successfulJobsHistoryLimit: successfulJobsHistoryLimit }, - '#withSuspend':: d.fn(help='This flag tells the controller to suspend subsequent executions, it does not apply to already started executions. Defaults to false.', args=[d.arg(name='suspend', type=d.T.boolean)]), - withSuspend(suspend): { suspend: suspend }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1beta1/cronJobStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1beta1/cronJobStatus.libsonnet deleted file mode 100644 index 9659da576683..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1beta1/cronJobStatus.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='cronJobStatus', url='', help='CronJobStatus represents the current state of a cron job.'), - '#withActive':: d.fn(help='A list of pointers to currently running jobs.', args=[d.arg(name='active', type=d.T.array)]), - withActive(active): { active: if std.isArray(v=active) then active else [active] }, - '#withActiveMixin':: d.fn(help='A list of pointers to currently running jobs.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='active', type=d.T.array)]), - withActiveMixin(active): { active+: if std.isArray(v=active) then active else [active] }, - '#withLastScheduleTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastScheduleTime', type=d.T.string)]), - withLastScheduleTime(lastScheduleTime): { lastScheduleTime: lastScheduleTime }, - '#withLastSuccessfulTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastSuccessfulTime', type=d.T.string)]), - withLastSuccessfulTime(lastSuccessfulTime): { lastSuccessfulTime: lastSuccessfulTime }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1beta1/jobTemplateSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1beta1/jobTemplateSpec.libsonnet deleted file mode 100644 index 9e276e109d1c..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1beta1/jobTemplateSpec.libsonnet +++ /dev/null @@ -1,320 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='jobTemplateSpec', url='', help='JobTemplateSpec describes the data a Job should have when created from a template'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#spec':: d.obj(help='JobSpec describes how the job execution will look like.'), - spec: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { spec+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { spec+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { spec+: { selector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { spec+: { selector+: { matchLabels+: matchLabels } } }, - }, - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { spec+: { template+: { metadata+: { annotations: annotations } } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { spec+: { template+: { metadata+: { annotations+: annotations } } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { spec+: { template+: { metadata+: { clusterName: clusterName } } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { spec+: { template+: { metadata+: { creationTimestamp: creationTimestamp } } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { spec+: { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { spec+: { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { spec+: { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { spec+: { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { spec+: { template+: { metadata+: { generateName: generateName } } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { spec+: { template+: { metadata+: { generation: generation } } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { spec+: { template+: { metadata+: { labels: labels } } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { spec+: { template+: { metadata+: { labels+: labels } } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { spec+: { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { spec+: { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { template+: { metadata+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { template+: { metadata+: { namespace: namespace } } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { spec+: { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { spec+: { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { spec+: { template+: { metadata+: { resourceVersion: resourceVersion } } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { spec+: { template+: { metadata+: { selfLink: selfLink } } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { template+: { metadata+: { uid: uid } } } }, - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } }, - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - }, - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { spec+: { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { spec+: { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { spec+: { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { spec+: { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { spec+: { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { spec+: { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } } }, - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } } }, - }, - '#seccompProfile':: d.obj(help="SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set."), - seccompProfile: { - '#withLocalhostProfile':: d.fn(help="localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is 'Localhost'.", args=[d.arg(name='localhostProfile', type=d.T.string)]), - withLocalhostProfile(localhostProfile): { spec+: { template+: { spec+: { securityContext+: { seccompProfile+: { localhostProfile: localhostProfile } } } } } }, - '#withType':: d.fn(help='type indicates which kind of seccomp profile will be applied. Valid options are:\n\nLocalhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { template+: { spec+: { securityContext+: { seccompProfile+: { type: type } } } } } }, - }, - '#windowsOptions':: d.obj(help='WindowsSecurityContextOptions contain Windows-specific options and credentials.'), - windowsOptions: { - '#withGmsaCredentialSpec':: d.fn(help='GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.', args=[d.arg(name='gmsaCredentialSpec', type=d.T.string)]), - withGmsaCredentialSpec(gmsaCredentialSpec): { spec+: { template+: { spec+: { securityContext+: { windowsOptions+: { gmsaCredentialSpec: gmsaCredentialSpec } } } } } }, - '#withGmsaCredentialSpecName':: d.fn(help='GMSACredentialSpecName is the name of the GMSA credential spec to use.', args=[d.arg(name='gmsaCredentialSpecName', type=d.T.string)]), - withGmsaCredentialSpecName(gmsaCredentialSpecName): { spec+: { template+: { spec+: { securityContext+: { windowsOptions+: { gmsaCredentialSpecName: gmsaCredentialSpecName } } } } } }, - '#withRunAsUserName':: d.fn(help='The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsUserName', type=d.T.string)]), - withRunAsUserName(runAsUserName): { spec+: { template+: { spec+: { securityContext+: { windowsOptions+: { runAsUserName: runAsUserName } } } } } }, - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { spec+: { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } } }, - '#withFsGroupChangePolicy':: d.fn(help='fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used.', args=[d.arg(name='fsGroupChangePolicy', type=d.T.string)]), - withFsGroupChangePolicy(fsGroupChangePolicy): { spec+: { template+: { spec+: { securityContext+: { fsGroupChangePolicy: fsGroupChangePolicy } } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { spec+: { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { spec+: { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { spec+: { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { spec+: { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { spec+: { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { spec+: { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { spec+: { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } }, - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { spec+: { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { spec+: { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { spec+: { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { spec+: { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { spec+: { template+: { spec+: { dnsPolicy: dnsPolicy } } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { spec+: { template+: { spec+: { enableServiceLinks: enableServiceLinks } } } }, - '#withEphemeralContainers':: d.fn(help="List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. This field is alpha-level and is only honored by servers that enable the EphemeralContainers feature.", args=[d.arg(name='ephemeralContainers', type=d.T.array)]), - withEphemeralContainers(ephemeralContainers): { spec+: { template+: { spec+: { ephemeralContainers: if std.isArray(v=ephemeralContainers) then ephemeralContainers else [ephemeralContainers] } } } }, - '#withEphemeralContainersMixin':: d.fn(help="List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. This field is alpha-level and is only honored by servers that enable the EphemeralContainers feature.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='ephemeralContainers', type=d.T.array)]), - withEphemeralContainersMixin(ephemeralContainers): { spec+: { template+: { spec+: { ephemeralContainers+: if std.isArray(v=ephemeralContainers) then ephemeralContainers else [ephemeralContainers] } } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { spec+: { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { spec+: { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { spec+: { template+: { spec+: { hostIPC: hostIPC } } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { spec+: { template+: { spec+: { hostNetwork: hostNetwork } } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { spec+: { template+: { spec+: { hostPID: hostPID } } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { spec+: { template+: { spec+: { hostname: hostname } } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { spec+: { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { spec+: { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { spec+: { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { spec+: { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { spec+: { template+: { spec+: { nodeName: nodeName } } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { spec+: { template+: { spec+: { nodeSelector: nodeSelector } } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { spec+: { template+: { spec+: { nodeSelector+: nodeSelector } } } }, - '#withOverhead':: d.fn(help='Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/20190226-pod-overhead.md This field is alpha-level as of Kubernetes v1.16, and is only honored by servers that enable the PodOverhead feature.', args=[d.arg(name='overhead', type=d.T.object)]), - withOverhead(overhead): { spec+: { template+: { spec+: { overhead: overhead } } } }, - '#withOverheadMixin':: d.fn(help='Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/20190226-pod-overhead.md This field is alpha-level as of Kubernetes v1.16, and is only honored by servers that enable the PodOverhead feature.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='overhead', type=d.T.object)]), - withOverheadMixin(overhead): { spec+: { template+: { spec+: { overhead+: overhead } } } }, - '#withPreemptionPolicy':: d.fn(help='PreemptionPolicy is the Policy for preempting pods with lower priority. One of Never, PreemptLowerPriority. Defaults to PreemptLowerPriority if unset. This field is beta-level, gated by the NonPreemptingPriority feature-gate.', args=[d.arg(name='preemptionPolicy', type=d.T.string)]), - withPreemptionPolicy(preemptionPolicy): { spec+: { template+: { spec+: { preemptionPolicy: preemptionPolicy } } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { spec+: { template+: { spec+: { priority: priority } } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { spec+: { template+: { spec+: { priorityClassName: priorityClassName } } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { spec+: { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { spec+: { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { spec+: { template+: { spec+: { restartPolicy: restartPolicy } } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is a beta feature as of Kubernetes v1.14.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { spec+: { template+: { spec+: { runtimeClassName: runtimeClassName } } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { spec+: { template+: { spec+: { schedulerName: schedulerName } } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { spec+: { template+: { spec+: { serviceAccount: serviceAccount } } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { spec+: { template+: { spec+: { serviceAccountName: serviceAccountName } } } }, - '#withSetHostnameAsFQDN':: d.fn(help="If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default). In Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname). In Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters to FQDN. If a pod does not have FQDN, this has no effect. Default to false.", args=[d.arg(name='setHostnameAsFQDN', type=d.T.boolean)]), - withSetHostnameAsFQDN(setHostnameAsFQDN): { spec+: { template+: { spec+: { setHostnameAsFQDN: setHostnameAsFQDN } } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { spec+: { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { spec+: { template+: { spec+: { subdomain: subdomain } } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { spec+: { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { spec+: { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { spec+: { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } }, - '#withTopologySpreadConstraints':: d.fn(help='TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed.', args=[d.arg(name='topologySpreadConstraints', type=d.T.array)]), - withTopologySpreadConstraints(topologySpreadConstraints): { spec+: { template+: { spec+: { topologySpreadConstraints: if std.isArray(v=topologySpreadConstraints) then topologySpreadConstraints else [topologySpreadConstraints] } } } }, - '#withTopologySpreadConstraintsMixin':: d.fn(help='TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='topologySpreadConstraints', type=d.T.array)]), - withTopologySpreadConstraintsMixin(topologySpreadConstraints): { spec+: { template+: { spec+: { topologySpreadConstraints+: if std.isArray(v=topologySpreadConstraints) then topologySpreadConstraints else [topologySpreadConstraints] } } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { spec+: { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { spec+: { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } } }, - }, - }, - '#withActiveDeadlineSeconds':: d.fn(help='Specifies the duration in seconds relative to the startTime that the job may be continuously active before the system tries to terminate it; value must be positive integer. If a Job is suspended (at creation or through an update), this timer will effectively be stopped and reset when the Job is resumed again.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } }, - '#withBackoffLimit':: d.fn(help='Specifies the number of retries before marking this job failed. Defaults to 6', args=[d.arg(name='backoffLimit', type=d.T.integer)]), - withBackoffLimit(backoffLimit): { spec+: { backoffLimit: backoffLimit } }, - '#withCompletionMode':: d.fn(help="CompletionMode specifies how Pod completions are tracked. It can be `NonIndexed` (default) or `Indexed`.\n\n`NonIndexed` means that the Job is considered complete when there have been .spec.completions successfully completed Pods. Each Pod completion is homologous to each other.\n\n`Indexed` means that the Pods of a Job get an associated completion index from 0 to (.spec.completions - 1), available in the annotation batch.kubernetes.io/job-completion-index. The Job is considered complete when there is one successfully completed Pod for each index. When value is `Indexed`, .spec.completions must be specified and `.spec.parallelism` must be less than or equal to 10^5.\n\nThis field is alpha-level and is only honored by servers that enable the IndexedJob feature gate. More completion modes can be added in the future. If the Job controller observes a mode that it doesn't recognize, the controller skips updates for the Job.", args=[d.arg(name='completionMode', type=d.T.string)]), - withCompletionMode(completionMode): { spec+: { completionMode: completionMode } }, - '#withCompletions':: d.fn(help='Specifies the desired number of successfully finished pods the job should be run with. Setting to nil means that the success of any pod signals the success of all pods, and allows parallelism to have any positive value. Setting to 1 means that parallelism is limited to 1 and the success of that pod signals the success of the job. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/', args=[d.arg(name='completions', type=d.T.integer)]), - withCompletions(completions): { spec+: { completions: completions } }, - '#withManualSelector':: d.fn(help='manualSelector controls generation of pod labels and pod selectors. Leave `manualSelector` unset unless you are certain what you are doing. When false or unset, the system pick labels unique to this job and appends those labels to the pod template. When true, the user is responsible for picking unique labels and specifying the selector. Failure to pick a unique label may cause this and other jobs to not function correctly. However, You may see `manualSelector=true` in jobs that were created with the old `extensions/v1beta1` API. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/#specifying-your-own-pod-selector', args=[d.arg(name='manualSelector', type=d.T.boolean)]), - withManualSelector(manualSelector): { spec+: { manualSelector: manualSelector } }, - '#withParallelism':: d.fn(help='Specifies the maximum desired number of pods the job should run at any given time. The actual number of pods running in steady state will be less than this number when ((.spec.completions - .status.successful) < .spec.parallelism), i.e. when the work left to do is less than max parallelism. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/', args=[d.arg(name='parallelism', type=d.T.integer)]), - withParallelism(parallelism): { spec+: { parallelism: parallelism } }, - '#withSuspend':: d.fn(help='Suspend specifies whether the Job controller should create Pods or not. If a Job is created with suspend set to true, no Pods are created by the Job controller. If a Job is suspended after creation (i.e. the flag goes from false to true), the Job controller will delete all active Pods associated with this Job. Users must design their workload to gracefully handle this. Suspending a Job will reset the StartTime field of the Job, effectively resetting the ActiveDeadlineSeconds timer too. This is an alpha field and requires the SuspendJob feature gate to be enabled; otherwise this field may not be set to true. Defaults to false.', args=[d.arg(name='suspend', type=d.T.boolean)]), - withSuspend(suspend): { spec+: { suspend: suspend } }, - '#withTtlSecondsAfterFinished':: d.fn(help="ttlSecondsAfterFinished limits the lifetime of a Job that has finished execution (either Complete or Failed). If this field is set, ttlSecondsAfterFinished after the Job finishes, it is eligible to be automatically deleted. When the Job is being deleted, its lifecycle guarantees (e.g. finalizers) will be honored. If this field is unset, the Job won't be automatically deleted. If this field is set to zero, the Job becomes eligible to be deleted immediately after it finishes. This field is alpha-level and is only honored by servers that enable the TTLAfterFinished feature.", args=[d.arg(name='ttlSecondsAfterFinished', type=d.T.integer)]), - withTtlSecondsAfterFinished(ttlSecondsAfterFinished): { spec+: { ttlSecondsAfterFinished: ttlSecondsAfterFinished } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1beta1/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1beta1/main.libsonnet deleted file mode 100644 index e9498f60d443..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/batch/v1beta1/main.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1beta1', url='', help=''), - cronJob: (import 'cronJob.libsonnet'), - cronJobSpec: (import 'cronJobSpec.libsonnet'), - cronJobStatus: (import 'cronJobStatus.libsonnet'), - jobTemplateSpec: (import 'jobTemplateSpec.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/certificates/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/certificates/main.libsonnet deleted file mode 100644 index 2fc91e17e6c2..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/certificates/main.libsonnet +++ /dev/null @@ -1,6 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='certificates', url='', help=''), - v1: (import 'v1/main.libsonnet'), - v1beta1: (import 'v1beta1/main.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/certificates/v1/certificateSigningRequest.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/certificates/v1/certificateSigningRequest.libsonnet deleted file mode 100644 index 840928e0ad92..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/certificates/v1/certificateSigningRequest.libsonnet +++ /dev/null @@ -1,79 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='certificateSigningRequest', url='', help='CertificateSigningRequest objects provide a mechanism to obtain x509 certificates by submitting a certificate signing request, and having it asynchronously approved and issued.\n\nKubelets use this API to obtain:\n 1. client certificates to authenticate to kube-apiserver (with the "kubernetes.io/kube-apiserver-client-kubelet" signerName).\n 2. serving certificates for TLS endpoints kube-apiserver can connect to securely (with the "kubernetes.io/kubelet-serving" signerName).\n\nThis API can be used to request client certificates to authenticate to kube-apiserver (with the "kubernetes.io/kube-apiserver-client" signerName), or to obtain certificates from custom non-Kubernetes signers.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Certificatesigningrequest', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'certificates.k8s.io/v1', - kind: 'CertificateSigningRequest', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='CertificateSigningRequestSpec contains the certificate request.'), - spec: { - '#withExtra':: d.fn(help='extra contains extra attributes of the user that created the CertificateSigningRequest. Populated by the API server on creation and immutable.', args=[d.arg(name='extra', type=d.T.object)]), - withExtra(extra): { spec+: { extra: extra } }, - '#withExtraMixin':: d.fn(help='extra contains extra attributes of the user that created the CertificateSigningRequest. Populated by the API server on creation and immutable.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='extra', type=d.T.object)]), - withExtraMixin(extra): { spec+: { extra+: extra } }, - '#withGroups':: d.fn(help='groups contains group membership of the user that created the CertificateSigningRequest. Populated by the API server on creation and immutable.', args=[d.arg(name='groups', type=d.T.array)]), - withGroups(groups): { spec+: { groups: if std.isArray(v=groups) then groups else [groups] } }, - '#withGroupsMixin':: d.fn(help='groups contains group membership of the user that created the CertificateSigningRequest. Populated by the API server on creation and immutable.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='groups', type=d.T.array)]), - withGroupsMixin(groups): { spec+: { groups+: if std.isArray(v=groups) then groups else [groups] } }, - '#withRequest':: d.fn(help='request contains an x509 certificate signing request encoded in a "CERTIFICATE REQUEST" PEM block. When serialized as JSON or YAML, the data is additionally base64-encoded.', args=[d.arg(name='request', type=d.T.string)]), - withRequest(request): { spec+: { request: request } }, - '#withSignerName':: d.fn(help='signerName indicates the requested signer, and is a qualified name.\n\nList/watch requests for CertificateSigningRequests can filter on this field using a "spec.signerName=NAME" fieldSelector.\n\nWell-known Kubernetes signers are:\n 1. "kubernetes.io/kube-apiserver-client": issues client certificates that can be used to authenticate to kube-apiserver.\n Requests for this signer are never auto-approved by kube-controller-manager, can be issued by the "csrsigning" controller in kube-controller-manager.\n 2. "kubernetes.io/kube-apiserver-client-kubelet": issues client certificates that kubelets use to authenticate to kube-apiserver.\n Requests for this signer can be auto-approved by the "csrapproving" controller in kube-controller-manager, and can be issued by the "csrsigning" controller in kube-controller-manager.\n 3. "kubernetes.io/kubelet-serving" issues serving certificates that kubelets use to serve TLS endpoints, which kube-apiserver can connect to securely.\n Requests for this signer are never auto-approved by kube-controller-manager, and can be issued by the "csrsigning" controller in kube-controller-manager.\n\nMore details are available at https://k8s.io/docs/reference/access-authn-authz/certificate-signing-requests/#kubernetes-signers\n\nCustom signerNames can also be specified. The signer defines:\n 1. Trust distribution: how trust (CA bundles) are distributed.\n 2. Permitted subjects: and behavior when a disallowed subject is requested.\n 3. Required, permitted, or forbidden x509 extensions in the request (including whether subjectAltNames are allowed, which types, restrictions on allowed values) and behavior when a disallowed extension is requested.\n 4. Required, permitted, or forbidden key usages / extended key usages.\n 5. Expiration/certificate lifetime: whether it is fixed by the signer, configurable by the admin.\n 6. Whether or not requests for CA certificates are allowed.', args=[d.arg(name='signerName', type=d.T.string)]), - withSignerName(signerName): { spec+: { signerName: signerName } }, - '#withUid':: d.fn(help='uid contains the uid of the user that created the CertificateSigningRequest. Populated by the API server on creation and immutable.', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { uid: uid } }, - '#withUsages':: d.fn(help='usages specifies a set of key usages requested in the issued certificate.\n\nRequests for TLS client certificates typically request: "digital signature", "key encipherment", "client auth".\n\nRequests for TLS serving certificates typically request: "key encipherment", "digital signature", "server auth".\n\nValid values are:\n "signing", "digital signature", "content commitment",\n "key encipherment", "key agreement", "data encipherment",\n "cert sign", "crl sign", "encipher only", "decipher only", "any",\n "server auth", "client auth",\n "code signing", "email protection", "s/mime",\n "ipsec end system", "ipsec tunnel", "ipsec user",\n "timestamping", "ocsp signing", "microsoft sgc", "netscape sgc"', args=[d.arg(name='usages', type=d.T.array)]), - withUsages(usages): { spec+: { usages: if std.isArray(v=usages) then usages else [usages] } }, - '#withUsagesMixin':: d.fn(help='usages specifies a set of key usages requested in the issued certificate.\n\nRequests for TLS client certificates typically request: "digital signature", "key encipherment", "client auth".\n\nRequests for TLS serving certificates typically request: "key encipherment", "digital signature", "server auth".\n\nValid values are:\n "signing", "digital signature", "content commitment",\n "key encipherment", "key agreement", "data encipherment",\n "cert sign", "crl sign", "encipher only", "decipher only", "any",\n "server auth", "client auth",\n "code signing", "email protection", "s/mime",\n "ipsec end system", "ipsec tunnel", "ipsec user",\n "timestamping", "ocsp signing", "microsoft sgc", "netscape sgc"\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='usages', type=d.T.array)]), - withUsagesMixin(usages): { spec+: { usages+: if std.isArray(v=usages) then usages else [usages] } }, - '#withUsername':: d.fn(help='username contains the name of the user that created the CertificateSigningRequest. Populated by the API server on creation and immutable.', args=[d.arg(name='username', type=d.T.string)]), - withUsername(username): { spec+: { username: username } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/certificates/v1/certificateSigningRequestCondition.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/certificates/v1/certificateSigningRequestCondition.libsonnet deleted file mode 100644 index 49944522e3b9..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/certificates/v1/certificateSigningRequestCondition.libsonnet +++ /dev/null @@ -1,16 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='certificateSigningRequestCondition', url='', help='CertificateSigningRequestCondition describes a condition of a CertificateSigningRequest object'), - '#withLastTransitionTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastTransitionTime', type=d.T.string)]), - withLastTransitionTime(lastTransitionTime): { lastTransitionTime: lastTransitionTime }, - '#withLastUpdateTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastUpdateTime', type=d.T.string)]), - withLastUpdateTime(lastUpdateTime): { lastUpdateTime: lastUpdateTime }, - '#withMessage':: d.fn(help='message contains a human readable message with details about the request state', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withReason':: d.fn(help='reason indicates a brief reason for the request state', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#withType':: d.fn(help='type of the condition. Known conditions are "Approved", "Denied", and "Failed".\n\nAn "Approved" condition is added via the /approval subresource, indicating the request was approved and should be issued by the signer.\n\nA "Denied" condition is added via the /approval subresource, indicating the request was denied and should not be issued by the signer.\n\nA "Failed" condition is added via the /status subresource, indicating the signer failed to issue the certificate.\n\nApproved and Denied conditions are mutually exclusive. Approved, Denied, and Failed conditions cannot be removed once added.\n\nOnly one condition of a given type is allowed.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/certificates/v1/certificateSigningRequestSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/certificates/v1/certificateSigningRequestSpec.libsonnet deleted file mode 100644 index 00502a0d1c7a..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/certificates/v1/certificateSigningRequestSpec.libsonnet +++ /dev/null @@ -1,26 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='certificateSigningRequestSpec', url='', help='CertificateSigningRequestSpec contains the certificate request.'), - '#withExtra':: d.fn(help='extra contains extra attributes of the user that created the CertificateSigningRequest. Populated by the API server on creation and immutable.', args=[d.arg(name='extra', type=d.T.object)]), - withExtra(extra): { extra: extra }, - '#withExtraMixin':: d.fn(help='extra contains extra attributes of the user that created the CertificateSigningRequest. Populated by the API server on creation and immutable.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='extra', type=d.T.object)]), - withExtraMixin(extra): { extra+: extra }, - '#withGroups':: d.fn(help='groups contains group membership of the user that created the CertificateSigningRequest. Populated by the API server on creation and immutable.', args=[d.arg(name='groups', type=d.T.array)]), - withGroups(groups): { groups: if std.isArray(v=groups) then groups else [groups] }, - '#withGroupsMixin':: d.fn(help='groups contains group membership of the user that created the CertificateSigningRequest. Populated by the API server on creation and immutable.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='groups', type=d.T.array)]), - withGroupsMixin(groups): { groups+: if std.isArray(v=groups) then groups else [groups] }, - '#withRequest':: d.fn(help='request contains an x509 certificate signing request encoded in a "CERTIFICATE REQUEST" PEM block. When serialized as JSON or YAML, the data is additionally base64-encoded.', args=[d.arg(name='request', type=d.T.string)]), - withRequest(request): { request: request }, - '#withSignerName':: d.fn(help='signerName indicates the requested signer, and is a qualified name.\n\nList/watch requests for CertificateSigningRequests can filter on this field using a "spec.signerName=NAME" fieldSelector.\n\nWell-known Kubernetes signers are:\n 1. "kubernetes.io/kube-apiserver-client": issues client certificates that can be used to authenticate to kube-apiserver.\n Requests for this signer are never auto-approved by kube-controller-manager, can be issued by the "csrsigning" controller in kube-controller-manager.\n 2. "kubernetes.io/kube-apiserver-client-kubelet": issues client certificates that kubelets use to authenticate to kube-apiserver.\n Requests for this signer can be auto-approved by the "csrapproving" controller in kube-controller-manager, and can be issued by the "csrsigning" controller in kube-controller-manager.\n 3. "kubernetes.io/kubelet-serving" issues serving certificates that kubelets use to serve TLS endpoints, which kube-apiserver can connect to securely.\n Requests for this signer are never auto-approved by kube-controller-manager, and can be issued by the "csrsigning" controller in kube-controller-manager.\n\nMore details are available at https://k8s.io/docs/reference/access-authn-authz/certificate-signing-requests/#kubernetes-signers\n\nCustom signerNames can also be specified. The signer defines:\n 1. Trust distribution: how trust (CA bundles) are distributed.\n 2. Permitted subjects: and behavior when a disallowed subject is requested.\n 3. Required, permitted, or forbidden x509 extensions in the request (including whether subjectAltNames are allowed, which types, restrictions on allowed values) and behavior when a disallowed extension is requested.\n 4. Required, permitted, or forbidden key usages / extended key usages.\n 5. Expiration/certificate lifetime: whether it is fixed by the signer, configurable by the admin.\n 6. Whether or not requests for CA certificates are allowed.', args=[d.arg(name='signerName', type=d.T.string)]), - withSignerName(signerName): { signerName: signerName }, - '#withUid':: d.fn(help='uid contains the uid of the user that created the CertificateSigningRequest. Populated by the API server on creation and immutable.', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { uid: uid }, - '#withUsages':: d.fn(help='usages specifies a set of key usages requested in the issued certificate.\n\nRequests for TLS client certificates typically request: "digital signature", "key encipherment", "client auth".\n\nRequests for TLS serving certificates typically request: "key encipherment", "digital signature", "server auth".\n\nValid values are:\n "signing", "digital signature", "content commitment",\n "key encipherment", "key agreement", "data encipherment",\n "cert sign", "crl sign", "encipher only", "decipher only", "any",\n "server auth", "client auth",\n "code signing", "email protection", "s/mime",\n "ipsec end system", "ipsec tunnel", "ipsec user",\n "timestamping", "ocsp signing", "microsoft sgc", "netscape sgc"', args=[d.arg(name='usages', type=d.T.array)]), - withUsages(usages): { usages: if std.isArray(v=usages) then usages else [usages] }, - '#withUsagesMixin':: d.fn(help='usages specifies a set of key usages requested in the issued certificate.\n\nRequests for TLS client certificates typically request: "digital signature", "key encipherment", "client auth".\n\nRequests for TLS serving certificates typically request: "key encipherment", "digital signature", "server auth".\n\nValid values are:\n "signing", "digital signature", "content commitment",\n "key encipherment", "key agreement", "data encipherment",\n "cert sign", "crl sign", "encipher only", "decipher only", "any",\n "server auth", "client auth",\n "code signing", "email protection", "s/mime",\n "ipsec end system", "ipsec tunnel", "ipsec user",\n "timestamping", "ocsp signing", "microsoft sgc", "netscape sgc"\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='usages', type=d.T.array)]), - withUsagesMixin(usages): { usages+: if std.isArray(v=usages) then usages else [usages] }, - '#withUsername':: d.fn(help='username contains the name of the user that created the CertificateSigningRequest. Populated by the API server on creation and immutable.', args=[d.arg(name='username', type=d.T.string)]), - withUsername(username): { username: username }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/certificates/v1/certificateSigningRequestStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/certificates/v1/certificateSigningRequestStatus.libsonnet deleted file mode 100644 index 99d17401046f..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/certificates/v1/certificateSigningRequestStatus.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='certificateSigningRequestStatus', url='', help='CertificateSigningRequestStatus contains conditions used to indicate approved/denied/failed status of the request, and the issued certificate.'), - '#withCertificate':: d.fn(help='certificate is populated with an issued certificate by the signer after an Approved condition is present. This field is set via the /status subresource. Once populated, this field is immutable.\n\nIf the certificate signing request is denied, a condition of type "Denied" is added and this field remains empty. If the signer cannot issue the certificate, a condition of type "Failed" is added and this field remains empty.\n\nValidation requirements:\n 1. certificate must contain one or more PEM blocks.\n 2. All PEM blocks must have the "CERTIFICATE" label, contain no headers, and the encoded data\n must be a BER-encoded ASN.1 Certificate structure as described in section 4 of RFC5280.\n 3. Non-PEM content may appear before or after the "CERTIFICATE" PEM blocks and is unvalidated,\n to allow for explanatory text as described in section 5.2 of RFC7468.\n\nIf more than one PEM block is present, and the definition of the requested spec.signerName does not indicate otherwise, the first block is the issued certificate, and subsequent blocks should be treated as intermediate certificates and presented in TLS handshakes.\n\nThe certificate is encoded in PEM format.\n\nWhen serialized as JSON or YAML, the data is additionally base64-encoded, so it consists of:\n\n base64(\n -----BEGIN CERTIFICATE-----\n ...\n -----END CERTIFICATE-----\n )', args=[d.arg(name='certificate', type=d.T.string)]), - withCertificate(certificate): { certificate: certificate }, - '#withConditions':: d.fn(help='conditions applied to the request. Known conditions are "Approved", "Denied", and "Failed".', args=[d.arg(name='conditions', type=d.T.array)]), - withConditions(conditions): { conditions: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withConditionsMixin':: d.fn(help='conditions applied to the request. Known conditions are "Approved", "Denied", and "Failed".\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='conditions', type=d.T.array)]), - withConditionsMixin(conditions): { conditions+: if std.isArray(v=conditions) then conditions else [conditions] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/certificates/v1/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/certificates/v1/main.libsonnet deleted file mode 100644 index 2f3a81bd0830..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/certificates/v1/main.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1', url='', help=''), - certificateSigningRequest: (import 'certificateSigningRequest.libsonnet'), - certificateSigningRequestCondition: (import 'certificateSigningRequestCondition.libsonnet'), - certificateSigningRequestSpec: (import 'certificateSigningRequestSpec.libsonnet'), - certificateSigningRequestStatus: (import 'certificateSigningRequestStatus.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/certificates/v1beta1/certificateSigningRequest.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/certificates/v1beta1/certificateSigningRequest.libsonnet deleted file mode 100644 index 4663716bc890..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/certificates/v1beta1/certificateSigningRequest.libsonnet +++ /dev/null @@ -1,79 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='certificateSigningRequest', url='', help='Describes a certificate signing request'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Certificatesigningrequest', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'certificates.k8s.io/v1beta1', - kind: 'CertificateSigningRequest', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='This information is immutable after the request is created. Only the Request and Usages fields can be set on creation, other fields are derived by Kubernetes and cannot be modified by users.'), - spec: { - '#withExtra':: d.fn(help='Extra information about the requesting user. See user.Info interface for details.', args=[d.arg(name='extra', type=d.T.object)]), - withExtra(extra): { spec+: { extra: extra } }, - '#withExtraMixin':: d.fn(help='Extra information about the requesting user. See user.Info interface for details.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='extra', type=d.T.object)]), - withExtraMixin(extra): { spec+: { extra+: extra } }, - '#withGroups':: d.fn(help='Group information about the requesting user. See user.Info interface for details.', args=[d.arg(name='groups', type=d.T.array)]), - withGroups(groups): { spec+: { groups: if std.isArray(v=groups) then groups else [groups] } }, - '#withGroupsMixin':: d.fn(help='Group information about the requesting user. See user.Info interface for details.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='groups', type=d.T.array)]), - withGroupsMixin(groups): { spec+: { groups+: if std.isArray(v=groups) then groups else [groups] } }, - '#withRequest':: d.fn(help='Base64-encoded PKCS#10 CSR data', args=[d.arg(name='request', type=d.T.string)]), - withRequest(request): { spec+: { request: request } }, - '#withSignerName':: d.fn(help="Requested signer for the request. It is a qualified name in the form: `scope-hostname.io/name`. If empty, it will be defaulted:\n 1. If it's a kubelet client certificate, it is assigned\n 'kubernetes.io/kube-apiserver-client-kubelet'.\n 2. If it's a kubelet serving certificate, it is assigned\n 'kubernetes.io/kubelet-serving'.\n 3. Otherwise, it is assigned 'kubernetes.io/legacy-unknown'.\nDistribution of trust for signers happens out of band. You can select on this field using `spec.signerName`.", args=[d.arg(name='signerName', type=d.T.string)]), - withSignerName(signerName): { spec+: { signerName: signerName } }, - '#withUid':: d.fn(help='UID information about the requesting user. See user.Info interface for details.', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { uid: uid } }, - '#withUsages':: d.fn(help='allowedUsages specifies a set of usage contexts the key will be valid for. See: https://tools.ietf.org/html/rfc5280#section-4.2.1.3\n https://tools.ietf.org/html/rfc5280#section-4.2.1.12\nValid values are:\n "signing",\n "digital signature",\n "content commitment",\n "key encipherment",\n "key agreement",\n "data encipherment",\n "cert sign",\n "crl sign",\n "encipher only",\n "decipher only",\n "any",\n "server auth",\n "client auth",\n "code signing",\n "email protection",\n "s/mime",\n "ipsec end system",\n "ipsec tunnel",\n "ipsec user",\n "timestamping",\n "ocsp signing",\n "microsoft sgc",\n "netscape sgc"', args=[d.arg(name='usages', type=d.T.array)]), - withUsages(usages): { spec+: { usages: if std.isArray(v=usages) then usages else [usages] } }, - '#withUsagesMixin':: d.fn(help='allowedUsages specifies a set of usage contexts the key will be valid for. See: https://tools.ietf.org/html/rfc5280#section-4.2.1.3\n https://tools.ietf.org/html/rfc5280#section-4.2.1.12\nValid values are:\n "signing",\n "digital signature",\n "content commitment",\n "key encipherment",\n "key agreement",\n "data encipherment",\n "cert sign",\n "crl sign",\n "encipher only",\n "decipher only",\n "any",\n "server auth",\n "client auth",\n "code signing",\n "email protection",\n "s/mime",\n "ipsec end system",\n "ipsec tunnel",\n "ipsec user",\n "timestamping",\n "ocsp signing",\n "microsoft sgc",\n "netscape sgc"\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='usages', type=d.T.array)]), - withUsagesMixin(usages): { spec+: { usages+: if std.isArray(v=usages) then usages else [usages] } }, - '#withUsername':: d.fn(help='Information about the requesting user. See user.Info interface for details.', args=[d.arg(name='username', type=d.T.string)]), - withUsername(username): { spec+: { username: username } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/certificates/v1beta1/certificateSigningRequestCondition.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/certificates/v1beta1/certificateSigningRequestCondition.libsonnet deleted file mode 100644 index 6bfd9f6ed4f7..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/certificates/v1beta1/certificateSigningRequestCondition.libsonnet +++ /dev/null @@ -1,16 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='certificateSigningRequestCondition', url='', help=''), - '#withLastTransitionTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastTransitionTime', type=d.T.string)]), - withLastTransitionTime(lastTransitionTime): { lastTransitionTime: lastTransitionTime }, - '#withLastUpdateTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastUpdateTime', type=d.T.string)]), - withLastUpdateTime(lastUpdateTime): { lastUpdateTime: lastUpdateTime }, - '#withMessage':: d.fn(help='human readable message with details about the request state', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withReason':: d.fn(help='brief reason for the request state', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#withType':: d.fn(help='type of the condition. Known conditions include "Approved", "Denied", and "Failed".', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/certificates/v1beta1/certificateSigningRequestSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/certificates/v1beta1/certificateSigningRequestSpec.libsonnet deleted file mode 100644 index 5ef96961e3e8..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/certificates/v1beta1/certificateSigningRequestSpec.libsonnet +++ /dev/null @@ -1,26 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='certificateSigningRequestSpec', url='', help='This information is immutable after the request is created. Only the Request and Usages fields can be set on creation, other fields are derived by Kubernetes and cannot be modified by users.'), - '#withExtra':: d.fn(help='Extra information about the requesting user. See user.Info interface for details.', args=[d.arg(name='extra', type=d.T.object)]), - withExtra(extra): { extra: extra }, - '#withExtraMixin':: d.fn(help='Extra information about the requesting user. See user.Info interface for details.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='extra', type=d.T.object)]), - withExtraMixin(extra): { extra+: extra }, - '#withGroups':: d.fn(help='Group information about the requesting user. See user.Info interface for details.', args=[d.arg(name='groups', type=d.T.array)]), - withGroups(groups): { groups: if std.isArray(v=groups) then groups else [groups] }, - '#withGroupsMixin':: d.fn(help='Group information about the requesting user. See user.Info interface for details.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='groups', type=d.T.array)]), - withGroupsMixin(groups): { groups+: if std.isArray(v=groups) then groups else [groups] }, - '#withRequest':: d.fn(help='Base64-encoded PKCS#10 CSR data', args=[d.arg(name='request', type=d.T.string)]), - withRequest(request): { request: request }, - '#withSignerName':: d.fn(help="Requested signer for the request. It is a qualified name in the form: `scope-hostname.io/name`. If empty, it will be defaulted:\n 1. If it's a kubelet client certificate, it is assigned\n 'kubernetes.io/kube-apiserver-client-kubelet'.\n 2. If it's a kubelet serving certificate, it is assigned\n 'kubernetes.io/kubelet-serving'.\n 3. Otherwise, it is assigned 'kubernetes.io/legacy-unknown'.\nDistribution of trust for signers happens out of band. You can select on this field using `spec.signerName`.", args=[d.arg(name='signerName', type=d.T.string)]), - withSignerName(signerName): { signerName: signerName }, - '#withUid':: d.fn(help='UID information about the requesting user. See user.Info interface for details.', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { uid: uid }, - '#withUsages':: d.fn(help='allowedUsages specifies a set of usage contexts the key will be valid for. See: https://tools.ietf.org/html/rfc5280#section-4.2.1.3\n https://tools.ietf.org/html/rfc5280#section-4.2.1.12\nValid values are:\n "signing",\n "digital signature",\n "content commitment",\n "key encipherment",\n "key agreement",\n "data encipherment",\n "cert sign",\n "crl sign",\n "encipher only",\n "decipher only",\n "any",\n "server auth",\n "client auth",\n "code signing",\n "email protection",\n "s/mime",\n "ipsec end system",\n "ipsec tunnel",\n "ipsec user",\n "timestamping",\n "ocsp signing",\n "microsoft sgc",\n "netscape sgc"', args=[d.arg(name='usages', type=d.T.array)]), - withUsages(usages): { usages: if std.isArray(v=usages) then usages else [usages] }, - '#withUsagesMixin':: d.fn(help='allowedUsages specifies a set of usage contexts the key will be valid for. See: https://tools.ietf.org/html/rfc5280#section-4.2.1.3\n https://tools.ietf.org/html/rfc5280#section-4.2.1.12\nValid values are:\n "signing",\n "digital signature",\n "content commitment",\n "key encipherment",\n "key agreement",\n "data encipherment",\n "cert sign",\n "crl sign",\n "encipher only",\n "decipher only",\n "any",\n "server auth",\n "client auth",\n "code signing",\n "email protection",\n "s/mime",\n "ipsec end system",\n "ipsec tunnel",\n "ipsec user",\n "timestamping",\n "ocsp signing",\n "microsoft sgc",\n "netscape sgc"\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='usages', type=d.T.array)]), - withUsagesMixin(usages): { usages+: if std.isArray(v=usages) then usages else [usages] }, - '#withUsername':: d.fn(help='Information about the requesting user. See user.Info interface for details.', args=[d.arg(name='username', type=d.T.string)]), - withUsername(username): { username: username }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/certificates/v1beta1/certificateSigningRequestStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/certificates/v1beta1/certificateSigningRequestStatus.libsonnet deleted file mode 100644 index 26c04d735563..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/certificates/v1beta1/certificateSigningRequestStatus.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='certificateSigningRequestStatus', url='', help=''), - '#withCertificate':: d.fn(help='If request was approved, the controller will place the issued certificate here.', args=[d.arg(name='certificate', type=d.T.string)]), - withCertificate(certificate): { certificate: certificate }, - '#withConditions':: d.fn(help='Conditions applied to the request, such as approval or denial.', args=[d.arg(name='conditions', type=d.T.array)]), - withConditions(conditions): { conditions: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withConditionsMixin':: d.fn(help='Conditions applied to the request, such as approval or denial.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='conditions', type=d.T.array)]), - withConditionsMixin(conditions): { conditions+: if std.isArray(v=conditions) then conditions else [conditions] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/certificates/v1beta1/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/certificates/v1beta1/main.libsonnet deleted file mode 100644 index 0e09e4b298a1..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/certificates/v1beta1/main.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1beta1', url='', help=''), - certificateSigningRequest: (import 'certificateSigningRequest.libsonnet'), - certificateSigningRequestCondition: (import 'certificateSigningRequestCondition.libsonnet'), - certificateSigningRequestSpec: (import 'certificateSigningRequestSpec.libsonnet'), - certificateSigningRequestStatus: (import 'certificateSigningRequestStatus.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/coordination/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/coordination/main.libsonnet deleted file mode 100644 index 9d8b2649c6c3..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/coordination/main.libsonnet +++ /dev/null @@ -1,6 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='coordination', url='', help=''), - v1: (import 'v1/main.libsonnet'), - v1beta1: (import 'v1beta1/main.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/coordination/v1/lease.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/coordination/v1/lease.libsonnet deleted file mode 100644 index 2eb3e220594e..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/coordination/v1/lease.libsonnet +++ /dev/null @@ -1,69 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='lease', url='', help='Lease defines a lease concept.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Lease', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'coordination.k8s.io/v1', - kind: 'Lease', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='LeaseSpec is a specification of a Lease.'), - spec: { - '#withAcquireTime':: d.fn(help='MicroTime is version of Time with microsecond level precision.', args=[d.arg(name='acquireTime', type=d.T.string)]), - withAcquireTime(acquireTime): { spec+: { acquireTime: acquireTime } }, - '#withHolderIdentity':: d.fn(help='holderIdentity contains the identity of the holder of a current lease.', args=[d.arg(name='holderIdentity', type=d.T.string)]), - withHolderIdentity(holderIdentity): { spec+: { holderIdentity: holderIdentity } }, - '#withLeaseDurationSeconds':: d.fn(help='leaseDurationSeconds is a duration that candidates for a lease need to wait to force acquire it. This is measure against time of last observed RenewTime.', args=[d.arg(name='leaseDurationSeconds', type=d.T.integer)]), - withLeaseDurationSeconds(leaseDurationSeconds): { spec+: { leaseDurationSeconds: leaseDurationSeconds } }, - '#withLeaseTransitions':: d.fn(help='leaseTransitions is the number of transitions of a lease between holders.', args=[d.arg(name='leaseTransitions', type=d.T.integer)]), - withLeaseTransitions(leaseTransitions): { spec+: { leaseTransitions: leaseTransitions } }, - '#withRenewTime':: d.fn(help='MicroTime is version of Time with microsecond level precision.', args=[d.arg(name='renewTime', type=d.T.string)]), - withRenewTime(renewTime): { spec+: { renewTime: renewTime } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/coordination/v1/leaseSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/coordination/v1/leaseSpec.libsonnet deleted file mode 100644 index ee0180810580..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/coordination/v1/leaseSpec.libsonnet +++ /dev/null @@ -1,16 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='leaseSpec', url='', help='LeaseSpec is a specification of a Lease.'), - '#withAcquireTime':: d.fn(help='MicroTime is version of Time with microsecond level precision.', args=[d.arg(name='acquireTime', type=d.T.string)]), - withAcquireTime(acquireTime): { acquireTime: acquireTime }, - '#withHolderIdentity':: d.fn(help='holderIdentity contains the identity of the holder of a current lease.', args=[d.arg(name='holderIdentity', type=d.T.string)]), - withHolderIdentity(holderIdentity): { holderIdentity: holderIdentity }, - '#withLeaseDurationSeconds':: d.fn(help='leaseDurationSeconds is a duration that candidates for a lease need to wait to force acquire it. This is measure against time of last observed RenewTime.', args=[d.arg(name='leaseDurationSeconds', type=d.T.integer)]), - withLeaseDurationSeconds(leaseDurationSeconds): { leaseDurationSeconds: leaseDurationSeconds }, - '#withLeaseTransitions':: d.fn(help='leaseTransitions is the number of transitions of a lease between holders.', args=[d.arg(name='leaseTransitions', type=d.T.integer)]), - withLeaseTransitions(leaseTransitions): { leaseTransitions: leaseTransitions }, - '#withRenewTime':: d.fn(help='MicroTime is version of Time with microsecond level precision.', args=[d.arg(name='renewTime', type=d.T.string)]), - withRenewTime(renewTime): { renewTime: renewTime }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/coordination/v1/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/coordination/v1/main.libsonnet deleted file mode 100644 index 882a9e055ac4..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/coordination/v1/main.libsonnet +++ /dev/null @@ -1,6 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1', url='', help=''), - lease: (import 'lease.libsonnet'), - leaseSpec: (import 'leaseSpec.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/coordination/v1beta1/lease.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/coordination/v1beta1/lease.libsonnet deleted file mode 100644 index f3a9d0fdc067..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/coordination/v1beta1/lease.libsonnet +++ /dev/null @@ -1,69 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='lease', url='', help='Lease defines a lease concept.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Lease', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'coordination.k8s.io/v1beta1', - kind: 'Lease', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='LeaseSpec is a specification of a Lease.'), - spec: { - '#withAcquireTime':: d.fn(help='MicroTime is version of Time with microsecond level precision.', args=[d.arg(name='acquireTime', type=d.T.string)]), - withAcquireTime(acquireTime): { spec+: { acquireTime: acquireTime } }, - '#withHolderIdentity':: d.fn(help='holderIdentity contains the identity of the holder of a current lease.', args=[d.arg(name='holderIdentity', type=d.T.string)]), - withHolderIdentity(holderIdentity): { spec+: { holderIdentity: holderIdentity } }, - '#withLeaseDurationSeconds':: d.fn(help='leaseDurationSeconds is a duration that candidates for a lease need to wait to force acquire it. This is measure against time of last observed RenewTime.', args=[d.arg(name='leaseDurationSeconds', type=d.T.integer)]), - withLeaseDurationSeconds(leaseDurationSeconds): { spec+: { leaseDurationSeconds: leaseDurationSeconds } }, - '#withLeaseTransitions':: d.fn(help='leaseTransitions is the number of transitions of a lease between holders.', args=[d.arg(name='leaseTransitions', type=d.T.integer)]), - withLeaseTransitions(leaseTransitions): { spec+: { leaseTransitions: leaseTransitions } }, - '#withRenewTime':: d.fn(help='MicroTime is version of Time with microsecond level precision.', args=[d.arg(name='renewTime', type=d.T.string)]), - withRenewTime(renewTime): { spec+: { renewTime: renewTime } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/coordination/v1beta1/leaseSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/coordination/v1beta1/leaseSpec.libsonnet deleted file mode 100644 index ee0180810580..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/coordination/v1beta1/leaseSpec.libsonnet +++ /dev/null @@ -1,16 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='leaseSpec', url='', help='LeaseSpec is a specification of a Lease.'), - '#withAcquireTime':: d.fn(help='MicroTime is version of Time with microsecond level precision.', args=[d.arg(name='acquireTime', type=d.T.string)]), - withAcquireTime(acquireTime): { acquireTime: acquireTime }, - '#withHolderIdentity':: d.fn(help='holderIdentity contains the identity of the holder of a current lease.', args=[d.arg(name='holderIdentity', type=d.T.string)]), - withHolderIdentity(holderIdentity): { holderIdentity: holderIdentity }, - '#withLeaseDurationSeconds':: d.fn(help='leaseDurationSeconds is a duration that candidates for a lease need to wait to force acquire it. This is measure against time of last observed RenewTime.', args=[d.arg(name='leaseDurationSeconds', type=d.T.integer)]), - withLeaseDurationSeconds(leaseDurationSeconds): { leaseDurationSeconds: leaseDurationSeconds }, - '#withLeaseTransitions':: d.fn(help='leaseTransitions is the number of transitions of a lease between holders.', args=[d.arg(name='leaseTransitions', type=d.T.integer)]), - withLeaseTransitions(leaseTransitions): { leaseTransitions: leaseTransitions }, - '#withRenewTime':: d.fn(help='MicroTime is version of Time with microsecond level precision.', args=[d.arg(name='renewTime', type=d.T.string)]), - withRenewTime(renewTime): { renewTime: renewTime }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/coordination/v1beta1/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/coordination/v1beta1/main.libsonnet deleted file mode 100644 index 12f302098451..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/coordination/v1beta1/main.libsonnet +++ /dev/null @@ -1,6 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1beta1', url='', help=''), - lease: (import 'lease.libsonnet'), - leaseSpec: (import 'leaseSpec.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/main.libsonnet deleted file mode 100644 index 54730e54cbe0..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/main.libsonnet +++ /dev/null @@ -1,5 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='core', url='', help=''), - v1: (import 'v1/main.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/affinity.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/affinity.libsonnet deleted file mode 100644 index 5ccef20392c4..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/affinity.libsonnet +++ /dev/null @@ -1,42 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='affinity', url='', help='Affinity is a group of affinity scheduling rules.'), - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } }, - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } }, - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } }, - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/attachedVolume.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/attachedVolume.libsonnet deleted file mode 100644 index d7b58684fd91..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/attachedVolume.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='attachedVolume', url='', help='AttachedVolume describes a volume attached to a node'), - '#withDevicePath':: d.fn(help='DevicePath represents the device path where the volume should be available', args=[d.arg(name='devicePath', type=d.T.string)]), - withDevicePath(devicePath): { devicePath: devicePath }, - '#withName':: d.fn(help='Name of the attached volume', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/awsElasticBlockStoreVolumeSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/awsElasticBlockStoreVolumeSource.libsonnet deleted file mode 100644 index fd46e6b96349..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/awsElasticBlockStoreVolumeSource.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='awsElasticBlockStoreVolumeSource', url='', help='Represents a Persistent Disk resource in AWS.\n\nAn AWS EBS disk must exist before mounting to a container. The disk must also be in the same AWS zone as the kubelet. An AWS EBS disk can only be mounted as read/write once. AWS EBS volumes support ownership management and SELinux relabeling.'), - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { fsType: fsType }, - '#withPartition':: d.fn(help='The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).', args=[d.arg(name='partition', type=d.T.integer)]), - withPartition(partition): { partition: partition }, - '#withReadOnly':: d.fn(help='Specify "true" to force and set the ReadOnly property in VolumeMounts to "true". If omitted, the default is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#withVolumeID':: d.fn(help='Unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore', args=[d.arg(name='volumeID', type=d.T.string)]), - withVolumeID(volumeID): { volumeID: volumeID }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/azureDiskVolumeSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/azureDiskVolumeSource.libsonnet deleted file mode 100644 index d64dc07e578d..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/azureDiskVolumeSource.libsonnet +++ /dev/null @@ -1,18 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='azureDiskVolumeSource', url='', help='AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.'), - '#withCachingMode':: d.fn(help='Host Caching mode: None, Read Only, Read Write.', args=[d.arg(name='cachingMode', type=d.T.string)]), - withCachingMode(cachingMode): { cachingMode: cachingMode }, - '#withDiskName':: d.fn(help='The Name of the data disk in the blob storage', args=[d.arg(name='diskName', type=d.T.string)]), - withDiskName(diskName): { diskName: diskName }, - '#withDiskURI':: d.fn(help='The URI the data disk in the blob storage', args=[d.arg(name='diskURI', type=d.T.string)]), - withDiskURI(diskURI): { diskURI: diskURI }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { fsType: fsType }, - '#withKind':: d.fn(help='Expected values Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { kind: kind }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/azureFilePersistentVolumeSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/azureFilePersistentVolumeSource.libsonnet deleted file mode 100644 index 1fa416dd6fba..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/azureFilePersistentVolumeSource.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='azureFilePersistentVolumeSource', url='', help='AzureFile represents an Azure File Service mount on the host and bind mount to the pod.'), - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#withSecretName':: d.fn(help='the name of secret that contains Azure Storage Account Name and Key', args=[d.arg(name='secretName', type=d.T.string)]), - withSecretName(secretName): { secretName: secretName }, - '#withSecretNamespace':: d.fn(help='the namespace of the secret that contains Azure Storage Account Name and Key default is the same as the Pod', args=[d.arg(name='secretNamespace', type=d.T.string)]), - withSecretNamespace(secretNamespace): { secretNamespace: secretNamespace }, - '#withShareName':: d.fn(help='Share Name', args=[d.arg(name='shareName', type=d.T.string)]), - withShareName(shareName): { shareName: shareName }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/azureFileVolumeSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/azureFileVolumeSource.libsonnet deleted file mode 100644 index 532767aa31a6..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/azureFileVolumeSource.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='azureFileVolumeSource', url='', help='AzureFile represents an Azure File Service mount on the host and bind mount to the pod.'), - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#withSecretName':: d.fn(help='the name of secret that contains Azure Storage Account Name and Key', args=[d.arg(name='secretName', type=d.T.string)]), - withSecretName(secretName): { secretName: secretName }, - '#withShareName':: d.fn(help='Share Name', args=[d.arg(name='shareName', type=d.T.string)]), - withShareName(shareName): { shareName: shareName }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/binding.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/binding.libsonnet deleted file mode 100644 index 457ff30051f8..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/binding.libsonnet +++ /dev/null @@ -1,73 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='binding', url='', help='Binding ties one object to another; for example, a pod is bound to a node by a scheduler. Deprecated in 1.7, please use the bindings subresource of pods instead.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Binding', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'v1', - kind: 'Binding', - } + self.metadata.withName(name=name), - '#target':: d.obj(help='ObjectReference contains enough information to let you inspect or modify the referred object.'), - target: { - '#withApiVersion':: d.fn(help='API version of the referent.', args=[d.arg(name='apiVersion', type=d.T.string)]), - withApiVersion(apiVersion): { target+: { apiVersion: apiVersion } }, - '#withFieldPath':: d.fn(help='If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { target+: { fieldPath: fieldPath } }, - '#withKind':: d.fn(help='Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { target+: { kind: kind } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { target+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { target+: { namespace: namespace } }, - '#withResourceVersion':: d.fn(help='Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { target+: { resourceVersion: resourceVersion } }, - '#withUid':: d.fn(help='UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { target+: { uid: uid } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/capabilities.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/capabilities.libsonnet deleted file mode 100644 index 47ab90775ef5..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/capabilities.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='capabilities', url='', help='Adds and removes POSIX capabilities from running containers.'), - '#withAdd':: d.fn(help='Added capabilities', args=[d.arg(name='add', type=d.T.array)]), - withAdd(add): { add: if std.isArray(v=add) then add else [add] }, - '#withAddMixin':: d.fn(help='Added capabilities\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='add', type=d.T.array)]), - withAddMixin(add): { add+: if std.isArray(v=add) then add else [add] }, - '#withDrop':: d.fn(help='Removed capabilities', args=[d.arg(name='drop', type=d.T.array)]), - withDrop(drop): { drop: if std.isArray(v=drop) then drop else [drop] }, - '#withDropMixin':: d.fn(help='Removed capabilities\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='drop', type=d.T.array)]), - withDropMixin(drop): { drop+: if std.isArray(v=drop) then drop else [drop] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/cephFSPersistentVolumeSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/cephFSPersistentVolumeSource.libsonnet deleted file mode 100644 index 649c12660541..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/cephFSPersistentVolumeSource.libsonnet +++ /dev/null @@ -1,25 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='cephFSPersistentVolumeSource', url='', help='Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling.'), - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { secretRef+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { secretRef+: { namespace: namespace } }, - }, - '#withMonitors':: d.fn(help='Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitors(monitors): { monitors: if std.isArray(v=monitors) then monitors else [monitors] }, - '#withMonitorsMixin':: d.fn(help='Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitorsMixin(monitors): { monitors+: if std.isArray(v=monitors) then monitors else [monitors] }, - '#withPath':: d.fn(help='Optional: Used as the mounted root, rather than the full Ceph tree, default is /', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { path: path }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#withSecretFile':: d.fn(help='Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='secretFile', type=d.T.string)]), - withSecretFile(secretFile): { secretFile: secretFile }, - '#withUser':: d.fn(help='Optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { user: user }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/cephFSVolumeSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/cephFSVolumeSource.libsonnet deleted file mode 100644 index e1c6165fbe8b..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/cephFSVolumeSource.libsonnet +++ /dev/null @@ -1,23 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='cephFSVolumeSource', url='', help='Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling.'), - '#secretRef':: d.obj(help='LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.'), - secretRef: { - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { secretRef+: { name: name } }, - }, - '#withMonitors':: d.fn(help='Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitors(monitors): { monitors: if std.isArray(v=monitors) then monitors else [monitors] }, - '#withMonitorsMixin':: d.fn(help='Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitorsMixin(monitors): { monitors+: if std.isArray(v=monitors) then monitors else [monitors] }, - '#withPath':: d.fn(help='Optional: Used as the mounted root, rather than the full Ceph tree, default is /', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { path: path }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#withSecretFile':: d.fn(help='Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='secretFile', type=d.T.string)]), - withSecretFile(secretFile): { secretFile: secretFile }, - '#withUser':: d.fn(help='Optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { user: user }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/cinderPersistentVolumeSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/cinderPersistentVolumeSource.libsonnet deleted file mode 100644 index 81fda33c0dc2..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/cinderPersistentVolumeSource.libsonnet +++ /dev/null @@ -1,19 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='cinderPersistentVolumeSource', url='', help='Represents a cinder volume resource in Openstack. A Cinder volume must exist before mounting to a container. The volume must also be in the same region as the kubelet. Cinder volumes support ownership management and SELinux relabeling.'), - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { secretRef+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { secretRef+: { namespace: namespace } }, - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { fsType: fsType }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#withVolumeID':: d.fn(help='volume id used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md', args=[d.arg(name='volumeID', type=d.T.string)]), - withVolumeID(volumeID): { volumeID: volumeID }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/cinderVolumeSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/cinderVolumeSource.libsonnet deleted file mode 100644 index 037f276d41a9..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/cinderVolumeSource.libsonnet +++ /dev/null @@ -1,17 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='cinderVolumeSource', url='', help='Represents a cinder volume resource in Openstack. A Cinder volume must exist before mounting to a container. The volume must also be in the same region as the kubelet. Cinder volumes support ownership management and SELinux relabeling.'), - '#secretRef':: d.obj(help='LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.'), - secretRef: { - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { secretRef+: { name: name } }, - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { fsType: fsType }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#withVolumeID':: d.fn(help='volume id used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md', args=[d.arg(name='volumeID', type=d.T.string)]), - withVolumeID(volumeID): { volumeID: volumeID }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/clientIPConfig.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/clientIPConfig.libsonnet deleted file mode 100644 index 8300076641df..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/clientIPConfig.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='clientIPConfig', url='', help='ClientIPConfig represents the configurations of Client IP based session affinity.'), - '#withTimeoutSeconds':: d.fn(help='timeoutSeconds specifies the seconds of ClientIP type session sticky time. The value must be >0 && <=86400(for 1 day) if ServiceAffinity == "ClientIP". Default value is 10800(for 3 hours).', args=[d.arg(name='timeoutSeconds', type=d.T.integer)]), - withTimeoutSeconds(timeoutSeconds): { timeoutSeconds: timeoutSeconds }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/componentCondition.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/componentCondition.libsonnet deleted file mode 100644 index dec59d66ddbf..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/componentCondition.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='componentCondition', url='', help='Information about the condition of a component.'), - '#withError':: d.fn(help='Condition error code for a component. For example, a health check error code.', args=[d.arg(name='err', type=d.T.string)]), - withError(err): { 'error': err }, - '#withMessage':: d.fn(help='Message about the condition for a component. For example, information about a health check.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withType':: d.fn(help='Type of condition for a component. Valid value: "Healthy"', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/componentStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/componentStatus.libsonnet deleted file mode 100644 index aab5b89e4d01..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/componentStatus.libsonnet +++ /dev/null @@ -1,60 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='componentStatus', url='', help='ComponentStatus (and ComponentStatusList) holds the cluster validation info. Deprecated: This API is deprecated in v1.19+'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Componentstatus', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'v1', - kind: 'ComponentStatus', - } + self.metadata.withName(name=name), - '#withConditions':: d.fn(help='List of component conditions observed', args=[d.arg(name='conditions', type=d.T.array)]), - withConditions(conditions): { conditions: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withConditionsMixin':: d.fn(help='List of component conditions observed\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='conditions', type=d.T.array)]), - withConditionsMixin(conditions): { conditions+: if std.isArray(v=conditions) then conditions else [conditions] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/configMap.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/configMap.libsonnet deleted file mode 100644 index b0e524c196d5..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/configMap.libsonnet +++ /dev/null @@ -1,66 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='configMap', url='', help='ConfigMap holds configuration data for pods to consume.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Configmap', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'v1', - kind: 'ConfigMap', - } + self.metadata.withName(name=name), - '#withBinaryData':: d.fn(help="BinaryData contains the binary data. Each key must consist of alphanumeric characters, '-', '_' or '.'. BinaryData can contain byte sequences that are not in the UTF-8 range. The keys stored in BinaryData must not overlap with the ones in the Data field, this is enforced during validation process. Using this field will require 1.10+ apiserver and kubelet.", args=[d.arg(name='binaryData', type=d.T.object)]), - withBinaryData(binaryData): { binaryData: binaryData }, - '#withBinaryDataMixin':: d.fn(help="BinaryData contains the binary data. Each key must consist of alphanumeric characters, '-', '_' or '.'. BinaryData can contain byte sequences that are not in the UTF-8 range. The keys stored in BinaryData must not overlap with the ones in the Data field, this is enforced during validation process. Using this field will require 1.10+ apiserver and kubelet.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='binaryData', type=d.T.object)]), - withBinaryDataMixin(binaryData): { binaryData+: binaryData }, - '#withData':: d.fn(help="Data contains the configuration data. Each key must consist of alphanumeric characters, '-', '_' or '.'. Values with non-UTF-8 byte sequences must use the BinaryData field. The keys stored in Data must not overlap with the keys in the BinaryData field, this is enforced during validation process.", args=[d.arg(name='data', type=d.T.object)]), - withData(data): { data: data }, - '#withDataMixin':: d.fn(help="Data contains the configuration data. Each key must consist of alphanumeric characters, '-', '_' or '.'. Values with non-UTF-8 byte sequences must use the BinaryData field. The keys stored in Data must not overlap with the keys in the BinaryData field, this is enforced during validation process.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='data', type=d.T.object)]), - withDataMixin(data): { data+: data }, - '#withImmutable':: d.fn(help='Immutable, if set to true, ensures that data stored in the ConfigMap cannot be updated (only object metadata can be modified). If not set to true, the field can be modified at any time. Defaulted to nil.', args=[d.arg(name='immutable', type=d.T.boolean)]), - withImmutable(immutable): { immutable: immutable }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/configMapEnvSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/configMapEnvSource.libsonnet deleted file mode 100644 index c5754d683584..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/configMapEnvSource.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='configMapEnvSource', url='', help="ConfigMapEnvSource selects a ConfigMap to populate the environment variables with.\n\nThe contents of the target ConfigMap's Data field will represent the key-value pairs as environment variables."), - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withOptional':: d.fn(help='Specify whether the ConfigMap must be defined', args=[d.arg(name='optional', type=d.T.boolean)]), - withOptional(optional): { optional: optional }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/configMapKeySelector.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/configMapKeySelector.libsonnet deleted file mode 100644 index cf4ab20a2d5d..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/configMapKeySelector.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='configMapKeySelector', url='', help='Selects a key from a ConfigMap.'), - '#withKey':: d.fn(help='The key to select.', args=[d.arg(name='key', type=d.T.string)]), - withKey(key): { key: key }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withOptional':: d.fn(help='Specify whether the ConfigMap or its key must be defined', args=[d.arg(name='optional', type=d.T.boolean)]), - withOptional(optional): { optional: optional }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/configMapNodeConfigSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/configMapNodeConfigSource.libsonnet deleted file mode 100644 index 49344ee2f63c..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/configMapNodeConfigSource.libsonnet +++ /dev/null @@ -1,16 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='configMapNodeConfigSource', url='', help='ConfigMapNodeConfigSource contains the information to reference a ConfigMap as a config source for the Node.'), - '#withKubeletConfigKey':: d.fn(help='KubeletConfigKey declares which key of the referenced ConfigMap corresponds to the KubeletConfiguration structure This field is required in all cases.', args=[d.arg(name='kubeletConfigKey', type=d.T.string)]), - withKubeletConfigKey(kubeletConfigKey): { kubeletConfigKey: kubeletConfigKey }, - '#withName':: d.fn(help='Name is the metadata.name of the referenced ConfigMap. This field is required in all cases.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withNamespace':: d.fn(help='Namespace is the metadata.namespace of the referenced ConfigMap. This field is required in all cases.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { namespace: namespace }, - '#withResourceVersion':: d.fn(help='ResourceVersion is the metadata.ResourceVersion of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { resourceVersion: resourceVersion }, - '#withUid':: d.fn(help='UID is the metadata.UID of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { uid: uid }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/configMapProjection.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/configMapProjection.libsonnet deleted file mode 100644 index fa98ed4eb5fb..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/configMapProjection.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='configMapProjection', url='', help="Adapts a ConfigMap into a projected volume.\n\nThe contents of the target ConfigMap's Data field will be presented in a projected volume as files using the keys in the Data field as the file names, unless the items element is populated with specific mappings of keys to paths. Note that this is identical to a configmap volume source without the default mode."), - '#withItems':: d.fn(help="If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.", args=[d.arg(name='items', type=d.T.array)]), - withItems(items): { items: if std.isArray(v=items) then items else [items] }, - '#withItemsMixin':: d.fn(help="If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='items', type=d.T.array)]), - withItemsMixin(items): { items+: if std.isArray(v=items) then items else [items] }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withOptional':: d.fn(help='Specify whether the ConfigMap or its keys must be defined', args=[d.arg(name='optional', type=d.T.boolean)]), - withOptional(optional): { optional: optional }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/configMapVolumeSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/configMapVolumeSource.libsonnet deleted file mode 100644 index 31c8756e48e4..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/configMapVolumeSource.libsonnet +++ /dev/null @@ -1,16 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='configMapVolumeSource', url='', help="Adapts a ConfigMap into a volume.\n\nThe contents of the target ConfigMap's Data field will be presented in a volume as files using the keys in the Data field as the file names, unless the items element is populated with specific mappings of keys to paths. ConfigMap volumes support ownership management and SELinux relabeling."), - '#withDefaultMode':: d.fn(help='Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.', args=[d.arg(name='defaultMode', type=d.T.integer)]), - withDefaultMode(defaultMode): { defaultMode: defaultMode }, - '#withItems':: d.fn(help="If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.", args=[d.arg(name='items', type=d.T.array)]), - withItems(items): { items: if std.isArray(v=items) then items else [items] }, - '#withItemsMixin':: d.fn(help="If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='items', type=d.T.array)]), - withItemsMixin(items): { items+: if std.isArray(v=items) then items else [items] }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withOptional':: d.fn(help='Specify whether the ConfigMap or its keys must be defined', args=[d.arg(name='optional', type=d.T.boolean)]), - withOptional(optional): { optional: optional }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/container.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/container.libsonnet deleted file mode 100644 index bdee8babee81..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/container.libsonnet +++ /dev/null @@ -1,317 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='container', url='', help='A single application container that you want to run within a pod.'), - '#lifecycle':: d.obj(help='Lifecycle describes actions that the management system should take in response to container lifecycle events. For the PostStart and PreStop lifecycle handlers, management of the container blocks until the action is complete, unless the container process fails, in which case the handler is aborted.'), - lifecycle: { - '#postStart':: d.obj(help='Handler defines a specific action that should be taken'), - postStart: { - '#exec':: d.obj(help='ExecAction describes a "run in container" action.'), - exec: { - '#withCommand':: d.fn(help="Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.", args=[d.arg(name='command', type=d.T.array)]), - withCommand(command): { lifecycle+: { postStart+: { exec+: { command: if std.isArray(v=command) then command else [command] } } } }, - '#withCommandMixin':: d.fn(help="Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='command', type=d.T.array)]), - withCommandMixin(command): { lifecycle+: { postStart+: { exec+: { command+: if std.isArray(v=command) then command else [command] } } } }, - }, - '#httpGet':: d.obj(help='HTTPGetAction describes an action based on HTTP Get requests.'), - httpGet: { - '#withHost':: d.fn(help='Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { lifecycle+: { postStart+: { httpGet+: { host: host } } } }, - '#withHttpHeaders':: d.fn(help='Custom headers to set in the request. HTTP allows repeated headers.', args=[d.arg(name='httpHeaders', type=d.T.array)]), - withHttpHeaders(httpHeaders): { lifecycle+: { postStart+: { httpGet+: { httpHeaders: if std.isArray(v=httpHeaders) then httpHeaders else [httpHeaders] } } } }, - '#withHttpHeadersMixin':: d.fn(help='Custom headers to set in the request. HTTP allows repeated headers.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='httpHeaders', type=d.T.array)]), - withHttpHeadersMixin(httpHeaders): { lifecycle+: { postStart+: { httpGet+: { httpHeaders+: if std.isArray(v=httpHeaders) then httpHeaders else [httpHeaders] } } } }, - '#withPath':: d.fn(help='Path to access on the HTTP server.', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { lifecycle+: { postStart+: { httpGet+: { path: path } } } }, - '#withPort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='port', type=d.T.string)]), - withPort(port): { lifecycle+: { postStart+: { httpGet+: { port: port } } } }, - '#withScheme':: d.fn(help='Scheme to use for connecting to the host. Defaults to HTTP.', args=[d.arg(name='scheme', type=d.T.string)]), - withScheme(scheme): { lifecycle+: { postStart+: { httpGet+: { scheme: scheme } } } }, - }, - '#tcpSocket':: d.obj(help='TCPSocketAction describes an action based on opening a socket'), - tcpSocket: { - '#withHost':: d.fn(help='Optional: Host name to connect to, defaults to the pod IP.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { lifecycle+: { postStart+: { tcpSocket+: { host: host } } } }, - '#withPort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='port', type=d.T.string)]), - withPort(port): { lifecycle+: { postStart+: { tcpSocket+: { port: port } } } }, - }, - }, - '#preStop':: d.obj(help='Handler defines a specific action that should be taken'), - preStop: { - '#exec':: d.obj(help='ExecAction describes a "run in container" action.'), - exec: { - '#withCommand':: d.fn(help="Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.", args=[d.arg(name='command', type=d.T.array)]), - withCommand(command): { lifecycle+: { preStop+: { exec+: { command: if std.isArray(v=command) then command else [command] } } } }, - '#withCommandMixin':: d.fn(help="Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='command', type=d.T.array)]), - withCommandMixin(command): { lifecycle+: { preStop+: { exec+: { command+: if std.isArray(v=command) then command else [command] } } } }, - }, - '#httpGet':: d.obj(help='HTTPGetAction describes an action based on HTTP Get requests.'), - httpGet: { - '#withHost':: d.fn(help='Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { lifecycle+: { preStop+: { httpGet+: { host: host } } } }, - '#withHttpHeaders':: d.fn(help='Custom headers to set in the request. HTTP allows repeated headers.', args=[d.arg(name='httpHeaders', type=d.T.array)]), - withHttpHeaders(httpHeaders): { lifecycle+: { preStop+: { httpGet+: { httpHeaders: if std.isArray(v=httpHeaders) then httpHeaders else [httpHeaders] } } } }, - '#withHttpHeadersMixin':: d.fn(help='Custom headers to set in the request. HTTP allows repeated headers.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='httpHeaders', type=d.T.array)]), - withHttpHeadersMixin(httpHeaders): { lifecycle+: { preStop+: { httpGet+: { httpHeaders+: if std.isArray(v=httpHeaders) then httpHeaders else [httpHeaders] } } } }, - '#withPath':: d.fn(help='Path to access on the HTTP server.', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { lifecycle+: { preStop+: { httpGet+: { path: path } } } }, - '#withPort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='port', type=d.T.string)]), - withPort(port): { lifecycle+: { preStop+: { httpGet+: { port: port } } } }, - '#withScheme':: d.fn(help='Scheme to use for connecting to the host. Defaults to HTTP.', args=[d.arg(name='scheme', type=d.T.string)]), - withScheme(scheme): { lifecycle+: { preStop+: { httpGet+: { scheme: scheme } } } }, - }, - '#tcpSocket':: d.obj(help='TCPSocketAction describes an action based on opening a socket'), - tcpSocket: { - '#withHost':: d.fn(help='Optional: Host name to connect to, defaults to the pod IP.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { lifecycle+: { preStop+: { tcpSocket+: { host: host } } } }, - '#withPort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='port', type=d.T.string)]), - withPort(port): { lifecycle+: { preStop+: { tcpSocket+: { port: port } } } }, - }, - }, - }, - '#livenessProbe':: d.obj(help='Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.'), - livenessProbe: { - '#exec':: d.obj(help='ExecAction describes a "run in container" action.'), - exec: { - '#withCommand':: d.fn(help="Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.", args=[d.arg(name='command', type=d.T.array)]), - withCommand(command): { livenessProbe+: { exec+: { command: if std.isArray(v=command) then command else [command] } } }, - '#withCommandMixin':: d.fn(help="Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='command', type=d.T.array)]), - withCommandMixin(command): { livenessProbe+: { exec+: { command+: if std.isArray(v=command) then command else [command] } } }, - }, - '#httpGet':: d.obj(help='HTTPGetAction describes an action based on HTTP Get requests.'), - httpGet: { - '#withHost':: d.fn(help='Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { livenessProbe+: { httpGet+: { host: host } } }, - '#withHttpHeaders':: d.fn(help='Custom headers to set in the request. HTTP allows repeated headers.', args=[d.arg(name='httpHeaders', type=d.T.array)]), - withHttpHeaders(httpHeaders): { livenessProbe+: { httpGet+: { httpHeaders: if std.isArray(v=httpHeaders) then httpHeaders else [httpHeaders] } } }, - '#withHttpHeadersMixin':: d.fn(help='Custom headers to set in the request. HTTP allows repeated headers.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='httpHeaders', type=d.T.array)]), - withHttpHeadersMixin(httpHeaders): { livenessProbe+: { httpGet+: { httpHeaders+: if std.isArray(v=httpHeaders) then httpHeaders else [httpHeaders] } } }, - '#withPath':: d.fn(help='Path to access on the HTTP server.', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { livenessProbe+: { httpGet+: { path: path } } }, - '#withPort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='port', type=d.T.string)]), - withPort(port): { livenessProbe+: { httpGet+: { port: port } } }, - '#withScheme':: d.fn(help='Scheme to use for connecting to the host. Defaults to HTTP.', args=[d.arg(name='scheme', type=d.T.string)]), - withScheme(scheme): { livenessProbe+: { httpGet+: { scheme: scheme } } }, - }, - '#tcpSocket':: d.obj(help='TCPSocketAction describes an action based on opening a socket'), - tcpSocket: { - '#withHost':: d.fn(help='Optional: Host name to connect to, defaults to the pod IP.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { livenessProbe+: { tcpSocket+: { host: host } } }, - '#withPort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='port', type=d.T.string)]), - withPort(port): { livenessProbe+: { tcpSocket+: { port: port } } }, - }, - '#withFailureThreshold':: d.fn(help='Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.', args=[d.arg(name='failureThreshold', type=d.T.integer)]), - withFailureThreshold(failureThreshold): { livenessProbe+: { failureThreshold: failureThreshold } }, - '#withInitialDelaySeconds':: d.fn(help='Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes', args=[d.arg(name='initialDelaySeconds', type=d.T.integer)]), - withInitialDelaySeconds(initialDelaySeconds): { livenessProbe+: { initialDelaySeconds: initialDelaySeconds } }, - '#withPeriodSeconds':: d.fn(help='How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.', args=[d.arg(name='periodSeconds', type=d.T.integer)]), - withPeriodSeconds(periodSeconds): { livenessProbe+: { periodSeconds: periodSeconds } }, - '#withSuccessThreshold':: d.fn(help='Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.', args=[d.arg(name='successThreshold', type=d.T.integer)]), - withSuccessThreshold(successThreshold): { livenessProbe+: { successThreshold: successThreshold } }, - '#withTerminationGracePeriodSeconds':: d.fn(help="Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is an alpha field and requires enabling ProbeTerminationGracePeriod feature gate.", args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { livenessProbe+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } }, - '#withTimeoutSeconds':: d.fn(help='Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes', args=[d.arg(name='timeoutSeconds', type=d.T.integer)]), - withTimeoutSeconds(timeoutSeconds): { livenessProbe+: { timeoutSeconds: timeoutSeconds } }, - }, - '#readinessProbe':: d.obj(help='Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.'), - readinessProbe: { - '#exec':: d.obj(help='ExecAction describes a "run in container" action.'), - exec: { - '#withCommand':: d.fn(help="Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.", args=[d.arg(name='command', type=d.T.array)]), - withCommand(command): { readinessProbe+: { exec+: { command: if std.isArray(v=command) then command else [command] } } }, - '#withCommandMixin':: d.fn(help="Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='command', type=d.T.array)]), - withCommandMixin(command): { readinessProbe+: { exec+: { command+: if std.isArray(v=command) then command else [command] } } }, - }, - '#httpGet':: d.obj(help='HTTPGetAction describes an action based on HTTP Get requests.'), - httpGet: { - '#withHost':: d.fn(help='Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { readinessProbe+: { httpGet+: { host: host } } }, - '#withHttpHeaders':: d.fn(help='Custom headers to set in the request. HTTP allows repeated headers.', args=[d.arg(name='httpHeaders', type=d.T.array)]), - withHttpHeaders(httpHeaders): { readinessProbe+: { httpGet+: { httpHeaders: if std.isArray(v=httpHeaders) then httpHeaders else [httpHeaders] } } }, - '#withHttpHeadersMixin':: d.fn(help='Custom headers to set in the request. HTTP allows repeated headers.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='httpHeaders', type=d.T.array)]), - withHttpHeadersMixin(httpHeaders): { readinessProbe+: { httpGet+: { httpHeaders+: if std.isArray(v=httpHeaders) then httpHeaders else [httpHeaders] } } }, - '#withPath':: d.fn(help='Path to access on the HTTP server.', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { readinessProbe+: { httpGet+: { path: path } } }, - '#withPort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='port', type=d.T.string)]), - withPort(port): { readinessProbe+: { httpGet+: { port: port } } }, - '#withScheme':: d.fn(help='Scheme to use for connecting to the host. Defaults to HTTP.', args=[d.arg(name='scheme', type=d.T.string)]), - withScheme(scheme): { readinessProbe+: { httpGet+: { scheme: scheme } } }, - }, - '#tcpSocket':: d.obj(help='TCPSocketAction describes an action based on opening a socket'), - tcpSocket: { - '#withHost':: d.fn(help='Optional: Host name to connect to, defaults to the pod IP.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { readinessProbe+: { tcpSocket+: { host: host } } }, - '#withPort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='port', type=d.T.string)]), - withPort(port): { readinessProbe+: { tcpSocket+: { port: port } } }, - }, - '#withFailureThreshold':: d.fn(help='Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.', args=[d.arg(name='failureThreshold', type=d.T.integer)]), - withFailureThreshold(failureThreshold): { readinessProbe+: { failureThreshold: failureThreshold } }, - '#withInitialDelaySeconds':: d.fn(help='Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes', args=[d.arg(name='initialDelaySeconds', type=d.T.integer)]), - withInitialDelaySeconds(initialDelaySeconds): { readinessProbe+: { initialDelaySeconds: initialDelaySeconds } }, - '#withPeriodSeconds':: d.fn(help='How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.', args=[d.arg(name='periodSeconds', type=d.T.integer)]), - withPeriodSeconds(periodSeconds): { readinessProbe+: { periodSeconds: periodSeconds } }, - '#withSuccessThreshold':: d.fn(help='Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.', args=[d.arg(name='successThreshold', type=d.T.integer)]), - withSuccessThreshold(successThreshold): { readinessProbe+: { successThreshold: successThreshold } }, - '#withTerminationGracePeriodSeconds':: d.fn(help="Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is an alpha field and requires enabling ProbeTerminationGracePeriod feature gate.", args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { readinessProbe+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } }, - '#withTimeoutSeconds':: d.fn(help='Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes', args=[d.arg(name='timeoutSeconds', type=d.T.integer)]), - withTimeoutSeconds(timeoutSeconds): { readinessProbe+: { timeoutSeconds: timeoutSeconds } }, - }, - '#resources':: d.obj(help='ResourceRequirements describes the compute resource requirements.'), - resources: { - '#withLimits':: d.fn(help='Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/', args=[d.arg(name='limits', type=d.T.object)]), - withLimits(limits): { resources+: { limits: limits } }, - '#withLimitsMixin':: d.fn(help='Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='limits', type=d.T.object)]), - withLimitsMixin(limits): { resources+: { limits+: limits } }, - '#withRequests':: d.fn(help='Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/', args=[d.arg(name='requests', type=d.T.object)]), - withRequests(requests): { resources+: { requests: requests } }, - '#withRequestsMixin':: d.fn(help='Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requests', type=d.T.object)]), - withRequestsMixin(requests): { resources+: { requests+: requests } }, - }, - '#securityContext':: d.obj(help='SecurityContext holds security configuration that will be applied to a container. Some fields are present in both SecurityContext and PodSecurityContext. When both are set, the values in SecurityContext take precedence.'), - securityContext: { - '#capabilities':: d.obj(help='Adds and removes POSIX capabilities from running containers.'), - capabilities: { - '#withAdd':: d.fn(help='Added capabilities', args=[d.arg(name='add', type=d.T.array)]), - withAdd(add): { securityContext+: { capabilities+: { add: if std.isArray(v=add) then add else [add] } } }, - '#withAddMixin':: d.fn(help='Added capabilities\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='add', type=d.T.array)]), - withAddMixin(add): { securityContext+: { capabilities+: { add+: if std.isArray(v=add) then add else [add] } } }, - '#withDrop':: d.fn(help='Removed capabilities', args=[d.arg(name='drop', type=d.T.array)]), - withDrop(drop): { securityContext+: { capabilities+: { drop: if std.isArray(v=drop) then drop else [drop] } } }, - '#withDropMixin':: d.fn(help='Removed capabilities\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='drop', type=d.T.array)]), - withDropMixin(drop): { securityContext+: { capabilities+: { drop+: if std.isArray(v=drop) then drop else [drop] } } }, - }, - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { securityContext+: { seLinuxOptions+: { level: level } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { securityContext+: { seLinuxOptions+: { role: role } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { securityContext+: { seLinuxOptions+: { type: type } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { securityContext+: { seLinuxOptions+: { user: user } } }, - }, - '#seccompProfile':: d.obj(help="SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set."), - seccompProfile: { - '#withLocalhostProfile':: d.fn(help="localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is 'Localhost'.", args=[d.arg(name='localhostProfile', type=d.T.string)]), - withLocalhostProfile(localhostProfile): { securityContext+: { seccompProfile+: { localhostProfile: localhostProfile } } }, - '#withType':: d.fn(help='type indicates which kind of seccomp profile will be applied. Valid options are:\n\nLocalhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { securityContext+: { seccompProfile+: { type: type } } }, - }, - '#windowsOptions':: d.obj(help='WindowsSecurityContextOptions contain Windows-specific options and credentials.'), - windowsOptions: { - '#withGmsaCredentialSpec':: d.fn(help='GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.', args=[d.arg(name='gmsaCredentialSpec', type=d.T.string)]), - withGmsaCredentialSpec(gmsaCredentialSpec): { securityContext+: { windowsOptions+: { gmsaCredentialSpec: gmsaCredentialSpec } } }, - '#withGmsaCredentialSpecName':: d.fn(help='GMSACredentialSpecName is the name of the GMSA credential spec to use.', args=[d.arg(name='gmsaCredentialSpecName', type=d.T.string)]), - withGmsaCredentialSpecName(gmsaCredentialSpecName): { securityContext+: { windowsOptions+: { gmsaCredentialSpecName: gmsaCredentialSpecName } } }, - '#withRunAsUserName':: d.fn(help='The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsUserName', type=d.T.string)]), - withRunAsUserName(runAsUserName): { securityContext+: { windowsOptions+: { runAsUserName: runAsUserName } } }, - }, - '#withAllowPrivilegeEscalation':: d.fn(help='AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN', args=[d.arg(name='allowPrivilegeEscalation', type=d.T.boolean)]), - withAllowPrivilegeEscalation(allowPrivilegeEscalation): { securityContext+: { allowPrivilegeEscalation: allowPrivilegeEscalation } }, - '#withPrivileged':: d.fn(help='Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false.', args=[d.arg(name='privileged', type=d.T.boolean)]), - withPrivileged(privileged): { securityContext+: { privileged: privileged } }, - '#withProcMount':: d.fn(help='procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled.', args=[d.arg(name='procMount', type=d.T.string)]), - withProcMount(procMount): { securityContext+: { procMount: procMount } }, - '#withReadOnlyRootFilesystem':: d.fn(help='Whether this container has a read-only root filesystem. Default is false.', args=[d.arg(name='readOnlyRootFilesystem', type=d.T.boolean)]), - withReadOnlyRootFilesystem(readOnlyRootFilesystem): { securityContext+: { readOnlyRootFilesystem: readOnlyRootFilesystem } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { securityContext+: { runAsGroup: runAsGroup } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { securityContext+: { runAsNonRoot: runAsNonRoot } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { securityContext+: { runAsUser: runAsUser } }, - }, - '#startupProbe':: d.obj(help='Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.'), - startupProbe: { - '#exec':: d.obj(help='ExecAction describes a "run in container" action.'), - exec: { - '#withCommand':: d.fn(help="Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.", args=[d.arg(name='command', type=d.T.array)]), - withCommand(command): { startupProbe+: { exec+: { command: if std.isArray(v=command) then command else [command] } } }, - '#withCommandMixin':: d.fn(help="Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='command', type=d.T.array)]), - withCommandMixin(command): { startupProbe+: { exec+: { command+: if std.isArray(v=command) then command else [command] } } }, - }, - '#httpGet':: d.obj(help='HTTPGetAction describes an action based on HTTP Get requests.'), - httpGet: { - '#withHost':: d.fn(help='Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { startupProbe+: { httpGet+: { host: host } } }, - '#withHttpHeaders':: d.fn(help='Custom headers to set in the request. HTTP allows repeated headers.', args=[d.arg(name='httpHeaders', type=d.T.array)]), - withHttpHeaders(httpHeaders): { startupProbe+: { httpGet+: { httpHeaders: if std.isArray(v=httpHeaders) then httpHeaders else [httpHeaders] } } }, - '#withHttpHeadersMixin':: d.fn(help='Custom headers to set in the request. HTTP allows repeated headers.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='httpHeaders', type=d.T.array)]), - withHttpHeadersMixin(httpHeaders): { startupProbe+: { httpGet+: { httpHeaders+: if std.isArray(v=httpHeaders) then httpHeaders else [httpHeaders] } } }, - '#withPath':: d.fn(help='Path to access on the HTTP server.', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { startupProbe+: { httpGet+: { path: path } } }, - '#withPort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='port', type=d.T.string)]), - withPort(port): { startupProbe+: { httpGet+: { port: port } } }, - '#withScheme':: d.fn(help='Scheme to use for connecting to the host. Defaults to HTTP.', args=[d.arg(name='scheme', type=d.T.string)]), - withScheme(scheme): { startupProbe+: { httpGet+: { scheme: scheme } } }, - }, - '#tcpSocket':: d.obj(help='TCPSocketAction describes an action based on opening a socket'), - tcpSocket: { - '#withHost':: d.fn(help='Optional: Host name to connect to, defaults to the pod IP.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { startupProbe+: { tcpSocket+: { host: host } } }, - '#withPort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='port', type=d.T.string)]), - withPort(port): { startupProbe+: { tcpSocket+: { port: port } } }, - }, - '#withFailureThreshold':: d.fn(help='Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.', args=[d.arg(name='failureThreshold', type=d.T.integer)]), - withFailureThreshold(failureThreshold): { startupProbe+: { failureThreshold: failureThreshold } }, - '#withInitialDelaySeconds':: d.fn(help='Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes', args=[d.arg(name='initialDelaySeconds', type=d.T.integer)]), - withInitialDelaySeconds(initialDelaySeconds): { startupProbe+: { initialDelaySeconds: initialDelaySeconds } }, - '#withPeriodSeconds':: d.fn(help='How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.', args=[d.arg(name='periodSeconds', type=d.T.integer)]), - withPeriodSeconds(periodSeconds): { startupProbe+: { periodSeconds: periodSeconds } }, - '#withSuccessThreshold':: d.fn(help='Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.', args=[d.arg(name='successThreshold', type=d.T.integer)]), - withSuccessThreshold(successThreshold): { startupProbe+: { successThreshold: successThreshold } }, - '#withTerminationGracePeriodSeconds':: d.fn(help="Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is an alpha field and requires enabling ProbeTerminationGracePeriod feature gate.", args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { startupProbe+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } }, - '#withTimeoutSeconds':: d.fn(help='Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes', args=[d.arg(name='timeoutSeconds', type=d.T.integer)]), - withTimeoutSeconds(timeoutSeconds): { startupProbe+: { timeoutSeconds: timeoutSeconds } }, - }, - '#withArgs':: d.fn(help="Arguments to the entrypoint. The docker image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", args=[d.arg(name='args', type=d.T.array)]), - withArgs(args): { args: if std.isArray(v=args) then args else [args] }, - '#withArgsMixin':: d.fn(help="Arguments to the entrypoint. The docker image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='args', type=d.T.array)]), - withArgsMixin(args): { args+: if std.isArray(v=args) then args else [args] }, - '#withCommand':: d.fn(help="Entrypoint array. Not executed within a shell. The docker image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", args=[d.arg(name='command', type=d.T.array)]), - withCommand(command): { command: if std.isArray(v=command) then command else [command] }, - '#withCommandMixin':: d.fn(help="Entrypoint array. Not executed within a shell. The docker image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='command', type=d.T.array)]), - withCommandMixin(command): { command+: if std.isArray(v=command) then command else [command] }, - '#withEnv':: d.fn(help='List of environment variables to set in the container. Cannot be updated.', args=[d.arg(name='env', type=d.T.array)]), - withEnv(env): { env: if std.isArray(v=env) then env else [env] }, - '#withEnvFrom':: d.fn(help='List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.', args=[d.arg(name='envFrom', type=d.T.array)]), - withEnvFrom(envFrom): { envFrom: if std.isArray(v=envFrom) then envFrom else [envFrom] }, - '#withEnvFromMixin':: d.fn(help='List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='envFrom', type=d.T.array)]), - withEnvFromMixin(envFrom): { envFrom+: if std.isArray(v=envFrom) then envFrom else [envFrom] }, - '#withEnvMixin':: d.fn(help='List of environment variables to set in the container. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='env', type=d.T.array)]), - withEnvMixin(env): { env+: if std.isArray(v=env) then env else [env] }, - '#withImage':: d.fn(help='Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets.', args=[d.arg(name='image', type=d.T.string)]), - withImage(image): { image: image }, - '#withImagePullPolicy':: d.fn(help='Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images', args=[d.arg(name='imagePullPolicy', type=d.T.string)]), - withImagePullPolicy(imagePullPolicy): { imagePullPolicy: imagePullPolicy }, - '#withName':: d.fn(help='Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withPorts':: d.fn(help='List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default "0.0.0.0" address inside a container will be accessible from the network. Cannot be updated.', args=[d.arg(name='ports', type=d.T.array)]), - withPorts(ports): { ports: if std.isArray(v=ports) then ports else [ports] }, - '#withPortsMixin':: d.fn(help='List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default "0.0.0.0" address inside a container will be accessible from the network. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ports', type=d.T.array)]), - withPortsMixin(ports): { ports+: if std.isArray(v=ports) then ports else [ports] }, - '#withStdin':: d.fn(help='Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false.', args=[d.arg(name='stdin', type=d.T.boolean)]), - withStdin(stdin): { stdin: stdin }, - '#withStdinOnce':: d.fn(help='Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false', args=[d.arg(name='stdinOnce', type=d.T.boolean)]), - withStdinOnce(stdinOnce): { stdinOnce: stdinOnce }, - '#withTerminationMessagePath':: d.fn(help="Optional: Path at which the file to which the container's termination message will be written is mounted into the container's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.", args=[d.arg(name='terminationMessagePath', type=d.T.string)]), - withTerminationMessagePath(terminationMessagePath): { terminationMessagePath: terminationMessagePath }, - '#withTerminationMessagePolicy':: d.fn(help='Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.', args=[d.arg(name='terminationMessagePolicy', type=d.T.string)]), - withTerminationMessagePolicy(terminationMessagePolicy): { terminationMessagePolicy: terminationMessagePolicy }, - '#withTty':: d.fn(help="Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.", args=[d.arg(name='tty', type=d.T.boolean)]), - withTty(tty): { tty: tty }, - '#withVolumeDevices':: d.fn(help='volumeDevices is the list of block devices to be used by the container.', args=[d.arg(name='volumeDevices', type=d.T.array)]), - withVolumeDevices(volumeDevices): { volumeDevices: if std.isArray(v=volumeDevices) then volumeDevices else [volumeDevices] }, - '#withVolumeDevicesMixin':: d.fn(help='volumeDevices is the list of block devices to be used by the container.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumeDevices', type=d.T.array)]), - withVolumeDevicesMixin(volumeDevices): { volumeDevices+: if std.isArray(v=volumeDevices) then volumeDevices else [volumeDevices] }, - '#withVolumeMounts':: d.fn(help="Pod volumes to mount into the container's filesystem. Cannot be updated.", args=[d.arg(name='volumeMounts', type=d.T.array)]), - withVolumeMounts(volumeMounts): { volumeMounts: if std.isArray(v=volumeMounts) then volumeMounts else [volumeMounts] }, - '#withVolumeMountsMixin':: d.fn(help="Pod volumes to mount into the container's filesystem. Cannot be updated.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='volumeMounts', type=d.T.array)]), - withVolumeMountsMixin(volumeMounts): { volumeMounts+: if std.isArray(v=volumeMounts) then volumeMounts else [volumeMounts] }, - '#withWorkingDir':: d.fn(help="Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.", args=[d.arg(name='workingDir', type=d.T.string)]), - withWorkingDir(workingDir): { workingDir: workingDir }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/containerImage.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/containerImage.libsonnet deleted file mode 100644 index 6d40fe0ac469..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/containerImage.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='containerImage', url='', help='Describe a container image'), - '#withNames':: d.fn(help='Names by which this image is known. e.g. ["k8s.gcr.io/hyperkube:v1.0.7", "dockerhub.io/google_containers/hyperkube:v1.0.7"]', args=[d.arg(name='names', type=d.T.array)]), - withNames(names): { names: if std.isArray(v=names) then names else [names] }, - '#withNamesMixin':: d.fn(help='Names by which this image is known. e.g. ["k8s.gcr.io/hyperkube:v1.0.7", "dockerhub.io/google_containers/hyperkube:v1.0.7"]\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='names', type=d.T.array)]), - withNamesMixin(names): { names+: if std.isArray(v=names) then names else [names] }, - '#withSizeBytes':: d.fn(help='The size of the image in bytes.', args=[d.arg(name='sizeBytes', type=d.T.integer)]), - withSizeBytes(sizeBytes): { sizeBytes: sizeBytes }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/containerPort.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/containerPort.libsonnet deleted file mode 100644 index 37b08ec37d39..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/containerPort.libsonnet +++ /dev/null @@ -1,16 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='containerPort', url='', help='ContainerPort represents a network port in a single container.'), - '#withContainerPort':: d.fn(help="Number of port to expose on the pod's IP address. This must be a valid port number, 0 < x < 65536.", args=[d.arg(name='containerPort', type=d.T.integer)]), - withContainerPort(containerPort): { containerPort: containerPort }, - '#withHostIP':: d.fn(help='What host IP to bind the external port to.', args=[d.arg(name='hostIP', type=d.T.string)]), - withHostIP(hostIP): { hostIP: hostIP }, - '#withHostPort':: d.fn(help='Number of port to expose on the host. If specified, this must be a valid port number, 0 < x < 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this.', args=[d.arg(name='hostPort', type=d.T.integer)]), - withHostPort(hostPort): { hostPort: hostPort }, - '#withName':: d.fn(help='If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withProtocol':: d.fn(help='Protocol for port. Must be UDP, TCP, or SCTP. Defaults to "TCP".', args=[d.arg(name='protocol', type=d.T.string)]), - withProtocol(protocol): { protocol: protocol }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/containerState.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/containerState.libsonnet deleted file mode 100644 index d2efec847763..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/containerState.libsonnet +++ /dev/null @@ -1,35 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='containerState', url='', help='ContainerState holds a possible state of container. Only one of its members may be specified. If none of them is specified, the default one is ContainerStateWaiting.'), - '#running':: d.obj(help='ContainerStateRunning is a running state of a container.'), - running: { - '#withStartedAt':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='startedAt', type=d.T.string)]), - withStartedAt(startedAt): { running+: { startedAt: startedAt } }, - }, - '#terminated':: d.obj(help='ContainerStateTerminated is a terminated state of a container.'), - terminated: { - '#withContainerID':: d.fn(help="Container's ID in the format 'docker://'", args=[d.arg(name='containerID', type=d.T.string)]), - withContainerID(containerID): { terminated+: { containerID: containerID } }, - '#withExitCode':: d.fn(help='Exit status from the last termination of the container', args=[d.arg(name='exitCode', type=d.T.integer)]), - withExitCode(exitCode): { terminated+: { exitCode: exitCode } }, - '#withFinishedAt':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='finishedAt', type=d.T.string)]), - withFinishedAt(finishedAt): { terminated+: { finishedAt: finishedAt } }, - '#withMessage':: d.fn(help='Message regarding the last termination of the container', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { terminated+: { message: message } }, - '#withReason':: d.fn(help='(brief) reason from the last termination of the container', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { terminated+: { reason: reason } }, - '#withSignal':: d.fn(help='Signal from the last termination of the container', args=[d.arg(name='signal', type=d.T.integer)]), - withSignal(signal): { terminated+: { signal: signal } }, - '#withStartedAt':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='startedAt', type=d.T.string)]), - withStartedAt(startedAt): { terminated+: { startedAt: startedAt } }, - }, - '#waiting':: d.obj(help='ContainerStateWaiting is a waiting state of a container.'), - waiting: { - '#withMessage':: d.fn(help='Message regarding why the container is not yet running.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { waiting+: { message: message } }, - '#withReason':: d.fn(help='(brief) reason the container is not yet running.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { waiting+: { reason: reason } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/containerStateRunning.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/containerStateRunning.libsonnet deleted file mode 100644 index 5eb949918bea..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/containerStateRunning.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='containerStateRunning', url='', help='ContainerStateRunning is a running state of a container.'), - '#withStartedAt':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='startedAt', type=d.T.string)]), - withStartedAt(startedAt): { startedAt: startedAt }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/containerStateTerminated.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/containerStateTerminated.libsonnet deleted file mode 100644 index 95d1470e779b..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/containerStateTerminated.libsonnet +++ /dev/null @@ -1,20 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='containerStateTerminated', url='', help='ContainerStateTerminated is a terminated state of a container.'), - '#withContainerID':: d.fn(help="Container's ID in the format 'docker://'", args=[d.arg(name='containerID', type=d.T.string)]), - withContainerID(containerID): { containerID: containerID }, - '#withExitCode':: d.fn(help='Exit status from the last termination of the container', args=[d.arg(name='exitCode', type=d.T.integer)]), - withExitCode(exitCode): { exitCode: exitCode }, - '#withFinishedAt':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='finishedAt', type=d.T.string)]), - withFinishedAt(finishedAt): { finishedAt: finishedAt }, - '#withMessage':: d.fn(help='Message regarding the last termination of the container', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withReason':: d.fn(help='(brief) reason from the last termination of the container', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#withSignal':: d.fn(help='Signal from the last termination of the container', args=[d.arg(name='signal', type=d.T.integer)]), - withSignal(signal): { signal: signal }, - '#withStartedAt':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='startedAt', type=d.T.string)]), - withStartedAt(startedAt): { startedAt: startedAt }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/containerStateWaiting.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/containerStateWaiting.libsonnet deleted file mode 100644 index 0b2c1d1be150..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/containerStateWaiting.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='containerStateWaiting', url='', help='ContainerStateWaiting is a waiting state of a container.'), - '#withMessage':: d.fn(help='Message regarding why the container is not yet running.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withReason':: d.fn(help='(brief) reason the container is not yet running.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/containerStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/containerStatus.libsonnet deleted file mode 100644 index 67d387a0af95..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/containerStatus.libsonnet +++ /dev/null @@ -1,84 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='containerStatus', url='', help='ContainerStatus contains details for the current status of this container.'), - '#lastState':: d.obj(help='ContainerState holds a possible state of container. Only one of its members may be specified. If none of them is specified, the default one is ContainerStateWaiting.'), - lastState: { - '#running':: d.obj(help='ContainerStateRunning is a running state of a container.'), - running: { - '#withStartedAt':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='startedAt', type=d.T.string)]), - withStartedAt(startedAt): { lastState+: { running+: { startedAt: startedAt } } }, - }, - '#terminated':: d.obj(help='ContainerStateTerminated is a terminated state of a container.'), - terminated: { - '#withContainerID':: d.fn(help="Container's ID in the format 'docker://'", args=[d.arg(name='containerID', type=d.T.string)]), - withContainerID(containerID): { lastState+: { terminated+: { containerID: containerID } } }, - '#withExitCode':: d.fn(help='Exit status from the last termination of the container', args=[d.arg(name='exitCode', type=d.T.integer)]), - withExitCode(exitCode): { lastState+: { terminated+: { exitCode: exitCode } } }, - '#withFinishedAt':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='finishedAt', type=d.T.string)]), - withFinishedAt(finishedAt): { lastState+: { terminated+: { finishedAt: finishedAt } } }, - '#withMessage':: d.fn(help='Message regarding the last termination of the container', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { lastState+: { terminated+: { message: message } } }, - '#withReason':: d.fn(help='(brief) reason from the last termination of the container', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { lastState+: { terminated+: { reason: reason } } }, - '#withSignal':: d.fn(help='Signal from the last termination of the container', args=[d.arg(name='signal', type=d.T.integer)]), - withSignal(signal): { lastState+: { terminated+: { signal: signal } } }, - '#withStartedAt':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='startedAt', type=d.T.string)]), - withStartedAt(startedAt): { lastState+: { terminated+: { startedAt: startedAt } } }, - }, - '#waiting':: d.obj(help='ContainerStateWaiting is a waiting state of a container.'), - waiting: { - '#withMessage':: d.fn(help='Message regarding why the container is not yet running.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { lastState+: { waiting+: { message: message } } }, - '#withReason':: d.fn(help='(brief) reason the container is not yet running.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { lastState+: { waiting+: { reason: reason } } }, - }, - }, - '#state':: d.obj(help='ContainerState holds a possible state of container. Only one of its members may be specified. If none of them is specified, the default one is ContainerStateWaiting.'), - state: { - '#running':: d.obj(help='ContainerStateRunning is a running state of a container.'), - running: { - '#withStartedAt':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='startedAt', type=d.T.string)]), - withStartedAt(startedAt): { state+: { running+: { startedAt: startedAt } } }, - }, - '#terminated':: d.obj(help='ContainerStateTerminated is a terminated state of a container.'), - terminated: { - '#withContainerID':: d.fn(help="Container's ID in the format 'docker://'", args=[d.arg(name='containerID', type=d.T.string)]), - withContainerID(containerID): { state+: { terminated+: { containerID: containerID } } }, - '#withExitCode':: d.fn(help='Exit status from the last termination of the container', args=[d.arg(name='exitCode', type=d.T.integer)]), - withExitCode(exitCode): { state+: { terminated+: { exitCode: exitCode } } }, - '#withFinishedAt':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='finishedAt', type=d.T.string)]), - withFinishedAt(finishedAt): { state+: { terminated+: { finishedAt: finishedAt } } }, - '#withMessage':: d.fn(help='Message regarding the last termination of the container', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { state+: { terminated+: { message: message } } }, - '#withReason':: d.fn(help='(brief) reason from the last termination of the container', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { state+: { terminated+: { reason: reason } } }, - '#withSignal':: d.fn(help='Signal from the last termination of the container', args=[d.arg(name='signal', type=d.T.integer)]), - withSignal(signal): { state+: { terminated+: { signal: signal } } }, - '#withStartedAt':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='startedAt', type=d.T.string)]), - withStartedAt(startedAt): { state+: { terminated+: { startedAt: startedAt } } }, - }, - '#waiting':: d.obj(help='ContainerStateWaiting is a waiting state of a container.'), - waiting: { - '#withMessage':: d.fn(help='Message regarding why the container is not yet running.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { state+: { waiting+: { message: message } } }, - '#withReason':: d.fn(help='(brief) reason the container is not yet running.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { state+: { waiting+: { reason: reason } } }, - }, - }, - '#withContainerID':: d.fn(help="Container's ID in the format 'docker://'.", args=[d.arg(name='containerID', type=d.T.string)]), - withContainerID(containerID): { containerID: containerID }, - '#withImage':: d.fn(help='The image the container is running. More info: https://kubernetes.io/docs/concepts/containers/images', args=[d.arg(name='image', type=d.T.string)]), - withImage(image): { image: image }, - '#withImageID':: d.fn(help="ImageID of the container's image.", args=[d.arg(name='imageID', type=d.T.string)]), - withImageID(imageID): { imageID: imageID }, - '#withName':: d.fn(help='This must be a DNS_LABEL. Each container in a pod must have a unique name. Cannot be updated.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withReady':: d.fn(help='Specifies whether the container has passed its readiness probe.', args=[d.arg(name='ready', type=d.T.boolean)]), - withReady(ready): { ready: ready }, - '#withRestartCount':: d.fn(help='The number of times the container has been restarted, currently based on the number of dead containers that have not yet been removed. Note that this is calculated from dead containers. But those containers are subject to garbage collection. This value will get capped at 5 by GC.', args=[d.arg(name='restartCount', type=d.T.integer)]), - withRestartCount(restartCount): { restartCount: restartCount }, - '#withStarted':: d.fn(help='Specifies whether the container has passed its startup probe. Initialized as false, becomes true after startupProbe is considered successful. Resets to false when the container is restarted, or if kubelet loses state temporarily. Is always true when no startupProbe is defined.', args=[d.arg(name='started', type=d.T.boolean)]), - withStarted(started): { started: started }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/csiPersistentVolumeSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/csiPersistentVolumeSource.libsonnet deleted file mode 100644 index af740572f9ca..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/csiPersistentVolumeSource.libsonnet +++ /dev/null @@ -1,46 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='csiPersistentVolumeSource', url='', help='Represents storage that is managed by an external CSI volume driver (Beta feature)'), - '#controllerExpandSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - controllerExpandSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { controllerExpandSecretRef+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { controllerExpandSecretRef+: { namespace: namespace } }, - }, - '#controllerPublishSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - controllerPublishSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { controllerPublishSecretRef+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { controllerPublishSecretRef+: { namespace: namespace } }, - }, - '#nodePublishSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - nodePublishSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { nodePublishSecretRef+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { nodePublishSecretRef+: { namespace: namespace } }, - }, - '#nodeStageSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - nodeStageSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { nodeStageSecretRef+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { nodeStageSecretRef+: { namespace: namespace } }, - }, - '#withDriver':: d.fn(help='Driver is the name of the driver to use for this volume. Required.', args=[d.arg(name='driver', type=d.T.string)]), - withDriver(driver): { driver: driver }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs".', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { fsType: fsType }, - '#withReadOnly':: d.fn(help='Optional: The value to pass to ControllerPublishVolumeRequest. Defaults to false (read/write).', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#withVolumeAttributes':: d.fn(help='Attributes of the volume to publish.', args=[d.arg(name='volumeAttributes', type=d.T.object)]), - withVolumeAttributes(volumeAttributes): { volumeAttributes: volumeAttributes }, - '#withVolumeAttributesMixin':: d.fn(help='Attributes of the volume to publish.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumeAttributes', type=d.T.object)]), - withVolumeAttributesMixin(volumeAttributes): { volumeAttributes+: volumeAttributes }, - '#withVolumeHandle':: d.fn(help='VolumeHandle is the unique volume name returned by the CSI volume plugin’s CreateVolume to refer to the volume on all subsequent calls. Required.', args=[d.arg(name='volumeHandle', type=d.T.string)]), - withVolumeHandle(volumeHandle): { volumeHandle: volumeHandle }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/csiVolumeSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/csiVolumeSource.libsonnet deleted file mode 100644 index 6291fa787e69..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/csiVolumeSource.libsonnet +++ /dev/null @@ -1,21 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='csiVolumeSource', url='', help='Represents a source location of a volume to mount, managed by an external CSI driver'), - '#nodePublishSecretRef':: d.obj(help='LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.'), - nodePublishSecretRef: { - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { nodePublishSecretRef+: { name: name } }, - }, - '#withDriver':: d.fn(help='Driver is the name of the CSI driver that handles this volume. Consult with your admin for the correct name as registered in the cluster.', args=[d.arg(name='driver', type=d.T.string)]), - withDriver(driver): { driver: driver }, - '#withFsType':: d.fn(help='Filesystem type to mount. Ex. "ext4", "xfs", "ntfs". If not provided, the empty value is passed to the associated CSI driver which will determine the default filesystem to apply.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { fsType: fsType }, - '#withReadOnly':: d.fn(help='Specifies a read-only configuration for the volume. Defaults to false (read/write).', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#withVolumeAttributes':: d.fn(help="VolumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values.", args=[d.arg(name='volumeAttributes', type=d.T.object)]), - withVolumeAttributes(volumeAttributes): { volumeAttributes: volumeAttributes }, - '#withVolumeAttributesMixin':: d.fn(help="VolumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='volumeAttributes', type=d.T.object)]), - withVolumeAttributesMixin(volumeAttributes): { volumeAttributes+: volumeAttributes }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/daemonEndpoint.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/daemonEndpoint.libsonnet deleted file mode 100644 index 229f9950cf5f..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/daemonEndpoint.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='daemonEndpoint', url='', help='DaemonEndpoint contains information about a single Daemon endpoint.'), - '#withPort':: d.fn(help='Port number of the given endpoint.', args=[d.arg(name='port', type=d.T.integer)]), - withPort(port): { port: port }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/downwardAPIProjection.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/downwardAPIProjection.libsonnet deleted file mode 100644 index 2981dd5858bf..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/downwardAPIProjection.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='downwardAPIProjection', url='', help='Represents downward API info for projecting into a projected volume. Note that this is identical to a downwardAPI volume source without the default mode.'), - '#withItems':: d.fn(help='Items is a list of DownwardAPIVolume file', args=[d.arg(name='items', type=d.T.array)]), - withItems(items): { items: if std.isArray(v=items) then items else [items] }, - '#withItemsMixin':: d.fn(help='Items is a list of DownwardAPIVolume file\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='items', type=d.T.array)]), - withItemsMixin(items): { items+: if std.isArray(v=items) then items else [items] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/downwardAPIVolumeFile.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/downwardAPIVolumeFile.libsonnet deleted file mode 100644 index 13e0b54f025f..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/downwardAPIVolumeFile.libsonnet +++ /dev/null @@ -1,26 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='downwardAPIVolumeFile', url='', help='DownwardAPIVolumeFile represents information to create the file containing the pod field'), - '#fieldRef':: d.obj(help='ObjectFieldSelector selects an APIVersioned field of an object.'), - fieldRef: { - '#withApiVersion':: d.fn(help='Version of the schema the FieldPath is written in terms of, defaults to "v1".', args=[d.arg(name='apiVersion', type=d.T.string)]), - withApiVersion(apiVersion): { fieldRef+: { apiVersion: apiVersion } }, - '#withFieldPath':: d.fn(help='Path of the field to select in the specified API version.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { fieldRef+: { fieldPath: fieldPath } }, - }, - '#resourceFieldRef':: d.obj(help='ResourceFieldSelector represents container resources (cpu, memory) and their output format'), - resourceFieldRef: { - '#withContainerName':: d.fn(help='Container name: required for volumes, optional for env vars', args=[d.arg(name='containerName', type=d.T.string)]), - withContainerName(containerName): { resourceFieldRef+: { containerName: containerName } }, - '#withDivisor':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='divisor', type=d.T.string)]), - withDivisor(divisor): { resourceFieldRef+: { divisor: divisor } }, - '#withResource':: d.fn(help='Required: resource to select', args=[d.arg(name='resource', type=d.T.string)]), - withResource(resource): { resourceFieldRef+: { resource: resource } }, - }, - '#withMode':: d.fn(help='Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.', args=[d.arg(name='mode', type=d.T.integer)]), - withMode(mode): { mode: mode }, - '#withPath':: d.fn(help="Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'", args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { path: path }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/downwardAPIVolumeSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/downwardAPIVolumeSource.libsonnet deleted file mode 100644 index 5791b13b019d..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/downwardAPIVolumeSource.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='downwardAPIVolumeSource', url='', help='DownwardAPIVolumeSource represents a volume containing downward API info. Downward API volumes support ownership management and SELinux relabeling.'), - '#withDefaultMode':: d.fn(help='Optional: mode bits to use on created files by default. Must be a Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.', args=[d.arg(name='defaultMode', type=d.T.integer)]), - withDefaultMode(defaultMode): { defaultMode: defaultMode }, - '#withItems':: d.fn(help='Items is a list of downward API volume file', args=[d.arg(name='items', type=d.T.array)]), - withItems(items): { items: if std.isArray(v=items) then items else [items] }, - '#withItemsMixin':: d.fn(help='Items is a list of downward API volume file\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='items', type=d.T.array)]), - withItemsMixin(items): { items+: if std.isArray(v=items) then items else [items] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/emptyDirVolumeSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/emptyDirVolumeSource.libsonnet deleted file mode 100644 index 2c99ed710801..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/emptyDirVolumeSource.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='emptyDirVolumeSource', url='', help='Represents an empty directory for a pod. Empty directory volumes support ownership management and SELinux relabeling.'), - '#withMedium':: d.fn(help="What type of storage medium should back this directory. The default is '' which means to use the node's default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir", args=[d.arg(name='medium', type=d.T.string)]), - withMedium(medium): { medium: medium }, - '#withSizeLimit':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='sizeLimit', type=d.T.string)]), - withSizeLimit(sizeLimit): { sizeLimit: sizeLimit }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/endpointAddress.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/endpointAddress.libsonnet deleted file mode 100644 index 1d47bffba6bb..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/endpointAddress.libsonnet +++ /dev/null @@ -1,29 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='endpointAddress', url='', help='EndpointAddress is a tuple that describes single IP address.'), - '#targetRef':: d.obj(help='ObjectReference contains enough information to let you inspect or modify the referred object.'), - targetRef: { - '#withApiVersion':: d.fn(help='API version of the referent.', args=[d.arg(name='apiVersion', type=d.T.string)]), - withApiVersion(apiVersion): { targetRef+: { apiVersion: apiVersion } }, - '#withFieldPath':: d.fn(help='If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { targetRef+: { fieldPath: fieldPath } }, - '#withKind':: d.fn(help='Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { targetRef+: { kind: kind } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { targetRef+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { targetRef+: { namespace: namespace } }, - '#withResourceVersion':: d.fn(help='Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { targetRef+: { resourceVersion: resourceVersion } }, - '#withUid':: d.fn(help='UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { targetRef+: { uid: uid } }, - }, - '#withHostname':: d.fn(help='The Hostname of this endpoint', args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { hostname: hostname }, - '#withIp':: d.fn(help='The IP of this endpoint. May not be loopback (127.0.0.0/8), link-local (169.254.0.0/16), or link-local multicast ((224.0.0.0/24). IPv6 is also accepted but not fully supported on all platforms. Also, certain kubernetes components, like kube-proxy, are not IPv6 ready.', args=[d.arg(name='ip', type=d.T.string)]), - withIp(ip): { ip: ip }, - '#withNodeName':: d.fn(help='Optional: Node hosting this endpoint. This can be used to determine endpoints local to a node.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { nodeName: nodeName }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/endpointPort.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/endpointPort.libsonnet deleted file mode 100644 index 0571ff1f314f..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/endpointPort.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='endpointPort', url='', help='EndpointPort is a tuple that describes a single port.'), - '#withAppProtocol':: d.fn(help='The application protocol for this port. This field follows standard Kubernetes label syntax. Un-prefixed names are reserved for IANA standard service names (as per RFC-6335 and http://www.iana.org/assignments/service-names). Non-standard protocols should use prefixed names such as mycompany.com/my-custom-protocol. This is a beta field that is guarded by the ServiceAppProtocol feature gate and enabled by default.', args=[d.arg(name='appProtocol', type=d.T.string)]), - withAppProtocol(appProtocol): { appProtocol: appProtocol }, - '#withName':: d.fn(help="The name of this port. This must match the 'name' field in the corresponding ServicePort. Must be a DNS_LABEL. Optional only if one port is defined.", args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withPort':: d.fn(help='The port number of the endpoint.', args=[d.arg(name='port', type=d.T.integer)]), - withPort(port): { port: port }, - '#withProtocol':: d.fn(help='The IP protocol for this port. Must be UDP, TCP, or SCTP. Default is TCP.', args=[d.arg(name='protocol', type=d.T.string)]), - withProtocol(protocol): { protocol: protocol }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/endpointSubset.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/endpointSubset.libsonnet deleted file mode 100644 index 36d2c1db8a56..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/endpointSubset.libsonnet +++ /dev/null @@ -1,18 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='endpointSubset', url='', help='EndpointSubset is a group of addresses with a common set of ports. The expanded set of endpoints is the Cartesian product of Addresses x Ports. For example, given:\n {\n Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}],\n Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}]\n }\nThe resulting set of endpoints can be viewed as:\n a: [ 10.10.1.1:8675, 10.10.2.2:8675 ],\n b: [ 10.10.1.1:309, 10.10.2.2:309 ]'), - '#withAddresses':: d.fn(help='IP addresses which offer the related ports that are marked as ready. These endpoints should be considered safe for load balancers and clients to utilize.', args=[d.arg(name='addresses', type=d.T.array)]), - withAddresses(addresses): { addresses: if std.isArray(v=addresses) then addresses else [addresses] }, - '#withAddressesMixin':: d.fn(help='IP addresses which offer the related ports that are marked as ready. These endpoints should be considered safe for load balancers and clients to utilize.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='addresses', type=d.T.array)]), - withAddressesMixin(addresses): { addresses+: if std.isArray(v=addresses) then addresses else [addresses] }, - '#withNotReadyAddresses':: d.fn(help='IP addresses which offer the related ports but are not currently marked as ready because they have not yet finished starting, have recently failed a readiness check, or have recently failed a liveness check.', args=[d.arg(name='notReadyAddresses', type=d.T.array)]), - withNotReadyAddresses(notReadyAddresses): { notReadyAddresses: if std.isArray(v=notReadyAddresses) then notReadyAddresses else [notReadyAddresses] }, - '#withNotReadyAddressesMixin':: d.fn(help='IP addresses which offer the related ports but are not currently marked as ready because they have not yet finished starting, have recently failed a readiness check, or have recently failed a liveness check.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='notReadyAddresses', type=d.T.array)]), - withNotReadyAddressesMixin(notReadyAddresses): { notReadyAddresses+: if std.isArray(v=notReadyAddresses) then notReadyAddresses else [notReadyAddresses] }, - '#withPorts':: d.fn(help='Port numbers available on the related IP addresses.', args=[d.arg(name='ports', type=d.T.array)]), - withPorts(ports): { ports: if std.isArray(v=ports) then ports else [ports] }, - '#withPortsMixin':: d.fn(help='Port numbers available on the related IP addresses.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ports', type=d.T.array)]), - withPortsMixin(ports): { ports+: if std.isArray(v=ports) then ports else [ports] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/endpoints.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/endpoints.libsonnet deleted file mode 100644 index d596e259c787..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/endpoints.libsonnet +++ /dev/null @@ -1,60 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='endpoints', url='', help='Endpoints is a collection of endpoints that implement the actual service. Example:\n Name: "mysvc",\n Subsets: [\n {\n Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}],\n Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}]\n },\n {\n Addresses: [{"ip": "10.10.3.3"}],\n Ports: [{"name": "a", "port": 93}, {"name": "b", "port": 76}]\n },\n ]'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Endpoints', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'v1', - kind: 'Endpoints', - } + self.metadata.withName(name=name), - '#withSubsets':: d.fn(help='The set of all endpoints is the union of all subsets. Addresses are placed into subsets according to the IPs they share. A single address with multiple ports, some of which are ready and some of which are not (because they come from different containers) will result in the address being displayed in different subsets for the different ports. No address will appear in both Addresses and NotReadyAddresses in the same subset. Sets of addresses and ports that comprise a service.', args=[d.arg(name='subsets', type=d.T.array)]), - withSubsets(subsets): { subsets: if std.isArray(v=subsets) then subsets else [subsets] }, - '#withSubsetsMixin':: d.fn(help='The set of all endpoints is the union of all subsets. Addresses are placed into subsets according to the IPs they share. A single address with multiple ports, some of which are ready and some of which are not (because they come from different containers) will result in the address being displayed in different subsets for the different ports. No address will appear in both Addresses and NotReadyAddresses in the same subset. Sets of addresses and ports that comprise a service.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='subsets', type=d.T.array)]), - withSubsetsMixin(subsets): { subsets+: if std.isArray(v=subsets) then subsets else [subsets] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/envFromSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/envFromSource.libsonnet deleted file mode 100644 index 646ed6cd2700..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/envFromSource.libsonnet +++ /dev/null @@ -1,22 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='envFromSource', url='', help='EnvFromSource represents the source of a set of ConfigMaps'), - '#configMapRef':: d.obj(help="ConfigMapEnvSource selects a ConfigMap to populate the environment variables with.\n\nThe contents of the target ConfigMap's Data field will represent the key-value pairs as environment variables."), - configMapRef: { - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { configMapRef+: { name: name } }, - '#withOptional':: d.fn(help='Specify whether the ConfigMap must be defined', args=[d.arg(name='optional', type=d.T.boolean)]), - withOptional(optional): { configMapRef+: { optional: optional } }, - }, - '#secretRef':: d.obj(help="SecretEnvSource selects a Secret to populate the environment variables with.\n\nThe contents of the target Secret's Data field will represent the key-value pairs as environment variables."), - secretRef: { - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { secretRef+: { name: name } }, - '#withOptional':: d.fn(help='Specify whether the Secret must be defined', args=[d.arg(name='optional', type=d.T.boolean)]), - withOptional(optional): { secretRef+: { optional: optional } }, - }, - '#withPrefix':: d.fn(help='An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.', args=[d.arg(name='prefix', type=d.T.string)]), - withPrefix(prefix): { prefix: prefix }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/envVar.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/envVar.libsonnet deleted file mode 100644 index 510165960df6..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/envVar.libsonnet +++ /dev/null @@ -1,47 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='envVar', url='', help='EnvVar represents an environment variable present in a Container.'), - '#valueFrom':: d.obj(help='EnvVarSource represents a source for the value of an EnvVar.'), - valueFrom: { - '#configMapKeyRef':: d.obj(help='Selects a key from a ConfigMap.'), - configMapKeyRef: { - '#withKey':: d.fn(help='The key to select.', args=[d.arg(name='key', type=d.T.string)]), - withKey(key): { valueFrom+: { configMapKeyRef+: { key: key } } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { valueFrom+: { configMapKeyRef+: { name: name } } }, - '#withOptional':: d.fn(help='Specify whether the ConfigMap or its key must be defined', args=[d.arg(name='optional', type=d.T.boolean)]), - withOptional(optional): { valueFrom+: { configMapKeyRef+: { optional: optional } } }, - }, - '#fieldRef':: d.obj(help='ObjectFieldSelector selects an APIVersioned field of an object.'), - fieldRef: { - '#withApiVersion':: d.fn(help='Version of the schema the FieldPath is written in terms of, defaults to "v1".', args=[d.arg(name='apiVersion', type=d.T.string)]), - withApiVersion(apiVersion): { valueFrom+: { fieldRef+: { apiVersion: apiVersion } } }, - '#withFieldPath':: d.fn(help='Path of the field to select in the specified API version.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { valueFrom+: { fieldRef+: { fieldPath: fieldPath } } }, - }, - '#resourceFieldRef':: d.obj(help='ResourceFieldSelector represents container resources (cpu, memory) and their output format'), - resourceFieldRef: { - '#withContainerName':: d.fn(help='Container name: required for volumes, optional for env vars', args=[d.arg(name='containerName', type=d.T.string)]), - withContainerName(containerName): { valueFrom+: { resourceFieldRef+: { containerName: containerName } } }, - '#withDivisor':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='divisor', type=d.T.string)]), - withDivisor(divisor): { valueFrom+: { resourceFieldRef+: { divisor: divisor } } }, - '#withResource':: d.fn(help='Required: resource to select', args=[d.arg(name='resource', type=d.T.string)]), - withResource(resource): { valueFrom+: { resourceFieldRef+: { resource: resource } } }, - }, - '#secretKeyRef':: d.obj(help='SecretKeySelector selects a key of a Secret.'), - secretKeyRef: { - '#withKey':: d.fn(help='The key of the secret to select from. Must be a valid secret key.', args=[d.arg(name='key', type=d.T.string)]), - withKey(key): { valueFrom+: { secretKeyRef+: { key: key } } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { valueFrom+: { secretKeyRef+: { name: name } } }, - '#withOptional':: d.fn(help='Specify whether the Secret or its key must be defined', args=[d.arg(name='optional', type=d.T.boolean)]), - withOptional(optional): { valueFrom+: { secretKeyRef+: { optional: optional } } }, - }, - }, - '#withName':: d.fn(help='Name of the environment variable. Must be a C_IDENTIFIER.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withValue':: d.fn(help='Variable references $(VAR_NAME) are expanded using the previous defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "".', args=[d.arg(name='value', type=d.T.string)]), - withValue(value): { value: value }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/envVarSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/envVarSource.libsonnet deleted file mode 100644 index e0fd45ac5701..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/envVarSource.libsonnet +++ /dev/null @@ -1,40 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='envVarSource', url='', help='EnvVarSource represents a source for the value of an EnvVar.'), - '#configMapKeyRef':: d.obj(help='Selects a key from a ConfigMap.'), - configMapKeyRef: { - '#withKey':: d.fn(help='The key to select.', args=[d.arg(name='key', type=d.T.string)]), - withKey(key): { configMapKeyRef+: { key: key } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { configMapKeyRef+: { name: name } }, - '#withOptional':: d.fn(help='Specify whether the ConfigMap or its key must be defined', args=[d.arg(name='optional', type=d.T.boolean)]), - withOptional(optional): { configMapKeyRef+: { optional: optional } }, - }, - '#fieldRef':: d.obj(help='ObjectFieldSelector selects an APIVersioned field of an object.'), - fieldRef: { - '#withApiVersion':: d.fn(help='Version of the schema the FieldPath is written in terms of, defaults to "v1".', args=[d.arg(name='apiVersion', type=d.T.string)]), - withApiVersion(apiVersion): { fieldRef+: { apiVersion: apiVersion } }, - '#withFieldPath':: d.fn(help='Path of the field to select in the specified API version.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { fieldRef+: { fieldPath: fieldPath } }, - }, - '#resourceFieldRef':: d.obj(help='ResourceFieldSelector represents container resources (cpu, memory) and their output format'), - resourceFieldRef: { - '#withContainerName':: d.fn(help='Container name: required for volumes, optional for env vars', args=[d.arg(name='containerName', type=d.T.string)]), - withContainerName(containerName): { resourceFieldRef+: { containerName: containerName } }, - '#withDivisor':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='divisor', type=d.T.string)]), - withDivisor(divisor): { resourceFieldRef+: { divisor: divisor } }, - '#withResource':: d.fn(help='Required: resource to select', args=[d.arg(name='resource', type=d.T.string)]), - withResource(resource): { resourceFieldRef+: { resource: resource } }, - }, - '#secretKeyRef':: d.obj(help='SecretKeySelector selects a key of a Secret.'), - secretKeyRef: { - '#withKey':: d.fn(help='The key of the secret to select from. Must be a valid secret key.', args=[d.arg(name='key', type=d.T.string)]), - withKey(key): { secretKeyRef+: { key: key } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { secretKeyRef+: { name: name } }, - '#withOptional':: d.fn(help='Specify whether the Secret or its key must be defined', args=[d.arg(name='optional', type=d.T.boolean)]), - withOptional(optional): { secretKeyRef+: { optional: optional } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/ephemeralContainer.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/ephemeralContainer.libsonnet deleted file mode 100644 index 07f75824f4b9..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/ephemeralContainer.libsonnet +++ /dev/null @@ -1,319 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='ephemeralContainer', url='', help="An EphemeralContainer is a container that may be added temporarily to an existing pod for user-initiated activities such as debugging. Ephemeral containers have no resource or scheduling guarantees, and they will not be restarted when they exit or when a pod is removed or restarted. If an ephemeral container causes a pod to exceed its resource allocation, the pod may be evicted. Ephemeral containers may not be added by directly updating the pod spec. They must be added via the pod's ephemeralcontainers subresource, and they will appear in the pod spec once added. This is an alpha feature enabled by the EphemeralContainers feature flag."), - '#lifecycle':: d.obj(help='Lifecycle describes actions that the management system should take in response to container lifecycle events. For the PostStart and PreStop lifecycle handlers, management of the container blocks until the action is complete, unless the container process fails, in which case the handler is aborted.'), - lifecycle: { - '#postStart':: d.obj(help='Handler defines a specific action that should be taken'), - postStart: { - '#exec':: d.obj(help='ExecAction describes a "run in container" action.'), - exec: { - '#withCommand':: d.fn(help="Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.", args=[d.arg(name='command', type=d.T.array)]), - withCommand(command): { lifecycle+: { postStart+: { exec+: { command: if std.isArray(v=command) then command else [command] } } } }, - '#withCommandMixin':: d.fn(help="Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='command', type=d.T.array)]), - withCommandMixin(command): { lifecycle+: { postStart+: { exec+: { command+: if std.isArray(v=command) then command else [command] } } } }, - }, - '#httpGet':: d.obj(help='HTTPGetAction describes an action based on HTTP Get requests.'), - httpGet: { - '#withHost':: d.fn(help='Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { lifecycle+: { postStart+: { httpGet+: { host: host } } } }, - '#withHttpHeaders':: d.fn(help='Custom headers to set in the request. HTTP allows repeated headers.', args=[d.arg(name='httpHeaders', type=d.T.array)]), - withHttpHeaders(httpHeaders): { lifecycle+: { postStart+: { httpGet+: { httpHeaders: if std.isArray(v=httpHeaders) then httpHeaders else [httpHeaders] } } } }, - '#withHttpHeadersMixin':: d.fn(help='Custom headers to set in the request. HTTP allows repeated headers.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='httpHeaders', type=d.T.array)]), - withHttpHeadersMixin(httpHeaders): { lifecycle+: { postStart+: { httpGet+: { httpHeaders+: if std.isArray(v=httpHeaders) then httpHeaders else [httpHeaders] } } } }, - '#withPath':: d.fn(help='Path to access on the HTTP server.', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { lifecycle+: { postStart+: { httpGet+: { path: path } } } }, - '#withPort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='port', type=d.T.string)]), - withPort(port): { lifecycle+: { postStart+: { httpGet+: { port: port } } } }, - '#withScheme':: d.fn(help='Scheme to use for connecting to the host. Defaults to HTTP.', args=[d.arg(name='scheme', type=d.T.string)]), - withScheme(scheme): { lifecycle+: { postStart+: { httpGet+: { scheme: scheme } } } }, - }, - '#tcpSocket':: d.obj(help='TCPSocketAction describes an action based on opening a socket'), - tcpSocket: { - '#withHost':: d.fn(help='Optional: Host name to connect to, defaults to the pod IP.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { lifecycle+: { postStart+: { tcpSocket+: { host: host } } } }, - '#withPort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='port', type=d.T.string)]), - withPort(port): { lifecycle+: { postStart+: { tcpSocket+: { port: port } } } }, - }, - }, - '#preStop':: d.obj(help='Handler defines a specific action that should be taken'), - preStop: { - '#exec':: d.obj(help='ExecAction describes a "run in container" action.'), - exec: { - '#withCommand':: d.fn(help="Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.", args=[d.arg(name='command', type=d.T.array)]), - withCommand(command): { lifecycle+: { preStop+: { exec+: { command: if std.isArray(v=command) then command else [command] } } } }, - '#withCommandMixin':: d.fn(help="Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='command', type=d.T.array)]), - withCommandMixin(command): { lifecycle+: { preStop+: { exec+: { command+: if std.isArray(v=command) then command else [command] } } } }, - }, - '#httpGet':: d.obj(help='HTTPGetAction describes an action based on HTTP Get requests.'), - httpGet: { - '#withHost':: d.fn(help='Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { lifecycle+: { preStop+: { httpGet+: { host: host } } } }, - '#withHttpHeaders':: d.fn(help='Custom headers to set in the request. HTTP allows repeated headers.', args=[d.arg(name='httpHeaders', type=d.T.array)]), - withHttpHeaders(httpHeaders): { lifecycle+: { preStop+: { httpGet+: { httpHeaders: if std.isArray(v=httpHeaders) then httpHeaders else [httpHeaders] } } } }, - '#withHttpHeadersMixin':: d.fn(help='Custom headers to set in the request. HTTP allows repeated headers.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='httpHeaders', type=d.T.array)]), - withHttpHeadersMixin(httpHeaders): { lifecycle+: { preStop+: { httpGet+: { httpHeaders+: if std.isArray(v=httpHeaders) then httpHeaders else [httpHeaders] } } } }, - '#withPath':: d.fn(help='Path to access on the HTTP server.', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { lifecycle+: { preStop+: { httpGet+: { path: path } } } }, - '#withPort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='port', type=d.T.string)]), - withPort(port): { lifecycle+: { preStop+: { httpGet+: { port: port } } } }, - '#withScheme':: d.fn(help='Scheme to use for connecting to the host. Defaults to HTTP.', args=[d.arg(name='scheme', type=d.T.string)]), - withScheme(scheme): { lifecycle+: { preStop+: { httpGet+: { scheme: scheme } } } }, - }, - '#tcpSocket':: d.obj(help='TCPSocketAction describes an action based on opening a socket'), - tcpSocket: { - '#withHost':: d.fn(help='Optional: Host name to connect to, defaults to the pod IP.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { lifecycle+: { preStop+: { tcpSocket+: { host: host } } } }, - '#withPort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='port', type=d.T.string)]), - withPort(port): { lifecycle+: { preStop+: { tcpSocket+: { port: port } } } }, - }, - }, - }, - '#livenessProbe':: d.obj(help='Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.'), - livenessProbe: { - '#exec':: d.obj(help='ExecAction describes a "run in container" action.'), - exec: { - '#withCommand':: d.fn(help="Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.", args=[d.arg(name='command', type=d.T.array)]), - withCommand(command): { livenessProbe+: { exec+: { command: if std.isArray(v=command) then command else [command] } } }, - '#withCommandMixin':: d.fn(help="Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='command', type=d.T.array)]), - withCommandMixin(command): { livenessProbe+: { exec+: { command+: if std.isArray(v=command) then command else [command] } } }, - }, - '#httpGet':: d.obj(help='HTTPGetAction describes an action based on HTTP Get requests.'), - httpGet: { - '#withHost':: d.fn(help='Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { livenessProbe+: { httpGet+: { host: host } } }, - '#withHttpHeaders':: d.fn(help='Custom headers to set in the request. HTTP allows repeated headers.', args=[d.arg(name='httpHeaders', type=d.T.array)]), - withHttpHeaders(httpHeaders): { livenessProbe+: { httpGet+: { httpHeaders: if std.isArray(v=httpHeaders) then httpHeaders else [httpHeaders] } } }, - '#withHttpHeadersMixin':: d.fn(help='Custom headers to set in the request. HTTP allows repeated headers.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='httpHeaders', type=d.T.array)]), - withHttpHeadersMixin(httpHeaders): { livenessProbe+: { httpGet+: { httpHeaders+: if std.isArray(v=httpHeaders) then httpHeaders else [httpHeaders] } } }, - '#withPath':: d.fn(help='Path to access on the HTTP server.', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { livenessProbe+: { httpGet+: { path: path } } }, - '#withPort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='port', type=d.T.string)]), - withPort(port): { livenessProbe+: { httpGet+: { port: port } } }, - '#withScheme':: d.fn(help='Scheme to use for connecting to the host. Defaults to HTTP.', args=[d.arg(name='scheme', type=d.T.string)]), - withScheme(scheme): { livenessProbe+: { httpGet+: { scheme: scheme } } }, - }, - '#tcpSocket':: d.obj(help='TCPSocketAction describes an action based on opening a socket'), - tcpSocket: { - '#withHost':: d.fn(help='Optional: Host name to connect to, defaults to the pod IP.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { livenessProbe+: { tcpSocket+: { host: host } } }, - '#withPort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='port', type=d.T.string)]), - withPort(port): { livenessProbe+: { tcpSocket+: { port: port } } }, - }, - '#withFailureThreshold':: d.fn(help='Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.', args=[d.arg(name='failureThreshold', type=d.T.integer)]), - withFailureThreshold(failureThreshold): { livenessProbe+: { failureThreshold: failureThreshold } }, - '#withInitialDelaySeconds':: d.fn(help='Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes', args=[d.arg(name='initialDelaySeconds', type=d.T.integer)]), - withInitialDelaySeconds(initialDelaySeconds): { livenessProbe+: { initialDelaySeconds: initialDelaySeconds } }, - '#withPeriodSeconds':: d.fn(help='How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.', args=[d.arg(name='periodSeconds', type=d.T.integer)]), - withPeriodSeconds(periodSeconds): { livenessProbe+: { periodSeconds: periodSeconds } }, - '#withSuccessThreshold':: d.fn(help='Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.', args=[d.arg(name='successThreshold', type=d.T.integer)]), - withSuccessThreshold(successThreshold): { livenessProbe+: { successThreshold: successThreshold } }, - '#withTerminationGracePeriodSeconds':: d.fn(help="Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is an alpha field and requires enabling ProbeTerminationGracePeriod feature gate.", args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { livenessProbe+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } }, - '#withTimeoutSeconds':: d.fn(help='Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes', args=[d.arg(name='timeoutSeconds', type=d.T.integer)]), - withTimeoutSeconds(timeoutSeconds): { livenessProbe+: { timeoutSeconds: timeoutSeconds } }, - }, - '#readinessProbe':: d.obj(help='Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.'), - readinessProbe: { - '#exec':: d.obj(help='ExecAction describes a "run in container" action.'), - exec: { - '#withCommand':: d.fn(help="Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.", args=[d.arg(name='command', type=d.T.array)]), - withCommand(command): { readinessProbe+: { exec+: { command: if std.isArray(v=command) then command else [command] } } }, - '#withCommandMixin':: d.fn(help="Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='command', type=d.T.array)]), - withCommandMixin(command): { readinessProbe+: { exec+: { command+: if std.isArray(v=command) then command else [command] } } }, - }, - '#httpGet':: d.obj(help='HTTPGetAction describes an action based on HTTP Get requests.'), - httpGet: { - '#withHost':: d.fn(help='Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { readinessProbe+: { httpGet+: { host: host } } }, - '#withHttpHeaders':: d.fn(help='Custom headers to set in the request. HTTP allows repeated headers.', args=[d.arg(name='httpHeaders', type=d.T.array)]), - withHttpHeaders(httpHeaders): { readinessProbe+: { httpGet+: { httpHeaders: if std.isArray(v=httpHeaders) then httpHeaders else [httpHeaders] } } }, - '#withHttpHeadersMixin':: d.fn(help='Custom headers to set in the request. HTTP allows repeated headers.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='httpHeaders', type=d.T.array)]), - withHttpHeadersMixin(httpHeaders): { readinessProbe+: { httpGet+: { httpHeaders+: if std.isArray(v=httpHeaders) then httpHeaders else [httpHeaders] } } }, - '#withPath':: d.fn(help='Path to access on the HTTP server.', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { readinessProbe+: { httpGet+: { path: path } } }, - '#withPort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='port', type=d.T.string)]), - withPort(port): { readinessProbe+: { httpGet+: { port: port } } }, - '#withScheme':: d.fn(help='Scheme to use for connecting to the host. Defaults to HTTP.', args=[d.arg(name='scheme', type=d.T.string)]), - withScheme(scheme): { readinessProbe+: { httpGet+: { scheme: scheme } } }, - }, - '#tcpSocket':: d.obj(help='TCPSocketAction describes an action based on opening a socket'), - tcpSocket: { - '#withHost':: d.fn(help='Optional: Host name to connect to, defaults to the pod IP.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { readinessProbe+: { tcpSocket+: { host: host } } }, - '#withPort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='port', type=d.T.string)]), - withPort(port): { readinessProbe+: { tcpSocket+: { port: port } } }, - }, - '#withFailureThreshold':: d.fn(help='Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.', args=[d.arg(name='failureThreshold', type=d.T.integer)]), - withFailureThreshold(failureThreshold): { readinessProbe+: { failureThreshold: failureThreshold } }, - '#withInitialDelaySeconds':: d.fn(help='Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes', args=[d.arg(name='initialDelaySeconds', type=d.T.integer)]), - withInitialDelaySeconds(initialDelaySeconds): { readinessProbe+: { initialDelaySeconds: initialDelaySeconds } }, - '#withPeriodSeconds':: d.fn(help='How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.', args=[d.arg(name='periodSeconds', type=d.T.integer)]), - withPeriodSeconds(periodSeconds): { readinessProbe+: { periodSeconds: periodSeconds } }, - '#withSuccessThreshold':: d.fn(help='Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.', args=[d.arg(name='successThreshold', type=d.T.integer)]), - withSuccessThreshold(successThreshold): { readinessProbe+: { successThreshold: successThreshold } }, - '#withTerminationGracePeriodSeconds':: d.fn(help="Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is an alpha field and requires enabling ProbeTerminationGracePeriod feature gate.", args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { readinessProbe+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } }, - '#withTimeoutSeconds':: d.fn(help='Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes', args=[d.arg(name='timeoutSeconds', type=d.T.integer)]), - withTimeoutSeconds(timeoutSeconds): { readinessProbe+: { timeoutSeconds: timeoutSeconds } }, - }, - '#resources':: d.obj(help='ResourceRequirements describes the compute resource requirements.'), - resources: { - '#withLimits':: d.fn(help='Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/', args=[d.arg(name='limits', type=d.T.object)]), - withLimits(limits): { resources+: { limits: limits } }, - '#withLimitsMixin':: d.fn(help='Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='limits', type=d.T.object)]), - withLimitsMixin(limits): { resources+: { limits+: limits } }, - '#withRequests':: d.fn(help='Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/', args=[d.arg(name='requests', type=d.T.object)]), - withRequests(requests): { resources+: { requests: requests } }, - '#withRequestsMixin':: d.fn(help='Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requests', type=d.T.object)]), - withRequestsMixin(requests): { resources+: { requests+: requests } }, - }, - '#securityContext':: d.obj(help='SecurityContext holds security configuration that will be applied to a container. Some fields are present in both SecurityContext and PodSecurityContext. When both are set, the values in SecurityContext take precedence.'), - securityContext: { - '#capabilities':: d.obj(help='Adds and removes POSIX capabilities from running containers.'), - capabilities: { - '#withAdd':: d.fn(help='Added capabilities', args=[d.arg(name='add', type=d.T.array)]), - withAdd(add): { securityContext+: { capabilities+: { add: if std.isArray(v=add) then add else [add] } } }, - '#withAddMixin':: d.fn(help='Added capabilities\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='add', type=d.T.array)]), - withAddMixin(add): { securityContext+: { capabilities+: { add+: if std.isArray(v=add) then add else [add] } } }, - '#withDrop':: d.fn(help='Removed capabilities', args=[d.arg(name='drop', type=d.T.array)]), - withDrop(drop): { securityContext+: { capabilities+: { drop: if std.isArray(v=drop) then drop else [drop] } } }, - '#withDropMixin':: d.fn(help='Removed capabilities\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='drop', type=d.T.array)]), - withDropMixin(drop): { securityContext+: { capabilities+: { drop+: if std.isArray(v=drop) then drop else [drop] } } }, - }, - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { securityContext+: { seLinuxOptions+: { level: level } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { securityContext+: { seLinuxOptions+: { role: role } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { securityContext+: { seLinuxOptions+: { type: type } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { securityContext+: { seLinuxOptions+: { user: user } } }, - }, - '#seccompProfile':: d.obj(help="SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set."), - seccompProfile: { - '#withLocalhostProfile':: d.fn(help="localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is 'Localhost'.", args=[d.arg(name='localhostProfile', type=d.T.string)]), - withLocalhostProfile(localhostProfile): { securityContext+: { seccompProfile+: { localhostProfile: localhostProfile } } }, - '#withType':: d.fn(help='type indicates which kind of seccomp profile will be applied. Valid options are:\n\nLocalhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { securityContext+: { seccompProfile+: { type: type } } }, - }, - '#windowsOptions':: d.obj(help='WindowsSecurityContextOptions contain Windows-specific options and credentials.'), - windowsOptions: { - '#withGmsaCredentialSpec':: d.fn(help='GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.', args=[d.arg(name='gmsaCredentialSpec', type=d.T.string)]), - withGmsaCredentialSpec(gmsaCredentialSpec): { securityContext+: { windowsOptions+: { gmsaCredentialSpec: gmsaCredentialSpec } } }, - '#withGmsaCredentialSpecName':: d.fn(help='GMSACredentialSpecName is the name of the GMSA credential spec to use.', args=[d.arg(name='gmsaCredentialSpecName', type=d.T.string)]), - withGmsaCredentialSpecName(gmsaCredentialSpecName): { securityContext+: { windowsOptions+: { gmsaCredentialSpecName: gmsaCredentialSpecName } } }, - '#withRunAsUserName':: d.fn(help='The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsUserName', type=d.T.string)]), - withRunAsUserName(runAsUserName): { securityContext+: { windowsOptions+: { runAsUserName: runAsUserName } } }, - }, - '#withAllowPrivilegeEscalation':: d.fn(help='AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN', args=[d.arg(name='allowPrivilegeEscalation', type=d.T.boolean)]), - withAllowPrivilegeEscalation(allowPrivilegeEscalation): { securityContext+: { allowPrivilegeEscalation: allowPrivilegeEscalation } }, - '#withPrivileged':: d.fn(help='Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false.', args=[d.arg(name='privileged', type=d.T.boolean)]), - withPrivileged(privileged): { securityContext+: { privileged: privileged } }, - '#withProcMount':: d.fn(help='procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled.', args=[d.arg(name='procMount', type=d.T.string)]), - withProcMount(procMount): { securityContext+: { procMount: procMount } }, - '#withReadOnlyRootFilesystem':: d.fn(help='Whether this container has a read-only root filesystem. Default is false.', args=[d.arg(name='readOnlyRootFilesystem', type=d.T.boolean)]), - withReadOnlyRootFilesystem(readOnlyRootFilesystem): { securityContext+: { readOnlyRootFilesystem: readOnlyRootFilesystem } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { securityContext+: { runAsGroup: runAsGroup } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { securityContext+: { runAsNonRoot: runAsNonRoot } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { securityContext+: { runAsUser: runAsUser } }, - }, - '#startupProbe':: d.obj(help='Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.'), - startupProbe: { - '#exec':: d.obj(help='ExecAction describes a "run in container" action.'), - exec: { - '#withCommand':: d.fn(help="Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.", args=[d.arg(name='command', type=d.T.array)]), - withCommand(command): { startupProbe+: { exec+: { command: if std.isArray(v=command) then command else [command] } } }, - '#withCommandMixin':: d.fn(help="Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='command', type=d.T.array)]), - withCommandMixin(command): { startupProbe+: { exec+: { command+: if std.isArray(v=command) then command else [command] } } }, - }, - '#httpGet':: d.obj(help='HTTPGetAction describes an action based on HTTP Get requests.'), - httpGet: { - '#withHost':: d.fn(help='Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { startupProbe+: { httpGet+: { host: host } } }, - '#withHttpHeaders':: d.fn(help='Custom headers to set in the request. HTTP allows repeated headers.', args=[d.arg(name='httpHeaders', type=d.T.array)]), - withHttpHeaders(httpHeaders): { startupProbe+: { httpGet+: { httpHeaders: if std.isArray(v=httpHeaders) then httpHeaders else [httpHeaders] } } }, - '#withHttpHeadersMixin':: d.fn(help='Custom headers to set in the request. HTTP allows repeated headers.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='httpHeaders', type=d.T.array)]), - withHttpHeadersMixin(httpHeaders): { startupProbe+: { httpGet+: { httpHeaders+: if std.isArray(v=httpHeaders) then httpHeaders else [httpHeaders] } } }, - '#withPath':: d.fn(help='Path to access on the HTTP server.', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { startupProbe+: { httpGet+: { path: path } } }, - '#withPort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='port', type=d.T.string)]), - withPort(port): { startupProbe+: { httpGet+: { port: port } } }, - '#withScheme':: d.fn(help='Scheme to use for connecting to the host. Defaults to HTTP.', args=[d.arg(name='scheme', type=d.T.string)]), - withScheme(scheme): { startupProbe+: { httpGet+: { scheme: scheme } } }, - }, - '#tcpSocket':: d.obj(help='TCPSocketAction describes an action based on opening a socket'), - tcpSocket: { - '#withHost':: d.fn(help='Optional: Host name to connect to, defaults to the pod IP.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { startupProbe+: { tcpSocket+: { host: host } } }, - '#withPort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='port', type=d.T.string)]), - withPort(port): { startupProbe+: { tcpSocket+: { port: port } } }, - }, - '#withFailureThreshold':: d.fn(help='Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.', args=[d.arg(name='failureThreshold', type=d.T.integer)]), - withFailureThreshold(failureThreshold): { startupProbe+: { failureThreshold: failureThreshold } }, - '#withInitialDelaySeconds':: d.fn(help='Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes', args=[d.arg(name='initialDelaySeconds', type=d.T.integer)]), - withInitialDelaySeconds(initialDelaySeconds): { startupProbe+: { initialDelaySeconds: initialDelaySeconds } }, - '#withPeriodSeconds':: d.fn(help='How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.', args=[d.arg(name='periodSeconds', type=d.T.integer)]), - withPeriodSeconds(periodSeconds): { startupProbe+: { periodSeconds: periodSeconds } }, - '#withSuccessThreshold':: d.fn(help='Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.', args=[d.arg(name='successThreshold', type=d.T.integer)]), - withSuccessThreshold(successThreshold): { startupProbe+: { successThreshold: successThreshold } }, - '#withTerminationGracePeriodSeconds':: d.fn(help="Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is an alpha field and requires enabling ProbeTerminationGracePeriod feature gate.", args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { startupProbe+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } }, - '#withTimeoutSeconds':: d.fn(help='Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes', args=[d.arg(name='timeoutSeconds', type=d.T.integer)]), - withTimeoutSeconds(timeoutSeconds): { startupProbe+: { timeoutSeconds: timeoutSeconds } }, - }, - '#withArgs':: d.fn(help="Arguments to the entrypoint. The docker image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", args=[d.arg(name='args', type=d.T.array)]), - withArgs(args): { args: if std.isArray(v=args) then args else [args] }, - '#withArgsMixin':: d.fn(help="Arguments to the entrypoint. The docker image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='args', type=d.T.array)]), - withArgsMixin(args): { args+: if std.isArray(v=args) then args else [args] }, - '#withCommand':: d.fn(help="Entrypoint array. Not executed within a shell. The docker image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", args=[d.arg(name='command', type=d.T.array)]), - withCommand(command): { command: if std.isArray(v=command) then command else [command] }, - '#withCommandMixin':: d.fn(help="Entrypoint array. Not executed within a shell. The docker image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='command', type=d.T.array)]), - withCommandMixin(command): { command+: if std.isArray(v=command) then command else [command] }, - '#withEnv':: d.fn(help='List of environment variables to set in the container. Cannot be updated.', args=[d.arg(name='env', type=d.T.array)]), - withEnv(env): { env: if std.isArray(v=env) then env else [env] }, - '#withEnvFrom':: d.fn(help='List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.', args=[d.arg(name='envFrom', type=d.T.array)]), - withEnvFrom(envFrom): { envFrom: if std.isArray(v=envFrom) then envFrom else [envFrom] }, - '#withEnvFromMixin':: d.fn(help='List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='envFrom', type=d.T.array)]), - withEnvFromMixin(envFrom): { envFrom+: if std.isArray(v=envFrom) then envFrom else [envFrom] }, - '#withEnvMixin':: d.fn(help='List of environment variables to set in the container. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='env', type=d.T.array)]), - withEnvMixin(env): { env+: if std.isArray(v=env) then env else [env] }, - '#withImage':: d.fn(help='Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images', args=[d.arg(name='image', type=d.T.string)]), - withImage(image): { image: image }, - '#withImagePullPolicy':: d.fn(help='Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images', args=[d.arg(name='imagePullPolicy', type=d.T.string)]), - withImagePullPolicy(imagePullPolicy): { imagePullPolicy: imagePullPolicy }, - '#withName':: d.fn(help='Name of the ephemeral container specified as a DNS_LABEL. This name must be unique among all containers, init containers and ephemeral containers.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withPorts':: d.fn(help='Ports are not allowed for ephemeral containers.', args=[d.arg(name='ports', type=d.T.array)]), - withPorts(ports): { ports: if std.isArray(v=ports) then ports else [ports] }, - '#withPortsMixin':: d.fn(help='Ports are not allowed for ephemeral containers.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ports', type=d.T.array)]), - withPortsMixin(ports): { ports+: if std.isArray(v=ports) then ports else [ports] }, - '#withStdin':: d.fn(help='Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false.', args=[d.arg(name='stdin', type=d.T.boolean)]), - withStdin(stdin): { stdin: stdin }, - '#withStdinOnce':: d.fn(help='Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false', args=[d.arg(name='stdinOnce', type=d.T.boolean)]), - withStdinOnce(stdinOnce): { stdinOnce: stdinOnce }, - '#withTargetContainerName':: d.fn(help='If set, the name of the container from PodSpec that this ephemeral container targets. The ephemeral container will be run in the namespaces (IPC, PID, etc) of this container. If not set then the ephemeral container is run in whatever namespaces are shared for the pod. Note that the container runtime must support this feature.', args=[d.arg(name='targetContainerName', type=d.T.string)]), - withTargetContainerName(targetContainerName): { targetContainerName: targetContainerName }, - '#withTerminationMessagePath':: d.fn(help="Optional: Path at which the file to which the container's termination message will be written is mounted into the container's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.", args=[d.arg(name='terminationMessagePath', type=d.T.string)]), - withTerminationMessagePath(terminationMessagePath): { terminationMessagePath: terminationMessagePath }, - '#withTerminationMessagePolicy':: d.fn(help='Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.', args=[d.arg(name='terminationMessagePolicy', type=d.T.string)]), - withTerminationMessagePolicy(terminationMessagePolicy): { terminationMessagePolicy: terminationMessagePolicy }, - '#withTty':: d.fn(help="Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.", args=[d.arg(name='tty', type=d.T.boolean)]), - withTty(tty): { tty: tty }, - '#withVolumeDevices':: d.fn(help='volumeDevices is the list of block devices to be used by the container.', args=[d.arg(name='volumeDevices', type=d.T.array)]), - withVolumeDevices(volumeDevices): { volumeDevices: if std.isArray(v=volumeDevices) then volumeDevices else [volumeDevices] }, - '#withVolumeDevicesMixin':: d.fn(help='volumeDevices is the list of block devices to be used by the container.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumeDevices', type=d.T.array)]), - withVolumeDevicesMixin(volumeDevices): { volumeDevices+: if std.isArray(v=volumeDevices) then volumeDevices else [volumeDevices] }, - '#withVolumeMounts':: d.fn(help="Pod volumes to mount into the container's filesystem. Cannot be updated.", args=[d.arg(name='volumeMounts', type=d.T.array)]), - withVolumeMounts(volumeMounts): { volumeMounts: if std.isArray(v=volumeMounts) then volumeMounts else [volumeMounts] }, - '#withVolumeMountsMixin':: d.fn(help="Pod volumes to mount into the container's filesystem. Cannot be updated.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='volumeMounts', type=d.T.array)]), - withVolumeMountsMixin(volumeMounts): { volumeMounts+: if std.isArray(v=volumeMounts) then volumeMounts else [volumeMounts] }, - '#withWorkingDir':: d.fn(help="Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.", args=[d.arg(name='workingDir', type=d.T.string)]), - withWorkingDir(workingDir): { workingDir: workingDir }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/ephemeralContainers.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/ephemeralContainers.libsonnet deleted file mode 100644 index b0c11c331b42..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/ephemeralContainers.libsonnet +++ /dev/null @@ -1,60 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='ephemeralContainers', url='', help='A list of ephemeral containers used with the Pod ephemeralcontainers subresource.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Ephemeralcontainers', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'v1', - kind: 'EphemeralContainers', - } + self.metadata.withName(name=name), - '#withEphemeralContainers':: d.fn(help='A list of ephemeral containers associated with this pod. New ephemeral containers may be appended to this list, but existing ephemeral containers may not be removed or modified.', args=[d.arg(name='ephemeralContainers', type=d.T.array)]), - withEphemeralContainers(ephemeralContainers): { ephemeralContainers: if std.isArray(v=ephemeralContainers) then ephemeralContainers else [ephemeralContainers] }, - '#withEphemeralContainersMixin':: d.fn(help='A list of ephemeral containers associated with this pod. New ephemeral containers may be appended to this list, but existing ephemeral containers may not be removed or modified.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ephemeralContainers', type=d.T.array)]), - withEphemeralContainersMixin(ephemeralContainers): { ephemeralContainers+: if std.isArray(v=ephemeralContainers) then ephemeralContainers else [ephemeralContainers] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/ephemeralVolumeSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/ephemeralVolumeSource.libsonnet deleted file mode 100644 index c72d332a2793..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/ephemeralVolumeSource.libsonnet +++ /dev/null @@ -1,98 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='ephemeralVolumeSource', url='', help='Represents an ephemeral volume that is handled by a normal storage driver.'), - '#volumeClaimTemplate':: d.obj(help='PersistentVolumeClaimTemplate is used to produce PersistentVolumeClaim objects as part of an EphemeralVolumeSource.'), - volumeClaimTemplate: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { volumeClaimTemplate+: { metadata+: { annotations: annotations } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { volumeClaimTemplate+: { metadata+: { annotations+: annotations } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { volumeClaimTemplate+: { metadata+: { clusterName: clusterName } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { volumeClaimTemplate+: { metadata+: { creationTimestamp: creationTimestamp } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { volumeClaimTemplate+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { volumeClaimTemplate+: { metadata+: { deletionTimestamp: deletionTimestamp } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { volumeClaimTemplate+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { volumeClaimTemplate+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { volumeClaimTemplate+: { metadata+: { generateName: generateName } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { volumeClaimTemplate+: { metadata+: { generation: generation } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { volumeClaimTemplate+: { metadata+: { labels: labels } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { volumeClaimTemplate+: { metadata+: { labels+: labels } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { volumeClaimTemplate+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { volumeClaimTemplate+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { volumeClaimTemplate+: { metadata+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { volumeClaimTemplate+: { metadata+: { namespace: namespace } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { volumeClaimTemplate+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { volumeClaimTemplate+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { volumeClaimTemplate+: { metadata+: { resourceVersion: resourceVersion } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { volumeClaimTemplate+: { metadata+: { selfLink: selfLink } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { volumeClaimTemplate+: { metadata+: { uid: uid } } }, - }, - '#spec':: d.obj(help='PersistentVolumeClaimSpec describes the common attributes of storage devices and allows a Source for provider-specific attributes'), - spec: { - '#dataSource':: d.obj(help='TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace.'), - dataSource: { - '#withApiGroup':: d.fn(help='APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.', args=[d.arg(name='apiGroup', type=d.T.string)]), - withApiGroup(apiGroup): { volumeClaimTemplate+: { spec+: { dataSource+: { apiGroup: apiGroup } } } }, - '#withKind':: d.fn(help='Kind is the type of resource being referenced', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { volumeClaimTemplate+: { spec+: { dataSource+: { kind: kind } } } }, - '#withName':: d.fn(help='Name is the name of resource being referenced', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { volumeClaimTemplate+: { spec+: { dataSource+: { name: name } } } }, - }, - '#resources':: d.obj(help='ResourceRequirements describes the compute resource requirements.'), - resources: { - '#withLimits':: d.fn(help='Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/', args=[d.arg(name='limits', type=d.T.object)]), - withLimits(limits): { volumeClaimTemplate+: { spec+: { resources+: { limits: limits } } } }, - '#withLimitsMixin':: d.fn(help='Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='limits', type=d.T.object)]), - withLimitsMixin(limits): { volumeClaimTemplate+: { spec+: { resources+: { limits+: limits } } } }, - '#withRequests':: d.fn(help='Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/', args=[d.arg(name='requests', type=d.T.object)]), - withRequests(requests): { volumeClaimTemplate+: { spec+: { resources+: { requests: requests } } } }, - '#withRequestsMixin':: d.fn(help='Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requests', type=d.T.object)]), - withRequestsMixin(requests): { volumeClaimTemplate+: { spec+: { resources+: { requests+: requests } } } }, - }, - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { volumeClaimTemplate+: { spec+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { volumeClaimTemplate+: { spec+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { volumeClaimTemplate+: { spec+: { selector+: { matchLabels: matchLabels } } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { volumeClaimTemplate+: { spec+: { selector+: { matchLabels+: matchLabels } } } }, - }, - '#withAccessModes':: d.fn(help='AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1', args=[d.arg(name='accessModes', type=d.T.array)]), - withAccessModes(accessModes): { volumeClaimTemplate+: { spec+: { accessModes: if std.isArray(v=accessModes) then accessModes else [accessModes] } } }, - '#withAccessModesMixin':: d.fn(help='AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='accessModes', type=d.T.array)]), - withAccessModesMixin(accessModes): { volumeClaimTemplate+: { spec+: { accessModes+: if std.isArray(v=accessModes) then accessModes else [accessModes] } } }, - '#withStorageClassName':: d.fn(help='Name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1', args=[d.arg(name='storageClassName', type=d.T.string)]), - withStorageClassName(storageClassName): { volumeClaimTemplate+: { spec+: { storageClassName: storageClassName } } }, - '#withVolumeMode':: d.fn(help='volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.', args=[d.arg(name='volumeMode', type=d.T.string)]), - withVolumeMode(volumeMode): { volumeClaimTemplate+: { spec+: { volumeMode: volumeMode } } }, - '#withVolumeName':: d.fn(help='VolumeName is the binding reference to the PersistentVolume backing this claim.', args=[d.arg(name='volumeName', type=d.T.string)]), - withVolumeName(volumeName): { volumeClaimTemplate+: { spec+: { volumeName: volumeName } } }, - }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/event.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/event.libsonnet deleted file mode 100644 index 32b4dc668b3c..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/event.libsonnet +++ /dev/null @@ -1,124 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='event', url='', help='Event is a report of an event somewhere in the cluster. Events have a limited retention time and triggers and messages may evolve with time. Event consumers should not rely on the timing of an event with a given Reason reflecting a consistent underlying trigger, or the continued existence of events with that Reason. Events should be treated as informative, best-effort, supplemental data.'), - '#involvedObject':: d.obj(help='ObjectReference contains enough information to let you inspect or modify the referred object.'), - involvedObject: { - '#withApiVersion':: d.fn(help='API version of the referent.', args=[d.arg(name='apiVersion', type=d.T.string)]), - withApiVersion(apiVersion): { involvedObject+: { apiVersion: apiVersion } }, - '#withFieldPath':: d.fn(help='If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { involvedObject+: { fieldPath: fieldPath } }, - '#withKind':: d.fn(help='Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { involvedObject+: { kind: kind } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { involvedObject+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { involvedObject+: { namespace: namespace } }, - '#withResourceVersion':: d.fn(help='Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { involvedObject+: { resourceVersion: resourceVersion } }, - '#withUid':: d.fn(help='UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { involvedObject+: { uid: uid } }, - }, - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Event', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'v1', - kind: 'Event', - } + self.metadata.withName(name=name), - '#related':: d.obj(help='ObjectReference contains enough information to let you inspect or modify the referred object.'), - related: { - '#withApiVersion':: d.fn(help='API version of the referent.', args=[d.arg(name='apiVersion', type=d.T.string)]), - withApiVersion(apiVersion): { related+: { apiVersion: apiVersion } }, - '#withFieldPath':: d.fn(help='If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { related+: { fieldPath: fieldPath } }, - '#withKind':: d.fn(help='Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { related+: { kind: kind } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { related+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { related+: { namespace: namespace } }, - '#withResourceVersion':: d.fn(help='Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { related+: { resourceVersion: resourceVersion } }, - '#withUid':: d.fn(help='UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { related+: { uid: uid } }, - }, - '#series':: d.obj(help='EventSeries contain information on series of events, i.e. thing that was/is happening continuously for some time.'), - series: { - '#withCount':: d.fn(help='Number of occurrences in this series up to the last heartbeat time', args=[d.arg(name='count', type=d.T.integer)]), - withCount(count): { series+: { count: count } }, - '#withLastObservedTime':: d.fn(help='MicroTime is version of Time with microsecond level precision.', args=[d.arg(name='lastObservedTime', type=d.T.string)]), - withLastObservedTime(lastObservedTime): { series+: { lastObservedTime: lastObservedTime } }, - }, - '#source':: d.obj(help='EventSource contains information for an event.'), - source: { - '#withComponent':: d.fn(help='Component from which the event is generated.', args=[d.arg(name='component', type=d.T.string)]), - withComponent(component): { source+: { component: component } }, - '#withHost':: d.fn(help='Node name on which the event is generated.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { source+: { host: host } }, - }, - '#withAction':: d.fn(help='What action was taken/failed regarding to the Regarding object.', args=[d.arg(name='action', type=d.T.string)]), - withAction(action): { action: action }, - '#withCount':: d.fn(help='The number of times this event has occurred.', args=[d.arg(name='count', type=d.T.integer)]), - withCount(count): { count: count }, - '#withEventTime':: d.fn(help='MicroTime is version of Time with microsecond level precision.', args=[d.arg(name='eventTime', type=d.T.string)]), - withEventTime(eventTime): { eventTime: eventTime }, - '#withFirstTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='firstTimestamp', type=d.T.string)]), - withFirstTimestamp(firstTimestamp): { firstTimestamp: firstTimestamp }, - '#withLastTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastTimestamp', type=d.T.string)]), - withLastTimestamp(lastTimestamp): { lastTimestamp: lastTimestamp }, - '#withMessage':: d.fn(help='A human-readable description of the status of this operation.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withReason':: d.fn(help="This should be a short, machine understandable string that gives the reason for the transition into the object's current status.", args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#withReportingComponent':: d.fn(help='Name of the controller that emitted this Event, e.g. `kubernetes.io/kubelet`.', args=[d.arg(name='reportingComponent', type=d.T.string)]), - withReportingComponent(reportingComponent): { reportingComponent: reportingComponent }, - '#withReportingInstance':: d.fn(help='ID of the controller instance, e.g. `kubelet-xyzf`.', args=[d.arg(name='reportingInstance', type=d.T.string)]), - withReportingInstance(reportingInstance): { reportingInstance: reportingInstance }, - '#withType':: d.fn(help='Type of this event (Normal, Warning), new types could be added in the future', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/eventSeries.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/eventSeries.libsonnet deleted file mode 100644 index 0832d8f32697..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/eventSeries.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='eventSeries', url='', help='EventSeries contain information on series of events, i.e. thing that was/is happening continuously for some time.'), - '#withCount':: d.fn(help='Number of occurrences in this series up to the last heartbeat time', args=[d.arg(name='count', type=d.T.integer)]), - withCount(count): { count: count }, - '#withLastObservedTime':: d.fn(help='MicroTime is version of Time with microsecond level precision.', args=[d.arg(name='lastObservedTime', type=d.T.string)]), - withLastObservedTime(lastObservedTime): { lastObservedTime: lastObservedTime }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/eventSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/eventSource.libsonnet deleted file mode 100644 index 481fe8e348ca..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/eventSource.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='eventSource', url='', help='EventSource contains information for an event.'), - '#withComponent':: d.fn(help='Component from which the event is generated.', args=[d.arg(name='component', type=d.T.string)]), - withComponent(component): { component: component }, - '#withHost':: d.fn(help='Node name on which the event is generated.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { host: host }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/execAction.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/execAction.libsonnet deleted file mode 100644 index 2f7256a74fdb..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/execAction.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='execAction', url='', help='ExecAction describes a "run in container" action.'), - '#withCommand':: d.fn(help="Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.", args=[d.arg(name='command', type=d.T.array)]), - withCommand(command): { command: if std.isArray(v=command) then command else [command] }, - '#withCommandMixin':: d.fn(help="Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='command', type=d.T.array)]), - withCommandMixin(command): { command+: if std.isArray(v=command) then command else [command] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/fcVolumeSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/fcVolumeSource.libsonnet deleted file mode 100644 index 15792b2ab9c6..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/fcVolumeSource.libsonnet +++ /dev/null @@ -1,20 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='fcVolumeSource', url='', help='Represents a Fibre Channel volume. Fibre Channel volumes can only be mounted as read/write once. Fibre Channel volumes support ownership management and SELinux relabeling.'), - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { fsType: fsType }, - '#withLun':: d.fn(help='Optional: FC target lun number', args=[d.arg(name='lun', type=d.T.integer)]), - withLun(lun): { lun: lun }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#withTargetWWNs':: d.fn(help='Optional: FC target worldwide names (WWNs)', args=[d.arg(name='targetWWNs', type=d.T.array)]), - withTargetWWNs(targetWWNs): { targetWWNs: if std.isArray(v=targetWWNs) then targetWWNs else [targetWWNs] }, - '#withTargetWWNsMixin':: d.fn(help='Optional: FC target worldwide names (WWNs)\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='targetWWNs', type=d.T.array)]), - withTargetWWNsMixin(targetWWNs): { targetWWNs+: if std.isArray(v=targetWWNs) then targetWWNs else [targetWWNs] }, - '#withWwids':: d.fn(help='Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.', args=[d.arg(name='wwids', type=d.T.array)]), - withWwids(wwids): { wwids: if std.isArray(v=wwids) then wwids else [wwids] }, - '#withWwidsMixin':: d.fn(help='Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='wwids', type=d.T.array)]), - withWwidsMixin(wwids): { wwids+: if std.isArray(v=wwids) then wwids else [wwids] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/flexPersistentVolumeSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/flexPersistentVolumeSource.libsonnet deleted file mode 100644 index 107b8af400b6..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/flexPersistentVolumeSource.libsonnet +++ /dev/null @@ -1,23 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='flexPersistentVolumeSource', url='', help='FlexPersistentVolumeSource represents a generic persistent volume resource that is provisioned/attached using an exec based plugin.'), - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { secretRef+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { secretRef+: { namespace: namespace } }, - }, - '#withDriver':: d.fn(help='Driver is the name of the driver to use for this volume.', args=[d.arg(name='driver', type=d.T.string)]), - withDriver(driver): { driver: driver }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { fsType: fsType }, - '#withOptions':: d.fn(help='Optional: Extra command options if any.', args=[d.arg(name='options', type=d.T.object)]), - withOptions(options): { options: options }, - '#withOptionsMixin':: d.fn(help='Optional: Extra command options if any.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.object)]), - withOptionsMixin(options): { options+: options }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/flexVolumeSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/flexVolumeSource.libsonnet deleted file mode 100644 index cd42df6d5b18..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/flexVolumeSource.libsonnet +++ /dev/null @@ -1,21 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='flexVolumeSource', url='', help='FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.'), - '#secretRef':: d.obj(help='LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.'), - secretRef: { - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { secretRef+: { name: name } }, - }, - '#withDriver':: d.fn(help='Driver is the name of the driver to use for this volume.', args=[d.arg(name='driver', type=d.T.string)]), - withDriver(driver): { driver: driver }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { fsType: fsType }, - '#withOptions':: d.fn(help='Optional: Extra command options if any.', args=[d.arg(name='options', type=d.T.object)]), - withOptions(options): { options: options }, - '#withOptionsMixin':: d.fn(help='Optional: Extra command options if any.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.object)]), - withOptionsMixin(options): { options+: options }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/flockerVolumeSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/flockerVolumeSource.libsonnet deleted file mode 100644 index c8cd49ded345..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/flockerVolumeSource.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='flockerVolumeSource', url='', help='Represents a Flocker volume mounted by the Flocker agent. One and only one of datasetName and datasetUUID should be set. Flocker volumes do not support ownership management or SELinux relabeling.'), - '#withDatasetName':: d.fn(help='Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated', args=[d.arg(name='datasetName', type=d.T.string)]), - withDatasetName(datasetName): { datasetName: datasetName }, - '#withDatasetUUID':: d.fn(help='UUID of the dataset. This is unique identifier of a Flocker dataset', args=[d.arg(name='datasetUUID', type=d.T.string)]), - withDatasetUUID(datasetUUID): { datasetUUID: datasetUUID }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/gcePersistentDiskVolumeSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/gcePersistentDiskVolumeSource.libsonnet deleted file mode 100644 index c8a80d2a135e..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/gcePersistentDiskVolumeSource.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='gcePersistentDiskVolumeSource', url='', help='Represents a Persistent Disk resource in Google Compute Engine.\n\nA GCE PD must exist before mounting to a container. The disk must also be in the same GCE project and zone as the kubelet. A GCE PD can only be mounted as read/write once or read-only many times. GCE PDs support ownership management and SELinux relabeling.'), - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { fsType: fsType }, - '#withPartition':: d.fn(help='The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='partition', type=d.T.integer)]), - withPartition(partition): { partition: partition }, - '#withPdName':: d.fn(help='Unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='pdName', type=d.T.string)]), - withPdName(pdName): { pdName: pdName }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/gitRepoVolumeSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/gitRepoVolumeSource.libsonnet deleted file mode 100644 index ed2d97098554..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/gitRepoVolumeSource.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='gitRepoVolumeSource', url='', help="Represents a volume that is populated with the contents of a git repository. Git repo volumes do not support ownership management. Git repo volumes support SELinux relabeling.\n\nDEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod's container."), - '#withDirectory':: d.fn(help="Target directory name. Must not contain or start with '..'. If '.' is supplied, the volume directory will be the git repository. Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name.", args=[d.arg(name='directory', type=d.T.string)]), - withDirectory(directory): { directory: directory }, - '#withRepository':: d.fn(help='Repository URL', args=[d.arg(name='repository', type=d.T.string)]), - withRepository(repository): { repository: repository }, - '#withRevision':: d.fn(help='Commit hash for the specified revision.', args=[d.arg(name='revision', type=d.T.string)]), - withRevision(revision): { revision: revision }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/glusterfsPersistentVolumeSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/glusterfsPersistentVolumeSource.libsonnet deleted file mode 100644 index e3f38d605ff9..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/glusterfsPersistentVolumeSource.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='glusterfsPersistentVolumeSource', url='', help='Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling.'), - '#withEndpoints':: d.fn(help='EndpointsName is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='endpoints', type=d.T.string)]), - withEndpoints(endpoints): { endpoints: endpoints }, - '#withEndpointsNamespace':: d.fn(help='EndpointsNamespace is the namespace that contains Glusterfs endpoint. If this field is empty, the EndpointNamespace defaults to the same namespace as the bound PVC. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='endpointsNamespace', type=d.T.string)]), - withEndpointsNamespace(endpointsNamespace): { endpointsNamespace: endpointsNamespace }, - '#withPath':: d.fn(help='Path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { path: path }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/glusterfsVolumeSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/glusterfsVolumeSource.libsonnet deleted file mode 100644 index bd6e09d877df..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/glusterfsVolumeSource.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='glusterfsVolumeSource', url='', help='Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling.'), - '#withEndpoints':: d.fn(help='EndpointsName is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='endpoints', type=d.T.string)]), - withEndpoints(endpoints): { endpoints: endpoints }, - '#withPath':: d.fn(help='Path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { path: path }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/handler.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/handler.libsonnet deleted file mode 100644 index 076cbf63651b..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/handler.libsonnet +++ /dev/null @@ -1,35 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='handler', url='', help='Handler defines a specific action that should be taken'), - '#exec':: d.obj(help='ExecAction describes a "run in container" action.'), - exec: { - '#withCommand':: d.fn(help="Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.", args=[d.arg(name='command', type=d.T.array)]), - withCommand(command): { exec+: { command: if std.isArray(v=command) then command else [command] } }, - '#withCommandMixin':: d.fn(help="Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='command', type=d.T.array)]), - withCommandMixin(command): { exec+: { command+: if std.isArray(v=command) then command else [command] } }, - }, - '#httpGet':: d.obj(help='HTTPGetAction describes an action based on HTTP Get requests.'), - httpGet: { - '#withHost':: d.fn(help='Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { httpGet+: { host: host } }, - '#withHttpHeaders':: d.fn(help='Custom headers to set in the request. HTTP allows repeated headers.', args=[d.arg(name='httpHeaders', type=d.T.array)]), - withHttpHeaders(httpHeaders): { httpGet+: { httpHeaders: if std.isArray(v=httpHeaders) then httpHeaders else [httpHeaders] } }, - '#withHttpHeadersMixin':: d.fn(help='Custom headers to set in the request. HTTP allows repeated headers.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='httpHeaders', type=d.T.array)]), - withHttpHeadersMixin(httpHeaders): { httpGet+: { httpHeaders+: if std.isArray(v=httpHeaders) then httpHeaders else [httpHeaders] } }, - '#withPath':: d.fn(help='Path to access on the HTTP server.', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { httpGet+: { path: path } }, - '#withPort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='port', type=d.T.string)]), - withPort(port): { httpGet+: { port: port } }, - '#withScheme':: d.fn(help='Scheme to use for connecting to the host. Defaults to HTTP.', args=[d.arg(name='scheme', type=d.T.string)]), - withScheme(scheme): { httpGet+: { scheme: scheme } }, - }, - '#tcpSocket':: d.obj(help='TCPSocketAction describes an action based on opening a socket'), - tcpSocket: { - '#withHost':: d.fn(help='Optional: Host name to connect to, defaults to the pod IP.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { tcpSocket+: { host: host } }, - '#withPort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='port', type=d.T.string)]), - withPort(port): { tcpSocket+: { port: port } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/hostAlias.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/hostAlias.libsonnet deleted file mode 100644 index bc4a29b331ea..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/hostAlias.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='hostAlias', url='', help="HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the pod's hosts file."), - '#withHostnames':: d.fn(help='Hostnames for the above IP address.', args=[d.arg(name='hostnames', type=d.T.array)]), - withHostnames(hostnames): { hostnames: if std.isArray(v=hostnames) then hostnames else [hostnames] }, - '#withHostnamesMixin':: d.fn(help='Hostnames for the above IP address.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='hostnames', type=d.T.array)]), - withHostnamesMixin(hostnames): { hostnames+: if std.isArray(v=hostnames) then hostnames else [hostnames] }, - '#withIp':: d.fn(help='IP address of the host file entry.', args=[d.arg(name='ip', type=d.T.string)]), - withIp(ip): { ip: ip }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/hostPathVolumeSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/hostPathVolumeSource.libsonnet deleted file mode 100644 index 488c793ced58..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/hostPathVolumeSource.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='hostPathVolumeSource', url='', help='Represents a host path mapped into a pod. Host path volumes do not support ownership management or SELinux relabeling.'), - '#withPath':: d.fn(help='Path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { path: path }, - '#withType':: d.fn(help='Type for HostPath Volume Defaults to "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/httpGetAction.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/httpGetAction.libsonnet deleted file mode 100644 index 506e743ca855..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/httpGetAction.libsonnet +++ /dev/null @@ -1,18 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='httpGetAction', url='', help='HTTPGetAction describes an action based on HTTP Get requests.'), - '#withHost':: d.fn(help='Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { host: host }, - '#withHttpHeaders':: d.fn(help='Custom headers to set in the request. HTTP allows repeated headers.', args=[d.arg(name='httpHeaders', type=d.T.array)]), - withHttpHeaders(httpHeaders): { httpHeaders: if std.isArray(v=httpHeaders) then httpHeaders else [httpHeaders] }, - '#withHttpHeadersMixin':: d.fn(help='Custom headers to set in the request. HTTP allows repeated headers.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='httpHeaders', type=d.T.array)]), - withHttpHeadersMixin(httpHeaders): { httpHeaders+: if std.isArray(v=httpHeaders) then httpHeaders else [httpHeaders] }, - '#withPath':: d.fn(help='Path to access on the HTTP server.', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { path: path }, - '#withPort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='port', type=d.T.string)]), - withPort(port): { port: port }, - '#withScheme':: d.fn(help='Scheme to use for connecting to the host. Defaults to HTTP.', args=[d.arg(name='scheme', type=d.T.string)]), - withScheme(scheme): { scheme: scheme }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/httpHeader.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/httpHeader.libsonnet deleted file mode 100644 index 72edfc05227d..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/httpHeader.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='httpHeader', url='', help='HTTPHeader describes a custom header to be used in HTTP probes'), - '#withName':: d.fn(help='The header field name', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withValue':: d.fn(help='The header field value', args=[d.arg(name='value', type=d.T.string)]), - withValue(value): { value: value }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/iscsiPersistentVolumeSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/iscsiPersistentVolumeSource.libsonnet deleted file mode 100644 index 8b461b5661ad..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/iscsiPersistentVolumeSource.libsonnet +++ /dev/null @@ -1,35 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='iscsiPersistentVolumeSource', url='', help='ISCSIPersistentVolumeSource represents an ISCSI disk. ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling.'), - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { secretRef+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { secretRef+: { namespace: namespace } }, - }, - '#withChapAuthDiscovery':: d.fn(help='whether support iSCSI Discovery CHAP authentication', args=[d.arg(name='chapAuthDiscovery', type=d.T.boolean)]), - withChapAuthDiscovery(chapAuthDiscovery): { chapAuthDiscovery: chapAuthDiscovery }, - '#withChapAuthSession':: d.fn(help='whether support iSCSI Session CHAP authentication', args=[d.arg(name='chapAuthSession', type=d.T.boolean)]), - withChapAuthSession(chapAuthSession): { chapAuthSession: chapAuthSession }, - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { fsType: fsType }, - '#withInitiatorName':: d.fn(help='Custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface : will be created for the connection.', args=[d.arg(name='initiatorName', type=d.T.string)]), - withInitiatorName(initiatorName): { initiatorName: initiatorName }, - '#withIqn':: d.fn(help='Target iSCSI Qualified Name.', args=[d.arg(name='iqn', type=d.T.string)]), - withIqn(iqn): { iqn: iqn }, - '#withIscsiInterface':: d.fn(help="iSCSI Interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).", args=[d.arg(name='iscsiInterface', type=d.T.string)]), - withIscsiInterface(iscsiInterface): { iscsiInterface: iscsiInterface }, - '#withLun':: d.fn(help='iSCSI Target Lun number.', args=[d.arg(name='lun', type=d.T.integer)]), - withLun(lun): { lun: lun }, - '#withPortals':: d.fn(help='iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).', args=[d.arg(name='portals', type=d.T.array)]), - withPortals(portals): { portals: if std.isArray(v=portals) then portals else [portals] }, - '#withPortalsMixin':: d.fn(help='iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='portals', type=d.T.array)]), - withPortalsMixin(portals): { portals+: if std.isArray(v=portals) then portals else [portals] }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#withTargetPortal':: d.fn(help='iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).', args=[d.arg(name='targetPortal', type=d.T.string)]), - withTargetPortal(targetPortal): { targetPortal: targetPortal }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/iscsiVolumeSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/iscsiVolumeSource.libsonnet deleted file mode 100644 index d67c131e87d0..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/iscsiVolumeSource.libsonnet +++ /dev/null @@ -1,33 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='iscsiVolumeSource', url='', help='Represents an ISCSI disk. ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling.'), - '#secretRef':: d.obj(help='LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.'), - secretRef: { - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { secretRef+: { name: name } }, - }, - '#withChapAuthDiscovery':: d.fn(help='whether support iSCSI Discovery CHAP authentication', args=[d.arg(name='chapAuthDiscovery', type=d.T.boolean)]), - withChapAuthDiscovery(chapAuthDiscovery): { chapAuthDiscovery: chapAuthDiscovery }, - '#withChapAuthSession':: d.fn(help='whether support iSCSI Session CHAP authentication', args=[d.arg(name='chapAuthSession', type=d.T.boolean)]), - withChapAuthSession(chapAuthSession): { chapAuthSession: chapAuthSession }, - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { fsType: fsType }, - '#withInitiatorName':: d.fn(help='Custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface : will be created for the connection.', args=[d.arg(name='initiatorName', type=d.T.string)]), - withInitiatorName(initiatorName): { initiatorName: initiatorName }, - '#withIqn':: d.fn(help='Target iSCSI Qualified Name.', args=[d.arg(name='iqn', type=d.T.string)]), - withIqn(iqn): { iqn: iqn }, - '#withIscsiInterface':: d.fn(help="iSCSI Interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).", args=[d.arg(name='iscsiInterface', type=d.T.string)]), - withIscsiInterface(iscsiInterface): { iscsiInterface: iscsiInterface }, - '#withLun':: d.fn(help='iSCSI Target Lun number.', args=[d.arg(name='lun', type=d.T.integer)]), - withLun(lun): { lun: lun }, - '#withPortals':: d.fn(help='iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).', args=[d.arg(name='portals', type=d.T.array)]), - withPortals(portals): { portals: if std.isArray(v=portals) then portals else [portals] }, - '#withPortalsMixin':: d.fn(help='iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='portals', type=d.T.array)]), - withPortalsMixin(portals): { portals+: if std.isArray(v=portals) then portals else [portals] }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#withTargetPortal':: d.fn(help='iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).', args=[d.arg(name='targetPortal', type=d.T.string)]), - withTargetPortal(targetPortal): { targetPortal: targetPortal }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/keyToPath.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/keyToPath.libsonnet deleted file mode 100644 index 5b6e6c7a4584..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/keyToPath.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='keyToPath', url='', help='Maps a string key to a path within a volume.'), - '#withKey':: d.fn(help='The key to project.', args=[d.arg(name='key', type=d.T.string)]), - withKey(key): { key: key }, - '#withMode':: d.fn(help='Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.', args=[d.arg(name='mode', type=d.T.integer)]), - withMode(mode): { mode: mode }, - '#withPath':: d.fn(help="The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.", args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { path: path }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/lifecycle.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/lifecycle.libsonnet deleted file mode 100644 index 7fd4b6074c53..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/lifecycle.libsonnet +++ /dev/null @@ -1,70 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='lifecycle', url='', help='Lifecycle describes actions that the management system should take in response to container lifecycle events. For the PostStart and PreStop lifecycle handlers, management of the container blocks until the action is complete, unless the container process fails, in which case the handler is aborted.'), - '#postStart':: d.obj(help='Handler defines a specific action that should be taken'), - postStart: { - '#exec':: d.obj(help='ExecAction describes a "run in container" action.'), - exec: { - '#withCommand':: d.fn(help="Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.", args=[d.arg(name='command', type=d.T.array)]), - withCommand(command): { postStart+: { exec+: { command: if std.isArray(v=command) then command else [command] } } }, - '#withCommandMixin':: d.fn(help="Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='command', type=d.T.array)]), - withCommandMixin(command): { postStart+: { exec+: { command+: if std.isArray(v=command) then command else [command] } } }, - }, - '#httpGet':: d.obj(help='HTTPGetAction describes an action based on HTTP Get requests.'), - httpGet: { - '#withHost':: d.fn(help='Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { postStart+: { httpGet+: { host: host } } }, - '#withHttpHeaders':: d.fn(help='Custom headers to set in the request. HTTP allows repeated headers.', args=[d.arg(name='httpHeaders', type=d.T.array)]), - withHttpHeaders(httpHeaders): { postStart+: { httpGet+: { httpHeaders: if std.isArray(v=httpHeaders) then httpHeaders else [httpHeaders] } } }, - '#withHttpHeadersMixin':: d.fn(help='Custom headers to set in the request. HTTP allows repeated headers.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='httpHeaders', type=d.T.array)]), - withHttpHeadersMixin(httpHeaders): { postStart+: { httpGet+: { httpHeaders+: if std.isArray(v=httpHeaders) then httpHeaders else [httpHeaders] } } }, - '#withPath':: d.fn(help='Path to access on the HTTP server.', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { postStart+: { httpGet+: { path: path } } }, - '#withPort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='port', type=d.T.string)]), - withPort(port): { postStart+: { httpGet+: { port: port } } }, - '#withScheme':: d.fn(help='Scheme to use for connecting to the host. Defaults to HTTP.', args=[d.arg(name='scheme', type=d.T.string)]), - withScheme(scheme): { postStart+: { httpGet+: { scheme: scheme } } }, - }, - '#tcpSocket':: d.obj(help='TCPSocketAction describes an action based on opening a socket'), - tcpSocket: { - '#withHost':: d.fn(help='Optional: Host name to connect to, defaults to the pod IP.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { postStart+: { tcpSocket+: { host: host } } }, - '#withPort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='port', type=d.T.string)]), - withPort(port): { postStart+: { tcpSocket+: { port: port } } }, - }, - }, - '#preStop':: d.obj(help='Handler defines a specific action that should be taken'), - preStop: { - '#exec':: d.obj(help='ExecAction describes a "run in container" action.'), - exec: { - '#withCommand':: d.fn(help="Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.", args=[d.arg(name='command', type=d.T.array)]), - withCommand(command): { preStop+: { exec+: { command: if std.isArray(v=command) then command else [command] } } }, - '#withCommandMixin':: d.fn(help="Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='command', type=d.T.array)]), - withCommandMixin(command): { preStop+: { exec+: { command+: if std.isArray(v=command) then command else [command] } } }, - }, - '#httpGet':: d.obj(help='HTTPGetAction describes an action based on HTTP Get requests.'), - httpGet: { - '#withHost':: d.fn(help='Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { preStop+: { httpGet+: { host: host } } }, - '#withHttpHeaders':: d.fn(help='Custom headers to set in the request. HTTP allows repeated headers.', args=[d.arg(name='httpHeaders', type=d.T.array)]), - withHttpHeaders(httpHeaders): { preStop+: { httpGet+: { httpHeaders: if std.isArray(v=httpHeaders) then httpHeaders else [httpHeaders] } } }, - '#withHttpHeadersMixin':: d.fn(help='Custom headers to set in the request. HTTP allows repeated headers.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='httpHeaders', type=d.T.array)]), - withHttpHeadersMixin(httpHeaders): { preStop+: { httpGet+: { httpHeaders+: if std.isArray(v=httpHeaders) then httpHeaders else [httpHeaders] } } }, - '#withPath':: d.fn(help='Path to access on the HTTP server.', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { preStop+: { httpGet+: { path: path } } }, - '#withPort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='port', type=d.T.string)]), - withPort(port): { preStop+: { httpGet+: { port: port } } }, - '#withScheme':: d.fn(help='Scheme to use for connecting to the host. Defaults to HTTP.', args=[d.arg(name='scheme', type=d.T.string)]), - withScheme(scheme): { preStop+: { httpGet+: { scheme: scheme } } }, - }, - '#tcpSocket':: d.obj(help='TCPSocketAction describes an action based on opening a socket'), - tcpSocket: { - '#withHost':: d.fn(help='Optional: Host name to connect to, defaults to the pod IP.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { preStop+: { tcpSocket+: { host: host } } }, - '#withPort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='port', type=d.T.string)]), - withPort(port): { preStop+: { tcpSocket+: { port: port } } }, - }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/limitRange.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/limitRange.libsonnet deleted file mode 100644 index 391482c7b31c..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/limitRange.libsonnet +++ /dev/null @@ -1,63 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='limitRange', url='', help='LimitRange sets resource usage limits for each kind of resource in a Namespace.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Limitrange', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'v1', - kind: 'LimitRange', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='LimitRangeSpec defines a min/max usage limit for resources that match on kind.'), - spec: { - '#withLimits':: d.fn(help='Limits is the list of LimitRangeItem objects that are enforced.', args=[d.arg(name='limits', type=d.T.array)]), - withLimits(limits): { spec+: { limits: if std.isArray(v=limits) then limits else [limits] } }, - '#withLimitsMixin':: d.fn(help='Limits is the list of LimitRangeItem objects that are enforced.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='limits', type=d.T.array)]), - withLimitsMixin(limits): { spec+: { limits+: if std.isArray(v=limits) then limits else [limits] } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/limitRangeItem.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/limitRangeItem.libsonnet deleted file mode 100644 index 27ad7bb2f546..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/limitRangeItem.libsonnet +++ /dev/null @@ -1,28 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='limitRangeItem', url='', help='LimitRangeItem defines a min/max usage limit for any resource that matches on kind.'), - '#withDefault':: d.fn(help='Default resource requirement limit value by resource name if resource limit is omitted.', args=[d.arg(name='default', type=d.T.object)]), - withDefault(default): { default: default }, - '#withDefaultMixin':: d.fn(help='Default resource requirement limit value by resource name if resource limit is omitted.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='default', type=d.T.object)]), - withDefaultMixin(default): { default+: default }, - '#withDefaultRequest':: d.fn(help='DefaultRequest is the default resource requirement request value by resource name if resource request is omitted.', args=[d.arg(name='defaultRequest', type=d.T.object)]), - withDefaultRequest(defaultRequest): { defaultRequest: defaultRequest }, - '#withDefaultRequestMixin':: d.fn(help='DefaultRequest is the default resource requirement request value by resource name if resource request is omitted.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='defaultRequest', type=d.T.object)]), - withDefaultRequestMixin(defaultRequest): { defaultRequest+: defaultRequest }, - '#withMax':: d.fn(help='Max usage constraints on this kind by resource name.', args=[d.arg(name='max', type=d.T.object)]), - withMax(max): { max: max }, - '#withMaxLimitRequestRatio':: d.fn(help='MaxLimitRequestRatio if specified, the named resource must have a request and limit that are both non-zero where limit divided by request is less than or equal to the enumerated value; this represents the max burst for the named resource.', args=[d.arg(name='maxLimitRequestRatio', type=d.T.object)]), - withMaxLimitRequestRatio(maxLimitRequestRatio): { maxLimitRequestRatio: maxLimitRequestRatio }, - '#withMaxLimitRequestRatioMixin':: d.fn(help='MaxLimitRequestRatio if specified, the named resource must have a request and limit that are both non-zero where limit divided by request is less than or equal to the enumerated value; this represents the max burst for the named resource.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='maxLimitRequestRatio', type=d.T.object)]), - withMaxLimitRequestRatioMixin(maxLimitRequestRatio): { maxLimitRequestRatio+: maxLimitRequestRatio }, - '#withMaxMixin':: d.fn(help='Max usage constraints on this kind by resource name.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='max', type=d.T.object)]), - withMaxMixin(max): { max+: max }, - '#withMin':: d.fn(help='Min usage constraints on this kind by resource name.', args=[d.arg(name='min', type=d.T.object)]), - withMin(min): { min: min }, - '#withMinMixin':: d.fn(help='Min usage constraints on this kind by resource name.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='min', type=d.T.object)]), - withMinMixin(min): { min+: min }, - '#withType':: d.fn(help='Type of resource that this limit applies to.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/limitRangeSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/limitRangeSpec.libsonnet deleted file mode 100644 index bf8d5fe68689..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/limitRangeSpec.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='limitRangeSpec', url='', help='LimitRangeSpec defines a min/max usage limit for resources that match on kind.'), - '#withLimits':: d.fn(help='Limits is the list of LimitRangeItem objects that are enforced.', args=[d.arg(name='limits', type=d.T.array)]), - withLimits(limits): { limits: if std.isArray(v=limits) then limits else [limits] }, - '#withLimitsMixin':: d.fn(help='Limits is the list of LimitRangeItem objects that are enforced.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='limits', type=d.T.array)]), - withLimitsMixin(limits): { limits+: if std.isArray(v=limits) then limits else [limits] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/loadBalancerIngress.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/loadBalancerIngress.libsonnet deleted file mode 100644 index 4df0afccc3fe..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/loadBalancerIngress.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='loadBalancerIngress', url='', help='LoadBalancerIngress represents the status of a load-balancer ingress point: traffic intended for the service should be sent to an ingress point.'), - '#withHostname':: d.fn(help='Hostname is set for load-balancer ingress points that are DNS based (typically AWS load-balancers)', args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { hostname: hostname }, - '#withIp':: d.fn(help='IP is set for load-balancer ingress points that are IP based (typically GCE or OpenStack load-balancers)', args=[d.arg(name='ip', type=d.T.string)]), - withIp(ip): { ip: ip }, - '#withPorts':: d.fn(help='Ports is a list of records of service ports If used, every port defined in the service should have an entry in it', args=[d.arg(name='ports', type=d.T.array)]), - withPorts(ports): { ports: if std.isArray(v=ports) then ports else [ports] }, - '#withPortsMixin':: d.fn(help='Ports is a list of records of service ports If used, every port defined in the service should have an entry in it\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ports', type=d.T.array)]), - withPortsMixin(ports): { ports+: if std.isArray(v=ports) then ports else [ports] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/loadBalancerStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/loadBalancerStatus.libsonnet deleted file mode 100644 index b70844b704d7..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/loadBalancerStatus.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='loadBalancerStatus', url='', help='LoadBalancerStatus represents the status of a load-balancer.'), - '#withIngress':: d.fn(help='Ingress is a list containing ingress points for the load-balancer. Traffic intended for the service should be sent to these ingress points.', args=[d.arg(name='ingress', type=d.T.array)]), - withIngress(ingress): { ingress: if std.isArray(v=ingress) then ingress else [ingress] }, - '#withIngressMixin':: d.fn(help='Ingress is a list containing ingress points for the load-balancer. Traffic intended for the service should be sent to these ingress points.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ingress', type=d.T.array)]), - withIngressMixin(ingress): { ingress+: if std.isArray(v=ingress) then ingress else [ingress] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/localObjectReference.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/localObjectReference.libsonnet deleted file mode 100644 index 894f562249fe..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/localObjectReference.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='localObjectReference', url='', help='LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.'), - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/localVolumeSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/localVolumeSource.libsonnet deleted file mode 100644 index d3fd00e75bf8..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/localVolumeSource.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='localVolumeSource', url='', help='Local represents directly-attached storage with node affinity (Beta feature)'), - '#withFsType':: d.fn(help='Filesystem type to mount. It applies only when the Path is a block device. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default value is to auto-select a fileystem if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { fsType: fsType }, - '#withPath':: d.fn(help='The full path to the volume on the node. It can be either a directory or block device (disk, partition, ...).', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { path: path }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/main.libsonnet deleted file mode 100644 index b4d784e48661..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/main.libsonnet +++ /dev/null @@ -1,177 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1', url='', help=''), - affinity: (import 'affinity.libsonnet'), - attachedVolume: (import 'attachedVolume.libsonnet'), - awsElasticBlockStoreVolumeSource: (import 'awsElasticBlockStoreVolumeSource.libsonnet'), - azureDiskVolumeSource: (import 'azureDiskVolumeSource.libsonnet'), - azureFilePersistentVolumeSource: (import 'azureFilePersistentVolumeSource.libsonnet'), - azureFileVolumeSource: (import 'azureFileVolumeSource.libsonnet'), - binding: (import 'binding.libsonnet'), - capabilities: (import 'capabilities.libsonnet'), - cephFSPersistentVolumeSource: (import 'cephFSPersistentVolumeSource.libsonnet'), - cephFSVolumeSource: (import 'cephFSVolumeSource.libsonnet'), - cinderPersistentVolumeSource: (import 'cinderPersistentVolumeSource.libsonnet'), - cinderVolumeSource: (import 'cinderVolumeSource.libsonnet'), - clientIPConfig: (import 'clientIPConfig.libsonnet'), - componentCondition: (import 'componentCondition.libsonnet'), - componentStatus: (import 'componentStatus.libsonnet'), - configMap: (import 'configMap.libsonnet'), - configMapEnvSource: (import 'configMapEnvSource.libsonnet'), - configMapKeySelector: (import 'configMapKeySelector.libsonnet'), - configMapNodeConfigSource: (import 'configMapNodeConfigSource.libsonnet'), - configMapProjection: (import 'configMapProjection.libsonnet'), - configMapVolumeSource: (import 'configMapVolumeSource.libsonnet'), - container: (import 'container.libsonnet'), - containerImage: (import 'containerImage.libsonnet'), - containerPort: (import 'containerPort.libsonnet'), - containerState: (import 'containerState.libsonnet'), - containerStateRunning: (import 'containerStateRunning.libsonnet'), - containerStateTerminated: (import 'containerStateTerminated.libsonnet'), - containerStateWaiting: (import 'containerStateWaiting.libsonnet'), - containerStatus: (import 'containerStatus.libsonnet'), - csiPersistentVolumeSource: (import 'csiPersistentVolumeSource.libsonnet'), - csiVolumeSource: (import 'csiVolumeSource.libsonnet'), - daemonEndpoint: (import 'daemonEndpoint.libsonnet'), - downwardAPIProjection: (import 'downwardAPIProjection.libsonnet'), - downwardAPIVolumeFile: (import 'downwardAPIVolumeFile.libsonnet'), - downwardAPIVolumeSource: (import 'downwardAPIVolumeSource.libsonnet'), - emptyDirVolumeSource: (import 'emptyDirVolumeSource.libsonnet'), - endpointAddress: (import 'endpointAddress.libsonnet'), - endpointPort: (import 'endpointPort.libsonnet'), - endpointSubset: (import 'endpointSubset.libsonnet'), - endpoints: (import 'endpoints.libsonnet'), - envFromSource: (import 'envFromSource.libsonnet'), - envVar: (import 'envVar.libsonnet'), - envVarSource: (import 'envVarSource.libsonnet'), - ephemeralContainer: (import 'ephemeralContainer.libsonnet'), - ephemeralContainers: (import 'ephemeralContainers.libsonnet'), - ephemeralVolumeSource: (import 'ephemeralVolumeSource.libsonnet'), - event: (import 'event.libsonnet'), - eventSeries: (import 'eventSeries.libsonnet'), - eventSource: (import 'eventSource.libsonnet'), - execAction: (import 'execAction.libsonnet'), - fcVolumeSource: (import 'fcVolumeSource.libsonnet'), - flexPersistentVolumeSource: (import 'flexPersistentVolumeSource.libsonnet'), - flexVolumeSource: (import 'flexVolumeSource.libsonnet'), - flockerVolumeSource: (import 'flockerVolumeSource.libsonnet'), - gcePersistentDiskVolumeSource: (import 'gcePersistentDiskVolumeSource.libsonnet'), - gitRepoVolumeSource: (import 'gitRepoVolumeSource.libsonnet'), - glusterfsPersistentVolumeSource: (import 'glusterfsPersistentVolumeSource.libsonnet'), - glusterfsVolumeSource: (import 'glusterfsVolumeSource.libsonnet'), - handler: (import 'handler.libsonnet'), - hostAlias: (import 'hostAlias.libsonnet'), - hostPathVolumeSource: (import 'hostPathVolumeSource.libsonnet'), - httpGetAction: (import 'httpGetAction.libsonnet'), - httpHeader: (import 'httpHeader.libsonnet'), - iscsiPersistentVolumeSource: (import 'iscsiPersistentVolumeSource.libsonnet'), - iscsiVolumeSource: (import 'iscsiVolumeSource.libsonnet'), - keyToPath: (import 'keyToPath.libsonnet'), - lifecycle: (import 'lifecycle.libsonnet'), - limitRange: (import 'limitRange.libsonnet'), - limitRangeItem: (import 'limitRangeItem.libsonnet'), - limitRangeSpec: (import 'limitRangeSpec.libsonnet'), - loadBalancerIngress: (import 'loadBalancerIngress.libsonnet'), - loadBalancerStatus: (import 'loadBalancerStatus.libsonnet'), - localObjectReference: (import 'localObjectReference.libsonnet'), - localVolumeSource: (import 'localVolumeSource.libsonnet'), - namespace: (import 'namespace.libsonnet'), - namespaceCondition: (import 'namespaceCondition.libsonnet'), - namespaceSpec: (import 'namespaceSpec.libsonnet'), - namespaceStatus: (import 'namespaceStatus.libsonnet'), - nfsVolumeSource: (import 'nfsVolumeSource.libsonnet'), - node: (import 'node.libsonnet'), - nodeAddress: (import 'nodeAddress.libsonnet'), - nodeAffinity: (import 'nodeAffinity.libsonnet'), - nodeCondition: (import 'nodeCondition.libsonnet'), - nodeConfigSource: (import 'nodeConfigSource.libsonnet'), - nodeConfigStatus: (import 'nodeConfigStatus.libsonnet'), - nodeDaemonEndpoints: (import 'nodeDaemonEndpoints.libsonnet'), - nodeSelector: (import 'nodeSelector.libsonnet'), - nodeSelectorRequirement: (import 'nodeSelectorRequirement.libsonnet'), - nodeSelectorTerm: (import 'nodeSelectorTerm.libsonnet'), - nodeSpec: (import 'nodeSpec.libsonnet'), - nodeStatus: (import 'nodeStatus.libsonnet'), - nodeSystemInfo: (import 'nodeSystemInfo.libsonnet'), - objectFieldSelector: (import 'objectFieldSelector.libsonnet'), - objectReference: (import 'objectReference.libsonnet'), - persistentVolume: (import 'persistentVolume.libsonnet'), - persistentVolumeClaim: (import 'persistentVolumeClaim.libsonnet'), - persistentVolumeClaimCondition: (import 'persistentVolumeClaimCondition.libsonnet'), - persistentVolumeClaimSpec: (import 'persistentVolumeClaimSpec.libsonnet'), - persistentVolumeClaimStatus: (import 'persistentVolumeClaimStatus.libsonnet'), - persistentVolumeClaimTemplate: (import 'persistentVolumeClaimTemplate.libsonnet'), - persistentVolumeClaimVolumeSource: (import 'persistentVolumeClaimVolumeSource.libsonnet'), - persistentVolumeSpec: (import 'persistentVolumeSpec.libsonnet'), - persistentVolumeStatus: (import 'persistentVolumeStatus.libsonnet'), - photonPersistentDiskVolumeSource: (import 'photonPersistentDiskVolumeSource.libsonnet'), - pod: (import 'pod.libsonnet'), - podAffinity: (import 'podAffinity.libsonnet'), - podAffinityTerm: (import 'podAffinityTerm.libsonnet'), - podAntiAffinity: (import 'podAntiAffinity.libsonnet'), - podCondition: (import 'podCondition.libsonnet'), - podDNSConfig: (import 'podDNSConfig.libsonnet'), - podDNSConfigOption: (import 'podDNSConfigOption.libsonnet'), - podIP: (import 'podIP.libsonnet'), - podReadinessGate: (import 'podReadinessGate.libsonnet'), - podSecurityContext: (import 'podSecurityContext.libsonnet'), - podSpec: (import 'podSpec.libsonnet'), - podStatus: (import 'podStatus.libsonnet'), - podTemplate: (import 'podTemplate.libsonnet'), - podTemplateSpec: (import 'podTemplateSpec.libsonnet'), - portStatus: (import 'portStatus.libsonnet'), - portworxVolumeSource: (import 'portworxVolumeSource.libsonnet'), - preferredSchedulingTerm: (import 'preferredSchedulingTerm.libsonnet'), - probe: (import 'probe.libsonnet'), - projectedVolumeSource: (import 'projectedVolumeSource.libsonnet'), - quobyteVolumeSource: (import 'quobyteVolumeSource.libsonnet'), - rbdPersistentVolumeSource: (import 'rbdPersistentVolumeSource.libsonnet'), - rbdVolumeSource: (import 'rbdVolumeSource.libsonnet'), - replicationController: (import 'replicationController.libsonnet'), - replicationControllerCondition: (import 'replicationControllerCondition.libsonnet'), - replicationControllerSpec: (import 'replicationControllerSpec.libsonnet'), - replicationControllerStatus: (import 'replicationControllerStatus.libsonnet'), - resourceFieldSelector: (import 'resourceFieldSelector.libsonnet'), - resourceQuota: (import 'resourceQuota.libsonnet'), - resourceQuotaSpec: (import 'resourceQuotaSpec.libsonnet'), - resourceQuotaStatus: (import 'resourceQuotaStatus.libsonnet'), - resourceRequirements: (import 'resourceRequirements.libsonnet'), - scaleIOPersistentVolumeSource: (import 'scaleIOPersistentVolumeSource.libsonnet'), - scaleIOVolumeSource: (import 'scaleIOVolumeSource.libsonnet'), - scopeSelector: (import 'scopeSelector.libsonnet'), - scopedResourceSelectorRequirement: (import 'scopedResourceSelectorRequirement.libsonnet'), - seLinuxOptions: (import 'seLinuxOptions.libsonnet'), - seccompProfile: (import 'seccompProfile.libsonnet'), - secret: (import 'secret.libsonnet'), - secretEnvSource: (import 'secretEnvSource.libsonnet'), - secretKeySelector: (import 'secretKeySelector.libsonnet'), - secretProjection: (import 'secretProjection.libsonnet'), - secretReference: (import 'secretReference.libsonnet'), - secretVolumeSource: (import 'secretVolumeSource.libsonnet'), - securityContext: (import 'securityContext.libsonnet'), - service: (import 'service.libsonnet'), - serviceAccount: (import 'serviceAccount.libsonnet'), - serviceAccountTokenProjection: (import 'serviceAccountTokenProjection.libsonnet'), - servicePort: (import 'servicePort.libsonnet'), - serviceSpec: (import 'serviceSpec.libsonnet'), - serviceStatus: (import 'serviceStatus.libsonnet'), - sessionAffinityConfig: (import 'sessionAffinityConfig.libsonnet'), - storageOSPersistentVolumeSource: (import 'storageOSPersistentVolumeSource.libsonnet'), - storageOSVolumeSource: (import 'storageOSVolumeSource.libsonnet'), - sysctl: (import 'sysctl.libsonnet'), - taint: (import 'taint.libsonnet'), - tcpSocketAction: (import 'tcpSocketAction.libsonnet'), - toleration: (import 'toleration.libsonnet'), - topologySelectorLabelRequirement: (import 'topologySelectorLabelRequirement.libsonnet'), - topologySelectorTerm: (import 'topologySelectorTerm.libsonnet'), - topologySpreadConstraint: (import 'topologySpreadConstraint.libsonnet'), - typedLocalObjectReference: (import 'typedLocalObjectReference.libsonnet'), - volume: (import 'volume.libsonnet'), - volumeDevice: (import 'volumeDevice.libsonnet'), - volumeMount: (import 'volumeMount.libsonnet'), - volumeNodeAffinity: (import 'volumeNodeAffinity.libsonnet'), - volumeProjection: (import 'volumeProjection.libsonnet'), - vsphereVirtualDiskVolumeSource: (import 'vsphereVirtualDiskVolumeSource.libsonnet'), - weightedPodAffinityTerm: (import 'weightedPodAffinityTerm.libsonnet'), - windowsSecurityContextOptions: (import 'windowsSecurityContextOptions.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/namespace.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/namespace.libsonnet deleted file mode 100644 index da0733cd00d4..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/namespace.libsonnet +++ /dev/null @@ -1,63 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='namespace', url='', help='Namespace provides a scope for Names. Use of multiple namespaces is optional.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Namespace', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'v1', - kind: 'Namespace', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='NamespaceSpec describes the attributes on a Namespace.'), - spec: { - '#withFinalizers':: d.fn(help='Finalizers is an opaque list of values that must be empty to permanently remove object from storage. More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { spec+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Finalizers is an opaque list of values that must be empty to permanently remove object from storage. More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { spec+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/namespaceCondition.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/namespaceCondition.libsonnet deleted file mode 100644 index 14576467a925..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/namespaceCondition.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='namespaceCondition', url='', help='NamespaceCondition contains details about state of namespace.'), - '#withLastTransitionTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastTransitionTime', type=d.T.string)]), - withLastTransitionTime(lastTransitionTime): { lastTransitionTime: lastTransitionTime }, - '#withMessage':: d.fn(help='', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withReason':: d.fn(help='', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#withType':: d.fn(help='Type of namespace controller condition.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/namespaceSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/namespaceSpec.libsonnet deleted file mode 100644 index d95db4a1472a..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/namespaceSpec.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='namespaceSpec', url='', help='NamespaceSpec describes the attributes on a Namespace.'), - '#withFinalizers':: d.fn(help='Finalizers is an opaque list of values that must be empty to permanently remove object from storage. More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] }, - '#withFinalizersMixin':: d.fn(help='Finalizers is an opaque list of values that must be empty to permanently remove object from storage. More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/namespaceStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/namespaceStatus.libsonnet deleted file mode 100644 index f1657d856119..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/namespaceStatus.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='namespaceStatus', url='', help='NamespaceStatus is information about the current status of a Namespace.'), - '#withConditions':: d.fn(help="Represents the latest available observations of a namespace's current state.", args=[d.arg(name='conditions', type=d.T.array)]), - withConditions(conditions): { conditions: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withConditionsMixin':: d.fn(help="Represents the latest available observations of a namespace's current state.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='conditions', type=d.T.array)]), - withConditionsMixin(conditions): { conditions+: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withPhase':: d.fn(help='Phase is the current lifecycle phase of the namespace. More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/', args=[d.arg(name='phase', type=d.T.string)]), - withPhase(phase): { phase: phase }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/nfsVolumeSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/nfsVolumeSource.libsonnet deleted file mode 100644 index cfdf14e1ce02..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/nfsVolumeSource.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='nfsVolumeSource', url='', help='Represents an NFS mount that lasts the lifetime of a pod. NFS volumes do not support ownership management or SELinux relabeling.'), - '#withPath':: d.fn(help='Path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { path: path }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#withServer':: d.fn(help='Server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs', args=[d.arg(name='server', type=d.T.string)]), - withServer(server): { server: server }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/node.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/node.libsonnet deleted file mode 100644 index cbde369c3feb..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/node.libsonnet +++ /dev/null @@ -1,91 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='node', url='', help='Node is a worker node in Kubernetes. Each node will have a unique identifier in the cache (i.e. in etcd).'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Node', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'v1', - kind: 'Node', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='NodeSpec describes the attributes that a node is created with.'), - spec: { - '#configSource':: d.obj(help='NodeConfigSource specifies a source of node configuration. Exactly one subfield (excluding metadata) must be non-nil.'), - configSource: { - '#configMap':: d.obj(help='ConfigMapNodeConfigSource contains the information to reference a ConfigMap as a config source for the Node.'), - configMap: { - '#withKubeletConfigKey':: d.fn(help='KubeletConfigKey declares which key of the referenced ConfigMap corresponds to the KubeletConfiguration structure This field is required in all cases.', args=[d.arg(name='kubeletConfigKey', type=d.T.string)]), - withKubeletConfigKey(kubeletConfigKey): { spec+: { configSource+: { configMap+: { kubeletConfigKey: kubeletConfigKey } } } }, - '#withName':: d.fn(help='Name is the metadata.name of the referenced ConfigMap. This field is required in all cases.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { configSource+: { configMap+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace is the metadata.namespace of the referenced ConfigMap. This field is required in all cases.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { configSource+: { configMap+: { namespace: namespace } } } }, - '#withResourceVersion':: d.fn(help='ResourceVersion is the metadata.ResourceVersion of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { spec+: { configSource+: { configMap+: { resourceVersion: resourceVersion } } } }, - '#withUid':: d.fn(help='UID is the metadata.UID of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { configSource+: { configMap+: { uid: uid } } } }, - }, - }, - '#withExternalID':: d.fn(help='Deprecated. Not all kubelets will set this field. Remove field after 1.13. see: https://issues.k8s.io/61966', args=[d.arg(name='externalID', type=d.T.string)]), - withExternalID(externalID): { spec+: { externalID: externalID } }, - '#withPodCIDR':: d.fn(help='PodCIDR represents the pod IP range assigned to the node.', args=[d.arg(name='podCIDR', type=d.T.string)]), - withPodCIDR(podCIDR): { spec+: { podCIDR: podCIDR } }, - '#withPodCIDRs':: d.fn(help='podCIDRs represents the IP ranges assigned to the node for usage by Pods on that node. If this field is specified, the 0th entry must match the podCIDR field. It may contain at most 1 value for each of IPv4 and IPv6.', args=[d.arg(name='podCIDRs', type=d.T.array)]), - withPodCIDRs(podCIDRs): { spec+: { podCIDRs: if std.isArray(v=podCIDRs) then podCIDRs else [podCIDRs] } }, - '#withPodCIDRsMixin':: d.fn(help='podCIDRs represents the IP ranges assigned to the node for usage by Pods on that node. If this field is specified, the 0th entry must match the podCIDR field. It may contain at most 1 value for each of IPv4 and IPv6.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='podCIDRs', type=d.T.array)]), - withPodCIDRsMixin(podCIDRs): { spec+: { podCIDRs+: if std.isArray(v=podCIDRs) then podCIDRs else [podCIDRs] } }, - '#withProviderID':: d.fn(help='ID of the node assigned by the cloud provider in the format: ://', args=[d.arg(name='providerID', type=d.T.string)]), - withProviderID(providerID): { spec+: { providerID: providerID } }, - '#withTaints':: d.fn(help="If specified, the node's taints.", args=[d.arg(name='taints', type=d.T.array)]), - withTaints(taints): { spec+: { taints: if std.isArray(v=taints) then taints else [taints] } }, - '#withTaintsMixin':: d.fn(help="If specified, the node's taints.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='taints', type=d.T.array)]), - withTaintsMixin(taints): { spec+: { taints+: if std.isArray(v=taints) then taints else [taints] } }, - '#withUnschedulable':: d.fn(help='Unschedulable controls node schedulability of new pods. By default, node is schedulable. More info: https://kubernetes.io/docs/concepts/nodes/node/#manual-node-administration', args=[d.arg(name='unschedulable', type=d.T.boolean)]), - withUnschedulable(unschedulable): { spec+: { unschedulable: unschedulable } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/nodeAddress.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/nodeAddress.libsonnet deleted file mode 100644 index cc6061a645da..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/nodeAddress.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='nodeAddress', url='', help="NodeAddress contains information for the node's address."), - '#withAddress':: d.fn(help='The node address.', args=[d.arg(name='address', type=d.T.string)]), - withAddress(address): { address: address }, - '#withType':: d.fn(help='Node address type, one of Hostname, ExternalIP or InternalIP.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/nodeAffinity.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/nodeAffinity.libsonnet deleted file mode 100644 index 00c23f28ea1d..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/nodeAffinity.libsonnet +++ /dev/null @@ -1,17 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='nodeAffinity', url='', help='Node affinity is a group of node affinity scheduling rules.'), - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } }, - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/nodeCondition.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/nodeCondition.libsonnet deleted file mode 100644 index 954593d911a3..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/nodeCondition.libsonnet +++ /dev/null @@ -1,16 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='nodeCondition', url='', help='NodeCondition contains condition information for a node.'), - '#withLastHeartbeatTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastHeartbeatTime', type=d.T.string)]), - withLastHeartbeatTime(lastHeartbeatTime): { lastHeartbeatTime: lastHeartbeatTime }, - '#withLastTransitionTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastTransitionTime', type=d.T.string)]), - withLastTransitionTime(lastTransitionTime): { lastTransitionTime: lastTransitionTime }, - '#withMessage':: d.fn(help='Human readable message indicating details about last transition.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withReason':: d.fn(help="(brief) reason for the condition's last transition.", args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#withType':: d.fn(help='Type of node condition.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/nodeConfigSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/nodeConfigSource.libsonnet deleted file mode 100644 index 79954c7e7d16..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/nodeConfigSource.libsonnet +++ /dev/null @@ -1,19 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='nodeConfigSource', url='', help='NodeConfigSource specifies a source of node configuration. Exactly one subfield (excluding metadata) must be non-nil.'), - '#configMap':: d.obj(help='ConfigMapNodeConfigSource contains the information to reference a ConfigMap as a config source for the Node.'), - configMap: { - '#withKubeletConfigKey':: d.fn(help='KubeletConfigKey declares which key of the referenced ConfigMap corresponds to the KubeletConfiguration structure This field is required in all cases.', args=[d.arg(name='kubeletConfigKey', type=d.T.string)]), - withKubeletConfigKey(kubeletConfigKey): { configMap+: { kubeletConfigKey: kubeletConfigKey } }, - '#withName':: d.fn(help='Name is the metadata.name of the referenced ConfigMap. This field is required in all cases.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { configMap+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace is the metadata.namespace of the referenced ConfigMap. This field is required in all cases.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { configMap+: { namespace: namespace } }, - '#withResourceVersion':: d.fn(help='ResourceVersion is the metadata.ResourceVersion of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { configMap+: { resourceVersion: resourceVersion } }, - '#withUid':: d.fn(help='UID is the metadata.UID of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { configMap+: { uid: uid } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/nodeConfigStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/nodeConfigStatus.libsonnet deleted file mode 100644 index 338ed6227db6..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/nodeConfigStatus.libsonnet +++ /dev/null @@ -1,56 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='nodeConfigStatus', url='', help='NodeConfigStatus describes the status of the config assigned by Node.Spec.ConfigSource.'), - '#active':: d.obj(help='NodeConfigSource specifies a source of node configuration. Exactly one subfield (excluding metadata) must be non-nil.'), - active: { - '#configMap':: d.obj(help='ConfigMapNodeConfigSource contains the information to reference a ConfigMap as a config source for the Node.'), - configMap: { - '#withKubeletConfigKey':: d.fn(help='KubeletConfigKey declares which key of the referenced ConfigMap corresponds to the KubeletConfiguration structure This field is required in all cases.', args=[d.arg(name='kubeletConfigKey', type=d.T.string)]), - withKubeletConfigKey(kubeletConfigKey): { active+: { configMap+: { kubeletConfigKey: kubeletConfigKey } } }, - '#withName':: d.fn(help='Name is the metadata.name of the referenced ConfigMap. This field is required in all cases.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { active+: { configMap+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace is the metadata.namespace of the referenced ConfigMap. This field is required in all cases.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { active+: { configMap+: { namespace: namespace } } }, - '#withResourceVersion':: d.fn(help='ResourceVersion is the metadata.ResourceVersion of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { active+: { configMap+: { resourceVersion: resourceVersion } } }, - '#withUid':: d.fn(help='UID is the metadata.UID of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { active+: { configMap+: { uid: uid } } }, - }, - }, - '#assigned':: d.obj(help='NodeConfigSource specifies a source of node configuration. Exactly one subfield (excluding metadata) must be non-nil.'), - assigned: { - '#configMap':: d.obj(help='ConfigMapNodeConfigSource contains the information to reference a ConfigMap as a config source for the Node.'), - configMap: { - '#withKubeletConfigKey':: d.fn(help='KubeletConfigKey declares which key of the referenced ConfigMap corresponds to the KubeletConfiguration structure This field is required in all cases.', args=[d.arg(name='kubeletConfigKey', type=d.T.string)]), - withKubeletConfigKey(kubeletConfigKey): { assigned+: { configMap+: { kubeletConfigKey: kubeletConfigKey } } }, - '#withName':: d.fn(help='Name is the metadata.name of the referenced ConfigMap. This field is required in all cases.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { assigned+: { configMap+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace is the metadata.namespace of the referenced ConfigMap. This field is required in all cases.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { assigned+: { configMap+: { namespace: namespace } } }, - '#withResourceVersion':: d.fn(help='ResourceVersion is the metadata.ResourceVersion of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { assigned+: { configMap+: { resourceVersion: resourceVersion } } }, - '#withUid':: d.fn(help='UID is the metadata.UID of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { assigned+: { configMap+: { uid: uid } } }, - }, - }, - '#lastKnownGood':: d.obj(help='NodeConfigSource specifies a source of node configuration. Exactly one subfield (excluding metadata) must be non-nil.'), - lastKnownGood: { - '#configMap':: d.obj(help='ConfigMapNodeConfigSource contains the information to reference a ConfigMap as a config source for the Node.'), - configMap: { - '#withKubeletConfigKey':: d.fn(help='KubeletConfigKey declares which key of the referenced ConfigMap corresponds to the KubeletConfiguration structure This field is required in all cases.', args=[d.arg(name='kubeletConfigKey', type=d.T.string)]), - withKubeletConfigKey(kubeletConfigKey): { lastKnownGood+: { configMap+: { kubeletConfigKey: kubeletConfigKey } } }, - '#withName':: d.fn(help='Name is the metadata.name of the referenced ConfigMap. This field is required in all cases.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { lastKnownGood+: { configMap+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace is the metadata.namespace of the referenced ConfigMap. This field is required in all cases.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { lastKnownGood+: { configMap+: { namespace: namespace } } }, - '#withResourceVersion':: d.fn(help='ResourceVersion is the metadata.ResourceVersion of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { lastKnownGood+: { configMap+: { resourceVersion: resourceVersion } } }, - '#withUid':: d.fn(help='UID is the metadata.UID of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { lastKnownGood+: { configMap+: { uid: uid } } }, - }, - }, - '#withError':: d.fn(help='Error describes any problems reconciling the Spec.ConfigSource to the Active config. Errors may occur, for example, attempting to checkpoint Spec.ConfigSource to the local Assigned record, attempting to checkpoint the payload associated with Spec.ConfigSource, attempting to load or validate the Assigned config, etc. Errors may occur at different points while syncing config. Earlier errors (e.g. download or checkpointing errors) will not result in a rollback to LastKnownGood, and may resolve across Kubelet retries. Later errors (e.g. loading or validating a checkpointed config) will result in a rollback to LastKnownGood. In the latter case, it is usually possible to resolve the error by fixing the config assigned in Spec.ConfigSource. You can find additional information for debugging by searching the error message in the Kubelet log. Error is a human-readable description of the error state; machines can check whether or not Error is empty, but should not rely on the stability of the Error text across Kubelet versions.', args=[d.arg(name='err', type=d.T.string)]), - withError(err): { 'error': err }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/nodeDaemonEndpoints.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/nodeDaemonEndpoints.libsonnet deleted file mode 100644 index c65790355378..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/nodeDaemonEndpoints.libsonnet +++ /dev/null @@ -1,11 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='nodeDaemonEndpoints', url='', help='NodeDaemonEndpoints lists ports opened by daemons running on the Node.'), - '#kubeletEndpoint':: d.obj(help='DaemonEndpoint contains information about a single Daemon endpoint.'), - kubeletEndpoint: { - '#withPort':: d.fn(help='Port number of the given endpoint.', args=[d.arg(name='port', type=d.T.integer)]), - withPort(port): { kubeletEndpoint+: { port: port } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/nodeSelector.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/nodeSelector.libsonnet deleted file mode 100644 index ce1b27884ee6..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/nodeSelector.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='nodeSelector', url='', help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/nodeSelectorRequirement.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/nodeSelectorRequirement.libsonnet deleted file mode 100644 index b039a232ff9e..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/nodeSelectorRequirement.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='nodeSelectorRequirement', url='', help='A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.'), - '#withKey':: d.fn(help='The label key that the selector applies to.', args=[d.arg(name='key', type=d.T.string)]), - withKey(key): { key: key }, - '#withOperator':: d.fn(help="Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.", args=[d.arg(name='operator', type=d.T.string)]), - withOperator(operator): { operator: operator }, - '#withValues':: d.fn(help='An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.', args=[d.arg(name='values', type=d.T.array)]), - withValues(values): { values: if std.isArray(v=values) then values else [values] }, - '#withValuesMixin':: d.fn(help='An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='values', type=d.T.array)]), - withValuesMixin(values): { values+: if std.isArray(v=values) then values else [values] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/nodeSelectorTerm.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/nodeSelectorTerm.libsonnet deleted file mode 100644 index 4c4059da212b..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/nodeSelectorTerm.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='nodeSelectorTerm', url='', help='A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.'), - '#withMatchExpressions':: d.fn(help="A list of node selector requirements by node's labels.", args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] }, - '#withMatchExpressionsMixin':: d.fn(help="A list of node selector requirements by node's labels.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] }, - '#withMatchFields':: d.fn(help="A list of node selector requirements by node's fields.", args=[d.arg(name='matchFields', type=d.T.array)]), - withMatchFields(matchFields): { matchFields: if std.isArray(v=matchFields) then matchFields else [matchFields] }, - '#withMatchFieldsMixin':: d.fn(help="A list of node selector requirements by node's fields.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='matchFields', type=d.T.array)]), - withMatchFieldsMixin(matchFields): { matchFields+: if std.isArray(v=matchFields) then matchFields else [matchFields] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/nodeSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/nodeSpec.libsonnet deleted file mode 100644 index 13cd0226bea3..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/nodeSpec.libsonnet +++ /dev/null @@ -1,38 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='nodeSpec', url='', help='NodeSpec describes the attributes that a node is created with.'), - '#configSource':: d.obj(help='NodeConfigSource specifies a source of node configuration. Exactly one subfield (excluding metadata) must be non-nil.'), - configSource: { - '#configMap':: d.obj(help='ConfigMapNodeConfigSource contains the information to reference a ConfigMap as a config source for the Node.'), - configMap: { - '#withKubeletConfigKey':: d.fn(help='KubeletConfigKey declares which key of the referenced ConfigMap corresponds to the KubeletConfiguration structure This field is required in all cases.', args=[d.arg(name='kubeletConfigKey', type=d.T.string)]), - withKubeletConfigKey(kubeletConfigKey): { configSource+: { configMap+: { kubeletConfigKey: kubeletConfigKey } } }, - '#withName':: d.fn(help='Name is the metadata.name of the referenced ConfigMap. This field is required in all cases.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { configSource+: { configMap+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace is the metadata.namespace of the referenced ConfigMap. This field is required in all cases.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { configSource+: { configMap+: { namespace: namespace } } }, - '#withResourceVersion':: d.fn(help='ResourceVersion is the metadata.ResourceVersion of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { configSource+: { configMap+: { resourceVersion: resourceVersion } } }, - '#withUid':: d.fn(help='UID is the metadata.UID of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { configSource+: { configMap+: { uid: uid } } }, - }, - }, - '#withExternalID':: d.fn(help='Deprecated. Not all kubelets will set this field. Remove field after 1.13. see: https://issues.k8s.io/61966', args=[d.arg(name='externalID', type=d.T.string)]), - withExternalID(externalID): { externalID: externalID }, - '#withPodCIDR':: d.fn(help='PodCIDR represents the pod IP range assigned to the node.', args=[d.arg(name='podCIDR', type=d.T.string)]), - withPodCIDR(podCIDR): { podCIDR: podCIDR }, - '#withPodCIDRs':: d.fn(help='podCIDRs represents the IP ranges assigned to the node for usage by Pods on that node. If this field is specified, the 0th entry must match the podCIDR field. It may contain at most 1 value for each of IPv4 and IPv6.', args=[d.arg(name='podCIDRs', type=d.T.array)]), - withPodCIDRs(podCIDRs): { podCIDRs: if std.isArray(v=podCIDRs) then podCIDRs else [podCIDRs] }, - '#withPodCIDRsMixin':: d.fn(help='podCIDRs represents the IP ranges assigned to the node for usage by Pods on that node. If this field is specified, the 0th entry must match the podCIDR field. It may contain at most 1 value for each of IPv4 and IPv6.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='podCIDRs', type=d.T.array)]), - withPodCIDRsMixin(podCIDRs): { podCIDRs+: if std.isArray(v=podCIDRs) then podCIDRs else [podCIDRs] }, - '#withProviderID':: d.fn(help='ID of the node assigned by the cloud provider in the format: ://', args=[d.arg(name='providerID', type=d.T.string)]), - withProviderID(providerID): { providerID: providerID }, - '#withTaints':: d.fn(help="If specified, the node's taints.", args=[d.arg(name='taints', type=d.T.array)]), - withTaints(taints): { taints: if std.isArray(v=taints) then taints else [taints] }, - '#withTaintsMixin':: d.fn(help="If specified, the node's taints.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='taints', type=d.T.array)]), - withTaintsMixin(taints): { taints+: if std.isArray(v=taints) then taints else [taints] }, - '#withUnschedulable':: d.fn(help='Unschedulable controls node schedulability of new pods. By default, node is schedulable. More info: https://kubernetes.io/docs/concepts/nodes/node/#manual-node-administration', args=[d.arg(name='unschedulable', type=d.T.boolean)]), - withUnschedulable(unschedulable): { unschedulable: unschedulable }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/nodeStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/nodeStatus.libsonnet deleted file mode 100644 index 73cb8b044ad0..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/nodeStatus.libsonnet +++ /dev/null @@ -1,120 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='nodeStatus', url='', help='NodeStatus is information about the current status of a node.'), - '#config':: d.obj(help='NodeConfigStatus describes the status of the config assigned by Node.Spec.ConfigSource.'), - config: { - '#active':: d.obj(help='NodeConfigSource specifies a source of node configuration. Exactly one subfield (excluding metadata) must be non-nil.'), - active: { - '#configMap':: d.obj(help='ConfigMapNodeConfigSource contains the information to reference a ConfigMap as a config source for the Node.'), - configMap: { - '#withKubeletConfigKey':: d.fn(help='KubeletConfigKey declares which key of the referenced ConfigMap corresponds to the KubeletConfiguration structure This field is required in all cases.', args=[d.arg(name='kubeletConfigKey', type=d.T.string)]), - withKubeletConfigKey(kubeletConfigKey): { config+: { active+: { configMap+: { kubeletConfigKey: kubeletConfigKey } } } }, - '#withName':: d.fn(help='Name is the metadata.name of the referenced ConfigMap. This field is required in all cases.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { config+: { active+: { configMap+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace is the metadata.namespace of the referenced ConfigMap. This field is required in all cases.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { config+: { active+: { configMap+: { namespace: namespace } } } }, - '#withResourceVersion':: d.fn(help='ResourceVersion is the metadata.ResourceVersion of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { config+: { active+: { configMap+: { resourceVersion: resourceVersion } } } }, - '#withUid':: d.fn(help='UID is the metadata.UID of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { config+: { active+: { configMap+: { uid: uid } } } }, - }, - }, - '#assigned':: d.obj(help='NodeConfigSource specifies a source of node configuration. Exactly one subfield (excluding metadata) must be non-nil.'), - assigned: { - '#configMap':: d.obj(help='ConfigMapNodeConfigSource contains the information to reference a ConfigMap as a config source for the Node.'), - configMap: { - '#withKubeletConfigKey':: d.fn(help='KubeletConfigKey declares which key of the referenced ConfigMap corresponds to the KubeletConfiguration structure This field is required in all cases.', args=[d.arg(name='kubeletConfigKey', type=d.T.string)]), - withKubeletConfigKey(kubeletConfigKey): { config+: { assigned+: { configMap+: { kubeletConfigKey: kubeletConfigKey } } } }, - '#withName':: d.fn(help='Name is the metadata.name of the referenced ConfigMap. This field is required in all cases.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { config+: { assigned+: { configMap+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace is the metadata.namespace of the referenced ConfigMap. This field is required in all cases.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { config+: { assigned+: { configMap+: { namespace: namespace } } } }, - '#withResourceVersion':: d.fn(help='ResourceVersion is the metadata.ResourceVersion of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { config+: { assigned+: { configMap+: { resourceVersion: resourceVersion } } } }, - '#withUid':: d.fn(help='UID is the metadata.UID of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { config+: { assigned+: { configMap+: { uid: uid } } } }, - }, - }, - '#lastKnownGood':: d.obj(help='NodeConfigSource specifies a source of node configuration. Exactly one subfield (excluding metadata) must be non-nil.'), - lastKnownGood: { - '#configMap':: d.obj(help='ConfigMapNodeConfigSource contains the information to reference a ConfigMap as a config source for the Node.'), - configMap: { - '#withKubeletConfigKey':: d.fn(help='KubeletConfigKey declares which key of the referenced ConfigMap corresponds to the KubeletConfiguration structure This field is required in all cases.', args=[d.arg(name='kubeletConfigKey', type=d.T.string)]), - withKubeletConfigKey(kubeletConfigKey): { config+: { lastKnownGood+: { configMap+: { kubeletConfigKey: kubeletConfigKey } } } }, - '#withName':: d.fn(help='Name is the metadata.name of the referenced ConfigMap. This field is required in all cases.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { config+: { lastKnownGood+: { configMap+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace is the metadata.namespace of the referenced ConfigMap. This field is required in all cases.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { config+: { lastKnownGood+: { configMap+: { namespace: namespace } } } }, - '#withResourceVersion':: d.fn(help='ResourceVersion is the metadata.ResourceVersion of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { config+: { lastKnownGood+: { configMap+: { resourceVersion: resourceVersion } } } }, - '#withUid':: d.fn(help='UID is the metadata.UID of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { config+: { lastKnownGood+: { configMap+: { uid: uid } } } }, - }, - }, - '#withError':: d.fn(help='Error describes any problems reconciling the Spec.ConfigSource to the Active config. Errors may occur, for example, attempting to checkpoint Spec.ConfigSource to the local Assigned record, attempting to checkpoint the payload associated with Spec.ConfigSource, attempting to load or validate the Assigned config, etc. Errors may occur at different points while syncing config. Earlier errors (e.g. download or checkpointing errors) will not result in a rollback to LastKnownGood, and may resolve across Kubelet retries. Later errors (e.g. loading or validating a checkpointed config) will result in a rollback to LastKnownGood. In the latter case, it is usually possible to resolve the error by fixing the config assigned in Spec.ConfigSource. You can find additional information for debugging by searching the error message in the Kubelet log. Error is a human-readable description of the error state; machines can check whether or not Error is empty, but should not rely on the stability of the Error text across Kubelet versions.', args=[d.arg(name='err', type=d.T.string)]), - withError(err): { config+: { 'error': err } }, - }, - '#daemonEndpoints':: d.obj(help='NodeDaemonEndpoints lists ports opened by daemons running on the Node.'), - daemonEndpoints: { - '#kubeletEndpoint':: d.obj(help='DaemonEndpoint contains information about a single Daemon endpoint.'), - kubeletEndpoint: { - '#withPort':: d.fn(help='Port number of the given endpoint.', args=[d.arg(name='port', type=d.T.integer)]), - withPort(port): { daemonEndpoints+: { kubeletEndpoint+: { port: port } } }, - }, - }, - '#nodeInfo':: d.obj(help='NodeSystemInfo is a set of ids/uuids to uniquely identify the node.'), - nodeInfo: { - '#withArchitecture':: d.fn(help='The Architecture reported by the node', args=[d.arg(name='architecture', type=d.T.string)]), - withArchitecture(architecture): { nodeInfo+: { architecture: architecture } }, - '#withBootID':: d.fn(help='Boot ID reported by the node.', args=[d.arg(name='bootID', type=d.T.string)]), - withBootID(bootID): { nodeInfo+: { bootID: bootID } }, - '#withContainerRuntimeVersion':: d.fn(help='ContainerRuntime Version reported by the node through runtime remote API (e.g. docker://1.5.0).', args=[d.arg(name='containerRuntimeVersion', type=d.T.string)]), - withContainerRuntimeVersion(containerRuntimeVersion): { nodeInfo+: { containerRuntimeVersion: containerRuntimeVersion } }, - '#withKernelVersion':: d.fn(help="Kernel Version reported by the node from 'uname -r' (e.g. 3.16.0-0.bpo.4-amd64).", args=[d.arg(name='kernelVersion', type=d.T.string)]), - withKernelVersion(kernelVersion): { nodeInfo+: { kernelVersion: kernelVersion } }, - '#withKubeProxyVersion':: d.fn(help='KubeProxy Version reported by the node.', args=[d.arg(name='kubeProxyVersion', type=d.T.string)]), - withKubeProxyVersion(kubeProxyVersion): { nodeInfo+: { kubeProxyVersion: kubeProxyVersion } }, - '#withKubeletVersion':: d.fn(help='Kubelet Version reported by the node.', args=[d.arg(name='kubeletVersion', type=d.T.string)]), - withKubeletVersion(kubeletVersion): { nodeInfo+: { kubeletVersion: kubeletVersion } }, - '#withMachineID':: d.fn(help='MachineID reported by the node. For unique machine identification in the cluster this field is preferred. Learn more from man(5) machine-id: http://man7.org/linux/man-pages/man5/machine-id.5.html', args=[d.arg(name='machineID', type=d.T.string)]), - withMachineID(machineID): { nodeInfo+: { machineID: machineID } }, - '#withOperatingSystem':: d.fn(help='The Operating System reported by the node', args=[d.arg(name='operatingSystem', type=d.T.string)]), - withOperatingSystem(operatingSystem): { nodeInfo+: { operatingSystem: operatingSystem } }, - '#withOsImage':: d.fn(help='OS Image reported by the node from /etc/os-release (e.g. Debian GNU/Linux 7 (wheezy)).', args=[d.arg(name='osImage', type=d.T.string)]), - withOsImage(osImage): { nodeInfo+: { osImage: osImage } }, - '#withSystemUUID':: d.fn(help='SystemUUID reported by the node. For unique machine identification MachineID is preferred. This field is specific to Red Hat hosts https://access.redhat.com/documentation/en-us/red_hat_subscription_management/1/html/rhsm/uuid', args=[d.arg(name='systemUUID', type=d.T.string)]), - withSystemUUID(systemUUID): { nodeInfo+: { systemUUID: systemUUID } }, - }, - '#withAddresses':: d.fn(help='List of addresses reachable to the node. Queried from cloud provider, if available. More info: https://kubernetes.io/docs/concepts/nodes/node/#addresses Note: This field is declared as mergeable, but the merge key is not sufficiently unique, which can cause data corruption when it is merged. Callers should instead use a full-replacement patch. See http://pr.k8s.io/79391 for an example.', args=[d.arg(name='addresses', type=d.T.array)]), - withAddresses(addresses): { addresses: if std.isArray(v=addresses) then addresses else [addresses] }, - '#withAddressesMixin':: d.fn(help='List of addresses reachable to the node. Queried from cloud provider, if available. More info: https://kubernetes.io/docs/concepts/nodes/node/#addresses Note: This field is declared as mergeable, but the merge key is not sufficiently unique, which can cause data corruption when it is merged. Callers should instead use a full-replacement patch. See http://pr.k8s.io/79391 for an example.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='addresses', type=d.T.array)]), - withAddressesMixin(addresses): { addresses+: if std.isArray(v=addresses) then addresses else [addresses] }, - '#withAllocatable':: d.fn(help='Allocatable represents the resources of a node that are available for scheduling. Defaults to Capacity.', args=[d.arg(name='allocatable', type=d.T.object)]), - withAllocatable(allocatable): { allocatable: allocatable }, - '#withAllocatableMixin':: d.fn(help='Allocatable represents the resources of a node that are available for scheduling. Defaults to Capacity.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='allocatable', type=d.T.object)]), - withAllocatableMixin(allocatable): { allocatable+: allocatable }, - '#withCapacity':: d.fn(help='Capacity represents the total resources of a node. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity', args=[d.arg(name='capacity', type=d.T.object)]), - withCapacity(capacity): { capacity: capacity }, - '#withCapacityMixin':: d.fn(help='Capacity represents the total resources of a node. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='capacity', type=d.T.object)]), - withCapacityMixin(capacity): { capacity+: capacity }, - '#withConditions':: d.fn(help='Conditions is an array of current observed node conditions. More info: https://kubernetes.io/docs/concepts/nodes/node/#condition', args=[d.arg(name='conditions', type=d.T.array)]), - withConditions(conditions): { conditions: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withConditionsMixin':: d.fn(help='Conditions is an array of current observed node conditions. More info: https://kubernetes.io/docs/concepts/nodes/node/#condition\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='conditions', type=d.T.array)]), - withConditionsMixin(conditions): { conditions+: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withImages':: d.fn(help='List of container images on this node', args=[d.arg(name='images', type=d.T.array)]), - withImages(images): { images: if std.isArray(v=images) then images else [images] }, - '#withImagesMixin':: d.fn(help='List of container images on this node\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='images', type=d.T.array)]), - withImagesMixin(images): { images+: if std.isArray(v=images) then images else [images] }, - '#withPhase':: d.fn(help='NodePhase is the recently observed lifecycle phase of the node. More info: https://kubernetes.io/docs/concepts/nodes/node/#phase The field is never populated, and now is deprecated.', args=[d.arg(name='phase', type=d.T.string)]), - withPhase(phase): { phase: phase }, - '#withVolumesAttached':: d.fn(help='List of volumes that are attached to the node.', args=[d.arg(name='volumesAttached', type=d.T.array)]), - withVolumesAttached(volumesAttached): { volumesAttached: if std.isArray(v=volumesAttached) then volumesAttached else [volumesAttached] }, - '#withVolumesAttachedMixin':: d.fn(help='List of volumes that are attached to the node.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumesAttached', type=d.T.array)]), - withVolumesAttachedMixin(volumesAttached): { volumesAttached+: if std.isArray(v=volumesAttached) then volumesAttached else [volumesAttached] }, - '#withVolumesInUse':: d.fn(help='List of attachable volumes in use (mounted) by the node.', args=[d.arg(name='volumesInUse', type=d.T.array)]), - withVolumesInUse(volumesInUse): { volumesInUse: if std.isArray(v=volumesInUse) then volumesInUse else [volumesInUse] }, - '#withVolumesInUseMixin':: d.fn(help='List of attachable volumes in use (mounted) by the node.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumesInUse', type=d.T.array)]), - withVolumesInUseMixin(volumesInUse): { volumesInUse+: if std.isArray(v=volumesInUse) then volumesInUse else [volumesInUse] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/nodeSystemInfo.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/nodeSystemInfo.libsonnet deleted file mode 100644 index 35eff51ffa5d..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/nodeSystemInfo.libsonnet +++ /dev/null @@ -1,26 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='nodeSystemInfo', url='', help='NodeSystemInfo is a set of ids/uuids to uniquely identify the node.'), - '#withArchitecture':: d.fn(help='The Architecture reported by the node', args=[d.arg(name='architecture', type=d.T.string)]), - withArchitecture(architecture): { architecture: architecture }, - '#withBootID':: d.fn(help='Boot ID reported by the node.', args=[d.arg(name='bootID', type=d.T.string)]), - withBootID(bootID): { bootID: bootID }, - '#withContainerRuntimeVersion':: d.fn(help='ContainerRuntime Version reported by the node through runtime remote API (e.g. docker://1.5.0).', args=[d.arg(name='containerRuntimeVersion', type=d.T.string)]), - withContainerRuntimeVersion(containerRuntimeVersion): { containerRuntimeVersion: containerRuntimeVersion }, - '#withKernelVersion':: d.fn(help="Kernel Version reported by the node from 'uname -r' (e.g. 3.16.0-0.bpo.4-amd64).", args=[d.arg(name='kernelVersion', type=d.T.string)]), - withKernelVersion(kernelVersion): { kernelVersion: kernelVersion }, - '#withKubeProxyVersion':: d.fn(help='KubeProxy Version reported by the node.', args=[d.arg(name='kubeProxyVersion', type=d.T.string)]), - withKubeProxyVersion(kubeProxyVersion): { kubeProxyVersion: kubeProxyVersion }, - '#withKubeletVersion':: d.fn(help='Kubelet Version reported by the node.', args=[d.arg(name='kubeletVersion', type=d.T.string)]), - withKubeletVersion(kubeletVersion): { kubeletVersion: kubeletVersion }, - '#withMachineID':: d.fn(help='MachineID reported by the node. For unique machine identification in the cluster this field is preferred. Learn more from man(5) machine-id: http://man7.org/linux/man-pages/man5/machine-id.5.html', args=[d.arg(name='machineID', type=d.T.string)]), - withMachineID(machineID): { machineID: machineID }, - '#withOperatingSystem':: d.fn(help='The Operating System reported by the node', args=[d.arg(name='operatingSystem', type=d.T.string)]), - withOperatingSystem(operatingSystem): { operatingSystem: operatingSystem }, - '#withOsImage':: d.fn(help='OS Image reported by the node from /etc/os-release (e.g. Debian GNU/Linux 7 (wheezy)).', args=[d.arg(name='osImage', type=d.T.string)]), - withOsImage(osImage): { osImage: osImage }, - '#withSystemUUID':: d.fn(help='SystemUUID reported by the node. For unique machine identification MachineID is preferred. This field is specific to Red Hat hosts https://access.redhat.com/documentation/en-us/red_hat_subscription_management/1/html/rhsm/uuid', args=[d.arg(name='systemUUID', type=d.T.string)]), - withSystemUUID(systemUUID): { systemUUID: systemUUID }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/objectFieldSelector.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/objectFieldSelector.libsonnet deleted file mode 100644 index a65f4a01db99..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/objectFieldSelector.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='objectFieldSelector', url='', help='ObjectFieldSelector selects an APIVersioned field of an object.'), - '#withFieldPath':: d.fn(help='Path of the field to select in the specified API version.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { fieldPath: fieldPath }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/objectReference.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/objectReference.libsonnet deleted file mode 100644 index 9f40df55596f..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/objectReference.libsonnet +++ /dev/null @@ -1,18 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='objectReference', url='', help='ObjectReference contains enough information to let you inspect or modify the referred object.'), - '#withFieldPath':: d.fn(help='If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { fieldPath: fieldPath }, - '#withKind':: d.fn(help='Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { kind: kind }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withNamespace':: d.fn(help='Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { namespace: namespace }, - '#withResourceVersion':: d.fn(help='Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { resourceVersion: resourceVersion }, - '#withUid':: d.fn(help='UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { uid: uid }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/persistentVolume.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/persistentVolume.libsonnet deleted file mode 100644 index a12fc70180ab..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/persistentVolume.libsonnet +++ /dev/null @@ -1,467 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='persistentVolume', url='', help='PersistentVolume (PV) is a storage resource provisioned by an administrator. It is analogous to a node. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Persistentvolume', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'v1', - kind: 'PersistentVolume', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='PersistentVolumeSpec is the specification of a persistent volume.'), - spec: { - '#awsElasticBlockStore':: d.obj(help='Represents a Persistent Disk resource in AWS.\n\nAn AWS EBS disk must exist before mounting to a container. The disk must also be in the same AWS zone as the kubelet. An AWS EBS disk can only be mounted as read/write once. AWS EBS volumes support ownership management and SELinux relabeling.'), - awsElasticBlockStore: { - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { awsElasticBlockStore+: { fsType: fsType } } }, - '#withPartition':: d.fn(help='The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).', args=[d.arg(name='partition', type=d.T.integer)]), - withPartition(partition): { spec+: { awsElasticBlockStore+: { partition: partition } } }, - '#withReadOnly':: d.fn(help='Specify "true" to force and set the ReadOnly property in VolumeMounts to "true". If omitted, the default is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { awsElasticBlockStore+: { readOnly: readOnly } } }, - '#withVolumeID':: d.fn(help='Unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore', args=[d.arg(name='volumeID', type=d.T.string)]), - withVolumeID(volumeID): { spec+: { awsElasticBlockStore+: { volumeID: volumeID } } }, - }, - '#azureDisk':: d.obj(help='AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.'), - azureDisk: { - '#withCachingMode':: d.fn(help='Host Caching mode: None, Read Only, Read Write.', args=[d.arg(name='cachingMode', type=d.T.string)]), - withCachingMode(cachingMode): { spec+: { azureDisk+: { cachingMode: cachingMode } } }, - '#withDiskName':: d.fn(help='The Name of the data disk in the blob storage', args=[d.arg(name='diskName', type=d.T.string)]), - withDiskName(diskName): { spec+: { azureDisk+: { diskName: diskName } } }, - '#withDiskURI':: d.fn(help='The URI the data disk in the blob storage', args=[d.arg(name='diskURI', type=d.T.string)]), - withDiskURI(diskURI): { spec+: { azureDisk+: { diskURI: diskURI } } }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { azureDisk+: { fsType: fsType } } }, - '#withKind':: d.fn(help='Expected values Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { azureDisk+: { kind: kind } } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { azureDisk+: { readOnly: readOnly } } }, - }, - '#azureFile':: d.obj(help='AzureFile represents an Azure File Service mount on the host and bind mount to the pod.'), - azureFile: { - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { azureFile+: { readOnly: readOnly } } }, - '#withSecretName':: d.fn(help='the name of secret that contains Azure Storage Account Name and Key', args=[d.arg(name='secretName', type=d.T.string)]), - withSecretName(secretName): { spec+: { azureFile+: { secretName: secretName } } }, - '#withSecretNamespace':: d.fn(help='the namespace of the secret that contains Azure Storage Account Name and Key default is the same as the Pod', args=[d.arg(name='secretNamespace', type=d.T.string)]), - withSecretNamespace(secretNamespace): { spec+: { azureFile+: { secretNamespace: secretNamespace } } }, - '#withShareName':: d.fn(help='Share Name', args=[d.arg(name='shareName', type=d.T.string)]), - withShareName(shareName): { spec+: { azureFile+: { shareName: shareName } } }, - }, - '#cephfs':: d.obj(help='Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling.'), - cephfs: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { cephfs+: { secretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { cephfs+: { secretRef+: { namespace: namespace } } } }, - }, - '#withMonitors':: d.fn(help='Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitors(monitors): { spec+: { cephfs+: { monitors: if std.isArray(v=monitors) then monitors else [monitors] } } }, - '#withMonitorsMixin':: d.fn(help='Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitorsMixin(monitors): { spec+: { cephfs+: { monitors+: if std.isArray(v=monitors) then monitors else [monitors] } } }, - '#withPath':: d.fn(help='Optional: Used as the mounted root, rather than the full Ceph tree, default is /', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { spec+: { cephfs+: { path: path } } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { cephfs+: { readOnly: readOnly } } }, - '#withSecretFile':: d.fn(help='Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='secretFile', type=d.T.string)]), - withSecretFile(secretFile): { spec+: { cephfs+: { secretFile: secretFile } } }, - '#withUser':: d.fn(help='Optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { cephfs+: { user: user } } }, - }, - '#cinder':: d.obj(help='Represents a cinder volume resource in Openstack. A Cinder volume must exist before mounting to a container. The volume must also be in the same region as the kubelet. Cinder volumes support ownership management and SELinux relabeling.'), - cinder: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { cinder+: { secretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { cinder+: { secretRef+: { namespace: namespace } } } }, - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { cinder+: { fsType: fsType } } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { cinder+: { readOnly: readOnly } } }, - '#withVolumeID':: d.fn(help='volume id used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md', args=[d.arg(name='volumeID', type=d.T.string)]), - withVolumeID(volumeID): { spec+: { cinder+: { volumeID: volumeID } } }, - }, - '#claimRef':: d.obj(help='ObjectReference contains enough information to let you inspect or modify the referred object.'), - claimRef: { - '#withApiVersion':: d.fn(help='API version of the referent.', args=[d.arg(name='apiVersion', type=d.T.string)]), - withApiVersion(apiVersion): { spec+: { claimRef+: { apiVersion: apiVersion } } }, - '#withFieldPath':: d.fn(help='If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { spec+: { claimRef+: { fieldPath: fieldPath } } }, - '#withKind':: d.fn(help='Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { claimRef+: { kind: kind } } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { claimRef+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { claimRef+: { namespace: namespace } } }, - '#withResourceVersion':: d.fn(help='Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { spec+: { claimRef+: { resourceVersion: resourceVersion } } }, - '#withUid':: d.fn(help='UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { claimRef+: { uid: uid } } }, - }, - '#csi':: d.obj(help='Represents storage that is managed by an external CSI volume driver (Beta feature)'), - csi: { - '#controllerExpandSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - controllerExpandSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { csi+: { controllerExpandSecretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { csi+: { controllerExpandSecretRef+: { namespace: namespace } } } }, - }, - '#controllerPublishSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - controllerPublishSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { csi+: { controllerPublishSecretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { csi+: { controllerPublishSecretRef+: { namespace: namespace } } } }, - }, - '#nodePublishSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - nodePublishSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { csi+: { nodePublishSecretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { csi+: { nodePublishSecretRef+: { namespace: namespace } } } }, - }, - '#nodeStageSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - nodeStageSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { csi+: { nodeStageSecretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { csi+: { nodeStageSecretRef+: { namespace: namespace } } } }, - }, - '#withDriver':: d.fn(help='Driver is the name of the driver to use for this volume. Required.', args=[d.arg(name='driver', type=d.T.string)]), - withDriver(driver): { spec+: { csi+: { driver: driver } } }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs".', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { csi+: { fsType: fsType } } }, - '#withReadOnly':: d.fn(help='Optional: The value to pass to ControllerPublishVolumeRequest. Defaults to false (read/write).', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { csi+: { readOnly: readOnly } } }, - '#withVolumeAttributes':: d.fn(help='Attributes of the volume to publish.', args=[d.arg(name='volumeAttributes', type=d.T.object)]), - withVolumeAttributes(volumeAttributes): { spec+: { csi+: { volumeAttributes: volumeAttributes } } }, - '#withVolumeAttributesMixin':: d.fn(help='Attributes of the volume to publish.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumeAttributes', type=d.T.object)]), - withVolumeAttributesMixin(volumeAttributes): { spec+: { csi+: { volumeAttributes+: volumeAttributes } } }, - '#withVolumeHandle':: d.fn(help='VolumeHandle is the unique volume name returned by the CSI volume plugin’s CreateVolume to refer to the volume on all subsequent calls. Required.', args=[d.arg(name='volumeHandle', type=d.T.string)]), - withVolumeHandle(volumeHandle): { spec+: { csi+: { volumeHandle: volumeHandle } } }, - }, - '#fc':: d.obj(help='Represents a Fibre Channel volume. Fibre Channel volumes can only be mounted as read/write once. Fibre Channel volumes support ownership management and SELinux relabeling.'), - fc: { - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { fc+: { fsType: fsType } } }, - '#withLun':: d.fn(help='Optional: FC target lun number', args=[d.arg(name='lun', type=d.T.integer)]), - withLun(lun): { spec+: { fc+: { lun: lun } } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { fc+: { readOnly: readOnly } } }, - '#withTargetWWNs':: d.fn(help='Optional: FC target worldwide names (WWNs)', args=[d.arg(name='targetWWNs', type=d.T.array)]), - withTargetWWNs(targetWWNs): { spec+: { fc+: { targetWWNs: if std.isArray(v=targetWWNs) then targetWWNs else [targetWWNs] } } }, - '#withTargetWWNsMixin':: d.fn(help='Optional: FC target worldwide names (WWNs)\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='targetWWNs', type=d.T.array)]), - withTargetWWNsMixin(targetWWNs): { spec+: { fc+: { targetWWNs+: if std.isArray(v=targetWWNs) then targetWWNs else [targetWWNs] } } }, - '#withWwids':: d.fn(help='Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.', args=[d.arg(name='wwids', type=d.T.array)]), - withWwids(wwids): { spec+: { fc+: { wwids: if std.isArray(v=wwids) then wwids else [wwids] } } }, - '#withWwidsMixin':: d.fn(help='Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='wwids', type=d.T.array)]), - withWwidsMixin(wwids): { spec+: { fc+: { wwids+: if std.isArray(v=wwids) then wwids else [wwids] } } }, - }, - '#flexVolume':: d.obj(help='FlexPersistentVolumeSource represents a generic persistent volume resource that is provisioned/attached using an exec based plugin.'), - flexVolume: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { flexVolume+: { secretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { flexVolume+: { secretRef+: { namespace: namespace } } } }, - }, - '#withDriver':: d.fn(help='Driver is the name of the driver to use for this volume.', args=[d.arg(name='driver', type=d.T.string)]), - withDriver(driver): { spec+: { flexVolume+: { driver: driver } } }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { flexVolume+: { fsType: fsType } } }, - '#withOptions':: d.fn(help='Optional: Extra command options if any.', args=[d.arg(name='options', type=d.T.object)]), - withOptions(options): { spec+: { flexVolume+: { options: options } } }, - '#withOptionsMixin':: d.fn(help='Optional: Extra command options if any.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.object)]), - withOptionsMixin(options): { spec+: { flexVolume+: { options+: options } } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { flexVolume+: { readOnly: readOnly } } }, - }, - '#flocker':: d.obj(help='Represents a Flocker volume mounted by the Flocker agent. One and only one of datasetName and datasetUUID should be set. Flocker volumes do not support ownership management or SELinux relabeling.'), - flocker: { - '#withDatasetName':: d.fn(help='Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated', args=[d.arg(name='datasetName', type=d.T.string)]), - withDatasetName(datasetName): { spec+: { flocker+: { datasetName: datasetName } } }, - '#withDatasetUUID':: d.fn(help='UUID of the dataset. This is unique identifier of a Flocker dataset', args=[d.arg(name='datasetUUID', type=d.T.string)]), - withDatasetUUID(datasetUUID): { spec+: { flocker+: { datasetUUID: datasetUUID } } }, - }, - '#gcePersistentDisk':: d.obj(help='Represents a Persistent Disk resource in Google Compute Engine.\n\nA GCE PD must exist before mounting to a container. The disk must also be in the same GCE project and zone as the kubelet. A GCE PD can only be mounted as read/write once or read-only many times. GCE PDs support ownership management and SELinux relabeling.'), - gcePersistentDisk: { - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { gcePersistentDisk+: { fsType: fsType } } }, - '#withPartition':: d.fn(help='The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='partition', type=d.T.integer)]), - withPartition(partition): { spec+: { gcePersistentDisk+: { partition: partition } } }, - '#withPdName':: d.fn(help='Unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='pdName', type=d.T.string)]), - withPdName(pdName): { spec+: { gcePersistentDisk+: { pdName: pdName } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { gcePersistentDisk+: { readOnly: readOnly } } }, - }, - '#glusterfs':: d.obj(help='Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling.'), - glusterfs: { - '#withEndpoints':: d.fn(help='EndpointsName is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='endpoints', type=d.T.string)]), - withEndpoints(endpoints): { spec+: { glusterfs+: { endpoints: endpoints } } }, - '#withEndpointsNamespace':: d.fn(help='EndpointsNamespace is the namespace that contains Glusterfs endpoint. If this field is empty, the EndpointNamespace defaults to the same namespace as the bound PVC. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='endpointsNamespace', type=d.T.string)]), - withEndpointsNamespace(endpointsNamespace): { spec+: { glusterfs+: { endpointsNamespace: endpointsNamespace } } }, - '#withPath':: d.fn(help='Path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { spec+: { glusterfs+: { path: path } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { glusterfs+: { readOnly: readOnly } } }, - }, - '#hostPath':: d.obj(help='Represents a host path mapped into a pod. Host path volumes do not support ownership management or SELinux relabeling.'), - hostPath: { - '#withPath':: d.fn(help='Path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { spec+: { hostPath+: { path: path } } }, - '#withType':: d.fn(help='Type for HostPath Volume Defaults to "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { hostPath+: { type: type } } }, - }, - '#iscsi':: d.obj(help='ISCSIPersistentVolumeSource represents an ISCSI disk. ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling.'), - iscsi: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { iscsi+: { secretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { iscsi+: { secretRef+: { namespace: namespace } } } }, - }, - '#withChapAuthDiscovery':: d.fn(help='whether support iSCSI Discovery CHAP authentication', args=[d.arg(name='chapAuthDiscovery', type=d.T.boolean)]), - withChapAuthDiscovery(chapAuthDiscovery): { spec+: { iscsi+: { chapAuthDiscovery: chapAuthDiscovery } } }, - '#withChapAuthSession':: d.fn(help='whether support iSCSI Session CHAP authentication', args=[d.arg(name='chapAuthSession', type=d.T.boolean)]), - withChapAuthSession(chapAuthSession): { spec+: { iscsi+: { chapAuthSession: chapAuthSession } } }, - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { iscsi+: { fsType: fsType } } }, - '#withInitiatorName':: d.fn(help='Custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface : will be created for the connection.', args=[d.arg(name='initiatorName', type=d.T.string)]), - withInitiatorName(initiatorName): { spec+: { iscsi+: { initiatorName: initiatorName } } }, - '#withIqn':: d.fn(help='Target iSCSI Qualified Name.', args=[d.arg(name='iqn', type=d.T.string)]), - withIqn(iqn): { spec+: { iscsi+: { iqn: iqn } } }, - '#withIscsiInterface':: d.fn(help="iSCSI Interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).", args=[d.arg(name='iscsiInterface', type=d.T.string)]), - withIscsiInterface(iscsiInterface): { spec+: { iscsi+: { iscsiInterface: iscsiInterface } } }, - '#withLun':: d.fn(help='iSCSI Target Lun number.', args=[d.arg(name='lun', type=d.T.integer)]), - withLun(lun): { spec+: { iscsi+: { lun: lun } } }, - '#withPortals':: d.fn(help='iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).', args=[d.arg(name='portals', type=d.T.array)]), - withPortals(portals): { spec+: { iscsi+: { portals: if std.isArray(v=portals) then portals else [portals] } } }, - '#withPortalsMixin':: d.fn(help='iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='portals', type=d.T.array)]), - withPortalsMixin(portals): { spec+: { iscsi+: { portals+: if std.isArray(v=portals) then portals else [portals] } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { iscsi+: { readOnly: readOnly } } }, - '#withTargetPortal':: d.fn(help='iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).', args=[d.arg(name='targetPortal', type=d.T.string)]), - withTargetPortal(targetPortal): { spec+: { iscsi+: { targetPortal: targetPortal } } }, - }, - '#local':: d.obj(help='Local represents directly-attached storage with node affinity (Beta feature)'), - 'local': { - '#withFsType':: d.fn(help='Filesystem type to mount. It applies only when the Path is a block device. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default value is to auto-select a fileystem if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { 'local'+: { fsType: fsType } } }, - '#withPath':: d.fn(help='The full path to the volume on the node. It can be either a directory or block device (disk, partition, ...).', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { spec+: { 'local'+: { path: path } } }, - }, - '#nfs':: d.obj(help='Represents an NFS mount that lasts the lifetime of a pod. NFS volumes do not support ownership management or SELinux relabeling.'), - nfs: { - '#withPath':: d.fn(help='Path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { spec+: { nfs+: { path: path } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { nfs+: { readOnly: readOnly } } }, - '#withServer':: d.fn(help='Server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs', args=[d.arg(name='server', type=d.T.string)]), - withServer(server): { spec+: { nfs+: { server: server } } }, - }, - '#nodeAffinity':: d.obj(help='VolumeNodeAffinity defines constraints that limit what nodes this volume can be accessed from.'), - nodeAffinity: { - '#required':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - required: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { spec+: { nodeAffinity+: { required+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { spec+: { nodeAffinity+: { required+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } }, - }, - }, - '#photonPersistentDisk':: d.obj(help='Represents a Photon Controller persistent disk resource.'), - photonPersistentDisk: { - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { photonPersistentDisk+: { fsType: fsType } } }, - '#withPdID':: d.fn(help='ID that identifies Photon Controller persistent disk', args=[d.arg(name='pdID', type=d.T.string)]), - withPdID(pdID): { spec+: { photonPersistentDisk+: { pdID: pdID } } }, - }, - '#portworxVolume':: d.obj(help='PortworxVolumeSource represents a Portworx volume resource.'), - portworxVolume: { - '#withFsType':: d.fn(help='FSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { portworxVolume+: { fsType: fsType } } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { portworxVolume+: { readOnly: readOnly } } }, - '#withVolumeID':: d.fn(help='VolumeID uniquely identifies a Portworx volume', args=[d.arg(name='volumeID', type=d.T.string)]), - withVolumeID(volumeID): { spec+: { portworxVolume+: { volumeID: volumeID } } }, - }, - '#quobyte':: d.obj(help='Represents a Quobyte mount that lasts the lifetime of a pod. Quobyte volumes do not support ownership management or SELinux relabeling.'), - quobyte: { - '#withGroup':: d.fn(help='Group to map volume access to Default is no group', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { spec+: { quobyte+: { group: group } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { quobyte+: { readOnly: readOnly } } }, - '#withRegistry':: d.fn(help='Registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes', args=[d.arg(name='registry', type=d.T.string)]), - withRegistry(registry): { spec+: { quobyte+: { registry: registry } } }, - '#withTenant':: d.fn(help='Tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin', args=[d.arg(name='tenant', type=d.T.string)]), - withTenant(tenant): { spec+: { quobyte+: { tenant: tenant } } }, - '#withUser':: d.fn(help='User to map volume access to Defaults to serivceaccount user', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { quobyte+: { user: user } } }, - '#withVolume':: d.fn(help='Volume is a string that references an already created Quobyte volume by name.', args=[d.arg(name='volume', type=d.T.string)]), - withVolume(volume): { spec+: { quobyte+: { volume: volume } } }, - }, - '#rbd':: d.obj(help='Represents a Rados Block Device mount that lasts the lifetime of a pod. RBD volumes support ownership management and SELinux relabeling.'), - rbd: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { rbd+: { secretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { rbd+: { secretRef+: { namespace: namespace } } } }, - }, - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { rbd+: { fsType: fsType } } }, - '#withImage':: d.fn(help='The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='image', type=d.T.string)]), - withImage(image): { spec+: { rbd+: { image: image } } }, - '#withKeyring':: d.fn(help='Keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='keyring', type=d.T.string)]), - withKeyring(keyring): { spec+: { rbd+: { keyring: keyring } } }, - '#withMonitors':: d.fn(help='A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitors(monitors): { spec+: { rbd+: { monitors: if std.isArray(v=monitors) then monitors else [monitors] } } }, - '#withMonitorsMixin':: d.fn(help='A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitorsMixin(monitors): { spec+: { rbd+: { monitors+: if std.isArray(v=monitors) then monitors else [monitors] } } }, - '#withPool':: d.fn(help='The rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='pool', type=d.T.string)]), - withPool(pool): { spec+: { rbd+: { pool: pool } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { rbd+: { readOnly: readOnly } } }, - '#withUser':: d.fn(help='The rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { rbd+: { user: user } } }, - }, - '#scaleIO':: d.obj(help='ScaleIOPersistentVolumeSource represents a persistent ScaleIO volume'), - scaleIO: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { scaleIO+: { secretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { scaleIO+: { secretRef+: { namespace: namespace } } } }, - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Default is "xfs"', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { scaleIO+: { fsType: fsType } } }, - '#withGateway':: d.fn(help='The host address of the ScaleIO API Gateway.', args=[d.arg(name='gateway', type=d.T.string)]), - withGateway(gateway): { spec+: { scaleIO+: { gateway: gateway } } }, - '#withProtectionDomain':: d.fn(help='The name of the ScaleIO Protection Domain for the configured storage.', args=[d.arg(name='protectionDomain', type=d.T.string)]), - withProtectionDomain(protectionDomain): { spec+: { scaleIO+: { protectionDomain: protectionDomain } } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { scaleIO+: { readOnly: readOnly } } }, - '#withSslEnabled':: d.fn(help='Flag to enable/disable SSL communication with Gateway, default false', args=[d.arg(name='sslEnabled', type=d.T.boolean)]), - withSslEnabled(sslEnabled): { spec+: { scaleIO+: { sslEnabled: sslEnabled } } }, - '#withStorageMode':: d.fn(help='Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.', args=[d.arg(name='storageMode', type=d.T.string)]), - withStorageMode(storageMode): { spec+: { scaleIO+: { storageMode: storageMode } } }, - '#withStoragePool':: d.fn(help='The ScaleIO Storage Pool associated with the protection domain.', args=[d.arg(name='storagePool', type=d.T.string)]), - withStoragePool(storagePool): { spec+: { scaleIO+: { storagePool: storagePool } } }, - '#withSystem':: d.fn(help='The name of the storage system as configured in ScaleIO.', args=[d.arg(name='system', type=d.T.string)]), - withSystem(system): { spec+: { scaleIO+: { system: system } } }, - '#withVolumeName':: d.fn(help='The name of a volume already created in the ScaleIO system that is associated with this volume source.', args=[d.arg(name='volumeName', type=d.T.string)]), - withVolumeName(volumeName): { spec+: { scaleIO+: { volumeName: volumeName } } }, - }, - '#storageos':: d.obj(help='Represents a StorageOS persistent volume resource.'), - storageos: { - '#secretRef':: d.obj(help='ObjectReference contains enough information to let you inspect or modify the referred object.'), - secretRef: { - '#withApiVersion':: d.fn(help='API version of the referent.', args=[d.arg(name='apiVersion', type=d.T.string)]), - withApiVersion(apiVersion): { spec+: { storageos+: { secretRef+: { apiVersion: apiVersion } } } }, - '#withFieldPath':: d.fn(help='If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { spec+: { storageos+: { secretRef+: { fieldPath: fieldPath } } } }, - '#withKind':: d.fn(help='Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { storageos+: { secretRef+: { kind: kind } } } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { storageos+: { secretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { storageos+: { secretRef+: { namespace: namespace } } } }, - '#withResourceVersion':: d.fn(help='Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { spec+: { storageos+: { secretRef+: { resourceVersion: resourceVersion } } } }, - '#withUid':: d.fn(help='UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { storageos+: { secretRef+: { uid: uid } } } }, - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { storageos+: { fsType: fsType } } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { storageos+: { readOnly: readOnly } } }, - '#withVolumeName':: d.fn(help='VolumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.', args=[d.arg(name='volumeName', type=d.T.string)]), - withVolumeName(volumeName): { spec+: { storageos+: { volumeName: volumeName } } }, - '#withVolumeNamespace':: d.fn(help="VolumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod's namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to 'default' if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created.", args=[d.arg(name='volumeNamespace', type=d.T.string)]), - withVolumeNamespace(volumeNamespace): { spec+: { storageos+: { volumeNamespace: volumeNamespace } } }, - }, - '#vsphereVolume':: d.obj(help='Represents a vSphere volume resource.'), - vsphereVolume: { - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { vsphereVolume+: { fsType: fsType } } }, - '#withStoragePolicyID':: d.fn(help='Storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.', args=[d.arg(name='storagePolicyID', type=d.T.string)]), - withStoragePolicyID(storagePolicyID): { spec+: { vsphereVolume+: { storagePolicyID: storagePolicyID } } }, - '#withStoragePolicyName':: d.fn(help='Storage Policy Based Management (SPBM) profile name.', args=[d.arg(name='storagePolicyName', type=d.T.string)]), - withStoragePolicyName(storagePolicyName): { spec+: { vsphereVolume+: { storagePolicyName: storagePolicyName } } }, - '#withVolumePath':: d.fn(help='Path that identifies vSphere volume vmdk', args=[d.arg(name='volumePath', type=d.T.string)]), - withVolumePath(volumePath): { spec+: { vsphereVolume+: { volumePath: volumePath } } }, - }, - '#withAccessModes':: d.fn(help='AccessModes contains all ways the volume can be mounted. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes', args=[d.arg(name='accessModes', type=d.T.array)]), - withAccessModes(accessModes): { spec+: { accessModes: if std.isArray(v=accessModes) then accessModes else [accessModes] } }, - '#withAccessModesMixin':: d.fn(help='AccessModes contains all ways the volume can be mounted. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='accessModes', type=d.T.array)]), - withAccessModesMixin(accessModes): { spec+: { accessModes+: if std.isArray(v=accessModes) then accessModes else [accessModes] } }, - '#withCapacity':: d.fn(help="A description of the persistent volume's resources and capacity. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity", args=[d.arg(name='capacity', type=d.T.object)]), - withCapacity(capacity): { spec+: { capacity: capacity } }, - '#withCapacityMixin':: d.fn(help="A description of the persistent volume's resources and capacity. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='capacity', type=d.T.object)]), - withCapacityMixin(capacity): { spec+: { capacity+: capacity } }, - '#withMountOptions':: d.fn(help='A list of mount options, e.g. ["ro", "soft"]. Not validated - mount will simply fail if one is invalid. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options', args=[d.arg(name='mountOptions', type=d.T.array)]), - withMountOptions(mountOptions): { spec+: { mountOptions: if std.isArray(v=mountOptions) then mountOptions else [mountOptions] } }, - '#withMountOptionsMixin':: d.fn(help='A list of mount options, e.g. ["ro", "soft"]. Not validated - mount will simply fail if one is invalid. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='mountOptions', type=d.T.array)]), - withMountOptionsMixin(mountOptions): { spec+: { mountOptions+: if std.isArray(v=mountOptions) then mountOptions else [mountOptions] } }, - '#withPersistentVolumeReclaimPolicy':: d.fn(help='What happens to a persistent volume when released from its claim. Valid options are Retain (default for manually created PersistentVolumes), Delete (default for dynamically provisioned PersistentVolumes), and Recycle (deprecated). Recycle must be supported by the volume plugin underlying this PersistentVolume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#reclaiming', args=[d.arg(name='persistentVolumeReclaimPolicy', type=d.T.string)]), - withPersistentVolumeReclaimPolicy(persistentVolumeReclaimPolicy): { spec+: { persistentVolumeReclaimPolicy: persistentVolumeReclaimPolicy } }, - '#withStorageClassName':: d.fn(help='Name of StorageClass to which this persistent volume belongs. Empty value means that this volume does not belong to any StorageClass.', args=[d.arg(name='storageClassName', type=d.T.string)]), - withStorageClassName(storageClassName): { spec+: { storageClassName: storageClassName } }, - '#withVolumeMode':: d.fn(help='volumeMode defines if a volume is intended to be used with a formatted filesystem or to remain in raw block state. Value of Filesystem is implied when not included in spec.', args=[d.arg(name='volumeMode', type=d.T.string)]), - withVolumeMode(volumeMode): { spec+: { volumeMode: volumeMode } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/persistentVolumeClaim.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/persistentVolumeClaim.libsonnet deleted file mode 100644 index a42f503b1b9a..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/persistentVolumeClaim.libsonnet +++ /dev/null @@ -1,100 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='persistentVolumeClaim', url='', help="PersistentVolumeClaim is a user's request for and claim to a persistent volume"), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Persistentvolumeclaim', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'v1', - kind: 'PersistentVolumeClaim', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='PersistentVolumeClaimSpec describes the common attributes of storage devices and allows a Source for provider-specific attributes'), - spec: { - '#dataSource':: d.obj(help='TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace.'), - dataSource: { - '#withApiGroup':: d.fn(help='APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.', args=[d.arg(name='apiGroup', type=d.T.string)]), - withApiGroup(apiGroup): { spec+: { dataSource+: { apiGroup: apiGroup } } }, - '#withKind':: d.fn(help='Kind is the type of resource being referenced', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { dataSource+: { kind: kind } } }, - '#withName':: d.fn(help='Name is the name of resource being referenced', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { dataSource+: { name: name } } }, - }, - '#resources':: d.obj(help='ResourceRequirements describes the compute resource requirements.'), - resources: { - '#withLimits':: d.fn(help='Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/', args=[d.arg(name='limits', type=d.T.object)]), - withLimits(limits): { spec+: { resources+: { limits: limits } } }, - '#withLimitsMixin':: d.fn(help='Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='limits', type=d.T.object)]), - withLimitsMixin(limits): { spec+: { resources+: { limits+: limits } } }, - '#withRequests':: d.fn(help='Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/', args=[d.arg(name='requests', type=d.T.object)]), - withRequests(requests): { spec+: { resources+: { requests: requests } } }, - '#withRequestsMixin':: d.fn(help='Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requests', type=d.T.object)]), - withRequestsMixin(requests): { spec+: { resources+: { requests+: requests } } }, - }, - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { spec+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { spec+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { spec+: { selector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { spec+: { selector+: { matchLabels+: matchLabels } } }, - }, - '#withAccessModes':: d.fn(help='AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1', args=[d.arg(name='accessModes', type=d.T.array)]), - withAccessModes(accessModes): { spec+: { accessModes: if std.isArray(v=accessModes) then accessModes else [accessModes] } }, - '#withAccessModesMixin':: d.fn(help='AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='accessModes', type=d.T.array)]), - withAccessModesMixin(accessModes): { spec+: { accessModes+: if std.isArray(v=accessModes) then accessModes else [accessModes] } }, - '#withStorageClassName':: d.fn(help='Name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1', args=[d.arg(name='storageClassName', type=d.T.string)]), - withStorageClassName(storageClassName): { spec+: { storageClassName: storageClassName } }, - '#withVolumeMode':: d.fn(help='volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.', args=[d.arg(name='volumeMode', type=d.T.string)]), - withVolumeMode(volumeMode): { spec+: { volumeMode: volumeMode } }, - '#withVolumeName':: d.fn(help='VolumeName is the binding reference to the PersistentVolume backing this claim.', args=[d.arg(name='volumeName', type=d.T.string)]), - withVolumeName(volumeName): { spec+: { volumeName: volumeName } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/persistentVolumeClaimCondition.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/persistentVolumeClaimCondition.libsonnet deleted file mode 100644 index 8773c355aace..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/persistentVolumeClaimCondition.libsonnet +++ /dev/null @@ -1,16 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='persistentVolumeClaimCondition', url='', help='PersistentVolumeClaimCondition contails details about state of pvc'), - '#withLastProbeTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastProbeTime', type=d.T.string)]), - withLastProbeTime(lastProbeTime): { lastProbeTime: lastProbeTime }, - '#withLastTransitionTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastTransitionTime', type=d.T.string)]), - withLastTransitionTime(lastTransitionTime): { lastTransitionTime: lastTransitionTime }, - '#withMessage':: d.fn(help='Human-readable message indicating details about last transition.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withReason':: d.fn(help="Unique, this should be a short, machine understandable string that gives the reason for condition's last transition. If it reports 'ResizeStarted' that means the underlying persistent volume is being resized.", args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#withType':: d.fn(help='', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/persistentVolumeClaimSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/persistentVolumeClaimSpec.libsonnet deleted file mode 100644 index fedf55472403..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/persistentVolumeClaimSpec.libsonnet +++ /dev/null @@ -1,47 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='persistentVolumeClaimSpec', url='', help='PersistentVolumeClaimSpec describes the common attributes of storage devices and allows a Source for provider-specific attributes'), - '#dataSource':: d.obj(help='TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace.'), - dataSource: { - '#withApiGroup':: d.fn(help='APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.', args=[d.arg(name='apiGroup', type=d.T.string)]), - withApiGroup(apiGroup): { dataSource+: { apiGroup: apiGroup } }, - '#withKind':: d.fn(help='Kind is the type of resource being referenced', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { dataSource+: { kind: kind } }, - '#withName':: d.fn(help='Name is the name of resource being referenced', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { dataSource+: { name: name } }, - }, - '#resources':: d.obj(help='ResourceRequirements describes the compute resource requirements.'), - resources: { - '#withLimits':: d.fn(help='Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/', args=[d.arg(name='limits', type=d.T.object)]), - withLimits(limits): { resources+: { limits: limits } }, - '#withLimitsMixin':: d.fn(help='Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='limits', type=d.T.object)]), - withLimitsMixin(limits): { resources+: { limits+: limits } }, - '#withRequests':: d.fn(help='Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/', args=[d.arg(name='requests', type=d.T.object)]), - withRequests(requests): { resources+: { requests: requests } }, - '#withRequestsMixin':: d.fn(help='Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requests', type=d.T.object)]), - withRequestsMixin(requests): { resources+: { requests+: requests } }, - }, - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { selector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { selector+: { matchLabels+: matchLabels } }, - }, - '#withAccessModes':: d.fn(help='AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1', args=[d.arg(name='accessModes', type=d.T.array)]), - withAccessModes(accessModes): { accessModes: if std.isArray(v=accessModes) then accessModes else [accessModes] }, - '#withAccessModesMixin':: d.fn(help='AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='accessModes', type=d.T.array)]), - withAccessModesMixin(accessModes): { accessModes+: if std.isArray(v=accessModes) then accessModes else [accessModes] }, - '#withStorageClassName':: d.fn(help='Name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1', args=[d.arg(name='storageClassName', type=d.T.string)]), - withStorageClassName(storageClassName): { storageClassName: storageClassName }, - '#withVolumeMode':: d.fn(help='volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.', args=[d.arg(name='volumeMode', type=d.T.string)]), - withVolumeMode(volumeMode): { volumeMode: volumeMode }, - '#withVolumeName':: d.fn(help='VolumeName is the binding reference to the PersistentVolume backing this claim.', args=[d.arg(name='volumeName', type=d.T.string)]), - withVolumeName(volumeName): { volumeName: volumeName }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/persistentVolumeClaimStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/persistentVolumeClaimStatus.libsonnet deleted file mode 100644 index 4053907baea7..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/persistentVolumeClaimStatus.libsonnet +++ /dev/null @@ -1,20 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='persistentVolumeClaimStatus', url='', help='PersistentVolumeClaimStatus is the current status of a persistent volume claim.'), - '#withAccessModes':: d.fn(help='AccessModes contains the actual access modes the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1', args=[d.arg(name='accessModes', type=d.T.array)]), - withAccessModes(accessModes): { accessModes: if std.isArray(v=accessModes) then accessModes else [accessModes] }, - '#withAccessModesMixin':: d.fn(help='AccessModes contains the actual access modes the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='accessModes', type=d.T.array)]), - withAccessModesMixin(accessModes): { accessModes+: if std.isArray(v=accessModes) then accessModes else [accessModes] }, - '#withCapacity':: d.fn(help='Represents the actual resources of the underlying volume.', args=[d.arg(name='capacity', type=d.T.object)]), - withCapacity(capacity): { capacity: capacity }, - '#withCapacityMixin':: d.fn(help='Represents the actual resources of the underlying volume.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='capacity', type=d.T.object)]), - withCapacityMixin(capacity): { capacity+: capacity }, - '#withConditions':: d.fn(help="Current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'ResizeStarted'.", args=[d.arg(name='conditions', type=d.T.array)]), - withConditions(conditions): { conditions: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withConditionsMixin':: d.fn(help="Current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'ResizeStarted'.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='conditions', type=d.T.array)]), - withConditionsMixin(conditions): { conditions+: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withPhase':: d.fn(help='Phase represents the current phase of PersistentVolumeClaim.', args=[d.arg(name='phase', type=d.T.string)]), - withPhase(phase): { phase: phase }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/persistentVolumeClaimTemplate.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/persistentVolumeClaimTemplate.libsonnet deleted file mode 100644 index 7d665305faa6..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/persistentVolumeClaimTemplate.libsonnet +++ /dev/null @@ -1,95 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='persistentVolumeClaimTemplate', url='', help='PersistentVolumeClaimTemplate is used to produce PersistentVolumeClaim objects as part of an EphemeralVolumeSource.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#spec':: d.obj(help='PersistentVolumeClaimSpec describes the common attributes of storage devices and allows a Source for provider-specific attributes'), - spec: { - '#dataSource':: d.obj(help='TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace.'), - dataSource: { - '#withApiGroup':: d.fn(help='APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.', args=[d.arg(name='apiGroup', type=d.T.string)]), - withApiGroup(apiGroup): { spec+: { dataSource+: { apiGroup: apiGroup } } }, - '#withKind':: d.fn(help='Kind is the type of resource being referenced', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { dataSource+: { kind: kind } } }, - '#withName':: d.fn(help='Name is the name of resource being referenced', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { dataSource+: { name: name } } }, - }, - '#resources':: d.obj(help='ResourceRequirements describes the compute resource requirements.'), - resources: { - '#withLimits':: d.fn(help='Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/', args=[d.arg(name='limits', type=d.T.object)]), - withLimits(limits): { spec+: { resources+: { limits: limits } } }, - '#withLimitsMixin':: d.fn(help='Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='limits', type=d.T.object)]), - withLimitsMixin(limits): { spec+: { resources+: { limits+: limits } } }, - '#withRequests':: d.fn(help='Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/', args=[d.arg(name='requests', type=d.T.object)]), - withRequests(requests): { spec+: { resources+: { requests: requests } } }, - '#withRequestsMixin':: d.fn(help='Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requests', type=d.T.object)]), - withRequestsMixin(requests): { spec+: { resources+: { requests+: requests } } }, - }, - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { spec+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { spec+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { spec+: { selector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { spec+: { selector+: { matchLabels+: matchLabels } } }, - }, - '#withAccessModes':: d.fn(help='AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1', args=[d.arg(name='accessModes', type=d.T.array)]), - withAccessModes(accessModes): { spec+: { accessModes: if std.isArray(v=accessModes) then accessModes else [accessModes] } }, - '#withAccessModesMixin':: d.fn(help='AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='accessModes', type=d.T.array)]), - withAccessModesMixin(accessModes): { spec+: { accessModes+: if std.isArray(v=accessModes) then accessModes else [accessModes] } }, - '#withStorageClassName':: d.fn(help='Name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1', args=[d.arg(name='storageClassName', type=d.T.string)]), - withStorageClassName(storageClassName): { spec+: { storageClassName: storageClassName } }, - '#withVolumeMode':: d.fn(help='volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.', args=[d.arg(name='volumeMode', type=d.T.string)]), - withVolumeMode(volumeMode): { spec+: { volumeMode: volumeMode } }, - '#withVolumeName':: d.fn(help='VolumeName is the binding reference to the PersistentVolume backing this claim.', args=[d.arg(name='volumeName', type=d.T.string)]), - withVolumeName(volumeName): { spec+: { volumeName: volumeName } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/persistentVolumeClaimVolumeSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/persistentVolumeClaimVolumeSource.libsonnet deleted file mode 100644 index 6a30b0d4b9b7..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/persistentVolumeClaimVolumeSource.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='persistentVolumeClaimVolumeSource', url='', help="PersistentVolumeClaimVolumeSource references the user's PVC in the same namespace. This volume finds the bound PV and mounts that volume for the pod. A PersistentVolumeClaimVolumeSource is, essentially, a wrapper around another type of volume that is owned by someone else (the system)."), - '#withClaimName':: d.fn(help='ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims', args=[d.arg(name='claimName', type=d.T.string)]), - withClaimName(claimName): { claimName: claimName }, - '#withReadOnly':: d.fn(help='Will force the ReadOnly setting in VolumeMounts. Default false.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/persistentVolumeSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/persistentVolumeSpec.libsonnet deleted file mode 100644 index 74c2a7d72522..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/persistentVolumeSpec.libsonnet +++ /dev/null @@ -1,414 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='persistentVolumeSpec', url='', help='PersistentVolumeSpec is the specification of a persistent volume.'), - '#awsElasticBlockStore':: d.obj(help='Represents a Persistent Disk resource in AWS.\n\nAn AWS EBS disk must exist before mounting to a container. The disk must also be in the same AWS zone as the kubelet. An AWS EBS disk can only be mounted as read/write once. AWS EBS volumes support ownership management and SELinux relabeling.'), - awsElasticBlockStore: { - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { awsElasticBlockStore+: { fsType: fsType } }, - '#withPartition':: d.fn(help='The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).', args=[d.arg(name='partition', type=d.T.integer)]), - withPartition(partition): { awsElasticBlockStore+: { partition: partition } }, - '#withReadOnly':: d.fn(help='Specify "true" to force and set the ReadOnly property in VolumeMounts to "true". If omitted, the default is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { awsElasticBlockStore+: { readOnly: readOnly } }, - '#withVolumeID':: d.fn(help='Unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore', args=[d.arg(name='volumeID', type=d.T.string)]), - withVolumeID(volumeID): { awsElasticBlockStore+: { volumeID: volumeID } }, - }, - '#azureDisk':: d.obj(help='AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.'), - azureDisk: { - '#withCachingMode':: d.fn(help='Host Caching mode: None, Read Only, Read Write.', args=[d.arg(name='cachingMode', type=d.T.string)]), - withCachingMode(cachingMode): { azureDisk+: { cachingMode: cachingMode } }, - '#withDiskName':: d.fn(help='The Name of the data disk in the blob storage', args=[d.arg(name='diskName', type=d.T.string)]), - withDiskName(diskName): { azureDisk+: { diskName: diskName } }, - '#withDiskURI':: d.fn(help='The URI the data disk in the blob storage', args=[d.arg(name='diskURI', type=d.T.string)]), - withDiskURI(diskURI): { azureDisk+: { diskURI: diskURI } }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { azureDisk+: { fsType: fsType } }, - '#withKind':: d.fn(help='Expected values Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { azureDisk+: { kind: kind } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { azureDisk+: { readOnly: readOnly } }, - }, - '#azureFile':: d.obj(help='AzureFile represents an Azure File Service mount on the host and bind mount to the pod.'), - azureFile: { - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { azureFile+: { readOnly: readOnly } }, - '#withSecretName':: d.fn(help='the name of secret that contains Azure Storage Account Name and Key', args=[d.arg(name='secretName', type=d.T.string)]), - withSecretName(secretName): { azureFile+: { secretName: secretName } }, - '#withSecretNamespace':: d.fn(help='the namespace of the secret that contains Azure Storage Account Name and Key default is the same as the Pod', args=[d.arg(name='secretNamespace', type=d.T.string)]), - withSecretNamespace(secretNamespace): { azureFile+: { secretNamespace: secretNamespace } }, - '#withShareName':: d.fn(help='Share Name', args=[d.arg(name='shareName', type=d.T.string)]), - withShareName(shareName): { azureFile+: { shareName: shareName } }, - }, - '#cephfs':: d.obj(help='Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling.'), - cephfs: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { cephfs+: { secretRef+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { cephfs+: { secretRef+: { namespace: namespace } } }, - }, - '#withMonitors':: d.fn(help='Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitors(monitors): { cephfs+: { monitors: if std.isArray(v=monitors) then monitors else [monitors] } }, - '#withMonitorsMixin':: d.fn(help='Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitorsMixin(monitors): { cephfs+: { monitors+: if std.isArray(v=monitors) then monitors else [monitors] } }, - '#withPath':: d.fn(help='Optional: Used as the mounted root, rather than the full Ceph tree, default is /', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { cephfs+: { path: path } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { cephfs+: { readOnly: readOnly } }, - '#withSecretFile':: d.fn(help='Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='secretFile', type=d.T.string)]), - withSecretFile(secretFile): { cephfs+: { secretFile: secretFile } }, - '#withUser':: d.fn(help='Optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { cephfs+: { user: user } }, - }, - '#cinder':: d.obj(help='Represents a cinder volume resource in Openstack. A Cinder volume must exist before mounting to a container. The volume must also be in the same region as the kubelet. Cinder volumes support ownership management and SELinux relabeling.'), - cinder: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { cinder+: { secretRef+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { cinder+: { secretRef+: { namespace: namespace } } }, - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { cinder+: { fsType: fsType } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { cinder+: { readOnly: readOnly } }, - '#withVolumeID':: d.fn(help='volume id used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md', args=[d.arg(name='volumeID', type=d.T.string)]), - withVolumeID(volumeID): { cinder+: { volumeID: volumeID } }, - }, - '#claimRef':: d.obj(help='ObjectReference contains enough information to let you inspect or modify the referred object.'), - claimRef: { - '#withApiVersion':: d.fn(help='API version of the referent.', args=[d.arg(name='apiVersion', type=d.T.string)]), - withApiVersion(apiVersion): { claimRef+: { apiVersion: apiVersion } }, - '#withFieldPath':: d.fn(help='If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { claimRef+: { fieldPath: fieldPath } }, - '#withKind':: d.fn(help='Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { claimRef+: { kind: kind } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { claimRef+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { claimRef+: { namespace: namespace } }, - '#withResourceVersion':: d.fn(help='Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { claimRef+: { resourceVersion: resourceVersion } }, - '#withUid':: d.fn(help='UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { claimRef+: { uid: uid } }, - }, - '#csi':: d.obj(help='Represents storage that is managed by an external CSI volume driver (Beta feature)'), - csi: { - '#controllerExpandSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - controllerExpandSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { csi+: { controllerExpandSecretRef+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { csi+: { controllerExpandSecretRef+: { namespace: namespace } } }, - }, - '#controllerPublishSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - controllerPublishSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { csi+: { controllerPublishSecretRef+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { csi+: { controllerPublishSecretRef+: { namespace: namespace } } }, - }, - '#nodePublishSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - nodePublishSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { csi+: { nodePublishSecretRef+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { csi+: { nodePublishSecretRef+: { namespace: namespace } } }, - }, - '#nodeStageSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - nodeStageSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { csi+: { nodeStageSecretRef+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { csi+: { nodeStageSecretRef+: { namespace: namespace } } }, - }, - '#withDriver':: d.fn(help='Driver is the name of the driver to use for this volume. Required.', args=[d.arg(name='driver', type=d.T.string)]), - withDriver(driver): { csi+: { driver: driver } }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs".', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { csi+: { fsType: fsType } }, - '#withReadOnly':: d.fn(help='Optional: The value to pass to ControllerPublishVolumeRequest. Defaults to false (read/write).', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { csi+: { readOnly: readOnly } }, - '#withVolumeAttributes':: d.fn(help='Attributes of the volume to publish.', args=[d.arg(name='volumeAttributes', type=d.T.object)]), - withVolumeAttributes(volumeAttributes): { csi+: { volumeAttributes: volumeAttributes } }, - '#withVolumeAttributesMixin':: d.fn(help='Attributes of the volume to publish.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumeAttributes', type=d.T.object)]), - withVolumeAttributesMixin(volumeAttributes): { csi+: { volumeAttributes+: volumeAttributes } }, - '#withVolumeHandle':: d.fn(help='VolumeHandle is the unique volume name returned by the CSI volume plugin’s CreateVolume to refer to the volume on all subsequent calls. Required.', args=[d.arg(name='volumeHandle', type=d.T.string)]), - withVolumeHandle(volumeHandle): { csi+: { volumeHandle: volumeHandle } }, - }, - '#fc':: d.obj(help='Represents a Fibre Channel volume. Fibre Channel volumes can only be mounted as read/write once. Fibre Channel volumes support ownership management and SELinux relabeling.'), - fc: { - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { fc+: { fsType: fsType } }, - '#withLun':: d.fn(help='Optional: FC target lun number', args=[d.arg(name='lun', type=d.T.integer)]), - withLun(lun): { fc+: { lun: lun } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { fc+: { readOnly: readOnly } }, - '#withTargetWWNs':: d.fn(help='Optional: FC target worldwide names (WWNs)', args=[d.arg(name='targetWWNs', type=d.T.array)]), - withTargetWWNs(targetWWNs): { fc+: { targetWWNs: if std.isArray(v=targetWWNs) then targetWWNs else [targetWWNs] } }, - '#withTargetWWNsMixin':: d.fn(help='Optional: FC target worldwide names (WWNs)\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='targetWWNs', type=d.T.array)]), - withTargetWWNsMixin(targetWWNs): { fc+: { targetWWNs+: if std.isArray(v=targetWWNs) then targetWWNs else [targetWWNs] } }, - '#withWwids':: d.fn(help='Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.', args=[d.arg(name='wwids', type=d.T.array)]), - withWwids(wwids): { fc+: { wwids: if std.isArray(v=wwids) then wwids else [wwids] } }, - '#withWwidsMixin':: d.fn(help='Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='wwids', type=d.T.array)]), - withWwidsMixin(wwids): { fc+: { wwids+: if std.isArray(v=wwids) then wwids else [wwids] } }, - }, - '#flexVolume':: d.obj(help='FlexPersistentVolumeSource represents a generic persistent volume resource that is provisioned/attached using an exec based plugin.'), - flexVolume: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { flexVolume+: { secretRef+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { flexVolume+: { secretRef+: { namespace: namespace } } }, - }, - '#withDriver':: d.fn(help='Driver is the name of the driver to use for this volume.', args=[d.arg(name='driver', type=d.T.string)]), - withDriver(driver): { flexVolume+: { driver: driver } }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { flexVolume+: { fsType: fsType } }, - '#withOptions':: d.fn(help='Optional: Extra command options if any.', args=[d.arg(name='options', type=d.T.object)]), - withOptions(options): { flexVolume+: { options: options } }, - '#withOptionsMixin':: d.fn(help='Optional: Extra command options if any.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.object)]), - withOptionsMixin(options): { flexVolume+: { options+: options } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { flexVolume+: { readOnly: readOnly } }, - }, - '#flocker':: d.obj(help='Represents a Flocker volume mounted by the Flocker agent. One and only one of datasetName and datasetUUID should be set. Flocker volumes do not support ownership management or SELinux relabeling.'), - flocker: { - '#withDatasetName':: d.fn(help='Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated', args=[d.arg(name='datasetName', type=d.T.string)]), - withDatasetName(datasetName): { flocker+: { datasetName: datasetName } }, - '#withDatasetUUID':: d.fn(help='UUID of the dataset. This is unique identifier of a Flocker dataset', args=[d.arg(name='datasetUUID', type=d.T.string)]), - withDatasetUUID(datasetUUID): { flocker+: { datasetUUID: datasetUUID } }, - }, - '#gcePersistentDisk':: d.obj(help='Represents a Persistent Disk resource in Google Compute Engine.\n\nA GCE PD must exist before mounting to a container. The disk must also be in the same GCE project and zone as the kubelet. A GCE PD can only be mounted as read/write once or read-only many times. GCE PDs support ownership management and SELinux relabeling.'), - gcePersistentDisk: { - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { gcePersistentDisk+: { fsType: fsType } }, - '#withPartition':: d.fn(help='The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='partition', type=d.T.integer)]), - withPartition(partition): { gcePersistentDisk+: { partition: partition } }, - '#withPdName':: d.fn(help='Unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='pdName', type=d.T.string)]), - withPdName(pdName): { gcePersistentDisk+: { pdName: pdName } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { gcePersistentDisk+: { readOnly: readOnly } }, - }, - '#glusterfs':: d.obj(help='Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling.'), - glusterfs: { - '#withEndpoints':: d.fn(help='EndpointsName is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='endpoints', type=d.T.string)]), - withEndpoints(endpoints): { glusterfs+: { endpoints: endpoints } }, - '#withEndpointsNamespace':: d.fn(help='EndpointsNamespace is the namespace that contains Glusterfs endpoint. If this field is empty, the EndpointNamespace defaults to the same namespace as the bound PVC. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='endpointsNamespace', type=d.T.string)]), - withEndpointsNamespace(endpointsNamespace): { glusterfs+: { endpointsNamespace: endpointsNamespace } }, - '#withPath':: d.fn(help='Path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { glusterfs+: { path: path } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { glusterfs+: { readOnly: readOnly } }, - }, - '#hostPath':: d.obj(help='Represents a host path mapped into a pod. Host path volumes do not support ownership management or SELinux relabeling.'), - hostPath: { - '#withPath':: d.fn(help='Path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { hostPath+: { path: path } }, - '#withType':: d.fn(help='Type for HostPath Volume Defaults to "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { hostPath+: { type: type } }, - }, - '#iscsi':: d.obj(help='ISCSIPersistentVolumeSource represents an ISCSI disk. ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling.'), - iscsi: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { iscsi+: { secretRef+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { iscsi+: { secretRef+: { namespace: namespace } } }, - }, - '#withChapAuthDiscovery':: d.fn(help='whether support iSCSI Discovery CHAP authentication', args=[d.arg(name='chapAuthDiscovery', type=d.T.boolean)]), - withChapAuthDiscovery(chapAuthDiscovery): { iscsi+: { chapAuthDiscovery: chapAuthDiscovery } }, - '#withChapAuthSession':: d.fn(help='whether support iSCSI Session CHAP authentication', args=[d.arg(name='chapAuthSession', type=d.T.boolean)]), - withChapAuthSession(chapAuthSession): { iscsi+: { chapAuthSession: chapAuthSession } }, - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { iscsi+: { fsType: fsType } }, - '#withInitiatorName':: d.fn(help='Custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface : will be created for the connection.', args=[d.arg(name='initiatorName', type=d.T.string)]), - withInitiatorName(initiatorName): { iscsi+: { initiatorName: initiatorName } }, - '#withIqn':: d.fn(help='Target iSCSI Qualified Name.', args=[d.arg(name='iqn', type=d.T.string)]), - withIqn(iqn): { iscsi+: { iqn: iqn } }, - '#withIscsiInterface':: d.fn(help="iSCSI Interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).", args=[d.arg(name='iscsiInterface', type=d.T.string)]), - withIscsiInterface(iscsiInterface): { iscsi+: { iscsiInterface: iscsiInterface } }, - '#withLun':: d.fn(help='iSCSI Target Lun number.', args=[d.arg(name='lun', type=d.T.integer)]), - withLun(lun): { iscsi+: { lun: lun } }, - '#withPortals':: d.fn(help='iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).', args=[d.arg(name='portals', type=d.T.array)]), - withPortals(portals): { iscsi+: { portals: if std.isArray(v=portals) then portals else [portals] } }, - '#withPortalsMixin':: d.fn(help='iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='portals', type=d.T.array)]), - withPortalsMixin(portals): { iscsi+: { portals+: if std.isArray(v=portals) then portals else [portals] } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { iscsi+: { readOnly: readOnly } }, - '#withTargetPortal':: d.fn(help='iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).', args=[d.arg(name='targetPortal', type=d.T.string)]), - withTargetPortal(targetPortal): { iscsi+: { targetPortal: targetPortal } }, - }, - '#local':: d.obj(help='Local represents directly-attached storage with node affinity (Beta feature)'), - 'local': { - '#withFsType':: d.fn(help='Filesystem type to mount. It applies only when the Path is a block device. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default value is to auto-select a fileystem if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { 'local'+: { fsType: fsType } }, - '#withPath':: d.fn(help='The full path to the volume on the node. It can be either a directory or block device (disk, partition, ...).', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { 'local'+: { path: path } }, - }, - '#nfs':: d.obj(help='Represents an NFS mount that lasts the lifetime of a pod. NFS volumes do not support ownership management or SELinux relabeling.'), - nfs: { - '#withPath':: d.fn(help='Path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { nfs+: { path: path } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { nfs+: { readOnly: readOnly } }, - '#withServer':: d.fn(help='Server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs', args=[d.arg(name='server', type=d.T.string)]), - withServer(server): { nfs+: { server: server } }, - }, - '#nodeAffinity':: d.obj(help='VolumeNodeAffinity defines constraints that limit what nodes this volume can be accessed from.'), - nodeAffinity: { - '#required':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - required: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { nodeAffinity+: { required+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { nodeAffinity+: { required+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } }, - }, - }, - '#photonPersistentDisk':: d.obj(help='Represents a Photon Controller persistent disk resource.'), - photonPersistentDisk: { - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { photonPersistentDisk+: { fsType: fsType } }, - '#withPdID':: d.fn(help='ID that identifies Photon Controller persistent disk', args=[d.arg(name='pdID', type=d.T.string)]), - withPdID(pdID): { photonPersistentDisk+: { pdID: pdID } }, - }, - '#portworxVolume':: d.obj(help='PortworxVolumeSource represents a Portworx volume resource.'), - portworxVolume: { - '#withFsType':: d.fn(help='FSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { portworxVolume+: { fsType: fsType } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { portworxVolume+: { readOnly: readOnly } }, - '#withVolumeID':: d.fn(help='VolumeID uniquely identifies a Portworx volume', args=[d.arg(name='volumeID', type=d.T.string)]), - withVolumeID(volumeID): { portworxVolume+: { volumeID: volumeID } }, - }, - '#quobyte':: d.obj(help='Represents a Quobyte mount that lasts the lifetime of a pod. Quobyte volumes do not support ownership management or SELinux relabeling.'), - quobyte: { - '#withGroup':: d.fn(help='Group to map volume access to Default is no group', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { quobyte+: { group: group } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { quobyte+: { readOnly: readOnly } }, - '#withRegistry':: d.fn(help='Registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes', args=[d.arg(name='registry', type=d.T.string)]), - withRegistry(registry): { quobyte+: { registry: registry } }, - '#withTenant':: d.fn(help='Tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin', args=[d.arg(name='tenant', type=d.T.string)]), - withTenant(tenant): { quobyte+: { tenant: tenant } }, - '#withUser':: d.fn(help='User to map volume access to Defaults to serivceaccount user', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { quobyte+: { user: user } }, - '#withVolume':: d.fn(help='Volume is a string that references an already created Quobyte volume by name.', args=[d.arg(name='volume', type=d.T.string)]), - withVolume(volume): { quobyte+: { volume: volume } }, - }, - '#rbd':: d.obj(help='Represents a Rados Block Device mount that lasts the lifetime of a pod. RBD volumes support ownership management and SELinux relabeling.'), - rbd: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { rbd+: { secretRef+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { rbd+: { secretRef+: { namespace: namespace } } }, - }, - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { rbd+: { fsType: fsType } }, - '#withImage':: d.fn(help='The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='image', type=d.T.string)]), - withImage(image): { rbd+: { image: image } }, - '#withKeyring':: d.fn(help='Keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='keyring', type=d.T.string)]), - withKeyring(keyring): { rbd+: { keyring: keyring } }, - '#withMonitors':: d.fn(help='A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitors(monitors): { rbd+: { monitors: if std.isArray(v=monitors) then monitors else [monitors] } }, - '#withMonitorsMixin':: d.fn(help='A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitorsMixin(monitors): { rbd+: { monitors+: if std.isArray(v=monitors) then monitors else [monitors] } }, - '#withPool':: d.fn(help='The rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='pool', type=d.T.string)]), - withPool(pool): { rbd+: { pool: pool } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { rbd+: { readOnly: readOnly } }, - '#withUser':: d.fn(help='The rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { rbd+: { user: user } }, - }, - '#scaleIO':: d.obj(help='ScaleIOPersistentVolumeSource represents a persistent ScaleIO volume'), - scaleIO: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { scaleIO+: { secretRef+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { scaleIO+: { secretRef+: { namespace: namespace } } }, - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Default is "xfs"', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { scaleIO+: { fsType: fsType } }, - '#withGateway':: d.fn(help='The host address of the ScaleIO API Gateway.', args=[d.arg(name='gateway', type=d.T.string)]), - withGateway(gateway): { scaleIO+: { gateway: gateway } }, - '#withProtectionDomain':: d.fn(help='The name of the ScaleIO Protection Domain for the configured storage.', args=[d.arg(name='protectionDomain', type=d.T.string)]), - withProtectionDomain(protectionDomain): { scaleIO+: { protectionDomain: protectionDomain } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { scaleIO+: { readOnly: readOnly } }, - '#withSslEnabled':: d.fn(help='Flag to enable/disable SSL communication with Gateway, default false', args=[d.arg(name='sslEnabled', type=d.T.boolean)]), - withSslEnabled(sslEnabled): { scaleIO+: { sslEnabled: sslEnabled } }, - '#withStorageMode':: d.fn(help='Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.', args=[d.arg(name='storageMode', type=d.T.string)]), - withStorageMode(storageMode): { scaleIO+: { storageMode: storageMode } }, - '#withStoragePool':: d.fn(help='The ScaleIO Storage Pool associated with the protection domain.', args=[d.arg(name='storagePool', type=d.T.string)]), - withStoragePool(storagePool): { scaleIO+: { storagePool: storagePool } }, - '#withSystem':: d.fn(help='The name of the storage system as configured in ScaleIO.', args=[d.arg(name='system', type=d.T.string)]), - withSystem(system): { scaleIO+: { system: system } }, - '#withVolumeName':: d.fn(help='The name of a volume already created in the ScaleIO system that is associated with this volume source.', args=[d.arg(name='volumeName', type=d.T.string)]), - withVolumeName(volumeName): { scaleIO+: { volumeName: volumeName } }, - }, - '#storageos':: d.obj(help='Represents a StorageOS persistent volume resource.'), - storageos: { - '#secretRef':: d.obj(help='ObjectReference contains enough information to let you inspect or modify the referred object.'), - secretRef: { - '#withApiVersion':: d.fn(help='API version of the referent.', args=[d.arg(name='apiVersion', type=d.T.string)]), - withApiVersion(apiVersion): { storageos+: { secretRef+: { apiVersion: apiVersion } } }, - '#withFieldPath':: d.fn(help='If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { storageos+: { secretRef+: { fieldPath: fieldPath } } }, - '#withKind':: d.fn(help='Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { storageos+: { secretRef+: { kind: kind } } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { storageos+: { secretRef+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { storageos+: { secretRef+: { namespace: namespace } } }, - '#withResourceVersion':: d.fn(help='Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { storageos+: { secretRef+: { resourceVersion: resourceVersion } } }, - '#withUid':: d.fn(help='UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { storageos+: { secretRef+: { uid: uid } } }, - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { storageos+: { fsType: fsType } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { storageos+: { readOnly: readOnly } }, - '#withVolumeName':: d.fn(help='VolumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.', args=[d.arg(name='volumeName', type=d.T.string)]), - withVolumeName(volumeName): { storageos+: { volumeName: volumeName } }, - '#withVolumeNamespace':: d.fn(help="VolumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod's namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to 'default' if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created.", args=[d.arg(name='volumeNamespace', type=d.T.string)]), - withVolumeNamespace(volumeNamespace): { storageos+: { volumeNamespace: volumeNamespace } }, - }, - '#vsphereVolume':: d.obj(help='Represents a vSphere volume resource.'), - vsphereVolume: { - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { vsphereVolume+: { fsType: fsType } }, - '#withStoragePolicyID':: d.fn(help='Storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.', args=[d.arg(name='storagePolicyID', type=d.T.string)]), - withStoragePolicyID(storagePolicyID): { vsphereVolume+: { storagePolicyID: storagePolicyID } }, - '#withStoragePolicyName':: d.fn(help='Storage Policy Based Management (SPBM) profile name.', args=[d.arg(name='storagePolicyName', type=d.T.string)]), - withStoragePolicyName(storagePolicyName): { vsphereVolume+: { storagePolicyName: storagePolicyName } }, - '#withVolumePath':: d.fn(help='Path that identifies vSphere volume vmdk', args=[d.arg(name='volumePath', type=d.T.string)]), - withVolumePath(volumePath): { vsphereVolume+: { volumePath: volumePath } }, - }, - '#withAccessModes':: d.fn(help='AccessModes contains all ways the volume can be mounted. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes', args=[d.arg(name='accessModes', type=d.T.array)]), - withAccessModes(accessModes): { accessModes: if std.isArray(v=accessModes) then accessModes else [accessModes] }, - '#withAccessModesMixin':: d.fn(help='AccessModes contains all ways the volume can be mounted. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='accessModes', type=d.T.array)]), - withAccessModesMixin(accessModes): { accessModes+: if std.isArray(v=accessModes) then accessModes else [accessModes] }, - '#withCapacity':: d.fn(help="A description of the persistent volume's resources and capacity. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity", args=[d.arg(name='capacity', type=d.T.object)]), - withCapacity(capacity): { capacity: capacity }, - '#withCapacityMixin':: d.fn(help="A description of the persistent volume's resources and capacity. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='capacity', type=d.T.object)]), - withCapacityMixin(capacity): { capacity+: capacity }, - '#withMountOptions':: d.fn(help='A list of mount options, e.g. ["ro", "soft"]. Not validated - mount will simply fail if one is invalid. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options', args=[d.arg(name='mountOptions', type=d.T.array)]), - withMountOptions(mountOptions): { mountOptions: if std.isArray(v=mountOptions) then mountOptions else [mountOptions] }, - '#withMountOptionsMixin':: d.fn(help='A list of mount options, e.g. ["ro", "soft"]. Not validated - mount will simply fail if one is invalid. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='mountOptions', type=d.T.array)]), - withMountOptionsMixin(mountOptions): { mountOptions+: if std.isArray(v=mountOptions) then mountOptions else [mountOptions] }, - '#withPersistentVolumeReclaimPolicy':: d.fn(help='What happens to a persistent volume when released from its claim. Valid options are Retain (default for manually created PersistentVolumes), Delete (default for dynamically provisioned PersistentVolumes), and Recycle (deprecated). Recycle must be supported by the volume plugin underlying this PersistentVolume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#reclaiming', args=[d.arg(name='persistentVolumeReclaimPolicy', type=d.T.string)]), - withPersistentVolumeReclaimPolicy(persistentVolumeReclaimPolicy): { persistentVolumeReclaimPolicy: persistentVolumeReclaimPolicy }, - '#withStorageClassName':: d.fn(help='Name of StorageClass to which this persistent volume belongs. Empty value means that this volume does not belong to any StorageClass.', args=[d.arg(name='storageClassName', type=d.T.string)]), - withStorageClassName(storageClassName): { storageClassName: storageClassName }, - '#withVolumeMode':: d.fn(help='volumeMode defines if a volume is intended to be used with a formatted filesystem or to remain in raw block state. Value of Filesystem is implied when not included in spec.', args=[d.arg(name='volumeMode', type=d.T.string)]), - withVolumeMode(volumeMode): { volumeMode: volumeMode }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/persistentVolumeStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/persistentVolumeStatus.libsonnet deleted file mode 100644 index dde767c2d183..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/persistentVolumeStatus.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='persistentVolumeStatus', url='', help='PersistentVolumeStatus is the current status of a persistent volume.'), - '#withMessage':: d.fn(help='A human-readable message indicating details about why the volume is in this state.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withPhase':: d.fn(help='Phase indicates if a volume is available, bound to a claim, or released by a claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#phase', args=[d.arg(name='phase', type=d.T.string)]), - withPhase(phase): { phase: phase }, - '#withReason':: d.fn(help='Reason is a brief CamelCase string that describes any failure and is meant for machine parsing and tidy display in the CLI.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/photonPersistentDiskVolumeSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/photonPersistentDiskVolumeSource.libsonnet deleted file mode 100644 index d8c1209ede91..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/photonPersistentDiskVolumeSource.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='photonPersistentDiskVolumeSource', url='', help='Represents a Photon Controller persistent disk resource.'), - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { fsType: fsType }, - '#withPdID':: d.fn(help='ID that identifies Photon Controller persistent disk', args=[d.arg(name='pdID', type=d.T.string)]), - withPdID(pdID): { pdID: pdID }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/pod.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/pod.libsonnet deleted file mode 100644 index 0437a28d4877..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/pod.libsonnet +++ /dev/null @@ -1,247 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='pod', url='', help='Pod is a collection of containers that can run on a host. This resource is created by clients and scheduled onto hosts.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Pod', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'v1', - kind: 'Pod', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } }, - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } }, - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } }, - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } }, - }, - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } }, - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } }, - }, - '#seccompProfile':: d.obj(help="SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set."), - seccompProfile: { - '#withLocalhostProfile':: d.fn(help="localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is 'Localhost'.", args=[d.arg(name='localhostProfile', type=d.T.string)]), - withLocalhostProfile(localhostProfile): { spec+: { securityContext+: { seccompProfile+: { localhostProfile: localhostProfile } } } }, - '#withType':: d.fn(help='type indicates which kind of seccomp profile will be applied. Valid options are:\n\nLocalhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { securityContext+: { seccompProfile+: { type: type } } } }, - }, - '#windowsOptions':: d.obj(help='WindowsSecurityContextOptions contain Windows-specific options and credentials.'), - windowsOptions: { - '#withGmsaCredentialSpec':: d.fn(help='GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.', args=[d.arg(name='gmsaCredentialSpec', type=d.T.string)]), - withGmsaCredentialSpec(gmsaCredentialSpec): { spec+: { securityContext+: { windowsOptions+: { gmsaCredentialSpec: gmsaCredentialSpec } } } }, - '#withGmsaCredentialSpecName':: d.fn(help='GMSACredentialSpecName is the name of the GMSA credential spec to use.', args=[d.arg(name='gmsaCredentialSpecName', type=d.T.string)]), - withGmsaCredentialSpecName(gmsaCredentialSpecName): { spec+: { securityContext+: { windowsOptions+: { gmsaCredentialSpecName: gmsaCredentialSpecName } } } }, - '#withRunAsUserName':: d.fn(help='The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsUserName', type=d.T.string)]), - withRunAsUserName(runAsUserName): { spec+: { securityContext+: { windowsOptions+: { runAsUserName: runAsUserName } } } }, - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { spec+: { securityContext+: { fsGroup: fsGroup } } }, - '#withFsGroupChangePolicy':: d.fn(help='fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used.', args=[d.arg(name='fsGroupChangePolicy', type=d.T.string)]), - withFsGroupChangePolicy(fsGroupChangePolicy): { spec+: { securityContext+: { fsGroupChangePolicy: fsGroupChangePolicy } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { spec+: { securityContext+: { runAsGroup: runAsGroup } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { spec+: { securityContext+: { runAsUser: runAsUser } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } }, - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { spec+: { automountServiceAccountToken: automountServiceAccountToken } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { spec+: { dnsPolicy: dnsPolicy } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { spec+: { enableServiceLinks: enableServiceLinks } }, - '#withEphemeralContainers':: d.fn(help="List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. This field is alpha-level and is only honored by servers that enable the EphemeralContainers feature.", args=[d.arg(name='ephemeralContainers', type=d.T.array)]), - withEphemeralContainers(ephemeralContainers): { spec+: { ephemeralContainers: if std.isArray(v=ephemeralContainers) then ephemeralContainers else [ephemeralContainers] } }, - '#withEphemeralContainersMixin':: d.fn(help="List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. This field is alpha-level and is only honored by servers that enable the EphemeralContainers feature.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='ephemeralContainers', type=d.T.array)]), - withEphemeralContainersMixin(ephemeralContainers): { spec+: { ephemeralContainers+: if std.isArray(v=ephemeralContainers) then ephemeralContainers else [ephemeralContainers] } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { spec+: { hostIPC: hostIPC } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { spec+: { hostNetwork: hostNetwork } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { spec+: { hostPID: hostPID } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { spec+: { hostname: hostname } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { spec+: { nodeName: nodeName } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { spec+: { nodeSelector: nodeSelector } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { spec+: { nodeSelector+: nodeSelector } }, - '#withOverhead':: d.fn(help='Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/20190226-pod-overhead.md This field is alpha-level as of Kubernetes v1.16, and is only honored by servers that enable the PodOverhead feature.', args=[d.arg(name='overhead', type=d.T.object)]), - withOverhead(overhead): { spec+: { overhead: overhead } }, - '#withOverheadMixin':: d.fn(help='Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/20190226-pod-overhead.md This field is alpha-level as of Kubernetes v1.16, and is only honored by servers that enable the PodOverhead feature.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='overhead', type=d.T.object)]), - withOverheadMixin(overhead): { spec+: { overhead+: overhead } }, - '#withPreemptionPolicy':: d.fn(help='PreemptionPolicy is the Policy for preempting pods with lower priority. One of Never, PreemptLowerPriority. Defaults to PreemptLowerPriority if unset. This field is beta-level, gated by the NonPreemptingPriority feature-gate.', args=[d.arg(name='preemptionPolicy', type=d.T.string)]), - withPreemptionPolicy(preemptionPolicy): { spec+: { preemptionPolicy: preemptionPolicy } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { spec+: { priority: priority } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { spec+: { priorityClassName: priorityClassName } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { spec+: { restartPolicy: restartPolicy } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is a beta feature as of Kubernetes v1.14.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { spec+: { runtimeClassName: runtimeClassName } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { spec+: { schedulerName: schedulerName } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { spec+: { serviceAccount: serviceAccount } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { spec+: { serviceAccountName: serviceAccountName } }, - '#withSetHostnameAsFQDN':: d.fn(help="If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default). In Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname). In Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters to FQDN. If a pod does not have FQDN, this has no effect. Default to false.", args=[d.arg(name='setHostnameAsFQDN', type=d.T.boolean)]), - withSetHostnameAsFQDN(setHostnameAsFQDN): { spec+: { setHostnameAsFQDN: setHostnameAsFQDN } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { spec+: { shareProcessNamespace: shareProcessNamespace } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { spec+: { subdomain: subdomain } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } }, - '#withTopologySpreadConstraints':: d.fn(help='TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed.', args=[d.arg(name='topologySpreadConstraints', type=d.T.array)]), - withTopologySpreadConstraints(topologySpreadConstraints): { spec+: { topologySpreadConstraints: if std.isArray(v=topologySpreadConstraints) then topologySpreadConstraints else [topologySpreadConstraints] } }, - '#withTopologySpreadConstraintsMixin':: d.fn(help='TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='topologySpreadConstraints', type=d.T.array)]), - withTopologySpreadConstraintsMixin(topologySpreadConstraints): { spec+: { topologySpreadConstraints+: if std.isArray(v=topologySpreadConstraints) then topologySpreadConstraints else [topologySpreadConstraints] } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/podAffinity.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/podAffinity.libsonnet deleted file mode 100644 index 18ac76821b38..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/podAffinity.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='podAffinity', url='', help='Pod affinity is a group of inter pod affinity scheduling rules.'), - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/podAffinityTerm.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/podAffinityTerm.libsonnet deleted file mode 100644 index 1a0cb90a5b38..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/podAffinityTerm.libsonnet +++ /dev/null @@ -1,34 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='podAffinityTerm', url='', help='Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running'), - '#labelSelector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - labelSelector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { labelSelector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { labelSelector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { labelSelector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { labelSelector+: { matchLabels+: matchLabels } }, - }, - '#namespaceSelector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - namespaceSelector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { namespaceSelector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { namespaceSelector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { namespaceSelector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { namespaceSelector+: { matchLabels+: matchLabels } }, - }, - '#withNamespaces':: d.fn(help="namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means 'this pod's namespace'", args=[d.arg(name='namespaces', type=d.T.array)]), - withNamespaces(namespaces): { namespaces: if std.isArray(v=namespaces) then namespaces else [namespaces] }, - '#withNamespacesMixin':: d.fn(help="namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means 'this pod's namespace'\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='namespaces', type=d.T.array)]), - withNamespacesMixin(namespaces): { namespaces+: if std.isArray(v=namespaces) then namespaces else [namespaces] }, - '#withTopologyKey':: d.fn(help='This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.', args=[d.arg(name='topologyKey', type=d.T.string)]), - withTopologyKey(topologyKey): { topologyKey: topologyKey }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/podAntiAffinity.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/podAntiAffinity.libsonnet deleted file mode 100644 index 55a58d3aef9b..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/podAntiAffinity.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='podAntiAffinity', url='', help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/podCondition.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/podCondition.libsonnet deleted file mode 100644 index f3e7febbebb6..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/podCondition.libsonnet +++ /dev/null @@ -1,16 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='podCondition', url='', help='PodCondition contains details for the current condition of this pod.'), - '#withLastProbeTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastProbeTime', type=d.T.string)]), - withLastProbeTime(lastProbeTime): { lastProbeTime: lastProbeTime }, - '#withLastTransitionTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastTransitionTime', type=d.T.string)]), - withLastTransitionTime(lastTransitionTime): { lastTransitionTime: lastTransitionTime }, - '#withMessage':: d.fn(help='Human-readable message indicating details about last transition.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withReason':: d.fn(help="Unique, one-word, CamelCase reason for the condition's last transition.", args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#withType':: d.fn(help='Type is the type of the condition. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/podDNSConfig.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/podDNSConfig.libsonnet deleted file mode 100644 index 531e273b1ce6..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/podDNSConfig.libsonnet +++ /dev/null @@ -1,18 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='podDNSConfig', url='', help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { options: if std.isArray(v=options) then options else [options] }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { options+: if std.isArray(v=options) then options else [options] }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { searches: if std.isArray(v=searches) then searches else [searches] }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { searches+: if std.isArray(v=searches) then searches else [searches] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/podDNSConfigOption.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/podDNSConfigOption.libsonnet deleted file mode 100644 index e346886097a6..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/podDNSConfigOption.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='podDNSConfigOption', url='', help='PodDNSConfigOption defines DNS resolver options of a pod.'), - '#withName':: d.fn(help='Required.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withValue':: d.fn(help='', args=[d.arg(name='value', type=d.T.string)]), - withValue(value): { value: value }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/podIP.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/podIP.libsonnet deleted file mode 100644 index 3624968ef4e4..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/podIP.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='podIP', url='', help='IP address information for entries in the (plural) PodIPs field. Each entry includes:\n IP: An IP address allocated to the pod. Routable at least within the cluster.'), - '#withIp':: d.fn(help='ip is an IP address (IPv4 or IPv6) assigned to the pod', args=[d.arg(name='ip', type=d.T.string)]), - withIp(ip): { ip: ip }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/podReadinessGate.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/podReadinessGate.libsonnet deleted file mode 100644 index e0411927ec97..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/podReadinessGate.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='podReadinessGate', url='', help='PodReadinessGate contains the reference to a pod condition'), - '#withConditionType':: d.fn(help="ConditionType refers to a condition in the pod's condition list with matching type.", args=[d.arg(name='conditionType', type=d.T.string)]), - withConditionType(conditionType): { conditionType: conditionType }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/podSecurityContext.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/podSecurityContext.libsonnet deleted file mode 100644 index 99415b169760..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/podSecurityContext.libsonnet +++ /dev/null @@ -1,51 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='podSecurityContext', url='', help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { seLinuxOptions+: { level: level } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { seLinuxOptions+: { role: role } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { seLinuxOptions+: { type: type } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { seLinuxOptions+: { user: user } }, - }, - '#seccompProfile':: d.obj(help="SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set."), - seccompProfile: { - '#withLocalhostProfile':: d.fn(help="localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is 'Localhost'.", args=[d.arg(name='localhostProfile', type=d.T.string)]), - withLocalhostProfile(localhostProfile): { seccompProfile+: { localhostProfile: localhostProfile } }, - '#withType':: d.fn(help='type indicates which kind of seccomp profile will be applied. Valid options are:\n\nLocalhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { seccompProfile+: { type: type } }, - }, - '#windowsOptions':: d.obj(help='WindowsSecurityContextOptions contain Windows-specific options and credentials.'), - windowsOptions: { - '#withGmsaCredentialSpec':: d.fn(help='GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.', args=[d.arg(name='gmsaCredentialSpec', type=d.T.string)]), - withGmsaCredentialSpec(gmsaCredentialSpec): { windowsOptions+: { gmsaCredentialSpec: gmsaCredentialSpec } }, - '#withGmsaCredentialSpecName':: d.fn(help='GMSACredentialSpecName is the name of the GMSA credential spec to use.', args=[d.arg(name='gmsaCredentialSpecName', type=d.T.string)]), - withGmsaCredentialSpecName(gmsaCredentialSpecName): { windowsOptions+: { gmsaCredentialSpecName: gmsaCredentialSpecName } }, - '#withRunAsUserName':: d.fn(help='The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsUserName', type=d.T.string)]), - withRunAsUserName(runAsUserName): { windowsOptions+: { runAsUserName: runAsUserName } }, - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { fsGroup: fsGroup }, - '#withFsGroupChangePolicy':: d.fn(help='fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used.', args=[d.arg(name='fsGroupChangePolicy', type=d.T.string)]), - withFsGroupChangePolicy(fsGroupChangePolicy): { fsGroupChangePolicy: fsGroupChangePolicy }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { runAsGroup: runAsGroup }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { runAsNonRoot: runAsNonRoot }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { runAsUser: runAsUser }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/podSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/podSpec.libsonnet deleted file mode 100644 index 9b630a672d42..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/podSpec.libsonnet +++ /dev/null @@ -1,194 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='podSpec', url='', help='PodSpec is a description of a pod.'), - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } }, - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } }, - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } }, - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } }, - }, - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } }, - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { securityContext+: { seLinuxOptions+: { level: level } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { securityContext+: { seLinuxOptions+: { role: role } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { securityContext+: { seLinuxOptions+: { type: type } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { securityContext+: { seLinuxOptions+: { user: user } } }, - }, - '#seccompProfile':: d.obj(help="SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set."), - seccompProfile: { - '#withLocalhostProfile':: d.fn(help="localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is 'Localhost'.", args=[d.arg(name='localhostProfile', type=d.T.string)]), - withLocalhostProfile(localhostProfile): { securityContext+: { seccompProfile+: { localhostProfile: localhostProfile } } }, - '#withType':: d.fn(help='type indicates which kind of seccomp profile will be applied. Valid options are:\n\nLocalhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { securityContext+: { seccompProfile+: { type: type } } }, - }, - '#windowsOptions':: d.obj(help='WindowsSecurityContextOptions contain Windows-specific options and credentials.'), - windowsOptions: { - '#withGmsaCredentialSpec':: d.fn(help='GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.', args=[d.arg(name='gmsaCredentialSpec', type=d.T.string)]), - withGmsaCredentialSpec(gmsaCredentialSpec): { securityContext+: { windowsOptions+: { gmsaCredentialSpec: gmsaCredentialSpec } } }, - '#withGmsaCredentialSpecName':: d.fn(help='GMSACredentialSpecName is the name of the GMSA credential spec to use.', args=[d.arg(name='gmsaCredentialSpecName', type=d.T.string)]), - withGmsaCredentialSpecName(gmsaCredentialSpecName): { securityContext+: { windowsOptions+: { gmsaCredentialSpecName: gmsaCredentialSpecName } } }, - '#withRunAsUserName':: d.fn(help='The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsUserName', type=d.T.string)]), - withRunAsUserName(runAsUserName): { securityContext+: { windowsOptions+: { runAsUserName: runAsUserName } } }, - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { securityContext+: { fsGroup: fsGroup } }, - '#withFsGroupChangePolicy':: d.fn(help='fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used.', args=[d.arg(name='fsGroupChangePolicy', type=d.T.string)]), - withFsGroupChangePolicy(fsGroupChangePolicy): { securityContext+: { fsGroupChangePolicy: fsGroupChangePolicy } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { securityContext+: { runAsGroup: runAsGroup } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { securityContext+: { runAsNonRoot: runAsNonRoot } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { securityContext+: { runAsUser: runAsUser } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } }, - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { activeDeadlineSeconds: activeDeadlineSeconds }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { automountServiceAccountToken: automountServiceAccountToken }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { containers: if std.isArray(v=containers) then containers else [containers] }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { containers+: if std.isArray(v=containers) then containers else [containers] }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { dnsPolicy: dnsPolicy }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { enableServiceLinks: enableServiceLinks }, - '#withEphemeralContainers':: d.fn(help="List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. This field is alpha-level and is only honored by servers that enable the EphemeralContainers feature.", args=[d.arg(name='ephemeralContainers', type=d.T.array)]), - withEphemeralContainers(ephemeralContainers): { ephemeralContainers: if std.isArray(v=ephemeralContainers) then ephemeralContainers else [ephemeralContainers] }, - '#withEphemeralContainersMixin':: d.fn(help="List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. This field is alpha-level and is only honored by servers that enable the EphemeralContainers feature.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='ephemeralContainers', type=d.T.array)]), - withEphemeralContainersMixin(ephemeralContainers): { ephemeralContainers+: if std.isArray(v=ephemeralContainers) then ephemeralContainers else [ephemeralContainers] }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { hostIPC: hostIPC }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { hostNetwork: hostNetwork }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { hostPID: hostPID }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { hostname: hostname }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { nodeName: nodeName }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { nodeSelector: nodeSelector }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { nodeSelector+: nodeSelector }, - '#withOverhead':: d.fn(help='Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/20190226-pod-overhead.md This field is alpha-level as of Kubernetes v1.16, and is only honored by servers that enable the PodOverhead feature.', args=[d.arg(name='overhead', type=d.T.object)]), - withOverhead(overhead): { overhead: overhead }, - '#withOverheadMixin':: d.fn(help='Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/20190226-pod-overhead.md This field is alpha-level as of Kubernetes v1.16, and is only honored by servers that enable the PodOverhead feature.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='overhead', type=d.T.object)]), - withOverheadMixin(overhead): { overhead+: overhead }, - '#withPreemptionPolicy':: d.fn(help='PreemptionPolicy is the Policy for preempting pods with lower priority. One of Never, PreemptLowerPriority. Defaults to PreemptLowerPriority if unset. This field is beta-level, gated by the NonPreemptingPriority feature-gate.', args=[d.arg(name='preemptionPolicy', type=d.T.string)]), - withPreemptionPolicy(preemptionPolicy): { preemptionPolicy: preemptionPolicy }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { priority: priority }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { priorityClassName: priorityClassName }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { restartPolicy: restartPolicy }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is a beta feature as of Kubernetes v1.14.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { runtimeClassName: runtimeClassName }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { schedulerName: schedulerName }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { serviceAccount: serviceAccount }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { serviceAccountName: serviceAccountName }, - '#withSetHostnameAsFQDN':: d.fn(help="If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default). In Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname). In Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters to FQDN. If a pod does not have FQDN, this has no effect. Default to false.", args=[d.arg(name='setHostnameAsFQDN', type=d.T.boolean)]), - withSetHostnameAsFQDN(setHostnameAsFQDN): { setHostnameAsFQDN: setHostnameAsFQDN }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { shareProcessNamespace: shareProcessNamespace }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { subdomain: subdomain }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { terminationGracePeriodSeconds: terminationGracePeriodSeconds }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] }, - '#withTopologySpreadConstraints':: d.fn(help='TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed.', args=[d.arg(name='topologySpreadConstraints', type=d.T.array)]), - withTopologySpreadConstraints(topologySpreadConstraints): { topologySpreadConstraints: if std.isArray(v=topologySpreadConstraints) then topologySpreadConstraints else [topologySpreadConstraints] }, - '#withTopologySpreadConstraintsMixin':: d.fn(help='TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='topologySpreadConstraints', type=d.T.array)]), - withTopologySpreadConstraintsMixin(topologySpreadConstraints): { topologySpreadConstraints+: if std.isArray(v=topologySpreadConstraints) then topologySpreadConstraints else [topologySpreadConstraints] }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { volumes: if std.isArray(v=volumes) then volumes else [volumes] }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { volumes+: if std.isArray(v=volumes) then volumes else [volumes] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/podStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/podStatus.libsonnet deleted file mode 100644 index 8c3b8f1f8f6c..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/podStatus.libsonnet +++ /dev/null @@ -1,42 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='podStatus', url='', help='PodStatus represents information about the status of a pod. Status may trail the actual state of a system, especially if the node that hosts the pod cannot contact the control plane.'), - '#withConditions':: d.fn(help='Current service state of pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions', args=[d.arg(name='conditions', type=d.T.array)]), - withConditions(conditions): { conditions: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withConditionsMixin':: d.fn(help='Current service state of pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='conditions', type=d.T.array)]), - withConditionsMixin(conditions): { conditions+: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withContainerStatuses':: d.fn(help='The list has one entry per container in the manifest. Each entry is currently the output of `docker inspect`. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status', args=[d.arg(name='containerStatuses', type=d.T.array)]), - withContainerStatuses(containerStatuses): { containerStatuses: if std.isArray(v=containerStatuses) then containerStatuses else [containerStatuses] }, - '#withContainerStatusesMixin':: d.fn(help='The list has one entry per container in the manifest. Each entry is currently the output of `docker inspect`. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containerStatuses', type=d.T.array)]), - withContainerStatusesMixin(containerStatuses): { containerStatuses+: if std.isArray(v=containerStatuses) then containerStatuses else [containerStatuses] }, - '#withEphemeralContainerStatuses':: d.fn(help='Status for any ephemeral containers that have run in this pod. This field is alpha-level and is only populated by servers that enable the EphemeralContainers feature.', args=[d.arg(name='ephemeralContainerStatuses', type=d.T.array)]), - withEphemeralContainerStatuses(ephemeralContainerStatuses): { ephemeralContainerStatuses: if std.isArray(v=ephemeralContainerStatuses) then ephemeralContainerStatuses else [ephemeralContainerStatuses] }, - '#withEphemeralContainerStatusesMixin':: d.fn(help='Status for any ephemeral containers that have run in this pod. This field is alpha-level and is only populated by servers that enable the EphemeralContainers feature.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ephemeralContainerStatuses', type=d.T.array)]), - withEphemeralContainerStatusesMixin(ephemeralContainerStatuses): { ephemeralContainerStatuses+: if std.isArray(v=ephemeralContainerStatuses) then ephemeralContainerStatuses else [ephemeralContainerStatuses] }, - '#withHostIP':: d.fn(help='IP address of the host to which the pod is assigned. Empty if not yet scheduled.', args=[d.arg(name='hostIP', type=d.T.string)]), - withHostIP(hostIP): { hostIP: hostIP }, - '#withInitContainerStatuses':: d.fn(help='The list has one entry per init container in the manifest. The most recent successful init container will have ready = true, the most recently started container will have startTime set. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status', args=[d.arg(name='initContainerStatuses', type=d.T.array)]), - withInitContainerStatuses(initContainerStatuses): { initContainerStatuses: if std.isArray(v=initContainerStatuses) then initContainerStatuses else [initContainerStatuses] }, - '#withInitContainerStatusesMixin':: d.fn(help='The list has one entry per init container in the manifest. The most recent successful init container will have ready = true, the most recently started container will have startTime set. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainerStatuses', type=d.T.array)]), - withInitContainerStatusesMixin(initContainerStatuses): { initContainerStatuses+: if std.isArray(v=initContainerStatuses) then initContainerStatuses else [initContainerStatuses] }, - '#withMessage':: d.fn(help='A human readable message indicating details about why the pod is in this condition.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withNominatedNodeName':: d.fn(help='nominatedNodeName is set only when this pod preempts other pods on the node, but it cannot be scheduled right away as preemption victims receive their graceful termination periods. This field does not guarantee that the pod will be scheduled on this node. Scheduler may decide to place the pod elsewhere if other nodes become available sooner. Scheduler may also decide to give the resources on this node to a higher priority pod that is created after preemption. As a result, this field may be different than PodSpec.nodeName when the pod is scheduled.', args=[d.arg(name='nominatedNodeName', type=d.T.string)]), - withNominatedNodeName(nominatedNodeName): { nominatedNodeName: nominatedNodeName }, - '#withPhase':: d.fn(help="The phase of a Pod is a simple, high-level summary of where the Pod is in its lifecycle. The conditions array, the reason and message fields, and the individual container status arrays contain more detail about the pod's status. There are five possible phase values:\n\nPending: The pod has been accepted by the Kubernetes system, but one or more of the container images has not been created. This includes time before being scheduled as well as time spent downloading images over the network, which could take a while. Running: The pod has been bound to a node, and all of the containers have been created. At least one container is still running, or is in the process of starting or restarting. Succeeded: All containers in the pod have terminated in success, and will not be restarted. Failed: All containers in the pod have terminated, and at least one container has terminated in failure. The container either exited with non-zero status or was terminated by the system. Unknown: For some reason the state of the pod could not be obtained, typically due to an error in communicating with the host of the pod.\n\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-phase", args=[d.arg(name='phase', type=d.T.string)]), - withPhase(phase): { phase: phase }, - '#withPodIP':: d.fn(help='IP address allocated to the pod. Routable at least within the cluster. Empty if not yet allocated.', args=[d.arg(name='podIP', type=d.T.string)]), - withPodIP(podIP): { podIP: podIP }, - '#withPodIPs':: d.fn(help='podIPs holds the IP addresses allocated to the pod. If this field is specified, the 0th entry must match the podIP field. Pods may be allocated at most 1 value for each of IPv4 and IPv6. This list is empty if no IPs have been allocated yet.', args=[d.arg(name='podIPs', type=d.T.array)]), - withPodIPs(podIPs): { podIPs: if std.isArray(v=podIPs) then podIPs else [podIPs] }, - '#withPodIPsMixin':: d.fn(help='podIPs holds the IP addresses allocated to the pod. If this field is specified, the 0th entry must match the podIP field. Pods may be allocated at most 1 value for each of IPv4 and IPv6. This list is empty if no IPs have been allocated yet.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='podIPs', type=d.T.array)]), - withPodIPsMixin(podIPs): { podIPs+: if std.isArray(v=podIPs) then podIPs else [podIPs] }, - '#withQosClass':: d.fn(help='The Quality of Service (QOS) classification assigned to the pod based on resource requirements See PodQOSClass type for available QOS classes More info: https://git.k8s.io/community/contributors/design-proposals/node/resource-qos.md', args=[d.arg(name='qosClass', type=d.T.string)]), - withQosClass(qosClass): { qosClass: qosClass }, - '#withReason':: d.fn(help="A brief CamelCase message indicating details about why the pod is in this state. e.g. 'Evicted'", args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#withStartTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='startTime', type=d.T.string)]), - withStartTime(startTime): { startTime: startTime }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/podTemplate.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/podTemplate.libsonnet deleted file mode 100644 index df74ea33e8c9..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/podTemplate.libsonnet +++ /dev/null @@ -1,295 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='podTemplate', url='', help='PodTemplate describes a template for creating copies of a predefined pod.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Podtemplate', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'v1', - kind: 'PodTemplate', - } + self.metadata.withName(name=name), - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { template+: { metadata+: { annotations: annotations } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { template+: { metadata+: { annotations+: annotations } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { template+: { metadata+: { clusterName: clusterName } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { template+: { metadata+: { creationTimestamp: creationTimestamp } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { template+: { metadata+: { generateName: generateName } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { template+: { metadata+: { generation: generation } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { template+: { metadata+: { labels: labels } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { template+: { metadata+: { labels+: labels } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { template+: { metadata+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { template+: { metadata+: { namespace: namespace } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { template+: { metadata+: { resourceVersion: resourceVersion } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { template+: { metadata+: { selfLink: selfLink } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { template+: { metadata+: { uid: uid } } }, - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } }, - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - }, - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } }, - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } }, - }, - '#seccompProfile':: d.obj(help="SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set."), - seccompProfile: { - '#withLocalhostProfile':: d.fn(help="localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is 'Localhost'.", args=[d.arg(name='localhostProfile', type=d.T.string)]), - withLocalhostProfile(localhostProfile): { template+: { spec+: { securityContext+: { seccompProfile+: { localhostProfile: localhostProfile } } } } }, - '#withType':: d.fn(help='type indicates which kind of seccomp profile will be applied. Valid options are:\n\nLocalhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { template+: { spec+: { securityContext+: { seccompProfile+: { type: type } } } } }, - }, - '#windowsOptions':: d.obj(help='WindowsSecurityContextOptions contain Windows-specific options and credentials.'), - windowsOptions: { - '#withGmsaCredentialSpec':: d.fn(help='GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.', args=[d.arg(name='gmsaCredentialSpec', type=d.T.string)]), - withGmsaCredentialSpec(gmsaCredentialSpec): { template+: { spec+: { securityContext+: { windowsOptions+: { gmsaCredentialSpec: gmsaCredentialSpec } } } } }, - '#withGmsaCredentialSpecName':: d.fn(help='GMSACredentialSpecName is the name of the GMSA credential spec to use.', args=[d.arg(name='gmsaCredentialSpecName', type=d.T.string)]), - withGmsaCredentialSpecName(gmsaCredentialSpecName): { template+: { spec+: { securityContext+: { windowsOptions+: { gmsaCredentialSpecName: gmsaCredentialSpecName } } } } }, - '#withRunAsUserName':: d.fn(help='The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsUserName', type=d.T.string)]), - withRunAsUserName(runAsUserName): { template+: { spec+: { securityContext+: { windowsOptions+: { runAsUserName: runAsUserName } } } } }, - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } }, - '#withFsGroupChangePolicy':: d.fn(help='fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used.', args=[d.arg(name='fsGroupChangePolicy', type=d.T.string)]), - withFsGroupChangePolicy(fsGroupChangePolicy): { template+: { spec+: { securityContext+: { fsGroupChangePolicy: fsGroupChangePolicy } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } }, - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { template+: { spec+: { dnsPolicy: dnsPolicy } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { template+: { spec+: { enableServiceLinks: enableServiceLinks } } }, - '#withEphemeralContainers':: d.fn(help="List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. This field is alpha-level and is only honored by servers that enable the EphemeralContainers feature.", args=[d.arg(name='ephemeralContainers', type=d.T.array)]), - withEphemeralContainers(ephemeralContainers): { template+: { spec+: { ephemeralContainers: if std.isArray(v=ephemeralContainers) then ephemeralContainers else [ephemeralContainers] } } }, - '#withEphemeralContainersMixin':: d.fn(help="List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. This field is alpha-level and is only honored by servers that enable the EphemeralContainers feature.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='ephemeralContainers', type=d.T.array)]), - withEphemeralContainersMixin(ephemeralContainers): { template+: { spec+: { ephemeralContainers+: if std.isArray(v=ephemeralContainers) then ephemeralContainers else [ephemeralContainers] } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { template+: { spec+: { hostIPC: hostIPC } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { template+: { spec+: { hostNetwork: hostNetwork } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { template+: { spec+: { hostPID: hostPID } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { template+: { spec+: { hostname: hostname } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { template+: { spec+: { nodeName: nodeName } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { template+: { spec+: { nodeSelector: nodeSelector } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { template+: { spec+: { nodeSelector+: nodeSelector } } }, - '#withOverhead':: d.fn(help='Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/20190226-pod-overhead.md This field is alpha-level as of Kubernetes v1.16, and is only honored by servers that enable the PodOverhead feature.', args=[d.arg(name='overhead', type=d.T.object)]), - withOverhead(overhead): { template+: { spec+: { overhead: overhead } } }, - '#withOverheadMixin':: d.fn(help='Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/20190226-pod-overhead.md This field is alpha-level as of Kubernetes v1.16, and is only honored by servers that enable the PodOverhead feature.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='overhead', type=d.T.object)]), - withOverheadMixin(overhead): { template+: { spec+: { overhead+: overhead } } }, - '#withPreemptionPolicy':: d.fn(help='PreemptionPolicy is the Policy for preempting pods with lower priority. One of Never, PreemptLowerPriority. Defaults to PreemptLowerPriority if unset. This field is beta-level, gated by the NonPreemptingPriority feature-gate.', args=[d.arg(name='preemptionPolicy', type=d.T.string)]), - withPreemptionPolicy(preemptionPolicy): { template+: { spec+: { preemptionPolicy: preemptionPolicy } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { template+: { spec+: { priority: priority } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { template+: { spec+: { priorityClassName: priorityClassName } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { template+: { spec+: { restartPolicy: restartPolicy } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is a beta feature as of Kubernetes v1.14.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { template+: { spec+: { runtimeClassName: runtimeClassName } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { template+: { spec+: { schedulerName: schedulerName } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { template+: { spec+: { serviceAccount: serviceAccount } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { template+: { spec+: { serviceAccountName: serviceAccountName } } }, - '#withSetHostnameAsFQDN':: d.fn(help="If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default). In Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname). In Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters to FQDN. If a pod does not have FQDN, this has no effect. Default to false.", args=[d.arg(name='setHostnameAsFQDN', type=d.T.boolean)]), - withSetHostnameAsFQDN(setHostnameAsFQDN): { template+: { spec+: { setHostnameAsFQDN: setHostnameAsFQDN } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { template+: { spec+: { subdomain: subdomain } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } }, - '#withTopologySpreadConstraints':: d.fn(help='TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed.', args=[d.arg(name='topologySpreadConstraints', type=d.T.array)]), - withTopologySpreadConstraints(topologySpreadConstraints): { template+: { spec+: { topologySpreadConstraints: if std.isArray(v=topologySpreadConstraints) then topologySpreadConstraints else [topologySpreadConstraints] } } }, - '#withTopologySpreadConstraintsMixin':: d.fn(help='TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='topologySpreadConstraints', type=d.T.array)]), - withTopologySpreadConstraintsMixin(topologySpreadConstraints): { template+: { spec+: { topologySpreadConstraints+: if std.isArray(v=topologySpreadConstraints) then topologySpreadConstraints else [topologySpreadConstraints] } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } }, - }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/podTemplateSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/podTemplateSpec.libsonnet deleted file mode 100644 index 04d2dc144d5f..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/podTemplateSpec.libsonnet +++ /dev/null @@ -1,242 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='podTemplateSpec', url='', help='PodTemplateSpec describes the data a pod should have when created from a template'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } }, - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } }, - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } }, - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } }, - }, - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } }, - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } }, - }, - '#seccompProfile':: d.obj(help="SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set."), - seccompProfile: { - '#withLocalhostProfile':: d.fn(help="localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is 'Localhost'.", args=[d.arg(name='localhostProfile', type=d.T.string)]), - withLocalhostProfile(localhostProfile): { spec+: { securityContext+: { seccompProfile+: { localhostProfile: localhostProfile } } } }, - '#withType':: d.fn(help='type indicates which kind of seccomp profile will be applied. Valid options are:\n\nLocalhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { securityContext+: { seccompProfile+: { type: type } } } }, - }, - '#windowsOptions':: d.obj(help='WindowsSecurityContextOptions contain Windows-specific options and credentials.'), - windowsOptions: { - '#withGmsaCredentialSpec':: d.fn(help='GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.', args=[d.arg(name='gmsaCredentialSpec', type=d.T.string)]), - withGmsaCredentialSpec(gmsaCredentialSpec): { spec+: { securityContext+: { windowsOptions+: { gmsaCredentialSpec: gmsaCredentialSpec } } } }, - '#withGmsaCredentialSpecName':: d.fn(help='GMSACredentialSpecName is the name of the GMSA credential spec to use.', args=[d.arg(name='gmsaCredentialSpecName', type=d.T.string)]), - withGmsaCredentialSpecName(gmsaCredentialSpecName): { spec+: { securityContext+: { windowsOptions+: { gmsaCredentialSpecName: gmsaCredentialSpecName } } } }, - '#withRunAsUserName':: d.fn(help='The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsUserName', type=d.T.string)]), - withRunAsUserName(runAsUserName): { spec+: { securityContext+: { windowsOptions+: { runAsUserName: runAsUserName } } } }, - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { spec+: { securityContext+: { fsGroup: fsGroup } } }, - '#withFsGroupChangePolicy':: d.fn(help='fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used.', args=[d.arg(name='fsGroupChangePolicy', type=d.T.string)]), - withFsGroupChangePolicy(fsGroupChangePolicy): { spec+: { securityContext+: { fsGroupChangePolicy: fsGroupChangePolicy } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { spec+: { securityContext+: { runAsGroup: runAsGroup } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { spec+: { securityContext+: { runAsUser: runAsUser } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } }, - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { spec+: { automountServiceAccountToken: automountServiceAccountToken } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { spec+: { dnsPolicy: dnsPolicy } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { spec+: { enableServiceLinks: enableServiceLinks } }, - '#withEphemeralContainers':: d.fn(help="List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. This field is alpha-level and is only honored by servers that enable the EphemeralContainers feature.", args=[d.arg(name='ephemeralContainers', type=d.T.array)]), - withEphemeralContainers(ephemeralContainers): { spec+: { ephemeralContainers: if std.isArray(v=ephemeralContainers) then ephemeralContainers else [ephemeralContainers] } }, - '#withEphemeralContainersMixin':: d.fn(help="List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. This field is alpha-level and is only honored by servers that enable the EphemeralContainers feature.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='ephemeralContainers', type=d.T.array)]), - withEphemeralContainersMixin(ephemeralContainers): { spec+: { ephemeralContainers+: if std.isArray(v=ephemeralContainers) then ephemeralContainers else [ephemeralContainers] } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { spec+: { hostIPC: hostIPC } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { spec+: { hostNetwork: hostNetwork } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { spec+: { hostPID: hostPID } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { spec+: { hostname: hostname } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { spec+: { nodeName: nodeName } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { spec+: { nodeSelector: nodeSelector } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { spec+: { nodeSelector+: nodeSelector } }, - '#withOverhead':: d.fn(help='Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/20190226-pod-overhead.md This field is alpha-level as of Kubernetes v1.16, and is only honored by servers that enable the PodOverhead feature.', args=[d.arg(name='overhead', type=d.T.object)]), - withOverhead(overhead): { spec+: { overhead: overhead } }, - '#withOverheadMixin':: d.fn(help='Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/20190226-pod-overhead.md This field is alpha-level as of Kubernetes v1.16, and is only honored by servers that enable the PodOverhead feature.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='overhead', type=d.T.object)]), - withOverheadMixin(overhead): { spec+: { overhead+: overhead } }, - '#withPreemptionPolicy':: d.fn(help='PreemptionPolicy is the Policy for preempting pods with lower priority. One of Never, PreemptLowerPriority. Defaults to PreemptLowerPriority if unset. This field is beta-level, gated by the NonPreemptingPriority feature-gate.', args=[d.arg(name='preemptionPolicy', type=d.T.string)]), - withPreemptionPolicy(preemptionPolicy): { spec+: { preemptionPolicy: preemptionPolicy } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { spec+: { priority: priority } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { spec+: { priorityClassName: priorityClassName } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { spec+: { restartPolicy: restartPolicy } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is a beta feature as of Kubernetes v1.14.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { spec+: { runtimeClassName: runtimeClassName } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { spec+: { schedulerName: schedulerName } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { spec+: { serviceAccount: serviceAccount } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { spec+: { serviceAccountName: serviceAccountName } }, - '#withSetHostnameAsFQDN':: d.fn(help="If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default). In Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname). In Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters to FQDN. If a pod does not have FQDN, this has no effect. Default to false.", args=[d.arg(name='setHostnameAsFQDN', type=d.T.boolean)]), - withSetHostnameAsFQDN(setHostnameAsFQDN): { spec+: { setHostnameAsFQDN: setHostnameAsFQDN } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { spec+: { shareProcessNamespace: shareProcessNamespace } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { spec+: { subdomain: subdomain } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } }, - '#withTopologySpreadConstraints':: d.fn(help='TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed.', args=[d.arg(name='topologySpreadConstraints', type=d.T.array)]), - withTopologySpreadConstraints(topologySpreadConstraints): { spec+: { topologySpreadConstraints: if std.isArray(v=topologySpreadConstraints) then topologySpreadConstraints else [topologySpreadConstraints] } }, - '#withTopologySpreadConstraintsMixin':: d.fn(help='TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='topologySpreadConstraints', type=d.T.array)]), - withTopologySpreadConstraintsMixin(topologySpreadConstraints): { spec+: { topologySpreadConstraints+: if std.isArray(v=topologySpreadConstraints) then topologySpreadConstraints else [topologySpreadConstraints] } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/portStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/portStatus.libsonnet deleted file mode 100644 index c9c5e2757dfc..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/portStatus.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='portStatus', url='', help=''), - '#withError':: d.fn(help='Error is to record the problem with the service port The format of the error shall comply with the following rules: - 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.', args=[d.arg(name='err', type=d.T.string)]), - withError(err): { 'error': err }, - '#withPort':: d.fn(help='Port is the port number of the service port of which status is recorded here', args=[d.arg(name='port', type=d.T.integer)]), - withPort(port): { port: port }, - '#withProtocol':: d.fn(help='Protocol is the protocol of the service port of which status is recorded here The supported values are: "TCP", "UDP", "SCTP"', args=[d.arg(name='protocol', type=d.T.string)]), - withProtocol(protocol): { protocol: protocol }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/portworxVolumeSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/portworxVolumeSource.libsonnet deleted file mode 100644 index 223141072ead..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/portworxVolumeSource.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='portworxVolumeSource', url='', help='PortworxVolumeSource represents a Portworx volume resource.'), - '#withFsType':: d.fn(help='FSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { fsType: fsType }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#withVolumeID':: d.fn(help='VolumeID uniquely identifies a Portworx volume', args=[d.arg(name='volumeID', type=d.T.string)]), - withVolumeID(volumeID): { volumeID: volumeID }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/preferredSchedulingTerm.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/preferredSchedulingTerm.libsonnet deleted file mode 100644 index ee3d34fdb991..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/preferredSchedulingTerm.libsonnet +++ /dev/null @@ -1,19 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='preferredSchedulingTerm', url='', help="An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op)."), - '#preference':: d.obj(help='A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.'), - preference: { - '#withMatchExpressions':: d.fn(help="A list of node selector requirements by node's labels.", args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { preference+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help="A list of node selector requirements by node's labels.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { preference+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchFields':: d.fn(help="A list of node selector requirements by node's fields.", args=[d.arg(name='matchFields', type=d.T.array)]), - withMatchFields(matchFields): { preference+: { matchFields: if std.isArray(v=matchFields) then matchFields else [matchFields] } }, - '#withMatchFieldsMixin':: d.fn(help="A list of node selector requirements by node's fields.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='matchFields', type=d.T.array)]), - withMatchFieldsMixin(matchFields): { preference+: { matchFields+: if std.isArray(v=matchFields) then matchFields else [matchFields] } }, - }, - '#withWeight':: d.fn(help='Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.', args=[d.arg(name='weight', type=d.T.integer)]), - withWeight(weight): { weight: weight }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/probe.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/probe.libsonnet deleted file mode 100644 index 76f0306d14eb..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/probe.libsonnet +++ /dev/null @@ -1,47 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='probe', url='', help='Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.'), - '#exec':: d.obj(help='ExecAction describes a "run in container" action.'), - exec: { - '#withCommand':: d.fn(help="Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.", args=[d.arg(name='command', type=d.T.array)]), - withCommand(command): { exec+: { command: if std.isArray(v=command) then command else [command] } }, - '#withCommandMixin':: d.fn(help="Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='command', type=d.T.array)]), - withCommandMixin(command): { exec+: { command+: if std.isArray(v=command) then command else [command] } }, - }, - '#httpGet':: d.obj(help='HTTPGetAction describes an action based on HTTP Get requests.'), - httpGet: { - '#withHost':: d.fn(help='Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { httpGet+: { host: host } }, - '#withHttpHeaders':: d.fn(help='Custom headers to set in the request. HTTP allows repeated headers.', args=[d.arg(name='httpHeaders', type=d.T.array)]), - withHttpHeaders(httpHeaders): { httpGet+: { httpHeaders: if std.isArray(v=httpHeaders) then httpHeaders else [httpHeaders] } }, - '#withHttpHeadersMixin':: d.fn(help='Custom headers to set in the request. HTTP allows repeated headers.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='httpHeaders', type=d.T.array)]), - withHttpHeadersMixin(httpHeaders): { httpGet+: { httpHeaders+: if std.isArray(v=httpHeaders) then httpHeaders else [httpHeaders] } }, - '#withPath':: d.fn(help='Path to access on the HTTP server.', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { httpGet+: { path: path } }, - '#withPort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='port', type=d.T.string)]), - withPort(port): { httpGet+: { port: port } }, - '#withScheme':: d.fn(help='Scheme to use for connecting to the host. Defaults to HTTP.', args=[d.arg(name='scheme', type=d.T.string)]), - withScheme(scheme): { httpGet+: { scheme: scheme } }, - }, - '#tcpSocket':: d.obj(help='TCPSocketAction describes an action based on opening a socket'), - tcpSocket: { - '#withHost':: d.fn(help='Optional: Host name to connect to, defaults to the pod IP.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { tcpSocket+: { host: host } }, - '#withPort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='port', type=d.T.string)]), - withPort(port): { tcpSocket+: { port: port } }, - }, - '#withFailureThreshold':: d.fn(help='Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.', args=[d.arg(name='failureThreshold', type=d.T.integer)]), - withFailureThreshold(failureThreshold): { failureThreshold: failureThreshold }, - '#withInitialDelaySeconds':: d.fn(help='Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes', args=[d.arg(name='initialDelaySeconds', type=d.T.integer)]), - withInitialDelaySeconds(initialDelaySeconds): { initialDelaySeconds: initialDelaySeconds }, - '#withPeriodSeconds':: d.fn(help='How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.', args=[d.arg(name='periodSeconds', type=d.T.integer)]), - withPeriodSeconds(periodSeconds): { periodSeconds: periodSeconds }, - '#withSuccessThreshold':: d.fn(help='Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.', args=[d.arg(name='successThreshold', type=d.T.integer)]), - withSuccessThreshold(successThreshold): { successThreshold: successThreshold }, - '#withTerminationGracePeriodSeconds':: d.fn(help="Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is an alpha field and requires enabling ProbeTerminationGracePeriod feature gate.", args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { terminationGracePeriodSeconds: terminationGracePeriodSeconds }, - '#withTimeoutSeconds':: d.fn(help='Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes', args=[d.arg(name='timeoutSeconds', type=d.T.integer)]), - withTimeoutSeconds(timeoutSeconds): { timeoutSeconds: timeoutSeconds }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/projectedVolumeSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/projectedVolumeSource.libsonnet deleted file mode 100644 index e2e272c2db10..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/projectedVolumeSource.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='projectedVolumeSource', url='', help='Represents a projected volume source'), - '#withDefaultMode':: d.fn(help='Mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.', args=[d.arg(name='defaultMode', type=d.T.integer)]), - withDefaultMode(defaultMode): { defaultMode: defaultMode }, - '#withSources':: d.fn(help='list of volume projections', args=[d.arg(name='sources', type=d.T.array)]), - withSources(sources): { sources: if std.isArray(v=sources) then sources else [sources] }, - '#withSourcesMixin':: d.fn(help='list of volume projections\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sources', type=d.T.array)]), - withSourcesMixin(sources): { sources+: if std.isArray(v=sources) then sources else [sources] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/quobyteVolumeSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/quobyteVolumeSource.libsonnet deleted file mode 100644 index 02f20fa35598..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/quobyteVolumeSource.libsonnet +++ /dev/null @@ -1,18 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='quobyteVolumeSource', url='', help='Represents a Quobyte mount that lasts the lifetime of a pod. Quobyte volumes do not support ownership management or SELinux relabeling.'), - '#withGroup':: d.fn(help='Group to map volume access to Default is no group', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { group: group }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#withRegistry':: d.fn(help='Registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes', args=[d.arg(name='registry', type=d.T.string)]), - withRegistry(registry): { registry: registry }, - '#withTenant':: d.fn(help='Tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin', args=[d.arg(name='tenant', type=d.T.string)]), - withTenant(tenant): { tenant: tenant }, - '#withUser':: d.fn(help='User to map volume access to Defaults to serivceaccount user', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { user: user }, - '#withVolume':: d.fn(help='Volume is a string that references an already created Quobyte volume by name.', args=[d.arg(name='volume', type=d.T.string)]), - withVolume(volume): { volume: volume }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/rbdPersistentVolumeSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/rbdPersistentVolumeSource.libsonnet deleted file mode 100644 index e69a4a147d95..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/rbdPersistentVolumeSource.libsonnet +++ /dev/null @@ -1,29 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='rbdPersistentVolumeSource', url='', help='Represents a Rados Block Device mount that lasts the lifetime of a pod. RBD volumes support ownership management and SELinux relabeling.'), - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { secretRef+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { secretRef+: { namespace: namespace } }, - }, - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { fsType: fsType }, - '#withImage':: d.fn(help='The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='image', type=d.T.string)]), - withImage(image): { image: image }, - '#withKeyring':: d.fn(help='Keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='keyring', type=d.T.string)]), - withKeyring(keyring): { keyring: keyring }, - '#withMonitors':: d.fn(help='A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitors(monitors): { monitors: if std.isArray(v=monitors) then monitors else [monitors] }, - '#withMonitorsMixin':: d.fn(help='A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitorsMixin(monitors): { monitors+: if std.isArray(v=monitors) then monitors else [monitors] }, - '#withPool':: d.fn(help='The rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='pool', type=d.T.string)]), - withPool(pool): { pool: pool }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#withUser':: d.fn(help='The rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { user: user }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/rbdVolumeSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/rbdVolumeSource.libsonnet deleted file mode 100644 index dea713cf30e3..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/rbdVolumeSource.libsonnet +++ /dev/null @@ -1,27 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='rbdVolumeSource', url='', help='Represents a Rados Block Device mount that lasts the lifetime of a pod. RBD volumes support ownership management and SELinux relabeling.'), - '#secretRef':: d.obj(help='LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.'), - secretRef: { - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { secretRef+: { name: name } }, - }, - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { fsType: fsType }, - '#withImage':: d.fn(help='The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='image', type=d.T.string)]), - withImage(image): { image: image }, - '#withKeyring':: d.fn(help='Keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='keyring', type=d.T.string)]), - withKeyring(keyring): { keyring: keyring }, - '#withMonitors':: d.fn(help='A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitors(monitors): { monitors: if std.isArray(v=monitors) then monitors else [monitors] }, - '#withMonitorsMixin':: d.fn(help='A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitorsMixin(monitors): { monitors+: if std.isArray(v=monitors) then monitors else [monitors] }, - '#withPool':: d.fn(help='The rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='pool', type=d.T.string)]), - withPool(pool): { pool: pool }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#withUser':: d.fn(help='The rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { user: user }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/replicationController.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/replicationController.libsonnet deleted file mode 100644 index 9c07ae87bfcb..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/replicationController.libsonnet +++ /dev/null @@ -1,306 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='replicationController', url='', help='ReplicationController represents the configuration of a replication controller.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Replicationcontroller', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'v1', - kind: 'ReplicationController', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='ReplicationControllerSpec is the specification of a replication controller.'), - spec: { - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { spec+: { template+: { metadata+: { annotations: annotations } } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { spec+: { template+: { metadata+: { annotations+: annotations } } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { spec+: { template+: { metadata+: { clusterName: clusterName } } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { spec+: { template+: { metadata+: { creationTimestamp: creationTimestamp } } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { spec+: { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { spec+: { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { spec+: { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { spec+: { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { spec+: { template+: { metadata+: { generateName: generateName } } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { spec+: { template+: { metadata+: { generation: generation } } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { spec+: { template+: { metadata+: { labels: labels } } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { spec+: { template+: { metadata+: { labels+: labels } } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { spec+: { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { spec+: { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { template+: { metadata+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { template+: { metadata+: { namespace: namespace } } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { spec+: { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { spec+: { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { spec+: { template+: { metadata+: { resourceVersion: resourceVersion } } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { spec+: { template+: { metadata+: { selfLink: selfLink } } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { template+: { metadata+: { uid: uid } } } }, - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } } }, - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { spec+: { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } } }, - }, - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { spec+: { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { spec+: { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { spec+: { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { spec+: { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { spec+: { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { spec+: { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } } }, - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } } }, - }, - '#seccompProfile':: d.obj(help="SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set."), - seccompProfile: { - '#withLocalhostProfile':: d.fn(help="localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is 'Localhost'.", args=[d.arg(name='localhostProfile', type=d.T.string)]), - withLocalhostProfile(localhostProfile): { spec+: { template+: { spec+: { securityContext+: { seccompProfile+: { localhostProfile: localhostProfile } } } } } }, - '#withType':: d.fn(help='type indicates which kind of seccomp profile will be applied. Valid options are:\n\nLocalhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { template+: { spec+: { securityContext+: { seccompProfile+: { type: type } } } } } }, - }, - '#windowsOptions':: d.obj(help='WindowsSecurityContextOptions contain Windows-specific options and credentials.'), - windowsOptions: { - '#withGmsaCredentialSpec':: d.fn(help='GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.', args=[d.arg(name='gmsaCredentialSpec', type=d.T.string)]), - withGmsaCredentialSpec(gmsaCredentialSpec): { spec+: { template+: { spec+: { securityContext+: { windowsOptions+: { gmsaCredentialSpec: gmsaCredentialSpec } } } } } }, - '#withGmsaCredentialSpecName':: d.fn(help='GMSACredentialSpecName is the name of the GMSA credential spec to use.', args=[d.arg(name='gmsaCredentialSpecName', type=d.T.string)]), - withGmsaCredentialSpecName(gmsaCredentialSpecName): { spec+: { template+: { spec+: { securityContext+: { windowsOptions+: { gmsaCredentialSpecName: gmsaCredentialSpecName } } } } } }, - '#withRunAsUserName':: d.fn(help='The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsUserName', type=d.T.string)]), - withRunAsUserName(runAsUserName): { spec+: { template+: { spec+: { securityContext+: { windowsOptions+: { runAsUserName: runAsUserName } } } } } }, - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { spec+: { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } } }, - '#withFsGroupChangePolicy':: d.fn(help='fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used.', args=[d.arg(name='fsGroupChangePolicy', type=d.T.string)]), - withFsGroupChangePolicy(fsGroupChangePolicy): { spec+: { template+: { spec+: { securityContext+: { fsGroupChangePolicy: fsGroupChangePolicy } } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { spec+: { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { spec+: { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { spec+: { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { spec+: { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { spec+: { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { spec+: { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { spec+: { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } } }, - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { spec+: { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { spec+: { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { spec+: { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { spec+: { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { spec+: { template+: { spec+: { dnsPolicy: dnsPolicy } } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { spec+: { template+: { spec+: { enableServiceLinks: enableServiceLinks } } } }, - '#withEphemeralContainers':: d.fn(help="List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. This field is alpha-level and is only honored by servers that enable the EphemeralContainers feature.", args=[d.arg(name='ephemeralContainers', type=d.T.array)]), - withEphemeralContainers(ephemeralContainers): { spec+: { template+: { spec+: { ephemeralContainers: if std.isArray(v=ephemeralContainers) then ephemeralContainers else [ephemeralContainers] } } } }, - '#withEphemeralContainersMixin':: d.fn(help="List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. This field is alpha-level and is only honored by servers that enable the EphemeralContainers feature.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='ephemeralContainers', type=d.T.array)]), - withEphemeralContainersMixin(ephemeralContainers): { spec+: { template+: { spec+: { ephemeralContainers+: if std.isArray(v=ephemeralContainers) then ephemeralContainers else [ephemeralContainers] } } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { spec+: { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { spec+: { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { spec+: { template+: { spec+: { hostIPC: hostIPC } } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { spec+: { template+: { spec+: { hostNetwork: hostNetwork } } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { spec+: { template+: { spec+: { hostPID: hostPID } } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { spec+: { template+: { spec+: { hostname: hostname } } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { spec+: { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { spec+: { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { spec+: { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { spec+: { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { spec+: { template+: { spec+: { nodeName: nodeName } } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { spec+: { template+: { spec+: { nodeSelector: nodeSelector } } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { spec+: { template+: { spec+: { nodeSelector+: nodeSelector } } } }, - '#withOverhead':: d.fn(help='Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/20190226-pod-overhead.md This field is alpha-level as of Kubernetes v1.16, and is only honored by servers that enable the PodOverhead feature.', args=[d.arg(name='overhead', type=d.T.object)]), - withOverhead(overhead): { spec+: { template+: { spec+: { overhead: overhead } } } }, - '#withOverheadMixin':: d.fn(help='Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/20190226-pod-overhead.md This field is alpha-level as of Kubernetes v1.16, and is only honored by servers that enable the PodOverhead feature.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='overhead', type=d.T.object)]), - withOverheadMixin(overhead): { spec+: { template+: { spec+: { overhead+: overhead } } } }, - '#withPreemptionPolicy':: d.fn(help='PreemptionPolicy is the Policy for preempting pods with lower priority. One of Never, PreemptLowerPriority. Defaults to PreemptLowerPriority if unset. This field is beta-level, gated by the NonPreemptingPriority feature-gate.', args=[d.arg(name='preemptionPolicy', type=d.T.string)]), - withPreemptionPolicy(preemptionPolicy): { spec+: { template+: { spec+: { preemptionPolicy: preemptionPolicy } } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { spec+: { template+: { spec+: { priority: priority } } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { spec+: { template+: { spec+: { priorityClassName: priorityClassName } } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { spec+: { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { spec+: { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { spec+: { template+: { spec+: { restartPolicy: restartPolicy } } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is a beta feature as of Kubernetes v1.14.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { spec+: { template+: { spec+: { runtimeClassName: runtimeClassName } } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { spec+: { template+: { spec+: { schedulerName: schedulerName } } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { spec+: { template+: { spec+: { serviceAccount: serviceAccount } } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { spec+: { template+: { spec+: { serviceAccountName: serviceAccountName } } } }, - '#withSetHostnameAsFQDN':: d.fn(help="If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default). In Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname). In Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters to FQDN. If a pod does not have FQDN, this has no effect. Default to false.", args=[d.arg(name='setHostnameAsFQDN', type=d.T.boolean)]), - withSetHostnameAsFQDN(setHostnameAsFQDN): { spec+: { template+: { spec+: { setHostnameAsFQDN: setHostnameAsFQDN } } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { spec+: { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { spec+: { template+: { spec+: { subdomain: subdomain } } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { spec+: { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { spec+: { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { spec+: { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } } }, - '#withTopologySpreadConstraints':: d.fn(help='TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed.', args=[d.arg(name='topologySpreadConstraints', type=d.T.array)]), - withTopologySpreadConstraints(topologySpreadConstraints): { spec+: { template+: { spec+: { topologySpreadConstraints: if std.isArray(v=topologySpreadConstraints) then topologySpreadConstraints else [topologySpreadConstraints] } } } }, - '#withTopologySpreadConstraintsMixin':: d.fn(help='TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='topologySpreadConstraints', type=d.T.array)]), - withTopologySpreadConstraintsMixin(topologySpreadConstraints): { spec+: { template+: { spec+: { topologySpreadConstraints+: if std.isArray(v=topologySpreadConstraints) then topologySpreadConstraints else [topologySpreadConstraints] } } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { spec+: { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { spec+: { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } } }, - }, - }, - '#withMinReadySeconds':: d.fn(help='Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)', args=[d.arg(name='minReadySeconds', type=d.T.integer)]), - withMinReadySeconds(minReadySeconds): { spec+: { minReadySeconds: minReadySeconds } }, - '#withReplicas':: d.fn(help='Replicas is the number of desired replicas. This is a pointer to distinguish between explicit zero and unspecified. Defaults to 1. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { spec+: { replicas: replicas } }, - '#withSelector':: d.fn(help='Selector is a label query over pods that should match the Replicas count. If Selector is empty, it is defaulted to the labels present on the Pod template. Label keys and values that must match in order to be controlled by this replication controller, if empty defaulted to labels on Pod template. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors', args=[d.arg(name='selector', type=d.T.object)]), - withSelector(selector): { spec+: { selector: selector } }, - '#withSelectorMixin':: d.fn(help='Selector is a label query over pods that should match the Replicas count. If Selector is empty, it is defaulted to the labels present on the Pod template. Label keys and values that must match in order to be controlled by this replication controller, if empty defaulted to labels on Pod template. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='selector', type=d.T.object)]), - withSelectorMixin(selector): { spec+: { selector+: selector } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/replicationControllerCondition.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/replicationControllerCondition.libsonnet deleted file mode 100644 index e978d0af96b7..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/replicationControllerCondition.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='replicationControllerCondition', url='', help='ReplicationControllerCondition describes the state of a replication controller at a certain point.'), - '#withLastTransitionTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastTransitionTime', type=d.T.string)]), - withLastTransitionTime(lastTransitionTime): { lastTransitionTime: lastTransitionTime }, - '#withMessage':: d.fn(help='A human readable message indicating details about the transition.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withReason':: d.fn(help="The reason for the condition's last transition.", args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#withType':: d.fn(help='Type of replication controller condition.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/replicationControllerSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/replicationControllerSpec.libsonnet deleted file mode 100644 index 38fd20581492..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/replicationControllerSpec.libsonnet +++ /dev/null @@ -1,253 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='replicationControllerSpec', url='', help='ReplicationControllerSpec is the specification of a replication controller.'), - '#template':: d.obj(help='PodTemplateSpec describes the data a pod should have when created from a template'), - template: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { template+: { metadata+: { annotations: annotations } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { template+: { metadata+: { annotations+: annotations } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { template+: { metadata+: { clusterName: clusterName } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { template+: { metadata+: { creationTimestamp: creationTimestamp } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { template+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { template+: { metadata+: { deletionTimestamp: deletionTimestamp } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { template+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { template+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { template+: { metadata+: { generateName: generateName } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { template+: { metadata+: { generation: generation } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { template+: { metadata+: { labels: labels } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { template+: { metadata+: { labels+: labels } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { template+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { template+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { template+: { metadata+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { template+: { metadata+: { namespace: namespace } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { template+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { template+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { template+: { metadata+: { resourceVersion: resourceVersion } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { template+: { metadata+: { selfLink: selfLink } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { template+: { metadata+: { uid: uid } } }, - }, - '#spec':: d.obj(help='PodSpec is a description of a pod.'), - spec: { - '#affinity':: d.obj(help='Affinity is a group of affinity scheduling rules.'), - affinity: { - '#nodeAffinity':: d.obj(help='Node affinity is a group of node affinity scheduling rules.'), - nodeAffinity: { - '#requiredDuringSchedulingIgnoredDuringExecution':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - requiredDuringSchedulingIgnoredDuringExecution: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { template+: { spec+: { affinity+: { nodeAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } }, - }, - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { nodeAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - }, - '#podAffinity':: d.obj(help='Pod affinity is a group of inter pod affinity scheduling rules.'), - podAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - }, - '#podAntiAffinity':: d.obj(help='Pod anti affinity is a group of inter pod anti affinity scheduling rules.'), - podAntiAffinity: { - '#withPreferredDuringSchedulingIgnoredDuringExecution':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecution(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withPreferredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='preferredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withPreferredDuringSchedulingIgnoredDuringExecutionMixin(preferredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { preferredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=preferredDuringSchedulingIgnoredDuringExecution) then preferredDuringSchedulingIgnoredDuringExecution else [preferredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecution':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecution(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - '#withRequiredDuringSchedulingIgnoredDuringExecutionMixin':: d.fn(help='If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDuringSchedulingIgnoredDuringExecution', type=d.T.array)]), - withRequiredDuringSchedulingIgnoredDuringExecutionMixin(requiredDuringSchedulingIgnoredDuringExecution): { template+: { spec+: { affinity+: { podAntiAffinity+: { requiredDuringSchedulingIgnoredDuringExecution+: if std.isArray(v=requiredDuringSchedulingIgnoredDuringExecution) then requiredDuringSchedulingIgnoredDuringExecution else [requiredDuringSchedulingIgnoredDuringExecution] } } } } }, - }, - }, - '#dnsConfig':: d.obj(help='PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.'), - dnsConfig: { - '#withNameservers':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameservers(nameservers): { template+: { spec+: { dnsConfig+: { nameservers: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } }, - '#withNameserversMixin':: d.fn(help='A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nameservers', type=d.T.array)]), - withNameserversMixin(nameservers): { template+: { spec+: { dnsConfig+: { nameservers+: if std.isArray(v=nameservers) then nameservers else [nameservers] } } } }, - '#withOptions':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.', args=[d.arg(name='options', type=d.T.array)]), - withOptions(options): { template+: { spec+: { dnsConfig+: { options: if std.isArray(v=options) then options else [options] } } } }, - '#withOptionsMixin':: d.fn(help='A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.array)]), - withOptionsMixin(options): { template+: { spec+: { dnsConfig+: { options+: if std.isArray(v=options) then options else [options] } } } }, - '#withSearches':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.', args=[d.arg(name='searches', type=d.T.array)]), - withSearches(searches): { template+: { spec+: { dnsConfig+: { searches: if std.isArray(v=searches) then searches else [searches] } } } }, - '#withSearchesMixin':: d.fn(help='A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='searches', type=d.T.array)]), - withSearchesMixin(searches): { template+: { spec+: { dnsConfig+: { searches+: if std.isArray(v=searches) then searches else [searches] } } } }, - }, - '#securityContext':: d.obj(help='PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.'), - securityContext: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { template+: { spec+: { securityContext+: { seLinuxOptions+: { level: level } } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { template+: { spec+: { securityContext+: { seLinuxOptions+: { role: role } } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { template+: { spec+: { securityContext+: { seLinuxOptions+: { type: type } } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { template+: { spec+: { securityContext+: { seLinuxOptions+: { user: user } } } } }, - }, - '#seccompProfile':: d.obj(help="SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set."), - seccompProfile: { - '#withLocalhostProfile':: d.fn(help="localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is 'Localhost'.", args=[d.arg(name='localhostProfile', type=d.T.string)]), - withLocalhostProfile(localhostProfile): { template+: { spec+: { securityContext+: { seccompProfile+: { localhostProfile: localhostProfile } } } } }, - '#withType':: d.fn(help='type indicates which kind of seccomp profile will be applied. Valid options are:\n\nLocalhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { template+: { spec+: { securityContext+: { seccompProfile+: { type: type } } } } }, - }, - '#windowsOptions':: d.obj(help='WindowsSecurityContextOptions contain Windows-specific options and credentials.'), - windowsOptions: { - '#withGmsaCredentialSpec':: d.fn(help='GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.', args=[d.arg(name='gmsaCredentialSpec', type=d.T.string)]), - withGmsaCredentialSpec(gmsaCredentialSpec): { template+: { spec+: { securityContext+: { windowsOptions+: { gmsaCredentialSpec: gmsaCredentialSpec } } } } }, - '#withGmsaCredentialSpecName':: d.fn(help='GMSACredentialSpecName is the name of the GMSA credential spec to use.', args=[d.arg(name='gmsaCredentialSpecName', type=d.T.string)]), - withGmsaCredentialSpecName(gmsaCredentialSpecName): { template+: { spec+: { securityContext+: { windowsOptions+: { gmsaCredentialSpecName: gmsaCredentialSpecName } } } } }, - '#withRunAsUserName':: d.fn(help='The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsUserName', type=d.T.string)]), - withRunAsUserName(runAsUserName): { template+: { spec+: { securityContext+: { windowsOptions+: { runAsUserName: runAsUserName } } } } }, - }, - '#withFsGroup':: d.fn(help="A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", args=[d.arg(name='fsGroup', type=d.T.integer)]), - withFsGroup(fsGroup): { template+: { spec+: { securityContext+: { fsGroup: fsGroup } } } }, - '#withFsGroupChangePolicy':: d.fn(help='fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used.', args=[d.arg(name='fsGroupChangePolicy', type=d.T.string)]), - withFsGroupChangePolicy(fsGroupChangePolicy): { template+: { spec+: { securityContext+: { fsGroupChangePolicy: fsGroupChangePolicy } } } }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { template+: { spec+: { securityContext+: { runAsGroup: runAsGroup } } } }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { template+: { spec+: { securityContext+: { runAsNonRoot: runAsNonRoot } } } }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { template+: { spec+: { securityContext+: { runAsUser: runAsUser } } } }, - '#withSupplementalGroups':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroups(supplementalGroups): { template+: { spec+: { securityContext+: { supplementalGroups: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } }, - '#withSupplementalGroupsMixin':: d.fn(help="A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='supplementalGroups', type=d.T.array)]), - withSupplementalGroupsMixin(supplementalGroups): { template+: { spec+: { securityContext+: { supplementalGroups+: if std.isArray(v=supplementalGroups) then supplementalGroups else [supplementalGroups] } } } }, - '#withSysctls':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctls(sysctls): { template+: { spec+: { securityContext+: { sysctls: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } }, - '#withSysctlsMixin':: d.fn(help='Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sysctls', type=d.T.array)]), - withSysctlsMixin(sysctls): { template+: { spec+: { securityContext+: { sysctls+: if std.isArray(v=sysctls) then sysctls else [sysctls] } } } }, - }, - '#withActiveDeadlineSeconds':: d.fn(help='Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.', args=[d.arg(name='activeDeadlineSeconds', type=d.T.integer)]), - withActiveDeadlineSeconds(activeDeadlineSeconds): { template+: { spec+: { activeDeadlineSeconds: activeDeadlineSeconds } } }, - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { template+: { spec+: { automountServiceAccountToken: automountServiceAccountToken } } }, - '#withContainers':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.', args=[d.arg(name='containers', type=d.T.array)]), - withContainers(containers): { template+: { spec+: { containers: if std.isArray(v=containers) then containers else [containers] } } }, - '#withContainersMixin':: d.fn(help='List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='containers', type=d.T.array)]), - withContainersMixin(containers): { template+: { spec+: { containers+: if std.isArray(v=containers) then containers else [containers] } } }, - '#withDnsPolicy':: d.fn(help="Set DNS policy for the pod. Defaults to 'ClusterFirst'. Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", args=[d.arg(name='dnsPolicy', type=d.T.string)]), - withDnsPolicy(dnsPolicy): { template+: { spec+: { dnsPolicy: dnsPolicy } } }, - '#withEnableServiceLinks':: d.fn(help="EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", args=[d.arg(name='enableServiceLinks', type=d.T.boolean)]), - withEnableServiceLinks(enableServiceLinks): { template+: { spec+: { enableServiceLinks: enableServiceLinks } } }, - '#withEphemeralContainers':: d.fn(help="List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. This field is alpha-level and is only honored by servers that enable the EphemeralContainers feature.", args=[d.arg(name='ephemeralContainers', type=d.T.array)]), - withEphemeralContainers(ephemeralContainers): { template+: { spec+: { ephemeralContainers: if std.isArray(v=ephemeralContainers) then ephemeralContainers else [ephemeralContainers] } } }, - '#withEphemeralContainersMixin':: d.fn(help="List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. This field is alpha-level and is only honored by servers that enable the EphemeralContainers feature.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='ephemeralContainers', type=d.T.array)]), - withEphemeralContainersMixin(ephemeralContainers): { template+: { spec+: { ephemeralContainers+: if std.isArray(v=ephemeralContainers) then ephemeralContainers else [ephemeralContainers] } } }, - '#withHostAliases':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliases(hostAliases): { template+: { spec+: { hostAliases: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } }, - '#withHostAliasesMixin':: d.fn(help="HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='hostAliases', type=d.T.array)]), - withHostAliasesMixin(hostAliases): { template+: { spec+: { hostAliases+: if std.isArray(v=hostAliases) then hostAliases else [hostAliases] } } }, - '#withHostIPC':: d.fn(help="Use the host's ipc namespace. Optional: Default to false.", args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { template+: { spec+: { hostIPC: hostIPC } } }, - '#withHostNetwork':: d.fn(help="Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { template+: { spec+: { hostNetwork: hostNetwork } } }, - '#withHostPID':: d.fn(help="Use the host's pid namespace. Optional: Default to false.", args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { template+: { spec+: { hostPID: hostPID } } }, - '#withHostname':: d.fn(help="Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { template+: { spec+: { hostname: hostname } } }, - '#withImagePullSecrets':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { template+: { spec+: { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } }, - '#withImagePullSecretsMixin':: d.fn(help='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. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { template+: { spec+: { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] } } }, - '#withInitContainers':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainers(initContainers): { template+: { spec+: { initContainers: if std.isArray(v=initContainers) then initContainers else [initContainers] } } }, - '#withInitContainersMixin':: d.fn(help='List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='initContainers', type=d.T.array)]), - withInitContainersMixin(initContainers): { template+: { spec+: { initContainers+: if std.isArray(v=initContainers) then initContainers else [initContainers] } } }, - '#withNodeName':: d.fn(help='NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { template+: { spec+: { nodeName: nodeName } } }, - '#withNodeSelector':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { template+: { spec+: { nodeSelector: nodeSelector } } }, - '#withNodeSelectorMixin':: d.fn(help="NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { template+: { spec+: { nodeSelector+: nodeSelector } } }, - '#withOverhead':: d.fn(help='Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/20190226-pod-overhead.md This field is alpha-level as of Kubernetes v1.16, and is only honored by servers that enable the PodOverhead feature.', args=[d.arg(name='overhead', type=d.T.object)]), - withOverhead(overhead): { template+: { spec+: { overhead: overhead } } }, - '#withOverheadMixin':: d.fn(help='Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/20190226-pod-overhead.md This field is alpha-level as of Kubernetes v1.16, and is only honored by servers that enable the PodOverhead feature.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='overhead', type=d.T.object)]), - withOverheadMixin(overhead): { template+: { spec+: { overhead+: overhead } } }, - '#withPreemptionPolicy':: d.fn(help='PreemptionPolicy is the Policy for preempting pods with lower priority. One of Never, PreemptLowerPriority. Defaults to PreemptLowerPriority if unset. This field is beta-level, gated by the NonPreemptingPriority feature-gate.', args=[d.arg(name='preemptionPolicy', type=d.T.string)]), - withPreemptionPolicy(preemptionPolicy): { template+: { spec+: { preemptionPolicy: preemptionPolicy } } }, - '#withPriority':: d.fn(help='The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.', args=[d.arg(name='priority', type=d.T.integer)]), - withPriority(priority): { template+: { spec+: { priority: priority } } }, - '#withPriorityClassName':: d.fn(help="If specified, indicates the pod's priority. 'system-node-critical' and 'system-cluster-critical' are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", args=[d.arg(name='priorityClassName', type=d.T.string)]), - withPriorityClassName(priorityClassName): { template+: { spec+: { priorityClassName: priorityClassName } } }, - '#withReadinessGates':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGates(readinessGates): { template+: { spec+: { readinessGates: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } }, - '#withReadinessGatesMixin':: d.fn(help='If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='readinessGates', type=d.T.array)]), - withReadinessGatesMixin(readinessGates): { template+: { spec+: { readinessGates+: if std.isArray(v=readinessGates) then readinessGates else [readinessGates] } } }, - '#withRestartPolicy':: d.fn(help='Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy', args=[d.arg(name='restartPolicy', type=d.T.string)]), - withRestartPolicy(restartPolicy): { template+: { spec+: { restartPolicy: restartPolicy } } }, - '#withRuntimeClassName':: d.fn(help='RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is a beta feature as of Kubernetes v1.14.', args=[d.arg(name='runtimeClassName', type=d.T.string)]), - withRuntimeClassName(runtimeClassName): { template+: { spec+: { runtimeClassName: runtimeClassName } } }, - '#withSchedulerName':: d.fn(help='If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.', args=[d.arg(name='schedulerName', type=d.T.string)]), - withSchedulerName(schedulerName): { template+: { spec+: { schedulerName: schedulerName } } }, - '#withServiceAccount':: d.fn(help='DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.', args=[d.arg(name='serviceAccount', type=d.T.string)]), - withServiceAccount(serviceAccount): { template+: { spec+: { serviceAccount: serviceAccount } } }, - '#withServiceAccountName':: d.fn(help='ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/', args=[d.arg(name='serviceAccountName', type=d.T.string)]), - withServiceAccountName(serviceAccountName): { template+: { spec+: { serviceAccountName: serviceAccountName } } }, - '#withSetHostnameAsFQDN':: d.fn(help="If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default). In Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname). In Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters to FQDN. If a pod does not have FQDN, this has no effect. Default to false.", args=[d.arg(name='setHostnameAsFQDN', type=d.T.boolean)]), - withSetHostnameAsFQDN(setHostnameAsFQDN): { template+: { spec+: { setHostnameAsFQDN: setHostnameAsFQDN } } }, - '#withShareProcessNamespace':: d.fn(help='Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false.', args=[d.arg(name='shareProcessNamespace', type=d.T.boolean)]), - withShareProcessNamespace(shareProcessNamespace): { template+: { spec+: { shareProcessNamespace: shareProcessNamespace } } }, - '#withSubdomain':: d.fn(help='If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.', args=[d.arg(name='subdomain', type=d.T.string)]), - withSubdomain(subdomain): { template+: { spec+: { subdomain: subdomain } } }, - '#withTerminationGracePeriodSeconds':: d.fn(help='Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.', args=[d.arg(name='terminationGracePeriodSeconds', type=d.T.integer)]), - withTerminationGracePeriodSeconds(terminationGracePeriodSeconds): { template+: { spec+: { terminationGracePeriodSeconds: terminationGracePeriodSeconds } } }, - '#withTolerations':: d.fn(help="If specified, the pod's tolerations.", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { template+: { spec+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } }, - '#withTolerationsMixin':: d.fn(help="If specified, the pod's tolerations.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { template+: { spec+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } }, - '#withTopologySpreadConstraints':: d.fn(help='TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed.', args=[d.arg(name='topologySpreadConstraints', type=d.T.array)]), - withTopologySpreadConstraints(topologySpreadConstraints): { template+: { spec+: { topologySpreadConstraints: if std.isArray(v=topologySpreadConstraints) then topologySpreadConstraints else [topologySpreadConstraints] } } }, - '#withTopologySpreadConstraintsMixin':: d.fn(help='TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='topologySpreadConstraints', type=d.T.array)]), - withTopologySpreadConstraintsMixin(topologySpreadConstraints): { template+: { spec+: { topologySpreadConstraints+: if std.isArray(v=topologySpreadConstraints) then topologySpreadConstraints else [topologySpreadConstraints] } } }, - '#withVolumes':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { template+: { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } } }, - '#withVolumesMixin':: d.fn(help='List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { template+: { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } } }, - }, - }, - '#withMinReadySeconds':: d.fn(help='Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)', args=[d.arg(name='minReadySeconds', type=d.T.integer)]), - withMinReadySeconds(minReadySeconds): { minReadySeconds: minReadySeconds }, - '#withReplicas':: d.fn(help='Replicas is the number of desired replicas. This is a pointer to distinguish between explicit zero and unspecified. Defaults to 1. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { replicas: replicas }, - '#withSelector':: d.fn(help='Selector is a label query over pods that should match the Replicas count. If Selector is empty, it is defaulted to the labels present on the Pod template. Label keys and values that must match in order to be controlled by this replication controller, if empty defaulted to labels on Pod template. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors', args=[d.arg(name='selector', type=d.T.object)]), - withSelector(selector): { selector: selector }, - '#withSelectorMixin':: d.fn(help='Selector is a label query over pods that should match the Replicas count. If Selector is empty, it is defaulted to the labels present on the Pod template. Label keys and values that must match in order to be controlled by this replication controller, if empty defaulted to labels on Pod template. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='selector', type=d.T.object)]), - withSelectorMixin(selector): { selector+: selector }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/replicationControllerStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/replicationControllerStatus.libsonnet deleted file mode 100644 index 8e0121b7a915..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/replicationControllerStatus.libsonnet +++ /dev/null @@ -1,20 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='replicationControllerStatus', url='', help='ReplicationControllerStatus represents the current status of a replication controller.'), - '#withAvailableReplicas':: d.fn(help='The number of available replicas (ready for at least minReadySeconds) for this replication controller.', args=[d.arg(name='availableReplicas', type=d.T.integer)]), - withAvailableReplicas(availableReplicas): { availableReplicas: availableReplicas }, - '#withConditions':: d.fn(help="Represents the latest available observations of a replication controller's current state.", args=[d.arg(name='conditions', type=d.T.array)]), - withConditions(conditions): { conditions: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withConditionsMixin':: d.fn(help="Represents the latest available observations of a replication controller's current state.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='conditions', type=d.T.array)]), - withConditionsMixin(conditions): { conditions+: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withFullyLabeledReplicas':: d.fn(help='The number of pods that have labels matching the labels of the pod template of the replication controller.', args=[d.arg(name='fullyLabeledReplicas', type=d.T.integer)]), - withFullyLabeledReplicas(fullyLabeledReplicas): { fullyLabeledReplicas: fullyLabeledReplicas }, - '#withObservedGeneration':: d.fn(help='ObservedGeneration reflects the generation of the most recently observed replication controller.', args=[d.arg(name='observedGeneration', type=d.T.integer)]), - withObservedGeneration(observedGeneration): { observedGeneration: observedGeneration }, - '#withReadyReplicas':: d.fn(help='The number of ready replicas for this replication controller.', args=[d.arg(name='readyReplicas', type=d.T.integer)]), - withReadyReplicas(readyReplicas): { readyReplicas: readyReplicas }, - '#withReplicas':: d.fn(help='Replicas is the most recently oberved number of replicas. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller', args=[d.arg(name='replicas', type=d.T.integer)]), - withReplicas(replicas): { replicas: replicas }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/resourceFieldSelector.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/resourceFieldSelector.libsonnet deleted file mode 100644 index 506aadf4533b..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/resourceFieldSelector.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='resourceFieldSelector', url='', help='ResourceFieldSelector represents container resources (cpu, memory) and their output format'), - '#withContainerName':: d.fn(help='Container name: required for volumes, optional for env vars', args=[d.arg(name='containerName', type=d.T.string)]), - withContainerName(containerName): { containerName: containerName }, - '#withDivisor':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='divisor', type=d.T.string)]), - withDivisor(divisor): { divisor: divisor }, - '#withResource':: d.fn(help='Required: resource to select', args=[d.arg(name='resource', type=d.T.string)]), - withResource(resource): { resource: resource }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/resourceQuota.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/resourceQuota.libsonnet deleted file mode 100644 index 4bbc27ef31de..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/resourceQuota.libsonnet +++ /dev/null @@ -1,74 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='resourceQuota', url='', help='ResourceQuota sets aggregate quota restrictions enforced per namespace'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Resourcequota', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'v1', - kind: 'ResourceQuota', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='ResourceQuotaSpec defines the desired hard limits to enforce for Quota.'), - spec: { - '#scopeSelector':: d.obj(help='A scope selector represents the AND of the selectors represented by the scoped-resource selector requirements.'), - scopeSelector: { - '#withMatchExpressions':: d.fn(help='A list of scope selector requirements by scope of the resources.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { spec+: { scopeSelector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='A list of scope selector requirements by scope of the resources.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { spec+: { scopeSelector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - }, - '#withHard':: d.fn(help='hard is the set of desired hard limits for each named resource. More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/', args=[d.arg(name='hard', type=d.T.object)]), - withHard(hard): { spec+: { hard: hard } }, - '#withHardMixin':: d.fn(help='hard is the set of desired hard limits for each named resource. More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='hard', type=d.T.object)]), - withHardMixin(hard): { spec+: { hard+: hard } }, - '#withScopes':: d.fn(help='A collection of filters that must match each object tracked by a quota. If not specified, the quota matches all objects.', args=[d.arg(name='scopes', type=d.T.array)]), - withScopes(scopes): { spec+: { scopes: if std.isArray(v=scopes) then scopes else [scopes] } }, - '#withScopesMixin':: d.fn(help='A collection of filters that must match each object tracked by a quota. If not specified, the quota matches all objects.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='scopes', type=d.T.array)]), - withScopesMixin(scopes): { spec+: { scopes+: if std.isArray(v=scopes) then scopes else [scopes] } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/resourceQuotaSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/resourceQuotaSpec.libsonnet deleted file mode 100644 index 8af3a38d93d4..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/resourceQuotaSpec.libsonnet +++ /dev/null @@ -1,21 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='resourceQuotaSpec', url='', help='ResourceQuotaSpec defines the desired hard limits to enforce for Quota.'), - '#scopeSelector':: d.obj(help='A scope selector represents the AND of the selectors represented by the scoped-resource selector requirements.'), - scopeSelector: { - '#withMatchExpressions':: d.fn(help='A list of scope selector requirements by scope of the resources.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { scopeSelector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='A list of scope selector requirements by scope of the resources.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { scopeSelector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - }, - '#withHard':: d.fn(help='hard is the set of desired hard limits for each named resource. More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/', args=[d.arg(name='hard', type=d.T.object)]), - withHard(hard): { hard: hard }, - '#withHardMixin':: d.fn(help='hard is the set of desired hard limits for each named resource. More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='hard', type=d.T.object)]), - withHardMixin(hard): { hard+: hard }, - '#withScopes':: d.fn(help='A collection of filters that must match each object tracked by a quota. If not specified, the quota matches all objects.', args=[d.arg(name='scopes', type=d.T.array)]), - withScopes(scopes): { scopes: if std.isArray(v=scopes) then scopes else [scopes] }, - '#withScopesMixin':: d.fn(help='A collection of filters that must match each object tracked by a quota. If not specified, the quota matches all objects.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='scopes', type=d.T.array)]), - withScopesMixin(scopes): { scopes+: if std.isArray(v=scopes) then scopes else [scopes] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/resourceQuotaStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/resourceQuotaStatus.libsonnet deleted file mode 100644 index f61db494f1b0..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/resourceQuotaStatus.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='resourceQuotaStatus', url='', help='ResourceQuotaStatus defines the enforced hard limits and observed use.'), - '#withHard':: d.fn(help='Hard is the set of enforced hard limits for each named resource. More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/', args=[d.arg(name='hard', type=d.T.object)]), - withHard(hard): { hard: hard }, - '#withHardMixin':: d.fn(help='Hard is the set of enforced hard limits for each named resource. More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='hard', type=d.T.object)]), - withHardMixin(hard): { hard+: hard }, - '#withUsed':: d.fn(help='Used is the current observed total usage of the resource in the namespace.', args=[d.arg(name='used', type=d.T.object)]), - withUsed(used): { used: used }, - '#withUsedMixin':: d.fn(help='Used is the current observed total usage of the resource in the namespace.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='used', type=d.T.object)]), - withUsedMixin(used): { used+: used }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/resourceRequirements.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/resourceRequirements.libsonnet deleted file mode 100644 index 704b3be167ab..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/resourceRequirements.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='resourceRequirements', url='', help='ResourceRequirements describes the compute resource requirements.'), - '#withLimits':: d.fn(help='Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/', args=[d.arg(name='limits', type=d.T.object)]), - withLimits(limits): { limits: limits }, - '#withLimitsMixin':: d.fn(help='Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='limits', type=d.T.object)]), - withLimitsMixin(limits): { limits+: limits }, - '#withRequests':: d.fn(help='Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/', args=[d.arg(name='requests', type=d.T.object)]), - withRequests(requests): { requests: requests }, - '#withRequestsMixin':: d.fn(help='Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requests', type=d.T.object)]), - withRequestsMixin(requests): { requests+: requests }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/scaleIOPersistentVolumeSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/scaleIOPersistentVolumeSource.libsonnet deleted file mode 100644 index 0526d2a1df58..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/scaleIOPersistentVolumeSource.libsonnet +++ /dev/null @@ -1,31 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='scaleIOPersistentVolumeSource', url='', help='ScaleIOPersistentVolumeSource represents a persistent ScaleIO volume'), - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { secretRef+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { secretRef+: { namespace: namespace } }, - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Default is "xfs"', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { fsType: fsType }, - '#withGateway':: d.fn(help='The host address of the ScaleIO API Gateway.', args=[d.arg(name='gateway', type=d.T.string)]), - withGateway(gateway): { gateway: gateway }, - '#withProtectionDomain':: d.fn(help='The name of the ScaleIO Protection Domain for the configured storage.', args=[d.arg(name='protectionDomain', type=d.T.string)]), - withProtectionDomain(protectionDomain): { protectionDomain: protectionDomain }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#withSslEnabled':: d.fn(help='Flag to enable/disable SSL communication with Gateway, default false', args=[d.arg(name='sslEnabled', type=d.T.boolean)]), - withSslEnabled(sslEnabled): { sslEnabled: sslEnabled }, - '#withStorageMode':: d.fn(help='Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.', args=[d.arg(name='storageMode', type=d.T.string)]), - withStorageMode(storageMode): { storageMode: storageMode }, - '#withStoragePool':: d.fn(help='The ScaleIO Storage Pool associated with the protection domain.', args=[d.arg(name='storagePool', type=d.T.string)]), - withStoragePool(storagePool): { storagePool: storagePool }, - '#withSystem':: d.fn(help='The name of the storage system as configured in ScaleIO.', args=[d.arg(name='system', type=d.T.string)]), - withSystem(system): { system: system }, - '#withVolumeName':: d.fn(help='The name of a volume already created in the ScaleIO system that is associated with this volume source.', args=[d.arg(name='volumeName', type=d.T.string)]), - withVolumeName(volumeName): { volumeName: volumeName }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/scaleIOVolumeSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/scaleIOVolumeSource.libsonnet deleted file mode 100644 index b596bf11bbc0..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/scaleIOVolumeSource.libsonnet +++ /dev/null @@ -1,29 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='scaleIOVolumeSource', url='', help='ScaleIOVolumeSource represents a persistent ScaleIO volume'), - '#secretRef':: d.obj(help='LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.'), - secretRef: { - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { secretRef+: { name: name } }, - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Default is "xfs".', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { fsType: fsType }, - '#withGateway':: d.fn(help='The host address of the ScaleIO API Gateway.', args=[d.arg(name='gateway', type=d.T.string)]), - withGateway(gateway): { gateway: gateway }, - '#withProtectionDomain':: d.fn(help='The name of the ScaleIO Protection Domain for the configured storage.', args=[d.arg(name='protectionDomain', type=d.T.string)]), - withProtectionDomain(protectionDomain): { protectionDomain: protectionDomain }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#withSslEnabled':: d.fn(help='Flag to enable/disable SSL communication with Gateway, default false', args=[d.arg(name='sslEnabled', type=d.T.boolean)]), - withSslEnabled(sslEnabled): { sslEnabled: sslEnabled }, - '#withStorageMode':: d.fn(help='Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.', args=[d.arg(name='storageMode', type=d.T.string)]), - withStorageMode(storageMode): { storageMode: storageMode }, - '#withStoragePool':: d.fn(help='The ScaleIO Storage Pool associated with the protection domain.', args=[d.arg(name='storagePool', type=d.T.string)]), - withStoragePool(storagePool): { storagePool: storagePool }, - '#withSystem':: d.fn(help='The name of the storage system as configured in ScaleIO.', args=[d.arg(name='system', type=d.T.string)]), - withSystem(system): { system: system }, - '#withVolumeName':: d.fn(help='The name of a volume already created in the ScaleIO system that is associated with this volume source.', args=[d.arg(name='volumeName', type=d.T.string)]), - withVolumeName(volumeName): { volumeName: volumeName }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/scopeSelector.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/scopeSelector.libsonnet deleted file mode 100644 index e48c3bc11a77..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/scopeSelector.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='scopeSelector', url='', help='A scope selector represents the AND of the selectors represented by the scoped-resource selector requirements.'), - '#withMatchExpressions':: d.fn(help='A list of scope selector requirements by scope of the resources.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] }, - '#withMatchExpressionsMixin':: d.fn(help='A list of scope selector requirements by scope of the resources.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/scopedResourceSelectorRequirement.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/scopedResourceSelectorRequirement.libsonnet deleted file mode 100644 index 2c5854532a8e..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/scopedResourceSelectorRequirement.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='scopedResourceSelectorRequirement', url='', help='A scoped-resource selector requirement is a selector that contains values, a scope name, and an operator that relates the scope name and values.'), - '#withOperator':: d.fn(help="Represents a scope's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist.", args=[d.arg(name='operator', type=d.T.string)]), - withOperator(operator): { operator: operator }, - '#withScopeName':: d.fn(help='The name of the scope that the selector applies to.', args=[d.arg(name='scopeName', type=d.T.string)]), - withScopeName(scopeName): { scopeName: scopeName }, - '#withValues':: d.fn(help='An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.', args=[d.arg(name='values', type=d.T.array)]), - withValues(values): { values: if std.isArray(v=values) then values else [values] }, - '#withValuesMixin':: d.fn(help='An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='values', type=d.T.array)]), - withValuesMixin(values): { values+: if std.isArray(v=values) then values else [values] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/seLinuxOptions.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/seLinuxOptions.libsonnet deleted file mode 100644 index 8b52aac96251..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/seLinuxOptions.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='seLinuxOptions', url='', help='SELinuxOptions are the labels to be applied to the container'), - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { level: level }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { role: role }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { user: user }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/seccompProfile.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/seccompProfile.libsonnet deleted file mode 100644 index 13ee88dd9d3d..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/seccompProfile.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='seccompProfile', url='', help="SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set."), - '#withLocalhostProfile':: d.fn(help="localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is 'Localhost'.", args=[d.arg(name='localhostProfile', type=d.T.string)]), - withLocalhostProfile(localhostProfile): { localhostProfile: localhostProfile }, - '#withType':: d.fn(help='type indicates which kind of seccomp profile will be applied. Valid options are:\n\nLocalhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/secret.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/secret.libsonnet deleted file mode 100644 index 515526776c1a..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/secret.libsonnet +++ /dev/null @@ -1,68 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='secret', url='', help='Secret holds secret data of a certain type. The total bytes of the values in the Data field must be less than MaxSecretSize bytes.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Secret', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'v1', - kind: 'Secret', - } + self.metadata.withName(name=name), - '#withData':: d.fn(help="Data contains the secret data. Each key must consist of alphanumeric characters, '-', '_' or '.'. The serialized form of the secret data is a base64 encoded string, representing the arbitrary (possibly non-string) data value here. Described in https://tools.ietf.org/html/rfc4648#section-4", args=[d.arg(name='data', type=d.T.object)]), - withData(data): { data: data }, - '#withDataMixin':: d.fn(help="Data contains the secret data. Each key must consist of alphanumeric characters, '-', '_' or '.'. The serialized form of the secret data is a base64 encoded string, representing the arbitrary (possibly non-string) data value here. Described in https://tools.ietf.org/html/rfc4648#section-4\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='data', type=d.T.object)]), - withDataMixin(data): { data+: data }, - '#withImmutable':: d.fn(help='Immutable, if set to true, ensures that data stored in the Secret cannot be updated (only object metadata can be modified). If not set to true, the field can be modified at any time. Defaulted to nil.', args=[d.arg(name='immutable', type=d.T.boolean)]), - withImmutable(immutable): { immutable: immutable }, - '#withStringData':: d.fn(help='stringData allows specifying non-binary secret data in string form. It is provided as a write-only input field for convenience. All keys and values are merged into the data field on write, overwriting any existing values. The stringData field is never output when reading from the API.', args=[d.arg(name='stringData', type=d.T.object)]), - withStringData(stringData): { stringData: stringData }, - '#withStringDataMixin':: d.fn(help='stringData allows specifying non-binary secret data in string form. It is provided as a write-only input field for convenience. All keys and values are merged into the data field on write, overwriting any existing values. The stringData field is never output when reading from the API.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='stringData', type=d.T.object)]), - withStringDataMixin(stringData): { stringData+: stringData }, - '#withType':: d.fn(help='Used to facilitate programmatic handling of secret data.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/secretEnvSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/secretEnvSource.libsonnet deleted file mode 100644 index cb7600a39a60..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/secretEnvSource.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='secretEnvSource', url='', help="SecretEnvSource selects a Secret to populate the environment variables with.\n\nThe contents of the target Secret's Data field will represent the key-value pairs as environment variables."), - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withOptional':: d.fn(help='Specify whether the Secret must be defined', args=[d.arg(name='optional', type=d.T.boolean)]), - withOptional(optional): { optional: optional }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/secretKeySelector.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/secretKeySelector.libsonnet deleted file mode 100644 index 2a2d79e95527..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/secretKeySelector.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='secretKeySelector', url='', help='SecretKeySelector selects a key of a Secret.'), - '#withKey':: d.fn(help='The key of the secret to select from. Must be a valid secret key.', args=[d.arg(name='key', type=d.T.string)]), - withKey(key): { key: key }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withOptional':: d.fn(help='Specify whether the Secret or its key must be defined', args=[d.arg(name='optional', type=d.T.boolean)]), - withOptional(optional): { optional: optional }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/secretProjection.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/secretProjection.libsonnet deleted file mode 100644 index 2b615bf87d0e..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/secretProjection.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='secretProjection', url='', help="Adapts a secret into a projected volume.\n\nThe contents of the target Secret's Data field will be presented in a projected volume as files using the keys in the Data field as the file names. Note that this is identical to a secret volume source without the default mode."), - '#withItems':: d.fn(help="If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.", args=[d.arg(name='items', type=d.T.array)]), - withItems(items): { items: if std.isArray(v=items) then items else [items] }, - '#withItemsMixin':: d.fn(help="If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='items', type=d.T.array)]), - withItemsMixin(items): { items+: if std.isArray(v=items) then items else [items] }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withOptional':: d.fn(help='Specify whether the Secret or its key must be defined', args=[d.arg(name='optional', type=d.T.boolean)]), - withOptional(optional): { optional: optional }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/secretReference.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/secretReference.libsonnet deleted file mode 100644 index c0bda20e032f..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/secretReference.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='secretReference', url='', help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { namespace: namespace }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/secretVolumeSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/secretVolumeSource.libsonnet deleted file mode 100644 index 5229fd3ba943..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/secretVolumeSource.libsonnet +++ /dev/null @@ -1,16 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='secretVolumeSource', url='', help="Adapts a Secret into a volume.\n\nThe contents of the target Secret's Data field will be presented in a volume as files using the keys in the Data field as the file names. Secret volumes support ownership management and SELinux relabeling."), - '#withDefaultMode':: d.fn(help='Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.', args=[d.arg(name='defaultMode', type=d.T.integer)]), - withDefaultMode(defaultMode): { defaultMode: defaultMode }, - '#withItems':: d.fn(help="If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.", args=[d.arg(name='items', type=d.T.array)]), - withItems(items): { items: if std.isArray(v=items) then items else [items] }, - '#withItemsMixin':: d.fn(help="If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='items', type=d.T.array)]), - withItemsMixin(items): { items+: if std.isArray(v=items) then items else [items] }, - '#withOptional':: d.fn(help='Specify whether the Secret or its keys must be defined', args=[d.arg(name='optional', type=d.T.boolean)]), - withOptional(optional): { optional: optional }, - '#withSecretName':: d.fn(help="Name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret", args=[d.arg(name='secretName', type=d.T.string)]), - withSecretName(secretName): { secretName: secretName }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/securityContext.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/securityContext.libsonnet deleted file mode 100644 index 5b1bb37c28f3..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/securityContext.libsonnet +++ /dev/null @@ -1,58 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='securityContext', url='', help='SecurityContext holds security configuration that will be applied to a container. Some fields are present in both SecurityContext and PodSecurityContext. When both are set, the values in SecurityContext take precedence.'), - '#capabilities':: d.obj(help='Adds and removes POSIX capabilities from running containers.'), - capabilities: { - '#withAdd':: d.fn(help='Added capabilities', args=[d.arg(name='add', type=d.T.array)]), - withAdd(add): { capabilities+: { add: if std.isArray(v=add) then add else [add] } }, - '#withAddMixin':: d.fn(help='Added capabilities\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='add', type=d.T.array)]), - withAddMixin(add): { capabilities+: { add+: if std.isArray(v=add) then add else [add] } }, - '#withDrop':: d.fn(help='Removed capabilities', args=[d.arg(name='drop', type=d.T.array)]), - withDrop(drop): { capabilities+: { drop: if std.isArray(v=drop) then drop else [drop] } }, - '#withDropMixin':: d.fn(help='Removed capabilities\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='drop', type=d.T.array)]), - withDropMixin(drop): { capabilities+: { drop+: if std.isArray(v=drop) then drop else [drop] } }, - }, - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { seLinuxOptions+: { level: level } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { seLinuxOptions+: { role: role } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { seLinuxOptions+: { type: type } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { seLinuxOptions+: { user: user } }, - }, - '#seccompProfile':: d.obj(help="SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set."), - seccompProfile: { - '#withLocalhostProfile':: d.fn(help="localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is 'Localhost'.", args=[d.arg(name='localhostProfile', type=d.T.string)]), - withLocalhostProfile(localhostProfile): { seccompProfile+: { localhostProfile: localhostProfile } }, - '#withType':: d.fn(help='type indicates which kind of seccomp profile will be applied. Valid options are:\n\nLocalhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { seccompProfile+: { type: type } }, - }, - '#windowsOptions':: d.obj(help='WindowsSecurityContextOptions contain Windows-specific options and credentials.'), - windowsOptions: { - '#withGmsaCredentialSpec':: d.fn(help='GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.', args=[d.arg(name='gmsaCredentialSpec', type=d.T.string)]), - withGmsaCredentialSpec(gmsaCredentialSpec): { windowsOptions+: { gmsaCredentialSpec: gmsaCredentialSpec } }, - '#withGmsaCredentialSpecName':: d.fn(help='GMSACredentialSpecName is the name of the GMSA credential spec to use.', args=[d.arg(name='gmsaCredentialSpecName', type=d.T.string)]), - withGmsaCredentialSpecName(gmsaCredentialSpecName): { windowsOptions+: { gmsaCredentialSpecName: gmsaCredentialSpecName } }, - '#withRunAsUserName':: d.fn(help='The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsUserName', type=d.T.string)]), - withRunAsUserName(runAsUserName): { windowsOptions+: { runAsUserName: runAsUserName } }, - }, - '#withAllowPrivilegeEscalation':: d.fn(help='AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN', args=[d.arg(name='allowPrivilegeEscalation', type=d.T.boolean)]), - withAllowPrivilegeEscalation(allowPrivilegeEscalation): { allowPrivilegeEscalation: allowPrivilegeEscalation }, - '#withPrivileged':: d.fn(help='Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false.', args=[d.arg(name='privileged', type=d.T.boolean)]), - withPrivileged(privileged): { privileged: privileged }, - '#withProcMount':: d.fn(help='procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled.', args=[d.arg(name='procMount', type=d.T.string)]), - withProcMount(procMount): { procMount: procMount }, - '#withReadOnlyRootFilesystem':: d.fn(help='Whether this container has a read-only root filesystem. Default is false.', args=[d.arg(name='readOnlyRootFilesystem', type=d.T.boolean)]), - withReadOnlyRootFilesystem(readOnlyRootFilesystem): { readOnlyRootFilesystem: readOnlyRootFilesystem }, - '#withRunAsGroup':: d.fn(help='The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsGroup', type=d.T.integer)]), - withRunAsGroup(runAsGroup): { runAsGroup: runAsGroup }, - '#withRunAsNonRoot':: d.fn(help='Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsNonRoot', type=d.T.boolean)]), - withRunAsNonRoot(runAsNonRoot): { runAsNonRoot: runAsNonRoot }, - '#withRunAsUser':: d.fn(help='The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsUser', type=d.T.integer)]), - withRunAsUser(runAsUser): { runAsUser: runAsUser }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/service.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/service.libsonnet deleted file mode 100644 index 5cac8687de08..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/service.libsonnet +++ /dev/null @@ -1,119 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='service', url='', help='Service is a named abstraction of software service (for example, mysql) consisting of local port (for example 3306) that the proxy listens on, and the selector that determines which pods will answer requests sent through the proxy.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Service', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'v1', - kind: 'Service', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='ServiceSpec describes the attributes that a user creates on a service.'), - spec: { - '#sessionAffinityConfig':: d.obj(help='SessionAffinityConfig represents the configurations of session affinity.'), - sessionAffinityConfig: { - '#clientIP':: d.obj(help='ClientIPConfig represents the configurations of Client IP based session affinity.'), - clientIP: { - '#withTimeoutSeconds':: d.fn(help='timeoutSeconds specifies the seconds of ClientIP type session sticky time. The value must be >0 && <=86400(for 1 day) if ServiceAffinity == "ClientIP". Default value is 10800(for 3 hours).', args=[d.arg(name='timeoutSeconds', type=d.T.integer)]), - withTimeoutSeconds(timeoutSeconds): { spec+: { sessionAffinityConfig+: { clientIP+: { timeoutSeconds: timeoutSeconds } } } }, - }, - }, - '#withAllocateLoadBalancerNodePorts':: d.fn(help='allocateLoadBalancerNodePorts defines if NodePorts will be automatically allocated for services with type LoadBalancer. Default is "true". It may be set to "false" if the cluster load-balancer does not rely on NodePorts. allocateLoadBalancerNodePorts may only be set for services with type LoadBalancer and will be cleared if the type is changed to any other type. This field is alpha-level and is only honored by servers that enable the ServiceLBNodePortControl feature.', args=[d.arg(name='allocateLoadBalancerNodePorts', type=d.T.boolean)]), - withAllocateLoadBalancerNodePorts(allocateLoadBalancerNodePorts): { spec+: { allocateLoadBalancerNodePorts: allocateLoadBalancerNodePorts } }, - '#withClusterIP':: d.fn(help='clusterIP is the IP address of the service and is usually assigned randomly. If an address is specified manually, is in-range (as per system configuration), and is not in use, it will be allocated to the service; otherwise creation of the service will fail. This field may not be changed through updates unless the type field is also being changed to ExternalName (which requires this field to be blank) or the type field is being changed from ExternalName (in which case this field may optionally be specified, as describe above). Valid values are "None", empty string (""), or a valid IP address. Setting this to "None" makes a "headless service" (no virtual IP), which is useful when direct endpoint connections are preferred and proxying is not required. Only applies to types ClusterIP, NodePort, and LoadBalancer. If this field is specified when creating a Service of type ExternalName, creation will fail. This field will be wiped when updating a Service to type ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies', args=[d.arg(name='clusterIP', type=d.T.string)]), - withClusterIP(clusterIP): { spec+: { clusterIP: clusterIP } }, - '#withClusterIPs':: d.fn(help='ClusterIPs is a list of IP addresses assigned to this service, and are usually assigned randomly. If an address is specified manually, is in-range (as per system configuration), and is not in use, it will be allocated to the service; otherwise creation of the service will fail. This field may not be changed through updates unless the type field is also being changed to ExternalName (which requires this field to be empty) or the type field is being changed from ExternalName (in which case this field may optionally be specified, as describe above). Valid values are "None", empty string (""), or a valid IP address. Setting this to "None" makes a "headless service" (no virtual IP), which is useful when direct endpoint connections are preferred and proxying is not required. Only applies to types ClusterIP, NodePort, and LoadBalancer. If this field is specified when creating a Service of type ExternalName, creation will fail. This field will be wiped when updating a Service to type ExternalName. If this field is not specified, it will be initialized from the clusterIP field. If this field is specified, clients must ensure that clusterIPs[0] and clusterIP have the same value.\n\nUnless the "IPv6DualStack" feature gate is enabled, this field is limited to one value, which must be the same as the clusterIP field. If the feature gate is enabled, this field may hold a maximum of two entries (dual-stack IPs, in either order). These IPs must correspond to the values of the ipFamilies field. Both clusterIPs and ipFamilies are governed by the ipFamilyPolicy field. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies', args=[d.arg(name='clusterIPs', type=d.T.array)]), - withClusterIPs(clusterIPs): { spec+: { clusterIPs: if std.isArray(v=clusterIPs) then clusterIPs else [clusterIPs] } }, - '#withClusterIPsMixin':: d.fn(help='ClusterIPs is a list of IP addresses assigned to this service, and are usually assigned randomly. If an address is specified manually, is in-range (as per system configuration), and is not in use, it will be allocated to the service; otherwise creation of the service will fail. This field may not be changed through updates unless the type field is also being changed to ExternalName (which requires this field to be empty) or the type field is being changed from ExternalName (in which case this field may optionally be specified, as describe above). Valid values are "None", empty string (""), or a valid IP address. Setting this to "None" makes a "headless service" (no virtual IP), which is useful when direct endpoint connections are preferred and proxying is not required. Only applies to types ClusterIP, NodePort, and LoadBalancer. If this field is specified when creating a Service of type ExternalName, creation will fail. This field will be wiped when updating a Service to type ExternalName. If this field is not specified, it will be initialized from the clusterIP field. If this field is specified, clients must ensure that clusterIPs[0] and clusterIP have the same value.\n\nUnless the "IPv6DualStack" feature gate is enabled, this field is limited to one value, which must be the same as the clusterIP field. If the feature gate is enabled, this field may hold a maximum of two entries (dual-stack IPs, in either order). These IPs must correspond to the values of the ipFamilies field. Both clusterIPs and ipFamilies are governed by the ipFamilyPolicy field. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='clusterIPs', type=d.T.array)]), - withClusterIPsMixin(clusterIPs): { spec+: { clusterIPs+: if std.isArray(v=clusterIPs) then clusterIPs else [clusterIPs] } }, - '#withExternalIPs':: d.fn(help='externalIPs is a list of IP addresses for which nodes in the cluster will also accept traffic for this service. These IPs are not managed by Kubernetes. The user is responsible for ensuring that traffic arrives at a node with this IP. A common example is external load-balancers that are not part of the Kubernetes system.', args=[d.arg(name='externalIPs', type=d.T.array)]), - withExternalIPs(externalIPs): { spec+: { externalIPs: if std.isArray(v=externalIPs) then externalIPs else [externalIPs] } }, - '#withExternalIPsMixin':: d.fn(help='externalIPs is a list of IP addresses for which nodes in the cluster will also accept traffic for this service. These IPs are not managed by Kubernetes. The user is responsible for ensuring that traffic arrives at a node with this IP. A common example is external load-balancers that are not part of the Kubernetes system.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='externalIPs', type=d.T.array)]), - withExternalIPsMixin(externalIPs): { spec+: { externalIPs+: if std.isArray(v=externalIPs) then externalIPs else [externalIPs] } }, - '#withExternalName':: d.fn(help='externalName is the external reference that discovery mechanisms will return as an alias for this service (e.g. a DNS CNAME record). No proxying will be involved. Must be a lowercase RFC-1123 hostname (https://tools.ietf.org/html/rfc1123) and requires `type` to be "ExternalName".', args=[d.arg(name='externalName', type=d.T.string)]), - withExternalName(externalName): { spec+: { externalName: externalName } }, - '#withExternalTrafficPolicy':: d.fn(help='externalTrafficPolicy denotes if this Service desires to route external traffic to node-local or cluster-wide endpoints. "Local" preserves the client source IP and avoids a second hop for LoadBalancer and Nodeport type services, but risks potentially imbalanced traffic spreading. "Cluster" obscures the client source IP and may cause a second hop to another node, but should have good overall load-spreading.', args=[d.arg(name='externalTrafficPolicy', type=d.T.string)]), - withExternalTrafficPolicy(externalTrafficPolicy): { spec+: { externalTrafficPolicy: externalTrafficPolicy } }, - '#withHealthCheckNodePort':: d.fn(help='healthCheckNodePort specifies the healthcheck nodePort for the service. This only applies when type is set to LoadBalancer and externalTrafficPolicy is set to Local. If a value is specified, is in-range, and is not in use, it will be used. If not specified, a value will be automatically allocated. External systems (e.g. load-balancers) can use this port to determine if a given node holds endpoints for this service or not. If this field is specified when creating a Service which does not need it, creation will fail. This field will be wiped when updating a Service to no longer need it (e.g. changing type).', args=[d.arg(name='healthCheckNodePort', type=d.T.integer)]), - withHealthCheckNodePort(healthCheckNodePort): { spec+: { healthCheckNodePort: healthCheckNodePort } }, - '#withInternalTrafficPolicy':: d.fn(help='InternalTrafficPolicy specifies if the cluster internal traffic should be routed to all endpoints or node-local endpoints only. "Cluster" routes internal traffic to a Service to all endpoints. "Local" routes traffic to node-local endpoints only, traffic is dropped if no node-local endpoints are ready. The default value is "Cluster".', args=[d.arg(name='internalTrafficPolicy', type=d.T.string)]), - withInternalTrafficPolicy(internalTrafficPolicy): { spec+: { internalTrafficPolicy: internalTrafficPolicy } }, - '#withIpFamilies':: d.fn(help='IPFamilies is a list of IP families (e.g. IPv4, IPv6) assigned to this service, and is gated by the "IPv6DualStack" feature gate. This field is usually assigned automatically based on cluster configuration and the ipFamilyPolicy field. If this field is specified manually, the requested family is available in the cluster, and ipFamilyPolicy allows it, it will be used; otherwise creation of the service will fail. This field is conditionally mutable: it allows for adding or removing a secondary IP family, but it does not allow changing the primary IP family of the Service. Valid values are "IPv4" and "IPv6". This field only applies to Services of types ClusterIP, NodePort, and LoadBalancer, and does apply to "headless" services. This 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 either order). These families must correspond to the values of the clusterIPs field, if specified. Both clusterIPs and ipFamilies are governed by the ipFamilyPolicy field.', args=[d.arg(name='ipFamilies', type=d.T.array)]), - withIpFamilies(ipFamilies): { spec+: { ipFamilies: if std.isArray(v=ipFamilies) then ipFamilies else [ipFamilies] } }, - '#withIpFamiliesMixin':: d.fn(help='IPFamilies is a list of IP families (e.g. IPv4, IPv6) assigned to this service, and is gated by the "IPv6DualStack" feature gate. This field is usually assigned automatically based on cluster configuration and the ipFamilyPolicy field. If this field is specified manually, the requested family is available in the cluster, and ipFamilyPolicy allows it, it will be used; otherwise creation of the service will fail. This field is conditionally mutable: it allows for adding or removing a secondary IP family, but it does not allow changing the primary IP family of the Service. Valid values are "IPv4" and "IPv6". This field only applies to Services of types ClusterIP, NodePort, and LoadBalancer, and does apply to "headless" services. This 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 either order). These families must correspond to the values of the clusterIPs field, if specified. Both clusterIPs and ipFamilies are governed by the ipFamilyPolicy field.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ipFamilies', type=d.T.array)]), - withIpFamiliesMixin(ipFamilies): { spec+: { ipFamilies+: if std.isArray(v=ipFamilies) then ipFamilies else [ipFamilies] } }, - '#withIpFamilyPolicy':: d.fn(help='IPFamilyPolicy represents the dual-stack-ness requested or required by this Service, and is gated by the "IPv6DualStack" feature gate. If there is no value provided, then this field will be set to SingleStack. Services can be "SingleStack" (a single IP family), "PreferDualStack" (two IP families on dual-stack configured clusters or a single IP family on single-stack clusters), or "RequireDualStack" (two IP families on dual-stack configured clusters, otherwise fail). The ipFamilies and clusterIPs fields depend on the value of this field. This field will be wiped when updating a service to type ExternalName.', args=[d.arg(name='ipFamilyPolicy', type=d.T.string)]), - withIpFamilyPolicy(ipFamilyPolicy): { spec+: { ipFamilyPolicy: ipFamilyPolicy } }, - '#withLoadBalancerClass':: d.fn(help="loadBalancerClass is the class of the load balancer implementation this Service belongs to. If specified, the value of this field must be a label-style identifier, with an optional prefix, e.g. 'internal-vip' or 'example.com/internal-vip'. Unprefixed names are reserved for end-users. This field can only be set when the Service type is 'LoadBalancer'. If not set, the default load balancer implementation is used, today this is typically done through the cloud provider integration, but should apply for any default implementation. If set, it is assumed that a load balancer implementation is watching for Services with a matching class. Any default load balancer implementation (e.g. cloud providers) should ignore Services that set this field. This field can only be set when creating or updating a Service to type 'LoadBalancer'. Once set, it can not be changed. This field will be wiped when a service is updated to a non 'LoadBalancer' type.", args=[d.arg(name='loadBalancerClass', type=d.T.string)]), - withLoadBalancerClass(loadBalancerClass): { spec+: { loadBalancerClass: loadBalancerClass } }, - '#withLoadBalancerIP':: d.fn(help='Only applies to Service Type: LoadBalancer LoadBalancer will get created with the IP specified in this field. This feature depends on whether the underlying cloud-provider supports specifying the loadBalancerIP when a load balancer is created. This field will be ignored if the cloud-provider does not support the feature.', args=[d.arg(name='loadBalancerIP', type=d.T.string)]), - withLoadBalancerIP(loadBalancerIP): { spec+: { loadBalancerIP: loadBalancerIP } }, - '#withLoadBalancerSourceRanges':: d.fn(help='If specified and supported by the platform, this will restrict traffic through the cloud-provider load-balancer will be restricted to the specified client IPs. This field will be ignored if the cloud-provider does not support the feature." More info: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/', args=[d.arg(name='loadBalancerSourceRanges', type=d.T.array)]), - withLoadBalancerSourceRanges(loadBalancerSourceRanges): { spec+: { loadBalancerSourceRanges: if std.isArray(v=loadBalancerSourceRanges) then loadBalancerSourceRanges else [loadBalancerSourceRanges] } }, - '#withLoadBalancerSourceRangesMixin':: d.fn(help='If specified and supported by the platform, this will restrict traffic through the cloud-provider load-balancer will be restricted to the specified client IPs. This field will be ignored if the cloud-provider does not support the feature." More info: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='loadBalancerSourceRanges', type=d.T.array)]), - withLoadBalancerSourceRangesMixin(loadBalancerSourceRanges): { spec+: { loadBalancerSourceRanges+: if std.isArray(v=loadBalancerSourceRanges) then loadBalancerSourceRanges else [loadBalancerSourceRanges] } }, - '#withPorts':: d.fn(help='The list of ports that are exposed by this service. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies', args=[d.arg(name='ports', type=d.T.array)]), - withPorts(ports): { spec+: { ports: if std.isArray(v=ports) then ports else [ports] } }, - '#withPortsMixin':: d.fn(help='The list of ports that are exposed by this service. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ports', type=d.T.array)]), - withPortsMixin(ports): { spec+: { ports+: if std.isArray(v=ports) then ports else [ports] } }, - '#withPublishNotReadyAddresses':: d.fn(help="publishNotReadyAddresses indicates that any agent which deals with endpoints for this Service should disregard any indications of ready/not-ready. The primary use case for setting this field is for a StatefulSet's Headless Service to propagate SRV DNS records for its Pods for the purpose of peer discovery. The Kubernetes controllers that generate Endpoints and EndpointSlice resources for Services interpret this to mean that all endpoints are considered 'ready' even if the Pods themselves are not. Agents which consume only Kubernetes generated endpoints through the Endpoints or EndpointSlice resources can safely assume this behavior.", args=[d.arg(name='publishNotReadyAddresses', type=d.T.boolean)]), - withPublishNotReadyAddresses(publishNotReadyAddresses): { spec+: { publishNotReadyAddresses: publishNotReadyAddresses } }, - '#withSelector':: d.fn(help='Route service traffic to pods with label keys and values matching this selector. If empty or not present, the service is assumed to have an external process managing its endpoints, which Kubernetes will not modify. Only applies to types ClusterIP, NodePort, and LoadBalancer. Ignored if type is ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/', args=[d.arg(name='selector', type=d.T.object)]), - withSelector(selector): { spec+: { selector: selector } }, - '#withSelectorMixin':: d.fn(help='Route service traffic to pods with label keys and values matching this selector. If empty or not present, the service is assumed to have an external process managing its endpoints, which Kubernetes will not modify. Only applies to types ClusterIP, NodePort, and LoadBalancer. Ignored if type is ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='selector', type=d.T.object)]), - withSelectorMixin(selector): { spec+: { selector+: selector } }, - '#withSessionAffinity':: d.fn(help='Supports "ClientIP" and "None". Used to maintain session affinity. Enable client IP based session affinity. Must be ClientIP or None. Defaults to None. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies', args=[d.arg(name='sessionAffinity', type=d.T.string)]), - withSessionAffinity(sessionAffinity): { spec+: { sessionAffinity: sessionAffinity } }, - '#withTopologyKeys':: d.fn(help='topologyKeys is a preference-order list of topology keys which implementations of services should use to preferentially sort endpoints when accessing this Service, it can not be used at the same time as externalTrafficPolicy=Local. Topology keys must be valid label keys and at most 16 keys may be specified. Endpoints are chosen based on the first topology key with available backends. If this field is specified and all entries have no backends that match the topology of the client, the service has no backends for that client and connections should fail. The special value "*" may be used to mean "any topology". This catch-all value, if used, only makes sense as the last value in the list. If this is not specified or empty, no topology constraints will be applied. This field is alpha-level and is only honored by servers that enable the ServiceTopology feature. This field is deprecated and will be removed in a future version.', args=[d.arg(name='topologyKeys', type=d.T.array)]), - withTopologyKeys(topologyKeys): { spec+: { topologyKeys: if std.isArray(v=topologyKeys) then topologyKeys else [topologyKeys] } }, - '#withTopologyKeysMixin':: d.fn(help='topologyKeys is a preference-order list of topology keys which implementations of services should use to preferentially sort endpoints when accessing this Service, it can not be used at the same time as externalTrafficPolicy=Local. Topology keys must be valid label keys and at most 16 keys may be specified. Endpoints are chosen based on the first topology key with available backends. If this field is specified and all entries have no backends that match the topology of the client, the service has no backends for that client and connections should fail. The special value "*" may be used to mean "any topology". This catch-all value, if used, only makes sense as the last value in the list. If this is not specified or empty, no topology constraints will be applied. This field is alpha-level and is only honored by servers that enable the ServiceTopology feature. This field is deprecated and will be removed in a future version.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='topologyKeys', type=d.T.array)]), - withTopologyKeysMixin(topologyKeys): { spec+: { topologyKeys+: if std.isArray(v=topologyKeys) then topologyKeys else [topologyKeys] } }, - '#withType':: d.fn(help='type determines how the Service is exposed. Defaults to ClusterIP. Valid options are ExternalName, ClusterIP, NodePort, and LoadBalancer. "ClusterIP" allocates a cluster-internal IP address for load-balancing to endpoints. Endpoints are determined by the selector or if that is not specified, by manual construction of an Endpoints object or EndpointSlice objects. If clusterIP is "None", no virtual IP is allocated and the endpoints are published as a set of endpoints rather than a virtual IP. "NodePort" builds on ClusterIP and allocates a port on every node which routes to the same endpoints as the clusterIP. "LoadBalancer" builds on NodePort and creates an external load-balancer (if supported in the current cloud) which routes to the same endpoints as the clusterIP. "ExternalName" aliases this service to the specified externalName. Several other fields do not apply to ExternalName services. More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { type: type } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/serviceAccount.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/serviceAccount.libsonnet deleted file mode 100644 index f6b47c99fd24..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/serviceAccount.libsonnet +++ /dev/null @@ -1,66 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='serviceAccount', url='', help='ServiceAccount binds together: * a name, understood by users, and perhaps by peripheral systems, for an identity * a principal that can be authenticated and authorized * a set of secrets'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Serviceaccount', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'v1', - kind: 'ServiceAccount', - } + self.metadata.withName(name=name), - '#withAutomountServiceAccountToken':: d.fn(help='AutomountServiceAccountToken indicates whether pods running as this service account should have an API token automatically mounted. Can be overridden at the pod level.', args=[d.arg(name='automountServiceAccountToken', type=d.T.boolean)]), - withAutomountServiceAccountToken(automountServiceAccountToken): { automountServiceAccountToken: automountServiceAccountToken }, - '#withImagePullSecrets':: d.fn(help='ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet. More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecrets(imagePullSecrets): { imagePullSecrets: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] }, - '#withImagePullSecretsMixin':: d.fn(help='ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet. More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='imagePullSecrets', type=d.T.array)]), - withImagePullSecretsMixin(imagePullSecrets): { imagePullSecrets+: if std.isArray(v=imagePullSecrets) then imagePullSecrets else [imagePullSecrets] }, - '#withSecrets':: d.fn(help='Secrets is the list of secrets allowed to be used by pods running using this ServiceAccount. More info: https://kubernetes.io/docs/concepts/configuration/secret', args=[d.arg(name='secrets', type=d.T.array)]), - withSecrets(secrets): { secrets: if std.isArray(v=secrets) then secrets else [secrets] }, - '#withSecretsMixin':: d.fn(help='Secrets is the list of secrets allowed to be used by pods running using this ServiceAccount. More info: https://kubernetes.io/docs/concepts/configuration/secret\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='secrets', type=d.T.array)]), - withSecretsMixin(secrets): { secrets+: if std.isArray(v=secrets) then secrets else [secrets] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/serviceAccountTokenProjection.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/serviceAccountTokenProjection.libsonnet deleted file mode 100644 index 52b7c89e793d..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/serviceAccountTokenProjection.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='serviceAccountTokenProjection', url='', help='ServiceAccountTokenProjection represents a projected service account token volume. This projection can be used to insert a service account token into the pods runtime filesystem for use against APIs (Kubernetes API Server or otherwise).'), - '#withAudience':: d.fn(help='Audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver.', args=[d.arg(name='audience', type=d.T.string)]), - withAudience(audience): { audience: audience }, - '#withExpirationSeconds':: d.fn(help='ExpirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes.', args=[d.arg(name='expirationSeconds', type=d.T.integer)]), - withExpirationSeconds(expirationSeconds): { expirationSeconds: expirationSeconds }, - '#withPath':: d.fn(help='Path is the path relative to the mount point of the file to project the token into.', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { path: path }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/servicePort.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/servicePort.libsonnet deleted file mode 100644 index d08b74af9f17..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/servicePort.libsonnet +++ /dev/null @@ -1,18 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='servicePort', url='', help="ServicePort contains information on service's port."), - '#withAppProtocol':: d.fn(help='The application protocol for this port. This field follows standard Kubernetes label syntax. Un-prefixed names are reserved for IANA standard service names (as per RFC-6335 and http://www.iana.org/assignments/service-names). Non-standard protocols should use prefixed names such as mycompany.com/my-custom-protocol. This is a beta field that is guarded by the ServiceAppProtocol feature gate and enabled by default.', args=[d.arg(name='appProtocol', type=d.T.string)]), - withAppProtocol(appProtocol): { appProtocol: appProtocol }, - '#withName':: d.fn(help="The name of this port within the service. This must be a DNS_LABEL. All ports within a ServiceSpec must have unique names. When considering the endpoints for a Service, this must match the 'name' field in the EndpointPort. Optional if only one ServicePort is defined on this service.", args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withNodePort':: d.fn(help='The port on each node on which this service is exposed when type is NodePort or LoadBalancer. Usually assigned by the system. If a value is specified, in-range, and not in use it will be used, otherwise the operation will fail. If not specified, a port will be allocated if this Service requires one. If this field is specified when creating a Service which does not need it, creation will fail. This field will be wiped when updating a Service to no longer need it (e.g. changing type from NodePort to ClusterIP). More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport', args=[d.arg(name='nodePort', type=d.T.integer)]), - withNodePort(nodePort): { nodePort: nodePort }, - '#withPort':: d.fn(help='The port that will be exposed by this service.', args=[d.arg(name='port', type=d.T.integer)]), - withPort(port): { port: port }, - '#withProtocol':: d.fn(help='The IP protocol for this port. Supports "TCP", "UDP", and "SCTP". Default is TCP.', args=[d.arg(name='protocol', type=d.T.string)]), - withProtocol(protocol): { protocol: protocol }, - '#withTargetPort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='targetPort', type=d.T.string)]), - withTargetPort(targetPort): { targetPort: targetPort }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/serviceSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/serviceSpec.libsonnet deleted file mode 100644 index 821e5c4208cb..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/serviceSpec.libsonnet +++ /dev/null @@ -1,66 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='serviceSpec', url='', help='ServiceSpec describes the attributes that a user creates on a service.'), - '#sessionAffinityConfig':: d.obj(help='SessionAffinityConfig represents the configurations of session affinity.'), - sessionAffinityConfig: { - '#clientIP':: d.obj(help='ClientIPConfig represents the configurations of Client IP based session affinity.'), - clientIP: { - '#withTimeoutSeconds':: d.fn(help='timeoutSeconds specifies the seconds of ClientIP type session sticky time. The value must be >0 && <=86400(for 1 day) if ServiceAffinity == "ClientIP". Default value is 10800(for 3 hours).', args=[d.arg(name='timeoutSeconds', type=d.T.integer)]), - withTimeoutSeconds(timeoutSeconds): { sessionAffinityConfig+: { clientIP+: { timeoutSeconds: timeoutSeconds } } }, - }, - }, - '#withAllocateLoadBalancerNodePorts':: d.fn(help='allocateLoadBalancerNodePorts defines if NodePorts will be automatically allocated for services with type LoadBalancer. Default is "true". It may be set to "false" if the cluster load-balancer does not rely on NodePorts. allocateLoadBalancerNodePorts may only be set for services with type LoadBalancer and will be cleared if the type is changed to any other type. This field is alpha-level and is only honored by servers that enable the ServiceLBNodePortControl feature.', args=[d.arg(name='allocateLoadBalancerNodePorts', type=d.T.boolean)]), - withAllocateLoadBalancerNodePorts(allocateLoadBalancerNodePorts): { allocateLoadBalancerNodePorts: allocateLoadBalancerNodePorts }, - '#withClusterIP':: d.fn(help='clusterIP is the IP address of the service and is usually assigned randomly. If an address is specified manually, is in-range (as per system configuration), and is not in use, it will be allocated to the service; otherwise creation of the service will fail. This field may not be changed through updates unless the type field is also being changed to ExternalName (which requires this field to be blank) or the type field is being changed from ExternalName (in which case this field may optionally be specified, as describe above). Valid values are "None", empty string (""), or a valid IP address. Setting this to "None" makes a "headless service" (no virtual IP), which is useful when direct endpoint connections are preferred and proxying is not required. Only applies to types ClusterIP, NodePort, and LoadBalancer. If this field is specified when creating a Service of type ExternalName, creation will fail. This field will be wiped when updating a Service to type ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies', args=[d.arg(name='clusterIP', type=d.T.string)]), - withClusterIP(clusterIP): { clusterIP: clusterIP }, - '#withClusterIPs':: d.fn(help='ClusterIPs is a list of IP addresses assigned to this service, and are usually assigned randomly. If an address is specified manually, is in-range (as per system configuration), and is not in use, it will be allocated to the service; otherwise creation of the service will fail. This field may not be changed through updates unless the type field is also being changed to ExternalName (which requires this field to be empty) or the type field is being changed from ExternalName (in which case this field may optionally be specified, as describe above). Valid values are "None", empty string (""), or a valid IP address. Setting this to "None" makes a "headless service" (no virtual IP), which is useful when direct endpoint connections are preferred and proxying is not required. Only applies to types ClusterIP, NodePort, and LoadBalancer. If this field is specified when creating a Service of type ExternalName, creation will fail. This field will be wiped when updating a Service to type ExternalName. If this field is not specified, it will be initialized from the clusterIP field. If this field is specified, clients must ensure that clusterIPs[0] and clusterIP have the same value.\n\nUnless the "IPv6DualStack" feature gate is enabled, this field is limited to one value, which must be the same as the clusterIP field. If the feature gate is enabled, this field may hold a maximum of two entries (dual-stack IPs, in either order). These IPs must correspond to the values of the ipFamilies field. Both clusterIPs and ipFamilies are governed by the ipFamilyPolicy field. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies', args=[d.arg(name='clusterIPs', type=d.T.array)]), - withClusterIPs(clusterIPs): { clusterIPs: if std.isArray(v=clusterIPs) then clusterIPs else [clusterIPs] }, - '#withClusterIPsMixin':: d.fn(help='ClusterIPs is a list of IP addresses assigned to this service, and are usually assigned randomly. If an address is specified manually, is in-range (as per system configuration), and is not in use, it will be allocated to the service; otherwise creation of the service will fail. This field may not be changed through updates unless the type field is also being changed to ExternalName (which requires this field to be empty) or the type field is being changed from ExternalName (in which case this field may optionally be specified, as describe above). Valid values are "None", empty string (""), or a valid IP address. Setting this to "None" makes a "headless service" (no virtual IP), which is useful when direct endpoint connections are preferred and proxying is not required. Only applies to types ClusterIP, NodePort, and LoadBalancer. If this field is specified when creating a Service of type ExternalName, creation will fail. This field will be wiped when updating a Service to type ExternalName. If this field is not specified, it will be initialized from the clusterIP field. If this field is specified, clients must ensure that clusterIPs[0] and clusterIP have the same value.\n\nUnless the "IPv6DualStack" feature gate is enabled, this field is limited to one value, which must be the same as the clusterIP field. If the feature gate is enabled, this field may hold a maximum of two entries (dual-stack IPs, in either order). These IPs must correspond to the values of the ipFamilies field. Both clusterIPs and ipFamilies are governed by the ipFamilyPolicy field. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='clusterIPs', type=d.T.array)]), - withClusterIPsMixin(clusterIPs): { clusterIPs+: if std.isArray(v=clusterIPs) then clusterIPs else [clusterIPs] }, - '#withExternalIPs':: d.fn(help='externalIPs is a list of IP addresses for which nodes in the cluster will also accept traffic for this service. These IPs are not managed by Kubernetes. The user is responsible for ensuring that traffic arrives at a node with this IP. A common example is external load-balancers that are not part of the Kubernetes system.', args=[d.arg(name='externalIPs', type=d.T.array)]), - withExternalIPs(externalIPs): { externalIPs: if std.isArray(v=externalIPs) then externalIPs else [externalIPs] }, - '#withExternalIPsMixin':: d.fn(help='externalIPs is a list of IP addresses for which nodes in the cluster will also accept traffic for this service. These IPs are not managed by Kubernetes. The user is responsible for ensuring that traffic arrives at a node with this IP. A common example is external load-balancers that are not part of the Kubernetes system.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='externalIPs', type=d.T.array)]), - withExternalIPsMixin(externalIPs): { externalIPs+: if std.isArray(v=externalIPs) then externalIPs else [externalIPs] }, - '#withExternalName':: d.fn(help='externalName is the external reference that discovery mechanisms will return as an alias for this service (e.g. a DNS CNAME record). No proxying will be involved. Must be a lowercase RFC-1123 hostname (https://tools.ietf.org/html/rfc1123) and requires `type` to be "ExternalName".', args=[d.arg(name='externalName', type=d.T.string)]), - withExternalName(externalName): { externalName: externalName }, - '#withExternalTrafficPolicy':: d.fn(help='externalTrafficPolicy denotes if this Service desires to route external traffic to node-local or cluster-wide endpoints. "Local" preserves the client source IP and avoids a second hop for LoadBalancer and Nodeport type services, but risks potentially imbalanced traffic spreading. "Cluster" obscures the client source IP and may cause a second hop to another node, but should have good overall load-spreading.', args=[d.arg(name='externalTrafficPolicy', type=d.T.string)]), - withExternalTrafficPolicy(externalTrafficPolicy): { externalTrafficPolicy: externalTrafficPolicy }, - '#withHealthCheckNodePort':: d.fn(help='healthCheckNodePort specifies the healthcheck nodePort for the service. This only applies when type is set to LoadBalancer and externalTrafficPolicy is set to Local. If a value is specified, is in-range, and is not in use, it will be used. If not specified, a value will be automatically allocated. External systems (e.g. load-balancers) can use this port to determine if a given node holds endpoints for this service or not. If this field is specified when creating a Service which does not need it, creation will fail. This field will be wiped when updating a Service to no longer need it (e.g. changing type).', args=[d.arg(name='healthCheckNodePort', type=d.T.integer)]), - withHealthCheckNodePort(healthCheckNodePort): { healthCheckNodePort: healthCheckNodePort }, - '#withInternalTrafficPolicy':: d.fn(help='InternalTrafficPolicy specifies if the cluster internal traffic should be routed to all endpoints or node-local endpoints only. "Cluster" routes internal traffic to a Service to all endpoints. "Local" routes traffic to node-local endpoints only, traffic is dropped if no node-local endpoints are ready. The default value is "Cluster".', args=[d.arg(name='internalTrafficPolicy', type=d.T.string)]), - withInternalTrafficPolicy(internalTrafficPolicy): { internalTrafficPolicy: internalTrafficPolicy }, - '#withIpFamilies':: d.fn(help='IPFamilies is a list of IP families (e.g. IPv4, IPv6) assigned to this service, and is gated by the "IPv6DualStack" feature gate. This field is usually assigned automatically based on cluster configuration and the ipFamilyPolicy field. If this field is specified manually, the requested family is available in the cluster, and ipFamilyPolicy allows it, it will be used; otherwise creation of the service will fail. This field is conditionally mutable: it allows for adding or removing a secondary IP family, but it does not allow changing the primary IP family of the Service. Valid values are "IPv4" and "IPv6". This field only applies to Services of types ClusterIP, NodePort, and LoadBalancer, and does apply to "headless" services. This 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 either order). These families must correspond to the values of the clusterIPs field, if specified. Both clusterIPs and ipFamilies are governed by the ipFamilyPolicy field.', args=[d.arg(name='ipFamilies', type=d.T.array)]), - withIpFamilies(ipFamilies): { ipFamilies: if std.isArray(v=ipFamilies) then ipFamilies else [ipFamilies] }, - '#withIpFamiliesMixin':: d.fn(help='IPFamilies is a list of IP families (e.g. IPv4, IPv6) assigned to this service, and is gated by the "IPv6DualStack" feature gate. This field is usually assigned automatically based on cluster configuration and the ipFamilyPolicy field. If this field is specified manually, the requested family is available in the cluster, and ipFamilyPolicy allows it, it will be used; otherwise creation of the service will fail. This field is conditionally mutable: it allows for adding or removing a secondary IP family, but it does not allow changing the primary IP family of the Service. Valid values are "IPv4" and "IPv6". This field only applies to Services of types ClusterIP, NodePort, and LoadBalancer, and does apply to "headless" services. This 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 either order). These families must correspond to the values of the clusterIPs field, if specified. Both clusterIPs and ipFamilies are governed by the ipFamilyPolicy field.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ipFamilies', type=d.T.array)]), - withIpFamiliesMixin(ipFamilies): { ipFamilies+: if std.isArray(v=ipFamilies) then ipFamilies else [ipFamilies] }, - '#withIpFamilyPolicy':: d.fn(help='IPFamilyPolicy represents the dual-stack-ness requested or required by this Service, and is gated by the "IPv6DualStack" feature gate. If there is no value provided, then this field will be set to SingleStack. Services can be "SingleStack" (a single IP family), "PreferDualStack" (two IP families on dual-stack configured clusters or a single IP family on single-stack clusters), or "RequireDualStack" (two IP families on dual-stack configured clusters, otherwise fail). The ipFamilies and clusterIPs fields depend on the value of this field. This field will be wiped when updating a service to type ExternalName.', args=[d.arg(name='ipFamilyPolicy', type=d.T.string)]), - withIpFamilyPolicy(ipFamilyPolicy): { ipFamilyPolicy: ipFamilyPolicy }, - '#withLoadBalancerClass':: d.fn(help="loadBalancerClass is the class of the load balancer implementation this Service belongs to. If specified, the value of this field must be a label-style identifier, with an optional prefix, e.g. 'internal-vip' or 'example.com/internal-vip'. Unprefixed names are reserved for end-users. This field can only be set when the Service type is 'LoadBalancer'. If not set, the default load balancer implementation is used, today this is typically done through the cloud provider integration, but should apply for any default implementation. If set, it is assumed that a load balancer implementation is watching for Services with a matching class. Any default load balancer implementation (e.g. cloud providers) should ignore Services that set this field. This field can only be set when creating or updating a Service to type 'LoadBalancer'. Once set, it can not be changed. This field will be wiped when a service is updated to a non 'LoadBalancer' type.", args=[d.arg(name='loadBalancerClass', type=d.T.string)]), - withLoadBalancerClass(loadBalancerClass): { loadBalancerClass: loadBalancerClass }, - '#withLoadBalancerIP':: d.fn(help='Only applies to Service Type: LoadBalancer LoadBalancer will get created with the IP specified in this field. This feature depends on whether the underlying cloud-provider supports specifying the loadBalancerIP when a load balancer is created. This field will be ignored if the cloud-provider does not support the feature.', args=[d.arg(name='loadBalancerIP', type=d.T.string)]), - withLoadBalancerIP(loadBalancerIP): { loadBalancerIP: loadBalancerIP }, - '#withLoadBalancerSourceRanges':: d.fn(help='If specified and supported by the platform, this will restrict traffic through the cloud-provider load-balancer will be restricted to the specified client IPs. This field will be ignored if the cloud-provider does not support the feature." More info: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/', args=[d.arg(name='loadBalancerSourceRanges', type=d.T.array)]), - withLoadBalancerSourceRanges(loadBalancerSourceRanges): { loadBalancerSourceRanges: if std.isArray(v=loadBalancerSourceRanges) then loadBalancerSourceRanges else [loadBalancerSourceRanges] }, - '#withLoadBalancerSourceRangesMixin':: d.fn(help='If specified and supported by the platform, this will restrict traffic through the cloud-provider load-balancer will be restricted to the specified client IPs. This field will be ignored if the cloud-provider does not support the feature." More info: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='loadBalancerSourceRanges', type=d.T.array)]), - withLoadBalancerSourceRangesMixin(loadBalancerSourceRanges): { loadBalancerSourceRanges+: if std.isArray(v=loadBalancerSourceRanges) then loadBalancerSourceRanges else [loadBalancerSourceRanges] }, - '#withPorts':: d.fn(help='The list of ports that are exposed by this service. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies', args=[d.arg(name='ports', type=d.T.array)]), - withPorts(ports): { ports: if std.isArray(v=ports) then ports else [ports] }, - '#withPortsMixin':: d.fn(help='The list of ports that are exposed by this service. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ports', type=d.T.array)]), - withPortsMixin(ports): { ports+: if std.isArray(v=ports) then ports else [ports] }, - '#withPublishNotReadyAddresses':: d.fn(help="publishNotReadyAddresses indicates that any agent which deals with endpoints for this Service should disregard any indications of ready/not-ready. The primary use case for setting this field is for a StatefulSet's Headless Service to propagate SRV DNS records for its Pods for the purpose of peer discovery. The Kubernetes controllers that generate Endpoints and EndpointSlice resources for Services interpret this to mean that all endpoints are considered 'ready' even if the Pods themselves are not. Agents which consume only Kubernetes generated endpoints through the Endpoints or EndpointSlice resources can safely assume this behavior.", args=[d.arg(name='publishNotReadyAddresses', type=d.T.boolean)]), - withPublishNotReadyAddresses(publishNotReadyAddresses): { publishNotReadyAddresses: publishNotReadyAddresses }, - '#withSelector':: d.fn(help='Route service traffic to pods with label keys and values matching this selector. If empty or not present, the service is assumed to have an external process managing its endpoints, which Kubernetes will not modify. Only applies to types ClusterIP, NodePort, and LoadBalancer. Ignored if type is ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/', args=[d.arg(name='selector', type=d.T.object)]), - withSelector(selector): { selector: selector }, - '#withSelectorMixin':: d.fn(help='Route service traffic to pods with label keys and values matching this selector. If empty or not present, the service is assumed to have an external process managing its endpoints, which Kubernetes will not modify. Only applies to types ClusterIP, NodePort, and LoadBalancer. Ignored if type is ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='selector', type=d.T.object)]), - withSelectorMixin(selector): { selector+: selector }, - '#withSessionAffinity':: d.fn(help='Supports "ClientIP" and "None". Used to maintain session affinity. Enable client IP based session affinity. Must be ClientIP or None. Defaults to None. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies', args=[d.arg(name='sessionAffinity', type=d.T.string)]), - withSessionAffinity(sessionAffinity): { sessionAffinity: sessionAffinity }, - '#withTopologyKeys':: d.fn(help='topologyKeys is a preference-order list of topology keys which implementations of services should use to preferentially sort endpoints when accessing this Service, it can not be used at the same time as externalTrafficPolicy=Local. Topology keys must be valid label keys and at most 16 keys may be specified. Endpoints are chosen based on the first topology key with available backends. If this field is specified and all entries have no backends that match the topology of the client, the service has no backends for that client and connections should fail. The special value "*" may be used to mean "any topology". This catch-all value, if used, only makes sense as the last value in the list. If this is not specified or empty, no topology constraints will be applied. This field is alpha-level and is only honored by servers that enable the ServiceTopology feature. This field is deprecated and will be removed in a future version.', args=[d.arg(name='topologyKeys', type=d.T.array)]), - withTopologyKeys(topologyKeys): { topologyKeys: if std.isArray(v=topologyKeys) then topologyKeys else [topologyKeys] }, - '#withTopologyKeysMixin':: d.fn(help='topologyKeys is a preference-order list of topology keys which implementations of services should use to preferentially sort endpoints when accessing this Service, it can not be used at the same time as externalTrafficPolicy=Local. Topology keys must be valid label keys and at most 16 keys may be specified. Endpoints are chosen based on the first topology key with available backends. If this field is specified and all entries have no backends that match the topology of the client, the service has no backends for that client and connections should fail. The special value "*" may be used to mean "any topology". This catch-all value, if used, only makes sense as the last value in the list. If this is not specified or empty, no topology constraints will be applied. This field is alpha-level and is only honored by servers that enable the ServiceTopology feature. This field is deprecated and will be removed in a future version.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='topologyKeys', type=d.T.array)]), - withTopologyKeysMixin(topologyKeys): { topologyKeys+: if std.isArray(v=topologyKeys) then topologyKeys else [topologyKeys] }, - '#withType':: d.fn(help='type determines how the Service is exposed. Defaults to ClusterIP. Valid options are ExternalName, ClusterIP, NodePort, and LoadBalancer. "ClusterIP" allocates a cluster-internal IP address for load-balancing to endpoints. Endpoints are determined by the selector or if that is not specified, by manual construction of an Endpoints object or EndpointSlice objects. If clusterIP is "None", no virtual IP is allocated and the endpoints are published as a set of endpoints rather than a virtual IP. "NodePort" builds on ClusterIP and allocates a port on every node which routes to the same endpoints as the clusterIP. "LoadBalancer" builds on NodePort and creates an external load-balancer (if supported in the current cloud) which routes to the same endpoints as the clusterIP. "ExternalName" aliases this service to the specified externalName. Several other fields do not apply to ExternalName services. More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/serviceStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/serviceStatus.libsonnet deleted file mode 100644 index b1522ac4fc39..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/serviceStatus.libsonnet +++ /dev/null @@ -1,17 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='serviceStatus', url='', help='ServiceStatus represents the current status of a service.'), - '#loadBalancer':: d.obj(help='LoadBalancerStatus represents the status of a load-balancer.'), - loadBalancer: { - '#withIngress':: d.fn(help='Ingress is a list containing ingress points for the load-balancer. Traffic intended for the service should be sent to these ingress points.', args=[d.arg(name='ingress', type=d.T.array)]), - withIngress(ingress): { loadBalancer+: { ingress: if std.isArray(v=ingress) then ingress else [ingress] } }, - '#withIngressMixin':: d.fn(help='Ingress is a list containing ingress points for the load-balancer. Traffic intended for the service should be sent to these ingress points.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ingress', type=d.T.array)]), - withIngressMixin(ingress): { loadBalancer+: { ingress+: if std.isArray(v=ingress) then ingress else [ingress] } }, - }, - '#withConditions':: d.fn(help='Current service state', args=[d.arg(name='conditions', type=d.T.array)]), - withConditions(conditions): { conditions: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withConditionsMixin':: d.fn(help='Current service state\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='conditions', type=d.T.array)]), - withConditionsMixin(conditions): { conditions+: if std.isArray(v=conditions) then conditions else [conditions] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/sessionAffinityConfig.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/sessionAffinityConfig.libsonnet deleted file mode 100644 index ca7e743ae4d1..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/sessionAffinityConfig.libsonnet +++ /dev/null @@ -1,11 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='sessionAffinityConfig', url='', help='SessionAffinityConfig represents the configurations of session affinity.'), - '#clientIP':: d.obj(help='ClientIPConfig represents the configurations of Client IP based session affinity.'), - clientIP: { - '#withTimeoutSeconds':: d.fn(help='timeoutSeconds specifies the seconds of ClientIP type session sticky time. The value must be >0 && <=86400(for 1 day) if ServiceAffinity == "ClientIP". Default value is 10800(for 3 hours).', args=[d.arg(name='timeoutSeconds', type=d.T.integer)]), - withTimeoutSeconds(timeoutSeconds): { clientIP+: { timeoutSeconds: timeoutSeconds } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/storageOSPersistentVolumeSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/storageOSPersistentVolumeSource.libsonnet deleted file mode 100644 index ea679a2a4f4c..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/storageOSPersistentVolumeSource.libsonnet +++ /dev/null @@ -1,31 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='storageOSPersistentVolumeSource', url='', help='Represents a StorageOS persistent volume resource.'), - '#secretRef':: d.obj(help='ObjectReference contains enough information to let you inspect or modify the referred object.'), - secretRef: { - '#withApiVersion':: d.fn(help='API version of the referent.', args=[d.arg(name='apiVersion', type=d.T.string)]), - withApiVersion(apiVersion): { secretRef+: { apiVersion: apiVersion } }, - '#withFieldPath':: d.fn(help='If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { secretRef+: { fieldPath: fieldPath } }, - '#withKind':: d.fn(help='Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { secretRef+: { kind: kind } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { secretRef+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { secretRef+: { namespace: namespace } }, - '#withResourceVersion':: d.fn(help='Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { secretRef+: { resourceVersion: resourceVersion } }, - '#withUid':: d.fn(help='UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { secretRef+: { uid: uid } }, - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { fsType: fsType }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#withVolumeName':: d.fn(help='VolumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.', args=[d.arg(name='volumeName', type=d.T.string)]), - withVolumeName(volumeName): { volumeName: volumeName }, - '#withVolumeNamespace':: d.fn(help="VolumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod's namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to 'default' if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created.", args=[d.arg(name='volumeNamespace', type=d.T.string)]), - withVolumeNamespace(volumeNamespace): { volumeNamespace: volumeNamespace }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/storageOSVolumeSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/storageOSVolumeSource.libsonnet deleted file mode 100644 index a359b2268fec..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/storageOSVolumeSource.libsonnet +++ /dev/null @@ -1,19 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='storageOSVolumeSource', url='', help='Represents a StorageOS persistent volume resource.'), - '#secretRef':: d.obj(help='LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.'), - secretRef: { - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { secretRef+: { name: name } }, - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { fsType: fsType }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#withVolumeName':: d.fn(help='VolumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.', args=[d.arg(name='volumeName', type=d.T.string)]), - withVolumeName(volumeName): { volumeName: volumeName }, - '#withVolumeNamespace':: d.fn(help="VolumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod's namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to 'default' if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created.", args=[d.arg(name='volumeNamespace', type=d.T.string)]), - withVolumeNamespace(volumeNamespace): { volumeNamespace: volumeNamespace }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/sysctl.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/sysctl.libsonnet deleted file mode 100644 index bf06bdc98300..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/sysctl.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='sysctl', url='', help='Sysctl defines a kernel parameter to be set'), - '#withName':: d.fn(help='Name of a property to set', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withValue':: d.fn(help='Value of a property to set', args=[d.arg(name='value', type=d.T.string)]), - withValue(value): { value: value }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/taint.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/taint.libsonnet deleted file mode 100644 index 5986eb0dd1d9..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/taint.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='taint', url='', help='The node this Taint is attached to has the "effect" on any pod that does not tolerate the Taint.'), - '#withEffect':: d.fn(help='Required. The effect of the taint on pods that do not tolerate the taint. Valid effects are NoSchedule, PreferNoSchedule and NoExecute.', args=[d.arg(name='effect', type=d.T.string)]), - withEffect(effect): { effect: effect }, - '#withKey':: d.fn(help='Required. The taint key to be applied to a node.', args=[d.arg(name='key', type=d.T.string)]), - withKey(key): { key: key }, - '#withTimeAdded':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='timeAdded', type=d.T.string)]), - withTimeAdded(timeAdded): { timeAdded: timeAdded }, - '#withValue':: d.fn(help='The taint value corresponding to the taint key.', args=[d.arg(name='value', type=d.T.string)]), - withValue(value): { value: value }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/tcpSocketAction.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/tcpSocketAction.libsonnet deleted file mode 100644 index af7af7889f7b..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/tcpSocketAction.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='tcpSocketAction', url='', help='TCPSocketAction describes an action based on opening a socket'), - '#withHost':: d.fn(help='Optional: Host name to connect to, defaults to the pod IP.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { host: host }, - '#withPort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='port', type=d.T.string)]), - withPort(port): { port: port }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/toleration.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/toleration.libsonnet deleted file mode 100644 index 8804a8a65ff3..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/toleration.libsonnet +++ /dev/null @@ -1,16 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='toleration', url='', help='The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator .'), - '#withEffect':: d.fn(help='Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.', args=[d.arg(name='effect', type=d.T.string)]), - withEffect(effect): { effect: effect }, - '#withKey':: d.fn(help='Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.', args=[d.arg(name='key', type=d.T.string)]), - withKey(key): { key: key }, - '#withOperator':: d.fn(help="Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.", args=[d.arg(name='operator', type=d.T.string)]), - withOperator(operator): { operator: operator }, - '#withTolerationSeconds':: d.fn(help='TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.', args=[d.arg(name='tolerationSeconds', type=d.T.integer)]), - withTolerationSeconds(tolerationSeconds): { tolerationSeconds: tolerationSeconds }, - '#withValue':: d.fn(help='Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.', args=[d.arg(name='value', type=d.T.string)]), - withValue(value): { value: value }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/topologySelectorLabelRequirement.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/topologySelectorLabelRequirement.libsonnet deleted file mode 100644 index 35cb48a80f57..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/topologySelectorLabelRequirement.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='topologySelectorLabelRequirement', url='', help='A topology selector requirement is a selector that matches given label. This is an alpha feature and may change in the future.'), - '#withKey':: d.fn(help='The label key that the selector applies to.', args=[d.arg(name='key', type=d.T.string)]), - withKey(key): { key: key }, - '#withValues':: d.fn(help='An array of string values. One value must match the label to be selected. Each entry in Values is ORed.', args=[d.arg(name='values', type=d.T.array)]), - withValues(values): { values: if std.isArray(v=values) then values else [values] }, - '#withValuesMixin':: d.fn(help='An array of string values. One value must match the label to be selected. Each entry in Values is ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='values', type=d.T.array)]), - withValuesMixin(values): { values+: if std.isArray(v=values) then values else [values] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/topologySelectorTerm.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/topologySelectorTerm.libsonnet deleted file mode 100644 index 6bf16c44d525..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/topologySelectorTerm.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='topologySelectorTerm', url='', help='A topology selector term represents the result of label queries. A null or empty topology selector term matches no objects. The requirements of them are ANDed. It provides a subset of functionality as NodeSelectorTerm. This is an alpha feature and may change in the future.'), - '#withMatchLabelExpressions':: d.fn(help='A list of topology selector requirements by labels.', args=[d.arg(name='matchLabelExpressions', type=d.T.array)]), - withMatchLabelExpressions(matchLabelExpressions): { matchLabelExpressions: if std.isArray(v=matchLabelExpressions) then matchLabelExpressions else [matchLabelExpressions] }, - '#withMatchLabelExpressionsMixin':: d.fn(help='A list of topology selector requirements by labels.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabelExpressions', type=d.T.array)]), - withMatchLabelExpressionsMixin(matchLabelExpressions): { matchLabelExpressions+: if std.isArray(v=matchLabelExpressions) then matchLabelExpressions else [matchLabelExpressions] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/topologySpreadConstraint.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/topologySpreadConstraint.libsonnet deleted file mode 100644 index 68ffe773d266..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/topologySpreadConstraint.libsonnet +++ /dev/null @@ -1,23 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='topologySpreadConstraint', url='', help='TopologySpreadConstraint specifies how to spread matching pods among the given topology.'), - '#labelSelector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - labelSelector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { labelSelector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { labelSelector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { labelSelector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { labelSelector+: { matchLabels+: matchLabels } }, - }, - '#withMaxSkew':: d.fn(help="MaxSkew describes the degree to which pods may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference between the number of matching pods in the target topology and the global minimum. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 1/1/0: | zone1 | zone2 | zone3 | | P | P | | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 1/1/1; scheduling it onto zone1(zone2) would make the ActualSkew(2-0) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence to topologies that satisfy it. It's a required field. Default value is 1 and 0 is not allowed.", args=[d.arg(name='maxSkew', type=d.T.integer)]), - withMaxSkew(maxSkew): { maxSkew: maxSkew }, - '#withTopologyKey':: d.fn(help="TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each as a 'bucket', and try to put balanced number of pods into each bucket. It's a required field.", args=[d.arg(name='topologyKey', type=d.T.string)]), - withTopologyKey(topologyKey): { topologyKey: topologyKey }, - '#withWhenUnsatisfiable':: d.fn(help="WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - ScheduleAnyway tells the scheduler to schedule the pod in any location,\n but giving higher precedence to topologies that would help reduce the\n skew.\nA constraint is considered 'Unsatisfiable' for an incoming pod if and only if every possible node assigment for that pod would violate 'MaxSkew' on some topology. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P | P | P | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won't make it *more* imbalanced. It's a required field.", args=[d.arg(name='whenUnsatisfiable', type=d.T.string)]), - withWhenUnsatisfiable(whenUnsatisfiable): { whenUnsatisfiable: whenUnsatisfiable }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/typedLocalObjectReference.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/typedLocalObjectReference.libsonnet deleted file mode 100644 index 62c906f3ffd0..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/typedLocalObjectReference.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='typedLocalObjectReference', url='', help='TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace.'), - '#withApiGroup':: d.fn(help='APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.', args=[d.arg(name='apiGroup', type=d.T.string)]), - withApiGroup(apiGroup): { apiGroup: apiGroup }, - '#withKind':: d.fn(help='Kind is the type of resource being referenced', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { kind: kind }, - '#withName':: d.fn(help='Name is the name of resource being referenced', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/volume.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/volume.libsonnet deleted file mode 100644 index 3192d88d108c..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/volume.libsonnet +++ /dev/null @@ -1,473 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='volume', url='', help='Volume represents a named volume in a pod that may be accessed by any container in the pod.'), - '#awsElasticBlockStore':: d.obj(help='Represents a Persistent Disk resource in AWS.\n\nAn AWS EBS disk must exist before mounting to a container. The disk must also be in the same AWS zone as the kubelet. An AWS EBS disk can only be mounted as read/write once. AWS EBS volumes support ownership management and SELinux relabeling.'), - awsElasticBlockStore: { - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { awsElasticBlockStore+: { fsType: fsType } }, - '#withPartition':: d.fn(help='The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).', args=[d.arg(name='partition', type=d.T.integer)]), - withPartition(partition): { awsElasticBlockStore+: { partition: partition } }, - '#withReadOnly':: d.fn(help='Specify "true" to force and set the ReadOnly property in VolumeMounts to "true". If omitted, the default is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { awsElasticBlockStore+: { readOnly: readOnly } }, - '#withVolumeID':: d.fn(help='Unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore', args=[d.arg(name='volumeID', type=d.T.string)]), - withVolumeID(volumeID): { awsElasticBlockStore+: { volumeID: volumeID } }, - }, - '#azureDisk':: d.obj(help='AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.'), - azureDisk: { - '#withCachingMode':: d.fn(help='Host Caching mode: None, Read Only, Read Write.', args=[d.arg(name='cachingMode', type=d.T.string)]), - withCachingMode(cachingMode): { azureDisk+: { cachingMode: cachingMode } }, - '#withDiskName':: d.fn(help='The Name of the data disk in the blob storage', args=[d.arg(name='diskName', type=d.T.string)]), - withDiskName(diskName): { azureDisk+: { diskName: diskName } }, - '#withDiskURI':: d.fn(help='The URI the data disk in the blob storage', args=[d.arg(name='diskURI', type=d.T.string)]), - withDiskURI(diskURI): { azureDisk+: { diskURI: diskURI } }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { azureDisk+: { fsType: fsType } }, - '#withKind':: d.fn(help='Expected values Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { azureDisk+: { kind: kind } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { azureDisk+: { readOnly: readOnly } }, - }, - '#azureFile':: d.obj(help='AzureFile represents an Azure File Service mount on the host and bind mount to the pod.'), - azureFile: { - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { azureFile+: { readOnly: readOnly } }, - '#withSecretName':: d.fn(help='the name of secret that contains Azure Storage Account Name and Key', args=[d.arg(name='secretName', type=d.T.string)]), - withSecretName(secretName): { azureFile+: { secretName: secretName } }, - '#withShareName':: d.fn(help='Share Name', args=[d.arg(name='shareName', type=d.T.string)]), - withShareName(shareName): { azureFile+: { shareName: shareName } }, - }, - '#cephfs':: d.obj(help='Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling.'), - cephfs: { - '#secretRef':: d.obj(help='LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.'), - secretRef: { - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { cephfs+: { secretRef+: { name: name } } }, - }, - '#withMonitors':: d.fn(help='Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitors(monitors): { cephfs+: { monitors: if std.isArray(v=monitors) then monitors else [monitors] } }, - '#withMonitorsMixin':: d.fn(help='Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitorsMixin(monitors): { cephfs+: { monitors+: if std.isArray(v=monitors) then monitors else [monitors] } }, - '#withPath':: d.fn(help='Optional: Used as the mounted root, rather than the full Ceph tree, default is /', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { cephfs+: { path: path } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { cephfs+: { readOnly: readOnly } }, - '#withSecretFile':: d.fn(help='Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='secretFile', type=d.T.string)]), - withSecretFile(secretFile): { cephfs+: { secretFile: secretFile } }, - '#withUser':: d.fn(help='Optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { cephfs+: { user: user } }, - }, - '#cinder':: d.obj(help='Represents a cinder volume resource in Openstack. A Cinder volume must exist before mounting to a container. The volume must also be in the same region as the kubelet. Cinder volumes support ownership management and SELinux relabeling.'), - cinder: { - '#secretRef':: d.obj(help='LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.'), - secretRef: { - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { cinder+: { secretRef+: { name: name } } }, - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { cinder+: { fsType: fsType } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { cinder+: { readOnly: readOnly } }, - '#withVolumeID':: d.fn(help='volume id used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md', args=[d.arg(name='volumeID', type=d.T.string)]), - withVolumeID(volumeID): { cinder+: { volumeID: volumeID } }, - }, - '#configMap':: d.obj(help="Adapts a ConfigMap into a volume.\n\nThe contents of the target ConfigMap's Data field will be presented in a volume as files using the keys in the Data field as the file names, unless the items element is populated with specific mappings of keys to paths. ConfigMap volumes support ownership management and SELinux relabeling."), - configMap: { - '#withDefaultMode':: d.fn(help='Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.', args=[d.arg(name='defaultMode', type=d.T.integer)]), - withDefaultMode(defaultMode): { configMap+: { defaultMode: defaultMode } }, - '#withItems':: d.fn(help="If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.", args=[d.arg(name='items', type=d.T.array)]), - withItems(items): { configMap+: { items: if std.isArray(v=items) then items else [items] } }, - '#withItemsMixin':: d.fn(help="If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='items', type=d.T.array)]), - withItemsMixin(items): { configMap+: { items+: if std.isArray(v=items) then items else [items] } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { configMap+: { name: name } }, - '#withOptional':: d.fn(help='Specify whether the ConfigMap or its keys must be defined', args=[d.arg(name='optional', type=d.T.boolean)]), - withOptional(optional): { configMap+: { optional: optional } }, - }, - '#csi':: d.obj(help='Represents a source location of a volume to mount, managed by an external CSI driver'), - csi: { - '#nodePublishSecretRef':: d.obj(help='LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.'), - nodePublishSecretRef: { - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { csi+: { nodePublishSecretRef+: { name: name } } }, - }, - '#withDriver':: d.fn(help='Driver is the name of the CSI driver that handles this volume. Consult with your admin for the correct name as registered in the cluster.', args=[d.arg(name='driver', type=d.T.string)]), - withDriver(driver): { csi+: { driver: driver } }, - '#withFsType':: d.fn(help='Filesystem type to mount. Ex. "ext4", "xfs", "ntfs". If not provided, the empty value is passed to the associated CSI driver which will determine the default filesystem to apply.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { csi+: { fsType: fsType } }, - '#withReadOnly':: d.fn(help='Specifies a read-only configuration for the volume. Defaults to false (read/write).', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { csi+: { readOnly: readOnly } }, - '#withVolumeAttributes':: d.fn(help="VolumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values.", args=[d.arg(name='volumeAttributes', type=d.T.object)]), - withVolumeAttributes(volumeAttributes): { csi+: { volumeAttributes: volumeAttributes } }, - '#withVolumeAttributesMixin':: d.fn(help="VolumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='volumeAttributes', type=d.T.object)]), - withVolumeAttributesMixin(volumeAttributes): { csi+: { volumeAttributes+: volumeAttributes } }, - }, - '#downwardAPI':: d.obj(help='DownwardAPIVolumeSource represents a volume containing downward API info. Downward API volumes support ownership management and SELinux relabeling.'), - downwardAPI: { - '#withDefaultMode':: d.fn(help='Optional: mode bits to use on created files by default. Must be a Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.', args=[d.arg(name='defaultMode', type=d.T.integer)]), - withDefaultMode(defaultMode): { downwardAPI+: { defaultMode: defaultMode } }, - '#withItems':: d.fn(help='Items is a list of downward API volume file', args=[d.arg(name='items', type=d.T.array)]), - withItems(items): { downwardAPI+: { items: if std.isArray(v=items) then items else [items] } }, - '#withItemsMixin':: d.fn(help='Items is a list of downward API volume file\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='items', type=d.T.array)]), - withItemsMixin(items): { downwardAPI+: { items+: if std.isArray(v=items) then items else [items] } }, - }, - '#emptyDir':: d.obj(help='Represents an empty directory for a pod. Empty directory volumes support ownership management and SELinux relabeling.'), - emptyDir: { - '#withMedium':: d.fn(help="What type of storage medium should back this directory. The default is '' which means to use the node's default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir", args=[d.arg(name='medium', type=d.T.string)]), - withMedium(medium): { emptyDir+: { medium: medium } }, - '#withSizeLimit':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='sizeLimit', type=d.T.string)]), - withSizeLimit(sizeLimit): { emptyDir+: { sizeLimit: sizeLimit } }, - }, - '#ephemeral':: d.obj(help='Represents an ephemeral volume that is handled by a normal storage driver.'), - ephemeral: { - '#volumeClaimTemplate':: d.obj(help='PersistentVolumeClaimTemplate is used to produce PersistentVolumeClaim objects as part of an EphemeralVolumeSource.'), - volumeClaimTemplate: { - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { ephemeral+: { volumeClaimTemplate+: { metadata+: { annotations: annotations } } } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { ephemeral+: { volumeClaimTemplate+: { metadata+: { annotations+: annotations } } } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { ephemeral+: { volumeClaimTemplate+: { metadata+: { clusterName: clusterName } } } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { ephemeral+: { volumeClaimTemplate+: { metadata+: { creationTimestamp: creationTimestamp } } } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { ephemeral+: { volumeClaimTemplate+: { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } } } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { ephemeral+: { volumeClaimTemplate+: { metadata+: { deletionTimestamp: deletionTimestamp } } } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { ephemeral+: { volumeClaimTemplate+: { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { ephemeral+: { volumeClaimTemplate+: { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } } } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { ephemeral+: { volumeClaimTemplate+: { metadata+: { generateName: generateName } } } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { ephemeral+: { volumeClaimTemplate+: { metadata+: { generation: generation } } } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { ephemeral+: { volumeClaimTemplate+: { metadata+: { labels: labels } } } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { ephemeral+: { volumeClaimTemplate+: { metadata+: { labels+: labels } } } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { ephemeral+: { volumeClaimTemplate+: { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { ephemeral+: { volumeClaimTemplate+: { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } } } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { ephemeral+: { volumeClaimTemplate+: { metadata+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { ephemeral+: { volumeClaimTemplate+: { metadata+: { namespace: namespace } } } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { ephemeral+: { volumeClaimTemplate+: { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { ephemeral+: { volumeClaimTemplate+: { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } } } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { ephemeral+: { volumeClaimTemplate+: { metadata+: { resourceVersion: resourceVersion } } } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { ephemeral+: { volumeClaimTemplate+: { metadata+: { selfLink: selfLink } } } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { ephemeral+: { volumeClaimTemplate+: { metadata+: { uid: uid } } } }, - }, - '#spec':: d.obj(help='PersistentVolumeClaimSpec describes the common attributes of storage devices and allows a Source for provider-specific attributes'), - spec: { - '#dataSource':: d.obj(help='TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace.'), - dataSource: { - '#withApiGroup':: d.fn(help='APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.', args=[d.arg(name='apiGroup', type=d.T.string)]), - withApiGroup(apiGroup): { ephemeral+: { volumeClaimTemplate+: { spec+: { dataSource+: { apiGroup: apiGroup } } } } }, - '#withKind':: d.fn(help='Kind is the type of resource being referenced', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { ephemeral+: { volumeClaimTemplate+: { spec+: { dataSource+: { kind: kind } } } } }, - '#withName':: d.fn(help='Name is the name of resource being referenced', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { ephemeral+: { volumeClaimTemplate+: { spec+: { dataSource+: { name: name } } } } }, - }, - '#resources':: d.obj(help='ResourceRequirements describes the compute resource requirements.'), - resources: { - '#withLimits':: d.fn(help='Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/', args=[d.arg(name='limits', type=d.T.object)]), - withLimits(limits): { ephemeral+: { volumeClaimTemplate+: { spec+: { resources+: { limits: limits } } } } }, - '#withLimitsMixin':: d.fn(help='Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='limits', type=d.T.object)]), - withLimitsMixin(limits): { ephemeral+: { volumeClaimTemplate+: { spec+: { resources+: { limits+: limits } } } } }, - '#withRequests':: d.fn(help='Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/', args=[d.arg(name='requests', type=d.T.object)]), - withRequests(requests): { ephemeral+: { volumeClaimTemplate+: { spec+: { resources+: { requests: requests } } } } }, - '#withRequestsMixin':: d.fn(help='Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requests', type=d.T.object)]), - withRequestsMixin(requests): { ephemeral+: { volumeClaimTemplate+: { spec+: { resources+: { requests+: requests } } } } }, - }, - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { ephemeral+: { volumeClaimTemplate+: { spec+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { ephemeral+: { volumeClaimTemplate+: { spec+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { ephemeral+: { volumeClaimTemplate+: { spec+: { selector+: { matchLabels: matchLabels } } } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { ephemeral+: { volumeClaimTemplate+: { spec+: { selector+: { matchLabels+: matchLabels } } } } }, - }, - '#withAccessModes':: d.fn(help='AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1', args=[d.arg(name='accessModes', type=d.T.array)]), - withAccessModes(accessModes): { ephemeral+: { volumeClaimTemplate+: { spec+: { accessModes: if std.isArray(v=accessModes) then accessModes else [accessModes] } } } }, - '#withAccessModesMixin':: d.fn(help='AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='accessModes', type=d.T.array)]), - withAccessModesMixin(accessModes): { ephemeral+: { volumeClaimTemplate+: { spec+: { accessModes+: if std.isArray(v=accessModes) then accessModes else [accessModes] } } } }, - '#withStorageClassName':: d.fn(help='Name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1', args=[d.arg(name='storageClassName', type=d.T.string)]), - withStorageClassName(storageClassName): { ephemeral+: { volumeClaimTemplate+: { spec+: { storageClassName: storageClassName } } } }, - '#withVolumeMode':: d.fn(help='volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.', args=[d.arg(name='volumeMode', type=d.T.string)]), - withVolumeMode(volumeMode): { ephemeral+: { volumeClaimTemplate+: { spec+: { volumeMode: volumeMode } } } }, - '#withVolumeName':: d.fn(help='VolumeName is the binding reference to the PersistentVolume backing this claim.', args=[d.arg(name='volumeName', type=d.T.string)]), - withVolumeName(volumeName): { ephemeral+: { volumeClaimTemplate+: { spec+: { volumeName: volumeName } } } }, - }, - }, - }, - '#fc':: d.obj(help='Represents a Fibre Channel volume. Fibre Channel volumes can only be mounted as read/write once. Fibre Channel volumes support ownership management and SELinux relabeling.'), - fc: { - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { fc+: { fsType: fsType } }, - '#withLun':: d.fn(help='Optional: FC target lun number', args=[d.arg(name='lun', type=d.T.integer)]), - withLun(lun): { fc+: { lun: lun } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { fc+: { readOnly: readOnly } }, - '#withTargetWWNs':: d.fn(help='Optional: FC target worldwide names (WWNs)', args=[d.arg(name='targetWWNs', type=d.T.array)]), - withTargetWWNs(targetWWNs): { fc+: { targetWWNs: if std.isArray(v=targetWWNs) then targetWWNs else [targetWWNs] } }, - '#withTargetWWNsMixin':: d.fn(help='Optional: FC target worldwide names (WWNs)\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='targetWWNs', type=d.T.array)]), - withTargetWWNsMixin(targetWWNs): { fc+: { targetWWNs+: if std.isArray(v=targetWWNs) then targetWWNs else [targetWWNs] } }, - '#withWwids':: d.fn(help='Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.', args=[d.arg(name='wwids', type=d.T.array)]), - withWwids(wwids): { fc+: { wwids: if std.isArray(v=wwids) then wwids else [wwids] } }, - '#withWwidsMixin':: d.fn(help='Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='wwids', type=d.T.array)]), - withWwidsMixin(wwids): { fc+: { wwids+: if std.isArray(v=wwids) then wwids else [wwids] } }, - }, - '#flexVolume':: d.obj(help='FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.'), - flexVolume: { - '#secretRef':: d.obj(help='LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.'), - secretRef: { - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { flexVolume+: { secretRef+: { name: name } } }, - }, - '#withDriver':: d.fn(help='Driver is the name of the driver to use for this volume.', args=[d.arg(name='driver', type=d.T.string)]), - withDriver(driver): { flexVolume+: { driver: driver } }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { flexVolume+: { fsType: fsType } }, - '#withOptions':: d.fn(help='Optional: Extra command options if any.', args=[d.arg(name='options', type=d.T.object)]), - withOptions(options): { flexVolume+: { options: options } }, - '#withOptionsMixin':: d.fn(help='Optional: Extra command options if any.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.object)]), - withOptionsMixin(options): { flexVolume+: { options+: options } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { flexVolume+: { readOnly: readOnly } }, - }, - '#flocker':: d.obj(help='Represents a Flocker volume mounted by the Flocker agent. One and only one of datasetName and datasetUUID should be set. Flocker volumes do not support ownership management or SELinux relabeling.'), - flocker: { - '#withDatasetName':: d.fn(help='Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated', args=[d.arg(name='datasetName', type=d.T.string)]), - withDatasetName(datasetName): { flocker+: { datasetName: datasetName } }, - '#withDatasetUUID':: d.fn(help='UUID of the dataset. This is unique identifier of a Flocker dataset', args=[d.arg(name='datasetUUID', type=d.T.string)]), - withDatasetUUID(datasetUUID): { flocker+: { datasetUUID: datasetUUID } }, - }, - '#gcePersistentDisk':: d.obj(help='Represents a Persistent Disk resource in Google Compute Engine.\n\nA GCE PD must exist before mounting to a container. The disk must also be in the same GCE project and zone as the kubelet. A GCE PD can only be mounted as read/write once or read-only many times. GCE PDs support ownership management and SELinux relabeling.'), - gcePersistentDisk: { - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { gcePersistentDisk+: { fsType: fsType } }, - '#withPartition':: d.fn(help='The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='partition', type=d.T.integer)]), - withPartition(partition): { gcePersistentDisk+: { partition: partition } }, - '#withPdName':: d.fn(help='Unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='pdName', type=d.T.string)]), - withPdName(pdName): { gcePersistentDisk+: { pdName: pdName } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { gcePersistentDisk+: { readOnly: readOnly } }, - }, - '#gitRepo':: d.obj(help="Represents a volume that is populated with the contents of a git repository. Git repo volumes do not support ownership management. Git repo volumes support SELinux relabeling.\n\nDEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod's container."), - gitRepo: { - '#withDirectory':: d.fn(help="Target directory name. Must not contain or start with '..'. If '.' is supplied, the volume directory will be the git repository. Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name.", args=[d.arg(name='directory', type=d.T.string)]), - withDirectory(directory): { gitRepo+: { directory: directory } }, - '#withRepository':: d.fn(help='Repository URL', args=[d.arg(name='repository', type=d.T.string)]), - withRepository(repository): { gitRepo+: { repository: repository } }, - '#withRevision':: d.fn(help='Commit hash for the specified revision.', args=[d.arg(name='revision', type=d.T.string)]), - withRevision(revision): { gitRepo+: { revision: revision } }, - }, - '#glusterfs':: d.obj(help='Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling.'), - glusterfs: { - '#withEndpoints':: d.fn(help='EndpointsName is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='endpoints', type=d.T.string)]), - withEndpoints(endpoints): { glusterfs+: { endpoints: endpoints } }, - '#withPath':: d.fn(help='Path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { glusterfs+: { path: path } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { glusterfs+: { readOnly: readOnly } }, - }, - '#hostPath':: d.obj(help='Represents a host path mapped into a pod. Host path volumes do not support ownership management or SELinux relabeling.'), - hostPath: { - '#withPath':: d.fn(help='Path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { hostPath+: { path: path } }, - '#withType':: d.fn(help='Type for HostPath Volume Defaults to "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { hostPath+: { type: type } }, - }, - '#iscsi':: d.obj(help='Represents an ISCSI disk. ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling.'), - iscsi: { - '#secretRef':: d.obj(help='LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.'), - secretRef: { - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { iscsi+: { secretRef+: { name: name } } }, - }, - '#withChapAuthDiscovery':: d.fn(help='whether support iSCSI Discovery CHAP authentication', args=[d.arg(name='chapAuthDiscovery', type=d.T.boolean)]), - withChapAuthDiscovery(chapAuthDiscovery): { iscsi+: { chapAuthDiscovery: chapAuthDiscovery } }, - '#withChapAuthSession':: d.fn(help='whether support iSCSI Session CHAP authentication', args=[d.arg(name='chapAuthSession', type=d.T.boolean)]), - withChapAuthSession(chapAuthSession): { iscsi+: { chapAuthSession: chapAuthSession } }, - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { iscsi+: { fsType: fsType } }, - '#withInitiatorName':: d.fn(help='Custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface : will be created for the connection.', args=[d.arg(name='initiatorName', type=d.T.string)]), - withInitiatorName(initiatorName): { iscsi+: { initiatorName: initiatorName } }, - '#withIqn':: d.fn(help='Target iSCSI Qualified Name.', args=[d.arg(name='iqn', type=d.T.string)]), - withIqn(iqn): { iscsi+: { iqn: iqn } }, - '#withIscsiInterface':: d.fn(help="iSCSI Interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).", args=[d.arg(name='iscsiInterface', type=d.T.string)]), - withIscsiInterface(iscsiInterface): { iscsi+: { iscsiInterface: iscsiInterface } }, - '#withLun':: d.fn(help='iSCSI Target Lun number.', args=[d.arg(name='lun', type=d.T.integer)]), - withLun(lun): { iscsi+: { lun: lun } }, - '#withPortals':: d.fn(help='iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).', args=[d.arg(name='portals', type=d.T.array)]), - withPortals(portals): { iscsi+: { portals: if std.isArray(v=portals) then portals else [portals] } }, - '#withPortalsMixin':: d.fn(help='iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='portals', type=d.T.array)]), - withPortalsMixin(portals): { iscsi+: { portals+: if std.isArray(v=portals) then portals else [portals] } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { iscsi+: { readOnly: readOnly } }, - '#withTargetPortal':: d.fn(help='iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).', args=[d.arg(name='targetPortal', type=d.T.string)]), - withTargetPortal(targetPortal): { iscsi+: { targetPortal: targetPortal } }, - }, - '#nfs':: d.obj(help='Represents an NFS mount that lasts the lifetime of a pod. NFS volumes do not support ownership management or SELinux relabeling.'), - nfs: { - '#withPath':: d.fn(help='Path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { nfs+: { path: path } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { nfs+: { readOnly: readOnly } }, - '#withServer':: d.fn(help='Server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs', args=[d.arg(name='server', type=d.T.string)]), - withServer(server): { nfs+: { server: server } }, - }, - '#persistentVolumeClaim':: d.obj(help="PersistentVolumeClaimVolumeSource references the user's PVC in the same namespace. This volume finds the bound PV and mounts that volume for the pod. A PersistentVolumeClaimVolumeSource is, essentially, a wrapper around another type of volume that is owned by someone else (the system)."), - persistentVolumeClaim: { - '#withClaimName':: d.fn(help='ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims', args=[d.arg(name='claimName', type=d.T.string)]), - withClaimName(claimName): { persistentVolumeClaim+: { claimName: claimName } }, - '#withReadOnly':: d.fn(help='Will force the ReadOnly setting in VolumeMounts. Default false.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { persistentVolumeClaim+: { readOnly: readOnly } }, - }, - '#photonPersistentDisk':: d.obj(help='Represents a Photon Controller persistent disk resource.'), - photonPersistentDisk: { - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { photonPersistentDisk+: { fsType: fsType } }, - '#withPdID':: d.fn(help='ID that identifies Photon Controller persistent disk', args=[d.arg(name='pdID', type=d.T.string)]), - withPdID(pdID): { photonPersistentDisk+: { pdID: pdID } }, - }, - '#portworxVolume':: d.obj(help='PortworxVolumeSource represents a Portworx volume resource.'), - portworxVolume: { - '#withFsType':: d.fn(help='FSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { portworxVolume+: { fsType: fsType } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { portworxVolume+: { readOnly: readOnly } }, - '#withVolumeID':: d.fn(help='VolumeID uniquely identifies a Portworx volume', args=[d.arg(name='volumeID', type=d.T.string)]), - withVolumeID(volumeID): { portworxVolume+: { volumeID: volumeID } }, - }, - '#projected':: d.obj(help='Represents a projected volume source'), - projected: { - '#withDefaultMode':: d.fn(help='Mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.', args=[d.arg(name='defaultMode', type=d.T.integer)]), - withDefaultMode(defaultMode): { projected+: { defaultMode: defaultMode } }, - '#withSources':: d.fn(help='list of volume projections', args=[d.arg(name='sources', type=d.T.array)]), - withSources(sources): { projected+: { sources: if std.isArray(v=sources) then sources else [sources] } }, - '#withSourcesMixin':: d.fn(help='list of volume projections\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='sources', type=d.T.array)]), - withSourcesMixin(sources): { projected+: { sources+: if std.isArray(v=sources) then sources else [sources] } }, - }, - '#quobyte':: d.obj(help='Represents a Quobyte mount that lasts the lifetime of a pod. Quobyte volumes do not support ownership management or SELinux relabeling.'), - quobyte: { - '#withGroup':: d.fn(help='Group to map volume access to Default is no group', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { quobyte+: { group: group } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { quobyte+: { readOnly: readOnly } }, - '#withRegistry':: d.fn(help='Registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes', args=[d.arg(name='registry', type=d.T.string)]), - withRegistry(registry): { quobyte+: { registry: registry } }, - '#withTenant':: d.fn(help='Tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin', args=[d.arg(name='tenant', type=d.T.string)]), - withTenant(tenant): { quobyte+: { tenant: tenant } }, - '#withUser':: d.fn(help='User to map volume access to Defaults to serivceaccount user', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { quobyte+: { user: user } }, - '#withVolume':: d.fn(help='Volume is a string that references an already created Quobyte volume by name.', args=[d.arg(name='volume', type=d.T.string)]), - withVolume(volume): { quobyte+: { volume: volume } }, - }, - '#rbd':: d.obj(help='Represents a Rados Block Device mount that lasts the lifetime of a pod. RBD volumes support ownership management and SELinux relabeling.'), - rbd: { - '#secretRef':: d.obj(help='LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.'), - secretRef: { - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { rbd+: { secretRef+: { name: name } } }, - }, - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { rbd+: { fsType: fsType } }, - '#withImage':: d.fn(help='The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='image', type=d.T.string)]), - withImage(image): { rbd+: { image: image } }, - '#withKeyring':: d.fn(help='Keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='keyring', type=d.T.string)]), - withKeyring(keyring): { rbd+: { keyring: keyring } }, - '#withMonitors':: d.fn(help='A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitors(monitors): { rbd+: { monitors: if std.isArray(v=monitors) then monitors else [monitors] } }, - '#withMonitorsMixin':: d.fn(help='A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitorsMixin(monitors): { rbd+: { monitors+: if std.isArray(v=monitors) then monitors else [monitors] } }, - '#withPool':: d.fn(help='The rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='pool', type=d.T.string)]), - withPool(pool): { rbd+: { pool: pool } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { rbd+: { readOnly: readOnly } }, - '#withUser':: d.fn(help='The rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { rbd+: { user: user } }, - }, - '#scaleIO':: d.obj(help='ScaleIOVolumeSource represents a persistent ScaleIO volume'), - scaleIO: { - '#secretRef':: d.obj(help='LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.'), - secretRef: { - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { scaleIO+: { secretRef+: { name: name } } }, - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Default is "xfs".', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { scaleIO+: { fsType: fsType } }, - '#withGateway':: d.fn(help='The host address of the ScaleIO API Gateway.', args=[d.arg(name='gateway', type=d.T.string)]), - withGateway(gateway): { scaleIO+: { gateway: gateway } }, - '#withProtectionDomain':: d.fn(help='The name of the ScaleIO Protection Domain for the configured storage.', args=[d.arg(name='protectionDomain', type=d.T.string)]), - withProtectionDomain(protectionDomain): { scaleIO+: { protectionDomain: protectionDomain } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { scaleIO+: { readOnly: readOnly } }, - '#withSslEnabled':: d.fn(help='Flag to enable/disable SSL communication with Gateway, default false', args=[d.arg(name='sslEnabled', type=d.T.boolean)]), - withSslEnabled(sslEnabled): { scaleIO+: { sslEnabled: sslEnabled } }, - '#withStorageMode':: d.fn(help='Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.', args=[d.arg(name='storageMode', type=d.T.string)]), - withStorageMode(storageMode): { scaleIO+: { storageMode: storageMode } }, - '#withStoragePool':: d.fn(help='The ScaleIO Storage Pool associated with the protection domain.', args=[d.arg(name='storagePool', type=d.T.string)]), - withStoragePool(storagePool): { scaleIO+: { storagePool: storagePool } }, - '#withSystem':: d.fn(help='The name of the storage system as configured in ScaleIO.', args=[d.arg(name='system', type=d.T.string)]), - withSystem(system): { scaleIO+: { system: system } }, - '#withVolumeName':: d.fn(help='The name of a volume already created in the ScaleIO system that is associated with this volume source.', args=[d.arg(name='volumeName', type=d.T.string)]), - withVolumeName(volumeName): { scaleIO+: { volumeName: volumeName } }, - }, - '#secret':: d.obj(help="Adapts a Secret into a volume.\n\nThe contents of the target Secret's Data field will be presented in a volume as files using the keys in the Data field as the file names. Secret volumes support ownership management and SELinux relabeling."), - secret: { - '#withDefaultMode':: d.fn(help='Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.', args=[d.arg(name='defaultMode', type=d.T.integer)]), - withDefaultMode(defaultMode): { secret+: { defaultMode: defaultMode } }, - '#withItems':: d.fn(help="If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.", args=[d.arg(name='items', type=d.T.array)]), - withItems(items): { secret+: { items: if std.isArray(v=items) then items else [items] } }, - '#withItemsMixin':: d.fn(help="If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='items', type=d.T.array)]), - withItemsMixin(items): { secret+: { items+: if std.isArray(v=items) then items else [items] } }, - '#withOptional':: d.fn(help='Specify whether the Secret or its keys must be defined', args=[d.arg(name='optional', type=d.T.boolean)]), - withOptional(optional): { secret+: { optional: optional } }, - '#withSecretName':: d.fn(help="Name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret", args=[d.arg(name='secretName', type=d.T.string)]), - withSecretName(secretName): { secret+: { secretName: secretName } }, - }, - '#storageos':: d.obj(help='Represents a StorageOS persistent volume resource.'), - storageos: { - '#secretRef':: d.obj(help='LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.'), - secretRef: { - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { storageos+: { secretRef+: { name: name } } }, - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { storageos+: { fsType: fsType } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { storageos+: { readOnly: readOnly } }, - '#withVolumeName':: d.fn(help='VolumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.', args=[d.arg(name='volumeName', type=d.T.string)]), - withVolumeName(volumeName): { storageos+: { volumeName: volumeName } }, - '#withVolumeNamespace':: d.fn(help="VolumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod's namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to 'default' if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created.", args=[d.arg(name='volumeNamespace', type=d.T.string)]), - withVolumeNamespace(volumeNamespace): { storageos+: { volumeNamespace: volumeNamespace } }, - }, - '#vsphereVolume':: d.obj(help='Represents a vSphere volume resource.'), - vsphereVolume: { - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { vsphereVolume+: { fsType: fsType } }, - '#withStoragePolicyID':: d.fn(help='Storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.', args=[d.arg(name='storagePolicyID', type=d.T.string)]), - withStoragePolicyID(storagePolicyID): { vsphereVolume+: { storagePolicyID: storagePolicyID } }, - '#withStoragePolicyName':: d.fn(help='Storage Policy Based Management (SPBM) profile name.', args=[d.arg(name='storagePolicyName', type=d.T.string)]), - withStoragePolicyName(storagePolicyName): { vsphereVolume+: { storagePolicyName: storagePolicyName } }, - '#withVolumePath':: d.fn(help='Path that identifies vSphere volume vmdk', args=[d.arg(name='volumePath', type=d.T.string)]), - withVolumePath(volumePath): { vsphereVolume+: { volumePath: volumePath } }, - }, - '#withName':: d.fn(help="Volume's name. Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/volumeDevice.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/volumeDevice.libsonnet deleted file mode 100644 index 31e95a656e93..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/volumeDevice.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='volumeDevice', url='', help='volumeDevice describes a mapping of a raw block device within a container.'), - '#withDevicePath':: d.fn(help='devicePath is the path inside of the container that the device will be mapped to.', args=[d.arg(name='devicePath', type=d.T.string)]), - withDevicePath(devicePath): { devicePath: devicePath }, - '#withName':: d.fn(help='name must match the name of a persistentVolumeClaim in the pod', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/volumeMount.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/volumeMount.libsonnet deleted file mode 100644 index af137c887e34..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/volumeMount.libsonnet +++ /dev/null @@ -1,18 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='volumeMount', url='', help='VolumeMount describes a mounting of a Volume within a container.'), - '#withMountPath':: d.fn(help="Path within the container at which the volume should be mounted. Must not contain ':'.", args=[d.arg(name='mountPath', type=d.T.string)]), - withMountPath(mountPath): { mountPath: mountPath }, - '#withMountPropagation':: d.fn(help='mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10.', args=[d.arg(name='mountPropagation', type=d.T.string)]), - withMountPropagation(mountPropagation): { mountPropagation: mountPropagation }, - '#withName':: d.fn(help='This must match the Name of a Volume.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withReadOnly':: d.fn(help='Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#withSubPath':: d.fn(help="Path within the volume from which the container's volume should be mounted. Defaults to '' (volume's root).", args=[d.arg(name='subPath', type=d.T.string)]), - withSubPath(subPath): { subPath: subPath }, - '#withSubPathExpr':: d.fn(help="Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to '' (volume's root). SubPathExpr and SubPath are mutually exclusive.", args=[d.arg(name='subPathExpr', type=d.T.string)]), - withSubPathExpr(subPathExpr): { subPathExpr: subPathExpr }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/volumeNodeAffinity.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/volumeNodeAffinity.libsonnet deleted file mode 100644 index d57b6de795a3..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/volumeNodeAffinity.libsonnet +++ /dev/null @@ -1,13 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='volumeNodeAffinity', url='', help='VolumeNodeAffinity defines constraints that limit what nodes this volume can be accessed from.'), - '#required':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - required: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { required+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { required+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/volumeProjection.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/volumeProjection.libsonnet deleted file mode 100644 index d517689d2348..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/volumeProjection.libsonnet +++ /dev/null @@ -1,44 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='volumeProjection', url='', help='Projection that may be projected along with other supported volume types'), - '#configMap':: d.obj(help="Adapts a ConfigMap into a projected volume.\n\nThe contents of the target ConfigMap's Data field will be presented in a projected volume as files using the keys in the Data field as the file names, unless the items element is populated with specific mappings of keys to paths. Note that this is identical to a configmap volume source without the default mode."), - configMap: { - '#withItems':: d.fn(help="If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.", args=[d.arg(name='items', type=d.T.array)]), - withItems(items): { configMap+: { items: if std.isArray(v=items) then items else [items] } }, - '#withItemsMixin':: d.fn(help="If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='items', type=d.T.array)]), - withItemsMixin(items): { configMap+: { items+: if std.isArray(v=items) then items else [items] } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { configMap+: { name: name } }, - '#withOptional':: d.fn(help='Specify whether the ConfigMap or its keys must be defined', args=[d.arg(name='optional', type=d.T.boolean)]), - withOptional(optional): { configMap+: { optional: optional } }, - }, - '#downwardAPI':: d.obj(help='Represents downward API info for projecting into a projected volume. Note that this is identical to a downwardAPI volume source without the default mode.'), - downwardAPI: { - '#withItems':: d.fn(help='Items is a list of DownwardAPIVolume file', args=[d.arg(name='items', type=d.T.array)]), - withItems(items): { downwardAPI+: { items: if std.isArray(v=items) then items else [items] } }, - '#withItemsMixin':: d.fn(help='Items is a list of DownwardAPIVolume file\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='items', type=d.T.array)]), - withItemsMixin(items): { downwardAPI+: { items+: if std.isArray(v=items) then items else [items] } }, - }, - '#secret':: d.obj(help="Adapts a secret into a projected volume.\n\nThe contents of the target Secret's Data field will be presented in a projected volume as files using the keys in the Data field as the file names. Note that this is identical to a secret volume source without the default mode."), - secret: { - '#withItems':: d.fn(help="If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.", args=[d.arg(name='items', type=d.T.array)]), - withItems(items): { secret+: { items: if std.isArray(v=items) then items else [items] } }, - '#withItemsMixin':: d.fn(help="If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='items', type=d.T.array)]), - withItemsMixin(items): { secret+: { items+: if std.isArray(v=items) then items else [items] } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { secret+: { name: name } }, - '#withOptional':: d.fn(help='Specify whether the Secret or its key must be defined', args=[d.arg(name='optional', type=d.T.boolean)]), - withOptional(optional): { secret+: { optional: optional } }, - }, - '#serviceAccountToken':: d.obj(help='ServiceAccountTokenProjection represents a projected service account token volume. This projection can be used to insert a service account token into the pods runtime filesystem for use against APIs (Kubernetes API Server or otherwise).'), - serviceAccountToken: { - '#withAudience':: d.fn(help='Audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver.', args=[d.arg(name='audience', type=d.T.string)]), - withAudience(audience): { serviceAccountToken+: { audience: audience } }, - '#withExpirationSeconds':: d.fn(help='ExpirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes.', args=[d.arg(name='expirationSeconds', type=d.T.integer)]), - withExpirationSeconds(expirationSeconds): { serviceAccountToken+: { expirationSeconds: expirationSeconds } }, - '#withPath':: d.fn(help='Path is the path relative to the mount point of the file to project the token into.', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { serviceAccountToken+: { path: path } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/vsphereVirtualDiskVolumeSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/vsphereVirtualDiskVolumeSource.libsonnet deleted file mode 100644 index baa77e0e166f..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/vsphereVirtualDiskVolumeSource.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='vsphereVirtualDiskVolumeSource', url='', help='Represents a vSphere volume resource.'), - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { fsType: fsType }, - '#withStoragePolicyID':: d.fn(help='Storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.', args=[d.arg(name='storagePolicyID', type=d.T.string)]), - withStoragePolicyID(storagePolicyID): { storagePolicyID: storagePolicyID }, - '#withStoragePolicyName':: d.fn(help='Storage Policy Based Management (SPBM) profile name.', args=[d.arg(name='storagePolicyName', type=d.T.string)]), - withStoragePolicyName(storagePolicyName): { storagePolicyName: storagePolicyName }, - '#withVolumePath':: d.fn(help='Path that identifies vSphere volume vmdk', args=[d.arg(name='volumePath', type=d.T.string)]), - withVolumePath(volumePath): { volumePath: volumePath }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/weightedPodAffinityTerm.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/weightedPodAffinityTerm.libsonnet deleted file mode 100644 index 77bd91e298a1..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/weightedPodAffinityTerm.libsonnet +++ /dev/null @@ -1,39 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='weightedPodAffinityTerm', url='', help='The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)'), - '#podAffinityTerm':: d.obj(help='Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running'), - podAffinityTerm: { - '#labelSelector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - labelSelector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { podAffinityTerm+: { labelSelector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { podAffinityTerm+: { labelSelector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { podAffinityTerm+: { labelSelector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { podAffinityTerm+: { labelSelector+: { matchLabels+: matchLabels } } }, - }, - '#namespaceSelector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - namespaceSelector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { podAffinityTerm+: { namespaceSelector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { podAffinityTerm+: { namespaceSelector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { podAffinityTerm+: { namespaceSelector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { podAffinityTerm+: { namespaceSelector+: { matchLabels+: matchLabels } } }, - }, - '#withNamespaces':: d.fn(help="namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means 'this pod's namespace'", args=[d.arg(name='namespaces', type=d.T.array)]), - withNamespaces(namespaces): { podAffinityTerm+: { namespaces: if std.isArray(v=namespaces) then namespaces else [namespaces] } }, - '#withNamespacesMixin':: d.fn(help="namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means 'this pod's namespace'\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='namespaces', type=d.T.array)]), - withNamespacesMixin(namespaces): { podAffinityTerm+: { namespaces+: if std.isArray(v=namespaces) then namespaces else [namespaces] } }, - '#withTopologyKey':: d.fn(help='This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.', args=[d.arg(name='topologyKey', type=d.T.string)]), - withTopologyKey(topologyKey): { podAffinityTerm+: { topologyKey: topologyKey } }, - }, - '#withWeight':: d.fn(help='weight associated with matching the corresponding podAffinityTerm, in the range 1-100.', args=[d.arg(name='weight', type=d.T.integer)]), - withWeight(weight): { weight: weight }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/windowsSecurityContextOptions.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/windowsSecurityContextOptions.libsonnet deleted file mode 100644 index ee6426faa200..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/core/v1/windowsSecurityContextOptions.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='windowsSecurityContextOptions', url='', help='WindowsSecurityContextOptions contain Windows-specific options and credentials.'), - '#withGmsaCredentialSpec':: d.fn(help='GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.', args=[d.arg(name='gmsaCredentialSpec', type=d.T.string)]), - withGmsaCredentialSpec(gmsaCredentialSpec): { gmsaCredentialSpec: gmsaCredentialSpec }, - '#withGmsaCredentialSpecName':: d.fn(help='GMSACredentialSpecName is the name of the GMSA credential spec to use.', args=[d.arg(name='gmsaCredentialSpecName', type=d.T.string)]), - withGmsaCredentialSpecName(gmsaCredentialSpecName): { gmsaCredentialSpecName: gmsaCredentialSpecName }, - '#withRunAsUserName':: d.fn(help='The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.', args=[d.arg(name='runAsUserName', type=d.T.string)]), - withRunAsUserName(runAsUserName): { runAsUserName: runAsUserName }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/main.libsonnet deleted file mode 100644 index 1b7f8b0952e8..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/main.libsonnet +++ /dev/null @@ -1,6 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='discovery', url='', help=''), - v1: (import 'v1/main.libsonnet'), - v1beta1: (import 'v1beta1/main.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1/endpoint.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1/endpoint.libsonnet deleted file mode 100644 index 06d60f43201b..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1/endpoint.libsonnet +++ /dev/null @@ -1,53 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='endpoint', url='', help='Endpoint represents a single logical "backend" implementing a service.'), - '#conditions':: d.obj(help='EndpointConditions represents the current condition of an endpoint.'), - conditions: { - '#withReady':: d.fn(help='ready indicates that this endpoint is prepared to receive traffic, according to whatever system is managing the endpoint. A nil value indicates an unknown state. In most cases consumers should interpret this unknown state as ready. For compatibility reasons, ready should never be "true" for terminating endpoints.', args=[d.arg(name='ready', type=d.T.boolean)]), - withReady(ready): { conditions+: { ready: ready } }, - '#withServing':: d.fn(help='serving is identical to ready except that it is set regardless of the terminating state of endpoints. This condition should be set to true for a ready endpoint that is terminating. If nil, consumers should defer to the ready condition. This field can be enabled with the EndpointSliceTerminatingCondition feature gate.', args=[d.arg(name='serving', type=d.T.boolean)]), - withServing(serving): { conditions+: { serving: serving } }, - '#withTerminating':: d.fn(help='terminating indicates that this endpoint is terminating. A nil value indicates an unknown state. Consumers should interpret this unknown state to mean that the endpoint is not terminating. This field can be enabled with the EndpointSliceTerminatingCondition feature gate.', args=[d.arg(name='terminating', type=d.T.boolean)]), - withTerminating(terminating): { conditions+: { terminating: terminating } }, - }, - '#hints':: d.obj(help='EndpointHints provides hints describing how an endpoint should be consumed.'), - hints: { - '#withForZones':: d.fn(help='forZones indicates the zone(s) this endpoint should be consumed by to enable topology aware routing.', args=[d.arg(name='forZones', type=d.T.array)]), - withForZones(forZones): { hints+: { forZones: if std.isArray(v=forZones) then forZones else [forZones] } }, - '#withForZonesMixin':: d.fn(help='forZones indicates the zone(s) this endpoint should be consumed by to enable topology aware routing.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='forZones', type=d.T.array)]), - withForZonesMixin(forZones): { hints+: { forZones+: if std.isArray(v=forZones) then forZones else [forZones] } }, - }, - '#targetRef':: d.obj(help='ObjectReference contains enough information to let you inspect or modify the referred object.'), - targetRef: { - '#withApiVersion':: d.fn(help='API version of the referent.', args=[d.arg(name='apiVersion', type=d.T.string)]), - withApiVersion(apiVersion): { targetRef+: { apiVersion: apiVersion } }, - '#withFieldPath':: d.fn(help='If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { targetRef+: { fieldPath: fieldPath } }, - '#withKind':: d.fn(help='Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { targetRef+: { kind: kind } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { targetRef+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { targetRef+: { namespace: namespace } }, - '#withResourceVersion':: d.fn(help='Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { targetRef+: { resourceVersion: resourceVersion } }, - '#withUid':: d.fn(help='UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { targetRef+: { uid: uid } }, - }, - '#withAddresses':: d.fn(help='addresses of this endpoint. The contents of this field are interpreted according to the corresponding EndpointSlice addressType field. Consumers must handle different types of addresses in the context of their own capabilities. This must contain at least one address but no more than 100.', args=[d.arg(name='addresses', type=d.T.array)]), - withAddresses(addresses): { addresses: if std.isArray(v=addresses) then addresses else [addresses] }, - '#withAddressesMixin':: d.fn(help='addresses of this endpoint. The contents of this field are interpreted according to the corresponding EndpointSlice addressType field. Consumers must handle different types of addresses in the context of their own capabilities. This must contain at least one address but no more than 100.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='addresses', type=d.T.array)]), - withAddressesMixin(addresses): { addresses+: if std.isArray(v=addresses) then addresses else [addresses] }, - '#withDeprecatedTopology':: d.fn(help='deprecatedTopology contains topology information part of the v1beta1 API. This field is deprecated, and will be removed when the v1beta1 API is removed (no sooner than kubernetes v1.24). While this field can hold values, it is not writable through the v1 API, and any attempts to write to it will be silently ignored. Topology information can be found in the zone and nodeName fields instead.', args=[d.arg(name='deprecatedTopology', type=d.T.object)]), - withDeprecatedTopology(deprecatedTopology): { deprecatedTopology: deprecatedTopology }, - '#withDeprecatedTopologyMixin':: d.fn(help='deprecatedTopology contains topology information part of the v1beta1 API. This field is deprecated, and will be removed when the v1beta1 API is removed (no sooner than kubernetes v1.24). While this field can hold values, it is not writable through the v1 API, and any attempts to write to it will be silently ignored. Topology information can be found in the zone and nodeName fields instead.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='deprecatedTopology', type=d.T.object)]), - withDeprecatedTopologyMixin(deprecatedTopology): { deprecatedTopology+: deprecatedTopology }, - '#withHostname':: d.fn(help='hostname of this endpoint. This field may be used by consumers of endpoints to distinguish endpoints from each other (e.g. in DNS names). Multiple endpoints which use the same hostname should be considered fungible (e.g. multiple A values in DNS). Must be lowercase and pass DNS Label (RFC 1123) validation.', args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { hostname: hostname }, - '#withNodeName':: d.fn(help='nodeName represents the name of the Node hosting this endpoint. This can be used to determine endpoints local to a Node. This field can be enabled with the EndpointSliceNodeName feature gate.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { nodeName: nodeName }, - '#withZone':: d.fn(help='zone is the name of the Zone this endpoint exists in.', args=[d.arg(name='zone', type=d.T.string)]), - withZone(zone): { zone: zone }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1/endpointConditions.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1/endpointConditions.libsonnet deleted file mode 100644 index 1f0b167e8665..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1/endpointConditions.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='endpointConditions', url='', help='EndpointConditions represents the current condition of an endpoint.'), - '#withReady':: d.fn(help='ready indicates that this endpoint is prepared to receive traffic, according to whatever system is managing the endpoint. A nil value indicates an unknown state. In most cases consumers should interpret this unknown state as ready. For compatibility reasons, ready should never be "true" for terminating endpoints.', args=[d.arg(name='ready', type=d.T.boolean)]), - withReady(ready): { ready: ready }, - '#withServing':: d.fn(help='serving is identical to ready except that it is set regardless of the terminating state of endpoints. This condition should be set to true for a ready endpoint that is terminating. If nil, consumers should defer to the ready condition. This field can be enabled with the EndpointSliceTerminatingCondition feature gate.', args=[d.arg(name='serving', type=d.T.boolean)]), - withServing(serving): { serving: serving }, - '#withTerminating':: d.fn(help='terminating indicates that this endpoint is terminating. A nil value indicates an unknown state. Consumers should interpret this unknown state to mean that the endpoint is not terminating. This field can be enabled with the EndpointSliceTerminatingCondition feature gate.', args=[d.arg(name='terminating', type=d.T.boolean)]), - withTerminating(terminating): { terminating: terminating }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1/endpointHints.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1/endpointHints.libsonnet deleted file mode 100644 index b514b7f56e7e..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1/endpointHints.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='endpointHints', url='', help='EndpointHints provides hints describing how an endpoint should be consumed.'), - '#withForZones':: d.fn(help='forZones indicates the zone(s) this endpoint should be consumed by to enable topology aware routing.', args=[d.arg(name='forZones', type=d.T.array)]), - withForZones(forZones): { forZones: if std.isArray(v=forZones) then forZones else [forZones] }, - '#withForZonesMixin':: d.fn(help='forZones indicates the zone(s) this endpoint should be consumed by to enable topology aware routing.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='forZones', type=d.T.array)]), - withForZonesMixin(forZones): { forZones+: if std.isArray(v=forZones) then forZones else [forZones] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1/endpointPort.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1/endpointPort.libsonnet deleted file mode 100644 index d127c6c79403..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1/endpointPort.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='endpointPort', url='', help='EndpointPort represents a Port used by an EndpointSlice'), - '#withAppProtocol':: d.fn(help='The application protocol for this port. This field follows standard Kubernetes label syntax. Un-prefixed names are reserved for IANA standard service names (as per RFC-6335 and http://www.iana.org/assignments/service-names). Non-standard protocols should use prefixed names such as mycompany.com/my-custom-protocol.', args=[d.arg(name='appProtocol', type=d.T.string)]), - withAppProtocol(appProtocol): { appProtocol: appProtocol }, - '#withName':: d.fn(help="The name of this port. All ports in an EndpointSlice must have a unique name. If the EndpointSlice is dervied from a Kubernetes service, this corresponds to the Service.ports[].name. Name must either be an empty string or pass DNS_LABEL validation: * must be no more than 63 characters long. * must consist of lower case alphanumeric characters or '-'. * must start and end with an alphanumeric character. Default is empty string.", args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withPort':: d.fn(help='The port number of the endpoint. If this is not specified, ports are not restricted and must be interpreted in the context of the specific consumer.', args=[d.arg(name='port', type=d.T.integer)]), - withPort(port): { port: port }, - '#withProtocol':: d.fn(help='The IP protocol for this port. Must be UDP, TCP, or SCTP. Default is TCP.', args=[d.arg(name='protocol', type=d.T.string)]), - withProtocol(protocol): { protocol: protocol }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1/endpointSlice.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1/endpointSlice.libsonnet deleted file mode 100644 index 71d215af578c..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1/endpointSlice.libsonnet +++ /dev/null @@ -1,66 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='endpointSlice', url='', help='EndpointSlice represents a subset of the endpoints that implement a service. For a given service there may be multiple EndpointSlice objects, selected by labels, which must be joined to produce the full set of endpoints.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Endpointslice', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'discovery.k8s.io/v1', - kind: 'EndpointSlice', - } + self.metadata.withName(name=name), - '#withAddressType':: d.fn(help='addressType specifies the type of address carried by this EndpointSlice. All addresses in this slice must be the same type. This field is immutable after creation. The following address types are currently supported: * IPv4: Represents an IPv4 Address. * IPv6: Represents an IPv6 Address. * FQDN: Represents a Fully Qualified Domain Name.', args=[d.arg(name='addressType', type=d.T.string)]), - withAddressType(addressType): { addressType: addressType }, - '#withEndpoints':: d.fn(help='endpoints is a list of unique endpoints in this slice. Each slice may include a maximum of 1000 endpoints.', args=[d.arg(name='endpoints', type=d.T.array)]), - withEndpoints(endpoints): { endpoints: if std.isArray(v=endpoints) then endpoints else [endpoints] }, - '#withEndpointsMixin':: d.fn(help='endpoints is a list of unique endpoints in this slice. Each slice may include a maximum of 1000 endpoints.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='endpoints', type=d.T.array)]), - withEndpointsMixin(endpoints): { endpoints+: if std.isArray(v=endpoints) then endpoints else [endpoints] }, - '#withPorts':: d.fn(help='ports specifies the list of network ports exposed by each endpoint in this slice. Each port must have a unique name. When ports is empty, it indicates that there are no defined ports. When a port is defined with a nil port value, it indicates "all ports". Each slice may include a maximum of 100 ports.', args=[d.arg(name='ports', type=d.T.array)]), - withPorts(ports): { ports: if std.isArray(v=ports) then ports else [ports] }, - '#withPortsMixin':: d.fn(help='ports specifies the list of network ports exposed by each endpoint in this slice. Each port must have a unique name. When ports is empty, it indicates that there are no defined ports. When a port is defined with a nil port value, it indicates "all ports". Each slice may include a maximum of 100 ports.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ports', type=d.T.array)]), - withPortsMixin(ports): { ports+: if std.isArray(v=ports) then ports else [ports] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1/forZone.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1/forZone.libsonnet deleted file mode 100644 index a0b32ee3d2ce..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1/forZone.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='forZone', url='', help='ForZone provides information about which zones should consume this endpoint.'), - '#withName':: d.fn(help='name represents the name of the zone.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1/main.libsonnet deleted file mode 100644 index 4c163e6a845d..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1/main.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1', url='', help=''), - endpoint: (import 'endpoint.libsonnet'), - endpointConditions: (import 'endpointConditions.libsonnet'), - endpointHints: (import 'endpointHints.libsonnet'), - endpointPort: (import 'endpointPort.libsonnet'), - endpointSlice: (import 'endpointSlice.libsonnet'), - forZone: (import 'forZone.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1beta1/endpoint.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1beta1/endpoint.libsonnet deleted file mode 100644 index b79e095c005b..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1beta1/endpoint.libsonnet +++ /dev/null @@ -1,51 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='endpoint', url='', help='Endpoint represents a single logical "backend" implementing a service.'), - '#conditions':: d.obj(help='EndpointConditions represents the current condition of an endpoint.'), - conditions: { - '#withReady':: d.fn(help='ready indicates that this endpoint is prepared to receive traffic, according to whatever system is managing the endpoint. A nil value indicates an unknown state. In most cases consumers should interpret this unknown state as ready. For compatibility reasons, ready should never be "true" for terminating endpoints.', args=[d.arg(name='ready', type=d.T.boolean)]), - withReady(ready): { conditions+: { ready: ready } }, - '#withServing':: d.fn(help='serving is identical to ready except that it is set regardless of the terminating state of endpoints. This condition should be set to true for a ready endpoint that is terminating. If nil, consumers should defer to the ready condition. This field can be enabled with the EndpointSliceTerminatingCondition feature gate.', args=[d.arg(name='serving', type=d.T.boolean)]), - withServing(serving): { conditions+: { serving: serving } }, - '#withTerminating':: d.fn(help='terminating indicates that this endpoint is terminating. A nil value indicates an unknown state. Consumers should interpret this unknown state to mean that the endpoint is not terminating. This field can be enabled with the EndpointSliceTerminatingCondition feature gate.', args=[d.arg(name='terminating', type=d.T.boolean)]), - withTerminating(terminating): { conditions+: { terminating: terminating } }, - }, - '#hints':: d.obj(help='EndpointHints provides hints describing how an endpoint should be consumed.'), - hints: { - '#withForZones':: d.fn(help='forZones indicates the zone(s) this endpoint should be consumed by to enable topology aware routing. May contain a maximum of 8 entries.', args=[d.arg(name='forZones', type=d.T.array)]), - withForZones(forZones): { hints+: { forZones: if std.isArray(v=forZones) then forZones else [forZones] } }, - '#withForZonesMixin':: d.fn(help='forZones indicates the zone(s) this endpoint should be consumed by to enable topology aware routing. May contain a maximum of 8 entries.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='forZones', type=d.T.array)]), - withForZonesMixin(forZones): { hints+: { forZones+: if std.isArray(v=forZones) then forZones else [forZones] } }, - }, - '#targetRef':: d.obj(help='ObjectReference contains enough information to let you inspect or modify the referred object.'), - targetRef: { - '#withApiVersion':: d.fn(help='API version of the referent.', args=[d.arg(name='apiVersion', type=d.T.string)]), - withApiVersion(apiVersion): { targetRef+: { apiVersion: apiVersion } }, - '#withFieldPath':: d.fn(help='If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { targetRef+: { fieldPath: fieldPath } }, - '#withKind':: d.fn(help='Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { targetRef+: { kind: kind } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { targetRef+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { targetRef+: { namespace: namespace } }, - '#withResourceVersion':: d.fn(help='Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { targetRef+: { resourceVersion: resourceVersion } }, - '#withUid':: d.fn(help='UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { targetRef+: { uid: uid } }, - }, - '#withAddresses':: d.fn(help='addresses of this endpoint. The contents of this field are interpreted according to the corresponding EndpointSlice addressType field. Consumers must handle different types of addresses in the context of their own capabilities. This must contain at least one address but no more than 100.', args=[d.arg(name='addresses', type=d.T.array)]), - withAddresses(addresses): { addresses: if std.isArray(v=addresses) then addresses else [addresses] }, - '#withAddressesMixin':: d.fn(help='addresses of this endpoint. The contents of this field are interpreted according to the corresponding EndpointSlice addressType field. Consumers must handle different types of addresses in the context of their own capabilities. This must contain at least one address but no more than 100.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='addresses', type=d.T.array)]), - withAddressesMixin(addresses): { addresses+: if std.isArray(v=addresses) then addresses else [addresses] }, - '#withHostname':: d.fn(help='hostname of this endpoint. This field may be used by consumers of endpoints to distinguish endpoints from each other (e.g. in DNS names). Multiple endpoints which use the same hostname should be considered fungible (e.g. multiple A values in DNS). Must be lowercase and pass DNS Label (RFC 1123) validation.', args=[d.arg(name='hostname', type=d.T.string)]), - withHostname(hostname): { hostname: hostname }, - '#withNodeName':: d.fn(help='nodeName represents the name of the Node hosting this endpoint. This can be used to determine endpoints local to a Node. This field can be enabled with the EndpointSliceNodeName feature gate.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { nodeName: nodeName }, - '#withTopology':: d.fn(help='topology contains arbitrary topology information associated with the endpoint. These key/value pairs must conform with the label format. https://kubernetes.io/docs/concepts/overview/working-with-objects/labels Topology may include a maximum of 16 key/value pairs. This includes, but is not limited to the following well known keys: * kubernetes.io/hostname: the value indicates the hostname of the node\n where the endpoint is located. This should match the corresponding\n node label.\n* topology.kubernetes.io/zone: the value indicates the zone where the\n endpoint is located. This should match the corresponding node label.\n* topology.kubernetes.io/region: the value indicates the region where the\n endpoint is located. This should match the corresponding node label.\nThis field is deprecated and will be removed in future api versions.', args=[d.arg(name='topology', type=d.T.object)]), - withTopology(topology): { topology: topology }, - '#withTopologyMixin':: d.fn(help='topology contains arbitrary topology information associated with the endpoint. These key/value pairs must conform with the label format. https://kubernetes.io/docs/concepts/overview/working-with-objects/labels Topology may include a maximum of 16 key/value pairs. This includes, but is not limited to the following well known keys: * kubernetes.io/hostname: the value indicates the hostname of the node\n where the endpoint is located. This should match the corresponding\n node label.\n* topology.kubernetes.io/zone: the value indicates the zone where the\n endpoint is located. This should match the corresponding node label.\n* topology.kubernetes.io/region: the value indicates the region where the\n endpoint is located. This should match the corresponding node label.\nThis field is deprecated and will be removed in future api versions.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='topology', type=d.T.object)]), - withTopologyMixin(topology): { topology+: topology }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1beta1/endpointConditions.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1beta1/endpointConditions.libsonnet deleted file mode 100644 index 1f0b167e8665..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1beta1/endpointConditions.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='endpointConditions', url='', help='EndpointConditions represents the current condition of an endpoint.'), - '#withReady':: d.fn(help='ready indicates that this endpoint is prepared to receive traffic, according to whatever system is managing the endpoint. A nil value indicates an unknown state. In most cases consumers should interpret this unknown state as ready. For compatibility reasons, ready should never be "true" for terminating endpoints.', args=[d.arg(name='ready', type=d.T.boolean)]), - withReady(ready): { ready: ready }, - '#withServing':: d.fn(help='serving is identical to ready except that it is set regardless of the terminating state of endpoints. This condition should be set to true for a ready endpoint that is terminating. If nil, consumers should defer to the ready condition. This field can be enabled with the EndpointSliceTerminatingCondition feature gate.', args=[d.arg(name='serving', type=d.T.boolean)]), - withServing(serving): { serving: serving }, - '#withTerminating':: d.fn(help='terminating indicates that this endpoint is terminating. A nil value indicates an unknown state. Consumers should interpret this unknown state to mean that the endpoint is not terminating. This field can be enabled with the EndpointSliceTerminatingCondition feature gate.', args=[d.arg(name='terminating', type=d.T.boolean)]), - withTerminating(terminating): { terminating: terminating }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1beta1/endpointHints.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1beta1/endpointHints.libsonnet deleted file mode 100644 index b437b7a2f9d0..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1beta1/endpointHints.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='endpointHints', url='', help='EndpointHints provides hints describing how an endpoint should be consumed.'), - '#withForZones':: d.fn(help='forZones indicates the zone(s) this endpoint should be consumed by to enable topology aware routing. May contain a maximum of 8 entries.', args=[d.arg(name='forZones', type=d.T.array)]), - withForZones(forZones): { forZones: if std.isArray(v=forZones) then forZones else [forZones] }, - '#withForZonesMixin':: d.fn(help='forZones indicates the zone(s) this endpoint should be consumed by to enable topology aware routing. May contain a maximum of 8 entries.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='forZones', type=d.T.array)]), - withForZonesMixin(forZones): { forZones+: if std.isArray(v=forZones) then forZones else [forZones] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1beta1/endpointPort.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1beta1/endpointPort.libsonnet deleted file mode 100644 index d127c6c79403..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1beta1/endpointPort.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='endpointPort', url='', help='EndpointPort represents a Port used by an EndpointSlice'), - '#withAppProtocol':: d.fn(help='The application protocol for this port. This field follows standard Kubernetes label syntax. Un-prefixed names are reserved for IANA standard service names (as per RFC-6335 and http://www.iana.org/assignments/service-names). Non-standard protocols should use prefixed names such as mycompany.com/my-custom-protocol.', args=[d.arg(name='appProtocol', type=d.T.string)]), - withAppProtocol(appProtocol): { appProtocol: appProtocol }, - '#withName':: d.fn(help="The name of this port. All ports in an EndpointSlice must have a unique name. If the EndpointSlice is dervied from a Kubernetes service, this corresponds to the Service.ports[].name. Name must either be an empty string or pass DNS_LABEL validation: * must be no more than 63 characters long. * must consist of lower case alphanumeric characters or '-'. * must start and end with an alphanumeric character. Default is empty string.", args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withPort':: d.fn(help='The port number of the endpoint. If this is not specified, ports are not restricted and must be interpreted in the context of the specific consumer.', args=[d.arg(name='port', type=d.T.integer)]), - withPort(port): { port: port }, - '#withProtocol':: d.fn(help='The IP protocol for this port. Must be UDP, TCP, or SCTP. Default is TCP.', args=[d.arg(name='protocol', type=d.T.string)]), - withProtocol(protocol): { protocol: protocol }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1beta1/endpointSlice.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1beta1/endpointSlice.libsonnet deleted file mode 100644 index 75844b796c02..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1beta1/endpointSlice.libsonnet +++ /dev/null @@ -1,66 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='endpointSlice', url='', help='EndpointSlice represents a subset of the endpoints that implement a service. For a given service there may be multiple EndpointSlice objects, selected by labels, which must be joined to produce the full set of endpoints.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Endpointslice', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'discovery.k8s.io/v1beta1', - kind: 'EndpointSlice', - } + self.metadata.withName(name=name), - '#withAddressType':: d.fn(help='addressType specifies the type of address carried by this EndpointSlice. All addresses in this slice must be the same type. This field is immutable after creation. The following address types are currently supported: * IPv4: Represents an IPv4 Address. * IPv6: Represents an IPv6 Address. * FQDN: Represents a Fully Qualified Domain Name.', args=[d.arg(name='addressType', type=d.T.string)]), - withAddressType(addressType): { addressType: addressType }, - '#withEndpoints':: d.fn(help='endpoints is a list of unique endpoints in this slice. Each slice may include a maximum of 1000 endpoints.', args=[d.arg(name='endpoints', type=d.T.array)]), - withEndpoints(endpoints): { endpoints: if std.isArray(v=endpoints) then endpoints else [endpoints] }, - '#withEndpointsMixin':: d.fn(help='endpoints is a list of unique endpoints in this slice. Each slice may include a maximum of 1000 endpoints.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='endpoints', type=d.T.array)]), - withEndpointsMixin(endpoints): { endpoints+: if std.isArray(v=endpoints) then endpoints else [endpoints] }, - '#withPorts':: d.fn(help='ports specifies the list of network ports exposed by each endpoint in this slice. Each port must have a unique name. When ports is empty, it indicates that there are no defined ports. When a port is defined with a nil port value, it indicates "all ports". Each slice may include a maximum of 100 ports.', args=[d.arg(name='ports', type=d.T.array)]), - withPorts(ports): { ports: if std.isArray(v=ports) then ports else [ports] }, - '#withPortsMixin':: d.fn(help='ports specifies the list of network ports exposed by each endpoint in this slice. Each port must have a unique name. When ports is empty, it indicates that there are no defined ports. When a port is defined with a nil port value, it indicates "all ports". Each slice may include a maximum of 100 ports.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ports', type=d.T.array)]), - withPortsMixin(ports): { ports+: if std.isArray(v=ports) then ports else [ports] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1beta1/forZone.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1beta1/forZone.libsonnet deleted file mode 100644 index a0b32ee3d2ce..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1beta1/forZone.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='forZone', url='', help='ForZone provides information about which zones should consume this endpoint.'), - '#withName':: d.fn(help='name represents the name of the zone.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1beta1/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1beta1/main.libsonnet deleted file mode 100644 index ee824bf0c7cf..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/discovery/v1beta1/main.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1beta1', url='', help=''), - endpoint: (import 'endpoint.libsonnet'), - endpointConditions: (import 'endpointConditions.libsonnet'), - endpointHints: (import 'endpointHints.libsonnet'), - endpointPort: (import 'endpointPort.libsonnet'), - endpointSlice: (import 'endpointSlice.libsonnet'), - forZone: (import 'forZone.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/events/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/events/main.libsonnet deleted file mode 100644 index c60a9f4d15d4..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/events/main.libsonnet +++ /dev/null @@ -1,6 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='events', url='', help=''), - v1: (import 'v1/main.libsonnet'), - v1beta1: (import 'v1beta1/main.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/events/v1/event.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/events/v1/event.libsonnet deleted file mode 100644 index f7e06d3a4dcb..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/events/v1/event.libsonnet +++ /dev/null @@ -1,124 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='event', url='', help='Event is a report of an event somewhere in the cluster. It generally denotes some state change in the system. Events have a limited retention time and triggers and messages may evolve with time. Event consumers should not rely on the timing of an event with a given Reason reflecting a consistent underlying trigger, or the continued existence of events with that Reason. Events should be treated as informative, best-effort, supplemental data.'), - '#deprecatedSource':: d.obj(help='EventSource contains information for an event.'), - deprecatedSource: { - '#withComponent':: d.fn(help='Component from which the event is generated.', args=[d.arg(name='component', type=d.T.string)]), - withComponent(component): { deprecatedSource+: { component: component } }, - '#withHost':: d.fn(help='Node name on which the event is generated.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { deprecatedSource+: { host: host } }, - }, - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Event', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'events.k8s.io/v1', - kind: 'Event', - } + self.metadata.withName(name=name), - '#regarding':: d.obj(help='ObjectReference contains enough information to let you inspect or modify the referred object.'), - regarding: { - '#withApiVersion':: d.fn(help='API version of the referent.', args=[d.arg(name='apiVersion', type=d.T.string)]), - withApiVersion(apiVersion): { regarding+: { apiVersion: apiVersion } }, - '#withFieldPath':: d.fn(help='If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { regarding+: { fieldPath: fieldPath } }, - '#withKind':: d.fn(help='Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { regarding+: { kind: kind } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { regarding+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { regarding+: { namespace: namespace } }, - '#withResourceVersion':: d.fn(help='Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { regarding+: { resourceVersion: resourceVersion } }, - '#withUid':: d.fn(help='UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { regarding+: { uid: uid } }, - }, - '#related':: d.obj(help='ObjectReference contains enough information to let you inspect or modify the referred object.'), - related: { - '#withApiVersion':: d.fn(help='API version of the referent.', args=[d.arg(name='apiVersion', type=d.T.string)]), - withApiVersion(apiVersion): { related+: { apiVersion: apiVersion } }, - '#withFieldPath':: d.fn(help='If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { related+: { fieldPath: fieldPath } }, - '#withKind':: d.fn(help='Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { related+: { kind: kind } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { related+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { related+: { namespace: namespace } }, - '#withResourceVersion':: d.fn(help='Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { related+: { resourceVersion: resourceVersion } }, - '#withUid':: d.fn(help='UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { related+: { uid: uid } }, - }, - '#series':: d.obj(help='EventSeries contain information on series of events, i.e. thing that was/is happening continuously for some time. How often to update the EventSeries is up to the event reporters. The default event reporter in "k8s.io/client-go/tools/events/event_broadcaster.go" shows how this struct is updated on heartbeats and can guide customized reporter implementations.'), - series: { - '#withCount':: d.fn(help='count is the number of occurrences in this series up to the last heartbeat time.', args=[d.arg(name='count', type=d.T.integer)]), - withCount(count): { series+: { count: count } }, - '#withLastObservedTime':: d.fn(help='MicroTime is version of Time with microsecond level precision.', args=[d.arg(name='lastObservedTime', type=d.T.string)]), - withLastObservedTime(lastObservedTime): { series+: { lastObservedTime: lastObservedTime } }, - }, - '#withAction':: d.fn(help='action is what action was taken/failed regarding to the regarding object. It is machine-readable. This field cannot be empty for new Events and it can have at most 128 characters.', args=[d.arg(name='action', type=d.T.string)]), - withAction(action): { action: action }, - '#withDeprecatedCount':: d.fn(help='deprecatedCount is the deprecated field assuring backward compatibility with core.v1 Event type.', args=[d.arg(name='deprecatedCount', type=d.T.integer)]), - withDeprecatedCount(deprecatedCount): { deprecatedCount: deprecatedCount }, - '#withDeprecatedFirstTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deprecatedFirstTimestamp', type=d.T.string)]), - withDeprecatedFirstTimestamp(deprecatedFirstTimestamp): { deprecatedFirstTimestamp: deprecatedFirstTimestamp }, - '#withDeprecatedLastTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deprecatedLastTimestamp', type=d.T.string)]), - withDeprecatedLastTimestamp(deprecatedLastTimestamp): { deprecatedLastTimestamp: deprecatedLastTimestamp }, - '#withEventTime':: d.fn(help='MicroTime is version of Time with microsecond level precision.', args=[d.arg(name='eventTime', type=d.T.string)]), - withEventTime(eventTime): { eventTime: eventTime }, - '#withNote':: d.fn(help='note is a human-readable description of the status of this operation. Maximal length of the note is 1kB, but libraries should be prepared to handle values up to 64kB.', args=[d.arg(name='note', type=d.T.string)]), - withNote(note): { note: note }, - '#withReason':: d.fn(help='reason is why the action was taken. It is human-readable. This field cannot be empty for new Events and it can have at most 128 characters.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#withReportingController':: d.fn(help='reportingController is the name of the controller that emitted this Event, e.g. `kubernetes.io/kubelet`. This field cannot be empty for new Events.', args=[d.arg(name='reportingController', type=d.T.string)]), - withReportingController(reportingController): { reportingController: reportingController }, - '#withReportingInstance':: d.fn(help='reportingInstance is the ID of the controller instance, e.g. `kubelet-xyzf`. This field cannot be empty for new Events and it can have at most 128 characters.', args=[d.arg(name='reportingInstance', type=d.T.string)]), - withReportingInstance(reportingInstance): { reportingInstance: reportingInstance }, - '#withType':: d.fn(help='type is the type of this event (Normal, Warning), new types could be added in the future. It is machine-readable. This field cannot be empty for new Events.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/events/v1/eventSeries.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/events/v1/eventSeries.libsonnet deleted file mode 100644 index a88c1e1734c8..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/events/v1/eventSeries.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='eventSeries', url='', help='EventSeries contain information on series of events, i.e. thing that was/is happening continuously for some time. How often to update the EventSeries is up to the event reporters. The default event reporter in "k8s.io/client-go/tools/events/event_broadcaster.go" shows how this struct is updated on heartbeats and can guide customized reporter implementations.'), - '#withCount':: d.fn(help='count is the number of occurrences in this series up to the last heartbeat time.', args=[d.arg(name='count', type=d.T.integer)]), - withCount(count): { count: count }, - '#withLastObservedTime':: d.fn(help='MicroTime is version of Time with microsecond level precision.', args=[d.arg(name='lastObservedTime', type=d.T.string)]), - withLastObservedTime(lastObservedTime): { lastObservedTime: lastObservedTime }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/events/v1/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/events/v1/main.libsonnet deleted file mode 100644 index 8e90a2e00c4c..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/events/v1/main.libsonnet +++ /dev/null @@ -1,6 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1', url='', help=''), - event: (import 'event.libsonnet'), - eventSeries: (import 'eventSeries.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/events/v1beta1/event.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/events/v1beta1/event.libsonnet deleted file mode 100644 index 14199180be28..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/events/v1beta1/event.libsonnet +++ /dev/null @@ -1,124 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='event', url='', help='Event is a report of an event somewhere in the cluster. It generally denotes some state change in the system. Events have a limited retention time and triggers and messages may evolve with time. Event consumers should not rely on the timing of an event with a given Reason reflecting a consistent underlying trigger, or the continued existence of events with that Reason. Events should be treated as informative, best-effort, supplemental data.'), - '#deprecatedSource':: d.obj(help='EventSource contains information for an event.'), - deprecatedSource: { - '#withComponent':: d.fn(help='Component from which the event is generated.', args=[d.arg(name='component', type=d.T.string)]), - withComponent(component): { deprecatedSource+: { component: component } }, - '#withHost':: d.fn(help='Node name on which the event is generated.', args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { deprecatedSource+: { host: host } }, - }, - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Event', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'events.k8s.io/v1beta1', - kind: 'Event', - } + self.metadata.withName(name=name), - '#regarding':: d.obj(help='ObjectReference contains enough information to let you inspect or modify the referred object.'), - regarding: { - '#withApiVersion':: d.fn(help='API version of the referent.', args=[d.arg(name='apiVersion', type=d.T.string)]), - withApiVersion(apiVersion): { regarding+: { apiVersion: apiVersion } }, - '#withFieldPath':: d.fn(help='If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { regarding+: { fieldPath: fieldPath } }, - '#withKind':: d.fn(help='Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { regarding+: { kind: kind } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { regarding+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { regarding+: { namespace: namespace } }, - '#withResourceVersion':: d.fn(help='Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { regarding+: { resourceVersion: resourceVersion } }, - '#withUid':: d.fn(help='UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { regarding+: { uid: uid } }, - }, - '#related':: d.obj(help='ObjectReference contains enough information to let you inspect or modify the referred object.'), - related: { - '#withApiVersion':: d.fn(help='API version of the referent.', args=[d.arg(name='apiVersion', type=d.T.string)]), - withApiVersion(apiVersion): { related+: { apiVersion: apiVersion } }, - '#withFieldPath':: d.fn(help='If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { related+: { fieldPath: fieldPath } }, - '#withKind':: d.fn(help='Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { related+: { kind: kind } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { related+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { related+: { namespace: namespace } }, - '#withResourceVersion':: d.fn(help='Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { related+: { resourceVersion: resourceVersion } }, - '#withUid':: d.fn(help='UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { related+: { uid: uid } }, - }, - '#series':: d.obj(help='EventSeries contain information on series of events, i.e. thing that was/is happening continuously for some time.'), - series: { - '#withCount':: d.fn(help='count is the number of occurrences in this series up to the last heartbeat time.', args=[d.arg(name='count', type=d.T.integer)]), - withCount(count): { series+: { count: count } }, - '#withLastObservedTime':: d.fn(help='MicroTime is version of Time with microsecond level precision.', args=[d.arg(name='lastObservedTime', type=d.T.string)]), - withLastObservedTime(lastObservedTime): { series+: { lastObservedTime: lastObservedTime } }, - }, - '#withAction':: d.fn(help='action is what action was taken/failed regarding to the regarding object. It is machine-readable. This field can have at most 128 characters.', args=[d.arg(name='action', type=d.T.string)]), - withAction(action): { action: action }, - '#withDeprecatedCount':: d.fn(help='deprecatedCount is the deprecated field assuring backward compatibility with core.v1 Event type.', args=[d.arg(name='deprecatedCount', type=d.T.integer)]), - withDeprecatedCount(deprecatedCount): { deprecatedCount: deprecatedCount }, - '#withDeprecatedFirstTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deprecatedFirstTimestamp', type=d.T.string)]), - withDeprecatedFirstTimestamp(deprecatedFirstTimestamp): { deprecatedFirstTimestamp: deprecatedFirstTimestamp }, - '#withDeprecatedLastTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deprecatedLastTimestamp', type=d.T.string)]), - withDeprecatedLastTimestamp(deprecatedLastTimestamp): { deprecatedLastTimestamp: deprecatedLastTimestamp }, - '#withEventTime':: d.fn(help='MicroTime is version of Time with microsecond level precision.', args=[d.arg(name='eventTime', type=d.T.string)]), - withEventTime(eventTime): { eventTime: eventTime }, - '#withNote':: d.fn(help='note is a human-readable description of the status of this operation. Maximal length of the note is 1kB, but libraries should be prepared to handle values up to 64kB.', args=[d.arg(name='note', type=d.T.string)]), - withNote(note): { note: note }, - '#withReason':: d.fn(help='reason is why the action was taken. It is human-readable. This field can have at most 128 characters.', args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#withReportingController':: d.fn(help='reportingController is the name of the controller that emitted this Event, e.g. `kubernetes.io/kubelet`. This field cannot be empty for new Events.', args=[d.arg(name='reportingController', type=d.T.string)]), - withReportingController(reportingController): { reportingController: reportingController }, - '#withReportingInstance':: d.fn(help='reportingInstance is the ID of the controller instance, e.g. `kubelet-xyzf`. This field cannot be empty for new Events and it can have at most 128 characters.', args=[d.arg(name='reportingInstance', type=d.T.string)]), - withReportingInstance(reportingInstance): { reportingInstance: reportingInstance }, - '#withType':: d.fn(help='type is the type of this event (Normal, Warning), new types could be added in the future. It is machine-readable.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/events/v1beta1/eventSeries.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/events/v1beta1/eventSeries.libsonnet deleted file mode 100644 index dd1a98ccaf98..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/events/v1beta1/eventSeries.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='eventSeries', url='', help='EventSeries contain information on series of events, i.e. thing that was/is happening continuously for some time.'), - '#withCount':: d.fn(help='count is the number of occurrences in this series up to the last heartbeat time.', args=[d.arg(name='count', type=d.T.integer)]), - withCount(count): { count: count }, - '#withLastObservedTime':: d.fn(help='MicroTime is version of Time with microsecond level precision.', args=[d.arg(name='lastObservedTime', type=d.T.string)]), - withLastObservedTime(lastObservedTime): { lastObservedTime: lastObservedTime }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/events/v1beta1/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/events/v1beta1/main.libsonnet deleted file mode 100644 index 34c50897a1cb..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/events/v1beta1/main.libsonnet +++ /dev/null @@ -1,6 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1beta1', url='', help=''), - event: (import 'event.libsonnet'), - eventSeries: (import 'eventSeries.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/extensions/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/extensions/main.libsonnet deleted file mode 100644 index d67bd0cf44e9..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/extensions/main.libsonnet +++ /dev/null @@ -1,5 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='extensions', url='', help=''), - v1beta1: (import 'v1beta1/main.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/extensions/v1beta1/httpIngressPath.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/extensions/v1beta1/httpIngressPath.libsonnet deleted file mode 100644 index 75e77b0c68d4..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/extensions/v1beta1/httpIngressPath.libsonnet +++ /dev/null @@ -1,26 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='httpIngressPath', url='', help='HTTPIngressPath associates a path with a backend. Incoming urls matching the path are forwarded to the backend.'), - '#backend':: d.obj(help='IngressBackend describes all endpoints for a given service and port.'), - backend: { - '#resource':: d.obj(help='TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace.'), - resource: { - '#withApiGroup':: d.fn(help='APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.', args=[d.arg(name='apiGroup', type=d.T.string)]), - withApiGroup(apiGroup): { backend+: { resource+: { apiGroup: apiGroup } } }, - '#withKind':: d.fn(help='Kind is the type of resource being referenced', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { backend+: { resource+: { kind: kind } } }, - '#withName':: d.fn(help='Name is the name of resource being referenced', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { backend+: { resource+: { name: name } } }, - }, - '#withServiceName':: d.fn(help='Specifies the name of the referenced service.', args=[d.arg(name='serviceName', type=d.T.string)]), - withServiceName(serviceName): { backend+: { serviceName: serviceName } }, - '#withServicePort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='servicePort', type=d.T.string)]), - withServicePort(servicePort): { backend+: { servicePort: servicePort } }, - }, - '#withPath':: d.fn(help="Path is matched against the path of an incoming request. Currently it can contain characters disallowed from the conventional 'path' part of a URL as defined by RFC 3986. Paths must begin with a '/'. When unspecified, all paths from incoming requests are matched.", args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { path: path }, - '#withPathType':: d.fn(help="PathType determines the interpretation of the Path matching. PathType can be one of the following values: * Exact: Matches the URL path exactly. * Prefix: Matches based on a URL path prefix split by '/'. Matching is\n done on a path element by element basis. A path element refers is the\n list of labels in the path split by the '/' separator. A request is a\n match for path p if every p is an element-wise prefix of p of the\n request path. Note that if the last element of the path is a substring\n of the last element in request path, it is not a match (e.g. /foo/bar\n matches /foo/bar/baz, but does not match /foo/barbaz).\n* ImplementationSpecific: Interpretation of the Path matching is up to\n the IngressClass. Implementations can treat this as a separate PathType\n or treat it identically to Prefix or Exact path types.\nImplementations are required to support all path types. Defaults to ImplementationSpecific.", args=[d.arg(name='pathType', type=d.T.string)]), - withPathType(pathType): { pathType: pathType }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/extensions/v1beta1/httpIngressRuleValue.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/extensions/v1beta1/httpIngressRuleValue.libsonnet deleted file mode 100644 index 31169937a555..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/extensions/v1beta1/httpIngressRuleValue.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='httpIngressRuleValue', url='', help="HTTPIngressRuleValue is a list of http selectors pointing to backends. In the example: http:///? -> backend where where parts of the url correspond to RFC 3986, this resource will be used to match against everything after the last '/' and before the first '?' or '#'."), - '#withPaths':: d.fn(help='A collection of paths that map requests to backends.', args=[d.arg(name='paths', type=d.T.array)]), - withPaths(paths): { paths: if std.isArray(v=paths) then paths else [paths] }, - '#withPathsMixin':: d.fn(help='A collection of paths that map requests to backends.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='paths', type=d.T.array)]), - withPathsMixin(paths): { paths+: if std.isArray(v=paths) then paths else [paths] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/extensions/v1beta1/ingress.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/extensions/v1beta1/ingress.libsonnet deleted file mode 100644 index 680787571a4d..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/extensions/v1beta1/ingress.libsonnet +++ /dev/null @@ -1,85 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='ingress', url='', help='Ingress is a collection of rules that allow inbound connections to reach the endpoints defined by a backend. An Ingress can be configured to give services externally-reachable urls, load balance traffic, terminate SSL, offer name based virtual hosting etc. DEPRECATED - This group version of Ingress is deprecated by networking.k8s.io/v1beta1 Ingress. See the release notes for more information.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Ingress', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'extensions/v1beta1', - kind: 'Ingress', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='IngressSpec describes the Ingress the user wishes to exist.'), - spec: { - '#backend':: d.obj(help='IngressBackend describes all endpoints for a given service and port.'), - backend: { - '#resource':: d.obj(help='TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace.'), - resource: { - '#withApiGroup':: d.fn(help='APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.', args=[d.arg(name='apiGroup', type=d.T.string)]), - withApiGroup(apiGroup): { spec+: { backend+: { resource+: { apiGroup: apiGroup } } } }, - '#withKind':: d.fn(help='Kind is the type of resource being referenced', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { backend+: { resource+: { kind: kind } } } }, - '#withName':: d.fn(help='Name is the name of resource being referenced', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { backend+: { resource+: { name: name } } } }, - }, - '#withServiceName':: d.fn(help='Specifies the name of the referenced service.', args=[d.arg(name='serviceName', type=d.T.string)]), - withServiceName(serviceName): { spec+: { backend+: { serviceName: serviceName } } }, - '#withServicePort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='servicePort', type=d.T.string)]), - withServicePort(servicePort): { spec+: { backend+: { servicePort: servicePort } } }, - }, - '#withIngressClassName':: d.fn(help='IngressClassName is the name of the IngressClass cluster resource. The associated IngressClass defines which controller will implement the resource. This replaces the deprecated `kubernetes.io/ingress.class` annotation. For backwards compatibility, when that annotation is set, it must be given precedence over this field. The controller may emit a warning if the field and annotation have different values. Implementations of this API should ignore Ingresses without a class specified. An IngressClass resource may be marked as default, which can be used to set a default value for this field. For more information, refer to the IngressClass documentation.', args=[d.arg(name='ingressClassName', type=d.T.string)]), - withIngressClassName(ingressClassName): { spec+: { ingressClassName: ingressClassName } }, - '#withRules':: d.fn(help='A list of host rules used to configure the Ingress. If unspecified, or no rule matches, all traffic is sent to the default backend.', args=[d.arg(name='rules', type=d.T.array)]), - withRules(rules): { spec+: { rules: if std.isArray(v=rules) then rules else [rules] } }, - '#withRulesMixin':: d.fn(help='A list of host rules used to configure the Ingress. If unspecified, or no rule matches, all traffic is sent to the default backend.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='rules', type=d.T.array)]), - withRulesMixin(rules): { spec+: { rules+: if std.isArray(v=rules) then rules else [rules] } }, - '#withTls':: d.fn(help='TLS configuration. Currently the Ingress only supports a single TLS port, 443. If multiple members of this list specify different hosts, they will be multiplexed on the same port according to the hostname specified through the SNI TLS extension, if the ingress controller fulfilling the ingress supports SNI.', args=[d.arg(name='tls', type=d.T.array)]), - withTls(tls): { spec+: { tls: if std.isArray(v=tls) then tls else [tls] } }, - '#withTlsMixin':: d.fn(help='TLS configuration. Currently the Ingress only supports a single TLS port, 443. If multiple members of this list specify different hosts, they will be multiplexed on the same port according to the hostname specified through the SNI TLS extension, if the ingress controller fulfilling the ingress supports SNI.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='tls', type=d.T.array)]), - withTlsMixin(tls): { spec+: { tls+: if std.isArray(v=tls) then tls else [tls] } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/extensions/v1beta1/ingressBackend.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/extensions/v1beta1/ingressBackend.libsonnet deleted file mode 100644 index 1106f3161877..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/extensions/v1beta1/ingressBackend.libsonnet +++ /dev/null @@ -1,19 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='ingressBackend', url='', help='IngressBackend describes all endpoints for a given service and port.'), - '#resource':: d.obj(help='TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace.'), - resource: { - '#withApiGroup':: d.fn(help='APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.', args=[d.arg(name='apiGroup', type=d.T.string)]), - withApiGroup(apiGroup): { resource+: { apiGroup: apiGroup } }, - '#withKind':: d.fn(help='Kind is the type of resource being referenced', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { resource+: { kind: kind } }, - '#withName':: d.fn(help='Name is the name of resource being referenced', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { resource+: { name: name } }, - }, - '#withServiceName':: d.fn(help='Specifies the name of the referenced service.', args=[d.arg(name='serviceName', type=d.T.string)]), - withServiceName(serviceName): { serviceName: serviceName }, - '#withServicePort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='servicePort', type=d.T.string)]), - withServicePort(servicePort): { servicePort: servicePort }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/extensions/v1beta1/ingressRule.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/extensions/v1beta1/ingressRule.libsonnet deleted file mode 100644 index 3a0a5dca509d..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/extensions/v1beta1/ingressRule.libsonnet +++ /dev/null @@ -1,15 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='ingressRule', url='', help='IngressRule represents the rules mapping the paths under a specified host to the related backend services. Incoming requests are first evaluated for a host match, then routed to the backend associated with the matching IngressRuleValue.'), - '#http':: d.obj(help="HTTPIngressRuleValue is a list of http selectors pointing to backends. In the example: http:///? -> backend where where parts of the url correspond to RFC 3986, this resource will be used to match against everything after the last '/' and before the first '?' or '#'."), - http: { - '#withPaths':: d.fn(help='A collection of paths that map requests to backends.', args=[d.arg(name='paths', type=d.T.array)]), - withPaths(paths): { http+: { paths: if std.isArray(v=paths) then paths else [paths] } }, - '#withPathsMixin':: d.fn(help='A collection of paths that map requests to backends.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='paths', type=d.T.array)]), - withPathsMixin(paths): { http+: { paths+: if std.isArray(v=paths) then paths else [paths] } }, - }, - '#withHost':: d.fn(help="Host is the fully qualified domain name of a network host, as defined by RFC 3986. Note the following deviations from the 'host' part of the URI as defined in RFC 3986: 1. IPs are not allowed. Currently an IngressRuleValue can only apply to\n the IP in the Spec of the parent Ingress.\n2. The `:` delimiter is not respected because ports are not allowed.\n\t Currently the port of an Ingress is implicitly :80 for http and\n\t :443 for https.\nBoth these may change in the future. Incoming requests are matched against the host before the IngressRuleValue. If the host is unspecified, the Ingress routes all traffic based on the specified IngressRuleValue.\n\nHost can be 'precise' which is a domain name without the terminating dot of a network host (e.g. 'foo.bar.com') or 'wildcard', which is a domain name prefixed with a single wildcard label (e.g. '*.foo.com'). The wildcard character '*' must appear by itself as the first DNS label and matches only a single label. You cannot have a wildcard label by itself (e.g. Host == '*'). Requests will be matched against the Host field in the following way: 1. If Host is precise, the request matches this rule if the http host header is equal to Host. 2. If Host is a wildcard, then the request matches this rule if the http host header is to equal to the suffix (removing the first label) of the wildcard rule.", args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { host: host }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/extensions/v1beta1/ingressSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/extensions/v1beta1/ingressSpec.libsonnet deleted file mode 100644 index a61df751c899..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/extensions/v1beta1/ingressSpec.libsonnet +++ /dev/null @@ -1,32 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='ingressSpec', url='', help='IngressSpec describes the Ingress the user wishes to exist.'), - '#backend':: d.obj(help='IngressBackend describes all endpoints for a given service and port.'), - backend: { - '#resource':: d.obj(help='TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace.'), - resource: { - '#withApiGroup':: d.fn(help='APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.', args=[d.arg(name='apiGroup', type=d.T.string)]), - withApiGroup(apiGroup): { backend+: { resource+: { apiGroup: apiGroup } } }, - '#withKind':: d.fn(help='Kind is the type of resource being referenced', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { backend+: { resource+: { kind: kind } } }, - '#withName':: d.fn(help='Name is the name of resource being referenced', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { backend+: { resource+: { name: name } } }, - }, - '#withServiceName':: d.fn(help='Specifies the name of the referenced service.', args=[d.arg(name='serviceName', type=d.T.string)]), - withServiceName(serviceName): { backend+: { serviceName: serviceName } }, - '#withServicePort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='servicePort', type=d.T.string)]), - withServicePort(servicePort): { backend+: { servicePort: servicePort } }, - }, - '#withIngressClassName':: d.fn(help='IngressClassName is the name of the IngressClass cluster resource. The associated IngressClass defines which controller will implement the resource. This replaces the deprecated `kubernetes.io/ingress.class` annotation. For backwards compatibility, when that annotation is set, it must be given precedence over this field. The controller may emit a warning if the field and annotation have different values. Implementations of this API should ignore Ingresses without a class specified. An IngressClass resource may be marked as default, which can be used to set a default value for this field. For more information, refer to the IngressClass documentation.', args=[d.arg(name='ingressClassName', type=d.T.string)]), - withIngressClassName(ingressClassName): { ingressClassName: ingressClassName }, - '#withRules':: d.fn(help='A list of host rules used to configure the Ingress. If unspecified, or no rule matches, all traffic is sent to the default backend.', args=[d.arg(name='rules', type=d.T.array)]), - withRules(rules): { rules: if std.isArray(v=rules) then rules else [rules] }, - '#withRulesMixin':: d.fn(help='A list of host rules used to configure the Ingress. If unspecified, or no rule matches, all traffic is sent to the default backend.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='rules', type=d.T.array)]), - withRulesMixin(rules): { rules+: if std.isArray(v=rules) then rules else [rules] }, - '#withTls':: d.fn(help='TLS configuration. Currently the Ingress only supports a single TLS port, 443. If multiple members of this list specify different hosts, they will be multiplexed on the same port according to the hostname specified through the SNI TLS extension, if the ingress controller fulfilling the ingress supports SNI.', args=[d.arg(name='tls', type=d.T.array)]), - withTls(tls): { tls: if std.isArray(v=tls) then tls else [tls] }, - '#withTlsMixin':: d.fn(help='TLS configuration. Currently the Ingress only supports a single TLS port, 443. If multiple members of this list specify different hosts, they will be multiplexed on the same port according to the hostname specified through the SNI TLS extension, if the ingress controller fulfilling the ingress supports SNI.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='tls', type=d.T.array)]), - withTlsMixin(tls): { tls+: if std.isArray(v=tls) then tls else [tls] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/extensions/v1beta1/ingressStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/extensions/v1beta1/ingressStatus.libsonnet deleted file mode 100644 index 697b5b33c1a1..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/extensions/v1beta1/ingressStatus.libsonnet +++ /dev/null @@ -1,13 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='ingressStatus', url='', help='IngressStatus describe the current state of the Ingress.'), - '#loadBalancer':: d.obj(help='LoadBalancerStatus represents the status of a load-balancer.'), - loadBalancer: { - '#withIngress':: d.fn(help='Ingress is a list containing ingress points for the load-balancer. Traffic intended for the service should be sent to these ingress points.', args=[d.arg(name='ingress', type=d.T.array)]), - withIngress(ingress): { loadBalancer+: { ingress: if std.isArray(v=ingress) then ingress else [ingress] } }, - '#withIngressMixin':: d.fn(help='Ingress is a list containing ingress points for the load-balancer. Traffic intended for the service should be sent to these ingress points.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ingress', type=d.T.array)]), - withIngressMixin(ingress): { loadBalancer+: { ingress+: if std.isArray(v=ingress) then ingress else [ingress] } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/extensions/v1beta1/ingressTLS.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/extensions/v1beta1/ingressTLS.libsonnet deleted file mode 100644 index 0cddf5a4e45f..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/extensions/v1beta1/ingressTLS.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='ingressTLS', url='', help='IngressTLS describes the transport layer security associated with an Ingress.'), - '#withHosts':: d.fn(help='Hosts are a list of hosts included in the TLS certificate. The values in this list must match the name/s used in the tlsSecret. Defaults to the wildcard host setting for the loadbalancer controller fulfilling this Ingress, if left unspecified.', args=[d.arg(name='hosts', type=d.T.array)]), - withHosts(hosts): { hosts: if std.isArray(v=hosts) then hosts else [hosts] }, - '#withHostsMixin':: d.fn(help='Hosts are a list of hosts included in the TLS certificate. The values in this list must match the name/s used in the tlsSecret. Defaults to the wildcard host setting for the loadbalancer controller fulfilling this Ingress, if left unspecified.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='hosts', type=d.T.array)]), - withHostsMixin(hosts): { hosts+: if std.isArray(v=hosts) then hosts else [hosts] }, - '#withSecretName':: d.fn(help='SecretName is the name of the secret used to terminate SSL traffic on 443. Field is left optional to allow SSL routing based on SNI hostname alone. If the SNI host in a listener conflicts with the "Host" header field used by an IngressRule, the SNI host is used for termination and value of the Host header is used for routing.', args=[d.arg(name='secretName', type=d.T.string)]), - withSecretName(secretName): { secretName: secretName }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/extensions/v1beta1/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/extensions/v1beta1/main.libsonnet deleted file mode 100644 index c12f3f9af7c7..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/extensions/v1beta1/main.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1beta1', url='', help=''), - httpIngressPath: (import 'httpIngressPath.libsonnet'), - httpIngressRuleValue: (import 'httpIngressRuleValue.libsonnet'), - ingress: (import 'ingress.libsonnet'), - ingressBackend: (import 'ingressBackend.libsonnet'), - ingressRule: (import 'ingressRule.libsonnet'), - ingressSpec: (import 'ingressSpec.libsonnet'), - ingressStatus: (import 'ingressStatus.libsonnet'), - ingressTLS: (import 'ingressTLS.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/main.libsonnet deleted file mode 100644 index f20b724e04c6..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/main.libsonnet +++ /dev/null @@ -1,5 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='flowcontrol', url='', help=''), - v1beta1: (import 'v1beta1/main.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/flowDistinguisherMethod.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/flowDistinguisherMethod.libsonnet deleted file mode 100644 index 649e1f633c3e..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/flowDistinguisherMethod.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='flowDistinguisherMethod', url='', help='FlowDistinguisherMethod specifies the method of a flow distinguisher.'), - '#withType':: d.fn(help='`type` is the type of flow distinguisher method The supported types are "ByUser" and "ByNamespace". Required.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/flowSchema.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/flowSchema.libsonnet deleted file mode 100644 index a5ad1c8e9d6e..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/flowSchema.libsonnet +++ /dev/null @@ -1,75 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='flowSchema', url='', help='FlowSchema defines the schema of a group of flows. Note that a flow is made up of a set of inbound API requests with similar attributes and is identified by a pair of strings: the name of the FlowSchema and a "flow distinguisher".'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Flowschema', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'flowcontrol.apiserver.k8s.io/v1beta1', - kind: 'FlowSchema', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help="FlowSchemaSpec describes how the FlowSchema's specification looks like."), - spec: { - '#distinguisherMethod':: d.obj(help='FlowDistinguisherMethod specifies the method of a flow distinguisher.'), - distinguisherMethod: { - '#withType':: d.fn(help='`type` is the type of flow distinguisher method The supported types are "ByUser" and "ByNamespace". Required.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { distinguisherMethod+: { type: type } } }, - }, - '#priorityLevelConfiguration':: d.obj(help='PriorityLevelConfigurationReference contains information that points to the "request-priority" being used.'), - priorityLevelConfiguration: { - '#withName':: d.fn(help='`name` is the name of the priority level configuration being referenced Required.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { priorityLevelConfiguration+: { name: name } } }, - }, - '#withMatchingPrecedence':: d.fn(help='`matchingPrecedence` is used to choose among the FlowSchemas that match a given request. The chosen FlowSchema is among those with the numerically lowest (which we take to be logically highest) MatchingPrecedence. Each MatchingPrecedence value must be ranged in [1,10000]. Note that if the precedence is not specified, it will be set to 1000 as default.', args=[d.arg(name='matchingPrecedence', type=d.T.integer)]), - withMatchingPrecedence(matchingPrecedence): { spec+: { matchingPrecedence: matchingPrecedence } }, - '#withRules':: d.fn(help='`rules` describes which requests will match this flow schema. This FlowSchema matches a request if and only if at least one member of rules matches the request. if it is an empty slice, there will be no requests matching the FlowSchema.', args=[d.arg(name='rules', type=d.T.array)]), - withRules(rules): { spec+: { rules: if std.isArray(v=rules) then rules else [rules] } }, - '#withRulesMixin':: d.fn(help='`rules` describes which requests will match this flow schema. This FlowSchema matches a request if and only if at least one member of rules matches the request. if it is an empty slice, there will be no requests matching the FlowSchema.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='rules', type=d.T.array)]), - withRulesMixin(rules): { spec+: { rules+: if std.isArray(v=rules) then rules else [rules] } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/flowSchemaCondition.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/flowSchemaCondition.libsonnet deleted file mode 100644 index 9c20d48508e7..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/flowSchemaCondition.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='flowSchemaCondition', url='', help='FlowSchemaCondition describes conditions for a FlowSchema.'), - '#withLastTransitionTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastTransitionTime', type=d.T.string)]), - withLastTransitionTime(lastTransitionTime): { lastTransitionTime: lastTransitionTime }, - '#withMessage':: d.fn(help='`message` is a human-readable message indicating details about last transition.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withReason':: d.fn(help="`reason` is a unique, one-word, CamelCase reason for the condition's last transition.", args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#withType':: d.fn(help='`type` is the type of the condition. Required.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/flowSchemaSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/flowSchemaSpec.libsonnet deleted file mode 100644 index 3c34b4a719b7..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/flowSchemaSpec.libsonnet +++ /dev/null @@ -1,22 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='flowSchemaSpec', url='', help="FlowSchemaSpec describes how the FlowSchema's specification looks like."), - '#distinguisherMethod':: d.obj(help='FlowDistinguisherMethod specifies the method of a flow distinguisher.'), - distinguisherMethod: { - '#withType':: d.fn(help='`type` is the type of flow distinguisher method The supported types are "ByUser" and "ByNamespace". Required.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { distinguisherMethod+: { type: type } }, - }, - '#priorityLevelConfiguration':: d.obj(help='PriorityLevelConfigurationReference contains information that points to the "request-priority" being used.'), - priorityLevelConfiguration: { - '#withName':: d.fn(help='`name` is the name of the priority level configuration being referenced Required.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { priorityLevelConfiguration+: { name: name } }, - }, - '#withMatchingPrecedence':: d.fn(help='`matchingPrecedence` is used to choose among the FlowSchemas that match a given request. The chosen FlowSchema is among those with the numerically lowest (which we take to be logically highest) MatchingPrecedence. Each MatchingPrecedence value must be ranged in [1,10000]. Note that if the precedence is not specified, it will be set to 1000 as default.', args=[d.arg(name='matchingPrecedence', type=d.T.integer)]), - withMatchingPrecedence(matchingPrecedence): { matchingPrecedence: matchingPrecedence }, - '#withRules':: d.fn(help='`rules` describes which requests will match this flow schema. This FlowSchema matches a request if and only if at least one member of rules matches the request. if it is an empty slice, there will be no requests matching the FlowSchema.', args=[d.arg(name='rules', type=d.T.array)]), - withRules(rules): { rules: if std.isArray(v=rules) then rules else [rules] }, - '#withRulesMixin':: d.fn(help='`rules` describes which requests will match this flow schema. This FlowSchema matches a request if and only if at least one member of rules matches the request. if it is an empty slice, there will be no requests matching the FlowSchema.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='rules', type=d.T.array)]), - withRulesMixin(rules): { rules+: if std.isArray(v=rules) then rules else [rules] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/flowSchemaStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/flowSchemaStatus.libsonnet deleted file mode 100644 index 2b43aa5e7311..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/flowSchemaStatus.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='flowSchemaStatus', url='', help='FlowSchemaStatus represents the current state of a FlowSchema.'), - '#withConditions':: d.fn(help='`conditions` is a list of the current states of FlowSchema.', args=[d.arg(name='conditions', type=d.T.array)]), - withConditions(conditions): { conditions: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withConditionsMixin':: d.fn(help='`conditions` is a list of the current states of FlowSchema.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='conditions', type=d.T.array)]), - withConditionsMixin(conditions): { conditions+: if std.isArray(v=conditions) then conditions else [conditions] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/groupSubject.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/groupSubject.libsonnet deleted file mode 100644 index ab259ab5f2c7..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/groupSubject.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='groupSubject', url='', help='GroupSubject holds detailed information for group-kind subject.'), - '#withName':: d.fn(help='name is the user group that matches, or "*" to match all user groups. See https://github.com/kubernetes/apiserver/blob/master/pkg/authentication/user/user.go for some well-known group names. Required.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/limitResponse.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/limitResponse.libsonnet deleted file mode 100644 index 8be3d15d04fd..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/limitResponse.libsonnet +++ /dev/null @@ -1,17 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='limitResponse', url='', help='LimitResponse defines how to handle requests that can not be executed right now.'), - '#queuing':: d.obj(help='QueuingConfiguration holds the configuration parameters for queuing'), - queuing: { - '#withHandSize':: d.fn(help="`handSize` is a small positive number that configures the shuffle sharding of requests into queues. When enqueuing a request at this priority level the request's flow identifier (a string pair) is hashed and the hash value is used to shuffle the list of queues and deal a hand of the size specified here. The request is put into one of the shortest queues in that hand. `handSize` must be no larger than `queues`, and should be significantly smaller (so that a few heavy flows do not saturate most of the queues). See the user-facing documentation for more extensive guidance on setting this field. This field has a default value of 8.", args=[d.arg(name='handSize', type=d.T.integer)]), - withHandSize(handSize): { queuing+: { handSize: handSize } }, - '#withQueueLengthLimit':: d.fn(help='`queueLengthLimit` is the maximum number of requests allowed to be waiting in a given queue of this priority level at a time; excess requests are rejected. This value must be positive. If not specified, it will be defaulted to 50.', args=[d.arg(name='queueLengthLimit', type=d.T.integer)]), - withQueueLengthLimit(queueLengthLimit): { queuing+: { queueLengthLimit: queueLengthLimit } }, - '#withQueues':: d.fn(help='`queues` is the number of queues for this priority level. The queues exist independently at each apiserver. The value must be positive. Setting it to 1 effectively precludes shufflesharding and thus makes the distinguisher method of associated flow schemas irrelevant. This field has a default value of 64.', args=[d.arg(name='queues', type=d.T.integer)]), - withQueues(queues): { queuing+: { queues: queues } }, - }, - '#withType':: d.fn(help='`type` is "Queue" or "Reject". "Queue" means that requests that can not be executed upon arrival are held in a queue until they can be executed or a queuing limit is reached. "Reject" means that requests that can not be executed upon arrival are rejected. Required.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/limitedPriorityLevelConfiguration.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/limitedPriorityLevelConfiguration.libsonnet deleted file mode 100644 index 6b46a2ce3b5c..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/limitedPriorityLevelConfiguration.libsonnet +++ /dev/null @@ -1,22 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='limitedPriorityLevelConfiguration', url='', help='LimitedPriorityLevelConfiguration specifies how to handle requests that are subject to limits. It addresses two issues:\n * How are requests for this priority level limited?\n * What should be done with requests that exceed the limit?'), - '#limitResponse':: d.obj(help='LimitResponse defines how to handle requests that can not be executed right now.'), - limitResponse: { - '#queuing':: d.obj(help='QueuingConfiguration holds the configuration parameters for queuing'), - queuing: { - '#withHandSize':: d.fn(help="`handSize` is a small positive number that configures the shuffle sharding of requests into queues. When enqueuing a request at this priority level the request's flow identifier (a string pair) is hashed and the hash value is used to shuffle the list of queues and deal a hand of the size specified here. The request is put into one of the shortest queues in that hand. `handSize` must be no larger than `queues`, and should be significantly smaller (so that a few heavy flows do not saturate most of the queues). See the user-facing documentation for more extensive guidance on setting this field. This field has a default value of 8.", args=[d.arg(name='handSize', type=d.T.integer)]), - withHandSize(handSize): { limitResponse+: { queuing+: { handSize: handSize } } }, - '#withQueueLengthLimit':: d.fn(help='`queueLengthLimit` is the maximum number of requests allowed to be waiting in a given queue of this priority level at a time; excess requests are rejected. This value must be positive. If not specified, it will be defaulted to 50.', args=[d.arg(name='queueLengthLimit', type=d.T.integer)]), - withQueueLengthLimit(queueLengthLimit): { limitResponse+: { queuing+: { queueLengthLimit: queueLengthLimit } } }, - '#withQueues':: d.fn(help='`queues` is the number of queues for this priority level. The queues exist independently at each apiserver. The value must be positive. Setting it to 1 effectively precludes shufflesharding and thus makes the distinguisher method of associated flow schemas irrelevant. This field has a default value of 64.', args=[d.arg(name='queues', type=d.T.integer)]), - withQueues(queues): { limitResponse+: { queuing+: { queues: queues } } }, - }, - '#withType':: d.fn(help='`type` is "Queue" or "Reject". "Queue" means that requests that can not be executed upon arrival are held in a queue until they can be executed or a queuing limit is reached. "Reject" means that requests that can not be executed upon arrival are rejected. Required.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { limitResponse+: { type: type } }, - }, - '#withAssuredConcurrencyShares':: d.fn(help="`assuredConcurrencyShares` (ACS) configures the execution limit, which is a limit on the number of requests of this priority level that may be exeucting at a given time. ACS must be a positive number. The server's concurrency limit (SCL) is divided among the concurrency-controlled priority levels in proportion to their assured concurrency shares. This produces the assured concurrency value (ACV) --- the number of requests that may be executing at a time --- for each such priority level:\n\n ACV(l) = ceil( SCL * ACS(l) / ( sum[priority levels k] ACS(k) ) )\n\nbigger numbers of ACS mean more reserved concurrent requests (at the expense of every other PL). This field has a default value of 30.", args=[d.arg(name='assuredConcurrencyShares', type=d.T.integer)]), - withAssuredConcurrencyShares(assuredConcurrencyShares): { assuredConcurrencyShares: assuredConcurrencyShares }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/main.libsonnet deleted file mode 100644 index c386b72b841f..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/main.libsonnet +++ /dev/null @@ -1,24 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1beta1', url='', help=''), - flowDistinguisherMethod: (import 'flowDistinguisherMethod.libsonnet'), - flowSchema: (import 'flowSchema.libsonnet'), - flowSchemaCondition: (import 'flowSchemaCondition.libsonnet'), - flowSchemaSpec: (import 'flowSchemaSpec.libsonnet'), - flowSchemaStatus: (import 'flowSchemaStatus.libsonnet'), - groupSubject: (import 'groupSubject.libsonnet'), - limitResponse: (import 'limitResponse.libsonnet'), - limitedPriorityLevelConfiguration: (import 'limitedPriorityLevelConfiguration.libsonnet'), - nonResourcePolicyRule: (import 'nonResourcePolicyRule.libsonnet'), - policyRulesWithSubjects: (import 'policyRulesWithSubjects.libsonnet'), - priorityLevelConfiguration: (import 'priorityLevelConfiguration.libsonnet'), - priorityLevelConfigurationCondition: (import 'priorityLevelConfigurationCondition.libsonnet'), - priorityLevelConfigurationReference: (import 'priorityLevelConfigurationReference.libsonnet'), - priorityLevelConfigurationSpec: (import 'priorityLevelConfigurationSpec.libsonnet'), - priorityLevelConfigurationStatus: (import 'priorityLevelConfigurationStatus.libsonnet'), - queuingConfiguration: (import 'queuingConfiguration.libsonnet'), - resourcePolicyRule: (import 'resourcePolicyRule.libsonnet'), - serviceAccountSubject: (import 'serviceAccountSubject.libsonnet'), - subject: (import 'subject.libsonnet'), - userSubject: (import 'userSubject.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/nonResourcePolicyRule.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/nonResourcePolicyRule.libsonnet deleted file mode 100644 index 23a88ad4e640..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/nonResourcePolicyRule.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='nonResourcePolicyRule', url='', help='NonResourcePolicyRule is a predicate that matches non-resource requests according to their verb and the target non-resource URL. A NonResourcePolicyRule matches a request if and only if both (a) at least one member of verbs matches the request and (b) at least one member of nonResourceURLs matches the request.'), - '#withNonResourceURLs':: d.fn(help='`nonResourceURLs` is a set of url prefixes that a user should have access to and may not be empty. For example:\n - "/healthz" is legal\n - "/hea*" is illegal\n - "/hea" is legal but matches nothing\n - "/hea/*" also matches nothing\n - "/healthz/*" matches all per-component health checks.\n"*" matches all non-resource urls. if it is present, it must be the only entry. Required.', args=[d.arg(name='nonResourceURLs', type=d.T.array)]), - withNonResourceURLs(nonResourceURLs): { nonResourceURLs: if std.isArray(v=nonResourceURLs) then nonResourceURLs else [nonResourceURLs] }, - '#withNonResourceURLsMixin':: d.fn(help='`nonResourceURLs` is a set of url prefixes that a user should have access to and may not be empty. For example:\n - "/healthz" is legal\n - "/hea*" is illegal\n - "/hea" is legal but matches nothing\n - "/hea/*" also matches nothing\n - "/healthz/*" matches all per-component health checks.\n"*" matches all non-resource urls. if it is present, it must be the only entry. Required.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nonResourceURLs', type=d.T.array)]), - withNonResourceURLsMixin(nonResourceURLs): { nonResourceURLs+: if std.isArray(v=nonResourceURLs) then nonResourceURLs else [nonResourceURLs] }, - '#withVerbs':: d.fn(help='`verbs` is a list of matching verbs and may not be empty. "*" matches all verbs. If it is present, it must be the only entry. Required.', args=[d.arg(name='verbs', type=d.T.array)]), - withVerbs(verbs): { verbs: if std.isArray(v=verbs) then verbs else [verbs] }, - '#withVerbsMixin':: d.fn(help='`verbs` is a list of matching verbs and may not be empty. "*" matches all verbs. If it is present, it must be the only entry. Required.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='verbs', type=d.T.array)]), - withVerbsMixin(verbs): { verbs+: if std.isArray(v=verbs) then verbs else [verbs] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/policyRulesWithSubjects.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/policyRulesWithSubjects.libsonnet deleted file mode 100644 index 87a2ece5ce1f..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/policyRulesWithSubjects.libsonnet +++ /dev/null @@ -1,18 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='policyRulesWithSubjects', url='', help='PolicyRulesWithSubjects prescribes a test that applies to a request to an apiserver. The test considers the subject making the request, the verb being requested, and the resource to be acted upon. This PolicyRulesWithSubjects matches a request if and only if both (a) at least one member of subjects matches the request and (b) at least one member of resourceRules or nonResourceRules matches the request.'), - '#withNonResourceRules':: d.fn(help='`nonResourceRules` is a list of NonResourcePolicyRules that identify matching requests according to their verb and the target non-resource URL.', args=[d.arg(name='nonResourceRules', type=d.T.array)]), - withNonResourceRules(nonResourceRules): { nonResourceRules: if std.isArray(v=nonResourceRules) then nonResourceRules else [nonResourceRules] }, - '#withNonResourceRulesMixin':: d.fn(help='`nonResourceRules` is a list of NonResourcePolicyRules that identify matching requests according to their verb and the target non-resource URL.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nonResourceRules', type=d.T.array)]), - withNonResourceRulesMixin(nonResourceRules): { nonResourceRules+: if std.isArray(v=nonResourceRules) then nonResourceRules else [nonResourceRules] }, - '#withResourceRules':: d.fn(help='`resourceRules` is a slice of ResourcePolicyRules that identify matching requests according to their verb and the target resource. At least one of `resourceRules` and `nonResourceRules` has to be non-empty.', args=[d.arg(name='resourceRules', type=d.T.array)]), - withResourceRules(resourceRules): { resourceRules: if std.isArray(v=resourceRules) then resourceRules else [resourceRules] }, - '#withResourceRulesMixin':: d.fn(help='`resourceRules` is a slice of ResourcePolicyRules that identify matching requests according to their verb and the target resource. At least one of `resourceRules` and `nonResourceRules` has to be non-empty.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='resourceRules', type=d.T.array)]), - withResourceRulesMixin(resourceRules): { resourceRules+: if std.isArray(v=resourceRules) then resourceRules else [resourceRules] }, - '#withSubjects':: d.fn(help='subjects is the list of normal user, serviceaccount, or group that this rule cares about. There must be at least one member in this slice. A slice that includes both the system:authenticated and system:unauthenticated user groups matches every request. Required.', args=[d.arg(name='subjects', type=d.T.array)]), - withSubjects(subjects): { subjects: if std.isArray(v=subjects) then subjects else [subjects] }, - '#withSubjectsMixin':: d.fn(help='subjects is the list of normal user, serviceaccount, or group that this rule cares about. There must be at least one member in this slice. A slice that includes both the system:authenticated and system:unauthenticated user groups matches every request. Required.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='subjects', type=d.T.array)]), - withSubjectsMixin(subjects): { subjects+: if std.isArray(v=subjects) then subjects else [subjects] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/priorityLevelConfiguration.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/priorityLevelConfiguration.libsonnet deleted file mode 100644 index 56f0f6ae1115..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/priorityLevelConfiguration.libsonnet +++ /dev/null @@ -1,80 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='priorityLevelConfiguration', url='', help='PriorityLevelConfiguration represents the configuration of a priority level.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Prioritylevelconfiguration', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'flowcontrol.apiserver.k8s.io/v1beta1', - kind: 'PriorityLevelConfiguration', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='PriorityLevelConfigurationSpec specifies the configuration of a priority level.'), - spec: { - '#limited':: d.obj(help='LimitedPriorityLevelConfiguration specifies how to handle requests that are subject to limits. It addresses two issues:\n * How are requests for this priority level limited?\n * What should be done with requests that exceed the limit?'), - limited: { - '#limitResponse':: d.obj(help='LimitResponse defines how to handle requests that can not be executed right now.'), - limitResponse: { - '#queuing':: d.obj(help='QueuingConfiguration holds the configuration parameters for queuing'), - queuing: { - '#withHandSize':: d.fn(help="`handSize` is a small positive number that configures the shuffle sharding of requests into queues. When enqueuing a request at this priority level the request's flow identifier (a string pair) is hashed and the hash value is used to shuffle the list of queues and deal a hand of the size specified here. The request is put into one of the shortest queues in that hand. `handSize` must be no larger than `queues`, and should be significantly smaller (so that a few heavy flows do not saturate most of the queues). See the user-facing documentation for more extensive guidance on setting this field. This field has a default value of 8.", args=[d.arg(name='handSize', type=d.T.integer)]), - withHandSize(handSize): { spec+: { limited+: { limitResponse+: { queuing+: { handSize: handSize } } } } }, - '#withQueueLengthLimit':: d.fn(help='`queueLengthLimit` is the maximum number of requests allowed to be waiting in a given queue of this priority level at a time; excess requests are rejected. This value must be positive. If not specified, it will be defaulted to 50.', args=[d.arg(name='queueLengthLimit', type=d.T.integer)]), - withQueueLengthLimit(queueLengthLimit): { spec+: { limited+: { limitResponse+: { queuing+: { queueLengthLimit: queueLengthLimit } } } } }, - '#withQueues':: d.fn(help='`queues` is the number of queues for this priority level. The queues exist independently at each apiserver. The value must be positive. Setting it to 1 effectively precludes shufflesharding and thus makes the distinguisher method of associated flow schemas irrelevant. This field has a default value of 64.', args=[d.arg(name='queues', type=d.T.integer)]), - withQueues(queues): { spec+: { limited+: { limitResponse+: { queuing+: { queues: queues } } } } }, - }, - '#withType':: d.fn(help='`type` is "Queue" or "Reject". "Queue" means that requests that can not be executed upon arrival are held in a queue until they can be executed or a queuing limit is reached. "Reject" means that requests that can not be executed upon arrival are rejected. Required.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { limited+: { limitResponse+: { type: type } } } }, - }, - '#withAssuredConcurrencyShares':: d.fn(help="`assuredConcurrencyShares` (ACS) configures the execution limit, which is a limit on the number of requests of this priority level that may be exeucting at a given time. ACS must be a positive number. The server's concurrency limit (SCL) is divided among the concurrency-controlled priority levels in proportion to their assured concurrency shares. This produces the assured concurrency value (ACV) --- the number of requests that may be executing at a time --- for each such priority level:\n\n ACV(l) = ceil( SCL * ACS(l) / ( sum[priority levels k] ACS(k) ) )\n\nbigger numbers of ACS mean more reserved concurrent requests (at the expense of every other PL). This field has a default value of 30.", args=[d.arg(name='assuredConcurrencyShares', type=d.T.integer)]), - withAssuredConcurrencyShares(assuredConcurrencyShares): { spec+: { limited+: { assuredConcurrencyShares: assuredConcurrencyShares } } }, - }, - '#withType':: d.fn(help="`type` indicates whether this priority level is subject to limitation on request execution. A value of `'Exempt'` means that requests of this priority level are not subject to a limit (and thus are never queued) and do not detract from the capacity made available to other priority levels. A value of `'Limited'` means that (a) requests of this priority level _are_ subject to limits and (b) some of the server's limited capacity is made available exclusively to this priority level. Required.", args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { type: type } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/priorityLevelConfigurationCondition.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/priorityLevelConfigurationCondition.libsonnet deleted file mode 100644 index db0280bc1ba6..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/priorityLevelConfigurationCondition.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='priorityLevelConfigurationCondition', url='', help='PriorityLevelConfigurationCondition defines the condition of priority level.'), - '#withLastTransitionTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='lastTransitionTime', type=d.T.string)]), - withLastTransitionTime(lastTransitionTime): { lastTransitionTime: lastTransitionTime }, - '#withMessage':: d.fn(help='`message` is a human-readable message indicating details about last transition.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withReason':: d.fn(help="`reason` is a unique, one-word, CamelCase reason for the condition's last transition.", args=[d.arg(name='reason', type=d.T.string)]), - withReason(reason): { reason: reason }, - '#withType':: d.fn(help='`type` is the type of the condition. Required.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/priorityLevelConfigurationReference.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/priorityLevelConfigurationReference.libsonnet deleted file mode 100644 index 535f0a18e72d..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/priorityLevelConfigurationReference.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='priorityLevelConfigurationReference', url='', help='PriorityLevelConfigurationReference contains information that points to the "request-priority" being used.'), - '#withName':: d.fn(help='`name` is the name of the priority level configuration being referenced Required.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/priorityLevelConfigurationSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/priorityLevelConfigurationSpec.libsonnet deleted file mode 100644 index 6771cd0e7e42..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/priorityLevelConfigurationSpec.libsonnet +++ /dev/null @@ -1,27 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='priorityLevelConfigurationSpec', url='', help='PriorityLevelConfigurationSpec specifies the configuration of a priority level.'), - '#limited':: d.obj(help='LimitedPriorityLevelConfiguration specifies how to handle requests that are subject to limits. It addresses two issues:\n * How are requests for this priority level limited?\n * What should be done with requests that exceed the limit?'), - limited: { - '#limitResponse':: d.obj(help='LimitResponse defines how to handle requests that can not be executed right now.'), - limitResponse: { - '#queuing':: d.obj(help='QueuingConfiguration holds the configuration parameters for queuing'), - queuing: { - '#withHandSize':: d.fn(help="`handSize` is a small positive number that configures the shuffle sharding of requests into queues. When enqueuing a request at this priority level the request's flow identifier (a string pair) is hashed and the hash value is used to shuffle the list of queues and deal a hand of the size specified here. The request is put into one of the shortest queues in that hand. `handSize` must be no larger than `queues`, and should be significantly smaller (so that a few heavy flows do not saturate most of the queues). See the user-facing documentation for more extensive guidance on setting this field. This field has a default value of 8.", args=[d.arg(name='handSize', type=d.T.integer)]), - withHandSize(handSize): { limited+: { limitResponse+: { queuing+: { handSize: handSize } } } }, - '#withQueueLengthLimit':: d.fn(help='`queueLengthLimit` is the maximum number of requests allowed to be waiting in a given queue of this priority level at a time; excess requests are rejected. This value must be positive. If not specified, it will be defaulted to 50.', args=[d.arg(name='queueLengthLimit', type=d.T.integer)]), - withQueueLengthLimit(queueLengthLimit): { limited+: { limitResponse+: { queuing+: { queueLengthLimit: queueLengthLimit } } } }, - '#withQueues':: d.fn(help='`queues` is the number of queues for this priority level. The queues exist independently at each apiserver. The value must be positive. Setting it to 1 effectively precludes shufflesharding and thus makes the distinguisher method of associated flow schemas irrelevant. This field has a default value of 64.', args=[d.arg(name='queues', type=d.T.integer)]), - withQueues(queues): { limited+: { limitResponse+: { queuing+: { queues: queues } } } }, - }, - '#withType':: d.fn(help='`type` is "Queue" or "Reject". "Queue" means that requests that can not be executed upon arrival are held in a queue until they can be executed or a queuing limit is reached. "Reject" means that requests that can not be executed upon arrival are rejected. Required.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { limited+: { limitResponse+: { type: type } } }, - }, - '#withAssuredConcurrencyShares':: d.fn(help="`assuredConcurrencyShares` (ACS) configures the execution limit, which is a limit on the number of requests of this priority level that may be exeucting at a given time. ACS must be a positive number. The server's concurrency limit (SCL) is divided among the concurrency-controlled priority levels in proportion to their assured concurrency shares. This produces the assured concurrency value (ACV) --- the number of requests that may be executing at a time --- for each such priority level:\n\n ACV(l) = ceil( SCL * ACS(l) / ( sum[priority levels k] ACS(k) ) )\n\nbigger numbers of ACS mean more reserved concurrent requests (at the expense of every other PL). This field has a default value of 30.", args=[d.arg(name='assuredConcurrencyShares', type=d.T.integer)]), - withAssuredConcurrencyShares(assuredConcurrencyShares): { limited+: { assuredConcurrencyShares: assuredConcurrencyShares } }, - }, - '#withType':: d.fn(help="`type` indicates whether this priority level is subject to limitation on request execution. A value of `'Exempt'` means that requests of this priority level are not subject to a limit (and thus are never queued) and do not detract from the capacity made available to other priority levels. A value of `'Limited'` means that (a) requests of this priority level _are_ subject to limits and (b) some of the server's limited capacity is made available exclusively to this priority level. Required.", args=[d.arg(name='type', type=d.T.string)]), - withType(type): { type: type }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/priorityLevelConfigurationStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/priorityLevelConfigurationStatus.libsonnet deleted file mode 100644 index b3c97ed257b6..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/priorityLevelConfigurationStatus.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='priorityLevelConfigurationStatus', url='', help='PriorityLevelConfigurationStatus represents the current state of a "request-priority".'), - '#withConditions':: d.fn(help='`conditions` is the current state of "request-priority".', args=[d.arg(name='conditions', type=d.T.array)]), - withConditions(conditions): { conditions: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withConditionsMixin':: d.fn(help='`conditions` is the current state of "request-priority".\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='conditions', type=d.T.array)]), - withConditionsMixin(conditions): { conditions+: if std.isArray(v=conditions) then conditions else [conditions] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/queuingConfiguration.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/queuingConfiguration.libsonnet deleted file mode 100644 index 4f72776a215a..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/queuingConfiguration.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='queuingConfiguration', url='', help='QueuingConfiguration holds the configuration parameters for queuing'), - '#withHandSize':: d.fn(help="`handSize` is a small positive number that configures the shuffle sharding of requests into queues. When enqueuing a request at this priority level the request's flow identifier (a string pair) is hashed and the hash value is used to shuffle the list of queues and deal a hand of the size specified here. The request is put into one of the shortest queues in that hand. `handSize` must be no larger than `queues`, and should be significantly smaller (so that a few heavy flows do not saturate most of the queues). See the user-facing documentation for more extensive guidance on setting this field. This field has a default value of 8.", args=[d.arg(name='handSize', type=d.T.integer)]), - withHandSize(handSize): { handSize: handSize }, - '#withQueueLengthLimit':: d.fn(help='`queueLengthLimit` is the maximum number of requests allowed to be waiting in a given queue of this priority level at a time; excess requests are rejected. This value must be positive. If not specified, it will be defaulted to 50.', args=[d.arg(name='queueLengthLimit', type=d.T.integer)]), - withQueueLengthLimit(queueLengthLimit): { queueLengthLimit: queueLengthLimit }, - '#withQueues':: d.fn(help='`queues` is the number of queues for this priority level. The queues exist independently at each apiserver. The value must be positive. Setting it to 1 effectively precludes shufflesharding and thus makes the distinguisher method of associated flow schemas irrelevant. This field has a default value of 64.', args=[d.arg(name='queues', type=d.T.integer)]), - withQueues(queues): { queues: queues }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/resourcePolicyRule.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/resourcePolicyRule.libsonnet deleted file mode 100644 index df304dd21e7a..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/resourcePolicyRule.libsonnet +++ /dev/null @@ -1,24 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='resourcePolicyRule', url='', help="ResourcePolicyRule is a predicate that matches some resource requests, testing the request's verb and the target resource. A ResourcePolicyRule matches a resource request if and only if: (a) at least one member of verbs matches the request, (b) at least one member of apiGroups matches the request, (c) at least one member of resources matches the request, and (d) least one member of namespaces matches the request."), - '#withApiGroups':: d.fn(help='`apiGroups` is a list of matching API groups and may not be empty. "*" matches all API groups and, if present, must be the only entry. Required.', args=[d.arg(name='apiGroups', type=d.T.array)]), - withApiGroups(apiGroups): { apiGroups: if std.isArray(v=apiGroups) then apiGroups else [apiGroups] }, - '#withApiGroupsMixin':: d.fn(help='`apiGroups` is a list of matching API groups and may not be empty. "*" matches all API groups and, if present, must be the only entry. Required.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='apiGroups', type=d.T.array)]), - withApiGroupsMixin(apiGroups): { apiGroups+: if std.isArray(v=apiGroups) then apiGroups else [apiGroups] }, - '#withClusterScope':: d.fn(help='`clusterScope` indicates whether to match requests that do not specify a namespace (which happens either because the resource is not namespaced or the request targets all namespaces). If this field is omitted or false then the `namespaces` field must contain a non-empty list.', args=[d.arg(name='clusterScope', type=d.T.boolean)]), - withClusterScope(clusterScope): { clusterScope: clusterScope }, - '#withNamespaces':: d.fn(help='`namespaces` is a list of target namespaces that restricts matches. A request that specifies a target namespace matches only if either (a) this list contains that target namespace or (b) this list contains "*". Note that "*" matches any specified namespace but does not match a request that _does not specify_ a namespace (see the `clusterScope` field for that). This list may be empty, but only if `clusterScope` is true.', args=[d.arg(name='namespaces', type=d.T.array)]), - withNamespaces(namespaces): { namespaces: if std.isArray(v=namespaces) then namespaces else [namespaces] }, - '#withNamespacesMixin':: d.fn(help='`namespaces` is a list of target namespaces that restricts matches. A request that specifies a target namespace matches only if either (a) this list contains that target namespace or (b) this list contains "*". Note that "*" matches any specified namespace but does not match a request that _does not specify_ a namespace (see the `clusterScope` field for that). This list may be empty, but only if `clusterScope` is true.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='namespaces', type=d.T.array)]), - withNamespacesMixin(namespaces): { namespaces+: if std.isArray(v=namespaces) then namespaces else [namespaces] }, - '#withResources':: d.fn(help='`resources` is a list of matching resources (i.e., lowercase and plural) with, if desired, subresource. For example, [ "services", "nodes/status" ]. This list may not be empty. "*" matches all resources and, if present, must be the only entry. Required.', args=[d.arg(name='resources', type=d.T.array)]), - withResources(resources): { resources: if std.isArray(v=resources) then resources else [resources] }, - '#withResourcesMixin':: d.fn(help='`resources` is a list of matching resources (i.e., lowercase and plural) with, if desired, subresource. For example, [ "services", "nodes/status" ]. This list may not be empty. "*" matches all resources and, if present, must be the only entry. Required.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='resources', type=d.T.array)]), - withResourcesMixin(resources): { resources+: if std.isArray(v=resources) then resources else [resources] }, - '#withVerbs':: d.fn(help='`verbs` is a list of matching verbs and may not be empty. "*" matches all verbs and, if present, must be the only entry. Required.', args=[d.arg(name='verbs', type=d.T.array)]), - withVerbs(verbs): { verbs: if std.isArray(v=verbs) then verbs else [verbs] }, - '#withVerbsMixin':: d.fn(help='`verbs` is a list of matching verbs and may not be empty. "*" matches all verbs and, if present, must be the only entry. Required.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='verbs', type=d.T.array)]), - withVerbsMixin(verbs): { verbs+: if std.isArray(v=verbs) then verbs else [verbs] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/serviceAccountSubject.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/serviceAccountSubject.libsonnet deleted file mode 100644 index 836b24083170..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/serviceAccountSubject.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='serviceAccountSubject', url='', help='ServiceAccountSubject holds detailed information for service-account-kind subject.'), - '#withName':: d.fn(help='`name` is the name of matching ServiceAccount objects, or "*" to match regardless of name. Required.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withNamespace':: d.fn(help='`namespace` is the namespace of matching ServiceAccount objects. Required.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { namespace: namespace }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/subject.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/subject.libsonnet deleted file mode 100644 index 0093b04c8529..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/subject.libsonnet +++ /dev/null @@ -1,25 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='subject', url='', help='Subject matches the originator of a request, as identified by the request authentication system. There are three ways of matching an originator; by user, group, or service account.'), - '#group':: d.obj(help='GroupSubject holds detailed information for group-kind subject.'), - group: { - '#withName':: d.fn(help='name is the user group that matches, or "*" to match all user groups. See https://github.com/kubernetes/apiserver/blob/master/pkg/authentication/user/user.go for some well-known group names. Required.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { group+: { name: name } }, - }, - '#serviceAccount':: d.obj(help='ServiceAccountSubject holds detailed information for service-account-kind subject.'), - serviceAccount: { - '#withName':: d.fn(help='`name` is the name of matching ServiceAccount objects, or "*" to match regardless of name. Required.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { serviceAccount+: { name: name } }, - '#withNamespace':: d.fn(help='`namespace` is the namespace of matching ServiceAccount objects. Required.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { serviceAccount+: { namespace: namespace } }, - }, - '#user':: d.obj(help='UserSubject holds detailed information for user-kind subject.'), - user: { - '#withName':: d.fn(help='`name` is the username that matches, or "*" to match all usernames. Required.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { user+: { name: name } }, - }, - '#withKind':: d.fn(help='Required', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { kind: kind }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/userSubject.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/userSubject.libsonnet deleted file mode 100644 index e4f076ace164..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/flowcontrol/v1beta1/userSubject.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='userSubject', url='', help='UserSubject holds detailed information for user-kind subject.'), - '#withName':: d.fn(help='`name` is the username that matches, or "*" to match all usernames. Required.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/main.libsonnet deleted file mode 100644 index 48137d124738..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/main.libsonnet +++ /dev/null @@ -1,6 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='networking', url='', help=''), - v1: (import 'v1/main.libsonnet'), - v1beta1: (import 'v1beta1/main.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/httpIngressPath.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/httpIngressPath.libsonnet deleted file mode 100644 index a65072d68d2c..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/httpIngressPath.libsonnet +++ /dev/null @@ -1,34 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='httpIngressPath', url='', help='HTTPIngressPath associates a path with a backend. Incoming urls matching the path are forwarded to the backend.'), - '#backend':: d.obj(help='IngressBackend describes all endpoints for a given service and port.'), - backend: { - '#resource':: d.obj(help='TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace.'), - resource: { - '#withApiGroup':: d.fn(help='APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.', args=[d.arg(name='apiGroup', type=d.T.string)]), - withApiGroup(apiGroup): { backend+: { resource+: { apiGroup: apiGroup } } }, - '#withKind':: d.fn(help='Kind is the type of resource being referenced', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { backend+: { resource+: { kind: kind } } }, - '#withName':: d.fn(help='Name is the name of resource being referenced', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { backend+: { resource+: { name: name } } }, - }, - '#service':: d.obj(help='IngressServiceBackend references a Kubernetes Service as a Backend.'), - service: { - '#port':: d.obj(help='ServiceBackendPort is the service port being referenced.'), - port: { - '#withName':: d.fn(help='Name is the name of the port on the Service. This is a mutually exclusive setting with "Number".', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { backend+: { service+: { port+: { name: name } } } }, - '#withNumber':: d.fn(help='Number is the numerical port number (e.g. 80) on the Service. This is a mutually exclusive setting with "Name".', args=[d.arg(name='number', type=d.T.integer)]), - withNumber(number): { backend+: { service+: { port+: { number: number } } } }, - }, - '#withName':: d.fn(help='Name is the referenced service. The service must exist in the same namespace as the Ingress object.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { backend+: { service+: { name: name } } }, - }, - }, - '#withPath':: d.fn(help="Path is matched against the path of an incoming request. Currently it can contain characters disallowed from the conventional 'path' part of a URL as defined by RFC 3986. Paths must begin with a '/'. When unspecified, all paths from incoming requests are matched.", args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { path: path }, - '#withPathType':: d.fn(help="PathType determines the interpretation of the Path matching. PathType can be one of the following values: * Exact: Matches the URL path exactly. * Prefix: Matches based on a URL path prefix split by '/'. Matching is\n done on a path element by element basis. A path element refers is the\n list of labels in the path split by the '/' separator. A request is a\n match for path p if every p is an element-wise prefix of p of the\n request path. Note that if the last element of the path is a substring\n of the last element in request path, it is not a match (e.g. /foo/bar\n matches /foo/bar/baz, but does not match /foo/barbaz).\n* ImplementationSpecific: Interpretation of the Path matching is up to\n the IngressClass. Implementations can treat this as a separate PathType\n or treat it identically to Prefix or Exact path types.\nImplementations are required to support all path types.", args=[d.arg(name='pathType', type=d.T.string)]), - withPathType(pathType): { pathType: pathType }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/httpIngressRuleValue.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/httpIngressRuleValue.libsonnet deleted file mode 100644 index 31169937a555..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/httpIngressRuleValue.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='httpIngressRuleValue', url='', help="HTTPIngressRuleValue is a list of http selectors pointing to backends. In the example: http:///? -> backend where where parts of the url correspond to RFC 3986, this resource will be used to match against everything after the last '/' and before the first '?' or '#'."), - '#withPaths':: d.fn(help='A collection of paths that map requests to backends.', args=[d.arg(name='paths', type=d.T.array)]), - withPaths(paths): { paths: if std.isArray(v=paths) then paths else [paths] }, - '#withPathsMixin':: d.fn(help='A collection of paths that map requests to backends.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='paths', type=d.T.array)]), - withPathsMixin(paths): { paths+: if std.isArray(v=paths) then paths else [paths] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/ingress.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/ingress.libsonnet deleted file mode 100644 index db772c77ad6a..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/ingress.libsonnet +++ /dev/null @@ -1,93 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='ingress', url='', help='Ingress is a collection of rules that allow inbound connections to reach the endpoints defined by a backend. An Ingress can be configured to give services externally-reachable urls, load balance traffic, terminate SSL, offer name based virtual hosting etc.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Ingress', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'networking.k8s.io/v1', - kind: 'Ingress', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='IngressSpec describes the Ingress the user wishes to exist.'), - spec: { - '#defaultBackend':: d.obj(help='IngressBackend describes all endpoints for a given service and port.'), - defaultBackend: { - '#resource':: d.obj(help='TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace.'), - resource: { - '#withApiGroup':: d.fn(help='APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.', args=[d.arg(name='apiGroup', type=d.T.string)]), - withApiGroup(apiGroup): { spec+: { defaultBackend+: { resource+: { apiGroup: apiGroup } } } }, - '#withKind':: d.fn(help='Kind is the type of resource being referenced', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { defaultBackend+: { resource+: { kind: kind } } } }, - '#withName':: d.fn(help='Name is the name of resource being referenced', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { defaultBackend+: { resource+: { name: name } } } }, - }, - '#service':: d.obj(help='IngressServiceBackend references a Kubernetes Service as a Backend.'), - service: { - '#port':: d.obj(help='ServiceBackendPort is the service port being referenced.'), - port: { - '#withName':: d.fn(help='Name is the name of the port on the Service. This is a mutually exclusive setting with "Number".', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { defaultBackend+: { service+: { port+: { name: name } } } } }, - '#withNumber':: d.fn(help='Number is the numerical port number (e.g. 80) on the Service. This is a mutually exclusive setting with "Name".', args=[d.arg(name='number', type=d.T.integer)]), - withNumber(number): { spec+: { defaultBackend+: { service+: { port+: { number: number } } } } }, - }, - '#withName':: d.fn(help='Name is the referenced service. The service must exist in the same namespace as the Ingress object.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { defaultBackend+: { service+: { name: name } } } }, - }, - }, - '#withIngressClassName':: d.fn(help='IngressClassName is the name of the IngressClass cluster resource. The associated IngressClass defines which controller will implement the resource. This replaces the deprecated `kubernetes.io/ingress.class` annotation. For backwards compatibility, when that annotation is set, it must be given precedence over this field. The controller may emit a warning if the field and annotation have different values. Implementations of this API should ignore Ingresses without a class specified. An IngressClass resource may be marked as default, which can be used to set a default value for this field. For more information, refer to the IngressClass documentation.', args=[d.arg(name='ingressClassName', type=d.T.string)]), - withIngressClassName(ingressClassName): { spec+: { ingressClassName: ingressClassName } }, - '#withRules':: d.fn(help='A list of host rules used to configure the Ingress. If unspecified, or no rule matches, all traffic is sent to the default backend.', args=[d.arg(name='rules', type=d.T.array)]), - withRules(rules): { spec+: { rules: if std.isArray(v=rules) then rules else [rules] } }, - '#withRulesMixin':: d.fn(help='A list of host rules used to configure the Ingress. If unspecified, or no rule matches, all traffic is sent to the default backend.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='rules', type=d.T.array)]), - withRulesMixin(rules): { spec+: { rules+: if std.isArray(v=rules) then rules else [rules] } }, - '#withTls':: d.fn(help='TLS configuration. Currently the Ingress only supports a single TLS port, 443. If multiple members of this list specify different hosts, they will be multiplexed on the same port according to the hostname specified through the SNI TLS extension, if the ingress controller fulfilling the ingress supports SNI.', args=[d.arg(name='tls', type=d.T.array)]), - withTls(tls): { spec+: { tls: if std.isArray(v=tls) then tls else [tls] } }, - '#withTlsMixin':: d.fn(help='TLS configuration. Currently the Ingress only supports a single TLS port, 443. If multiple members of this list specify different hosts, they will be multiplexed on the same port according to the hostname specified through the SNI TLS extension, if the ingress controller fulfilling the ingress supports SNI.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='tls', type=d.T.array)]), - withTlsMixin(tls): { spec+: { tls+: if std.isArray(v=tls) then tls else [tls] } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/ingressBackend.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/ingressBackend.libsonnet deleted file mode 100644 index e480a979691b..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/ingressBackend.libsonnet +++ /dev/null @@ -1,27 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='ingressBackend', url='', help='IngressBackend describes all endpoints for a given service and port.'), - '#resource':: d.obj(help='TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace.'), - resource: { - '#withApiGroup':: d.fn(help='APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.', args=[d.arg(name='apiGroup', type=d.T.string)]), - withApiGroup(apiGroup): { resource+: { apiGroup: apiGroup } }, - '#withKind':: d.fn(help='Kind is the type of resource being referenced', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { resource+: { kind: kind } }, - '#withName':: d.fn(help='Name is the name of resource being referenced', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { resource+: { name: name } }, - }, - '#service':: d.obj(help='IngressServiceBackend references a Kubernetes Service as a Backend.'), - service: { - '#port':: d.obj(help='ServiceBackendPort is the service port being referenced.'), - port: { - '#withName':: d.fn(help='Name is the name of the port on the Service. This is a mutually exclusive setting with "Number".', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { service+: { port+: { name: name } } }, - '#withNumber':: d.fn(help='Number is the numerical port number (e.g. 80) on the Service. This is a mutually exclusive setting with "Name".', args=[d.arg(name='number', type=d.T.integer)]), - withNumber(number): { service+: { port+: { number: number } } }, - }, - '#withName':: d.fn(help='Name is the referenced service. The service must exist in the same namespace as the Ingress object.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { service+: { name: name } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/ingressClass.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/ingressClass.libsonnet deleted file mode 100644 index a492b47c66d9..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/ingressClass.libsonnet +++ /dev/null @@ -1,74 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='ingressClass', url='', help='IngressClass represents the class of the Ingress, referenced by the Ingress Spec. The `ingressclass.kubernetes.io/is-default-class` annotation can be used to indicate that an IngressClass should be considered default. When a single IngressClass resource has this annotation set to true, new Ingress resources without a class specified will be assigned this default class.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Ingressclass', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'networking.k8s.io/v1', - kind: 'IngressClass', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='IngressClassSpec provides information about the class of an Ingress.'), - spec: { - '#parameters':: d.obj(help='IngressClassParametersReference identifies an API object. This can be used to specify a cluster or namespace-scoped resource.'), - parameters: { - '#withApiGroup':: d.fn(help='APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.', args=[d.arg(name='apiGroup', type=d.T.string)]), - withApiGroup(apiGroup): { spec+: { parameters+: { apiGroup: apiGroup } } }, - '#withKind':: d.fn(help='Kind is the type of resource being referenced.', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { parameters+: { kind: kind } } }, - '#withName':: d.fn(help='Name is the name of resource being referenced.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { parameters+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace is the namespace of the resource being referenced. This field is required when scope is set to "Namespace" and must be unset when scope is set to "Cluster".', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { parameters+: { namespace: namespace } } }, - '#withScope':: d.fn(help='Scope represents if this refers to a cluster or namespace scoped resource. This may be set to "Cluster" (default) or "Namespace". Field can be enabled with IngressClassNamespacedParams feature gate.', args=[d.arg(name='scope', type=d.T.string)]), - withScope(scope): { spec+: { parameters+: { scope: scope } } }, - }, - '#withController':: d.fn(help='Controller refers to the name of the controller that should handle this class. This allows for different "flavors" that are controlled by the same controller. For example, you may have different Parameters for the same implementing controller. This should be specified as a domain-prefixed path no more than 250 characters in length, e.g. "acme.io/ingress-controller". This field is immutable.', args=[d.arg(name='controller', type=d.T.string)]), - withController(controller): { spec+: { controller: controller } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/ingressClassParametersReference.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/ingressClassParametersReference.libsonnet deleted file mode 100644 index 36601aa2f12d..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/ingressClassParametersReference.libsonnet +++ /dev/null @@ -1,16 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='ingressClassParametersReference', url='', help='IngressClassParametersReference identifies an API object. This can be used to specify a cluster or namespace-scoped resource.'), - '#withApiGroup':: d.fn(help='APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.', args=[d.arg(name='apiGroup', type=d.T.string)]), - withApiGroup(apiGroup): { apiGroup: apiGroup }, - '#withKind':: d.fn(help='Kind is the type of resource being referenced.', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { kind: kind }, - '#withName':: d.fn(help='Name is the name of resource being referenced.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withNamespace':: d.fn(help='Namespace is the namespace of the resource being referenced. This field is required when scope is set to "Namespace" and must be unset when scope is set to "Cluster".', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { namespace: namespace }, - '#withScope':: d.fn(help='Scope represents if this refers to a cluster or namespace scoped resource. This may be set to "Cluster" (default) or "Namespace". Field can be enabled with IngressClassNamespacedParams feature gate.', args=[d.arg(name='scope', type=d.T.string)]), - withScope(scope): { scope: scope }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/ingressClassSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/ingressClassSpec.libsonnet deleted file mode 100644 index 1b87fee84a8e..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/ingressClassSpec.libsonnet +++ /dev/null @@ -1,21 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='ingressClassSpec', url='', help='IngressClassSpec provides information about the class of an Ingress.'), - '#parameters':: d.obj(help='IngressClassParametersReference identifies an API object. This can be used to specify a cluster or namespace-scoped resource.'), - parameters: { - '#withApiGroup':: d.fn(help='APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.', args=[d.arg(name='apiGroup', type=d.T.string)]), - withApiGroup(apiGroup): { parameters+: { apiGroup: apiGroup } }, - '#withKind':: d.fn(help='Kind is the type of resource being referenced.', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { parameters+: { kind: kind } }, - '#withName':: d.fn(help='Name is the name of resource being referenced.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { parameters+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace is the namespace of the resource being referenced. This field is required when scope is set to "Namespace" and must be unset when scope is set to "Cluster".', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { parameters+: { namespace: namespace } }, - '#withScope':: d.fn(help='Scope represents if this refers to a cluster or namespace scoped resource. This may be set to "Cluster" (default) or "Namespace". Field can be enabled with IngressClassNamespacedParams feature gate.', args=[d.arg(name='scope', type=d.T.string)]), - withScope(scope): { parameters+: { scope: scope } }, - }, - '#withController':: d.fn(help='Controller refers to the name of the controller that should handle this class. This allows for different "flavors" that are controlled by the same controller. For example, you may have different Parameters for the same implementing controller. This should be specified as a domain-prefixed path no more than 250 characters in length, e.g. "acme.io/ingress-controller". This field is immutable.', args=[d.arg(name='controller', type=d.T.string)]), - withController(controller): { controller: controller }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/ingressRule.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/ingressRule.libsonnet deleted file mode 100644 index 3a0a5dca509d..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/ingressRule.libsonnet +++ /dev/null @@ -1,15 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='ingressRule', url='', help='IngressRule represents the rules mapping the paths under a specified host to the related backend services. Incoming requests are first evaluated for a host match, then routed to the backend associated with the matching IngressRuleValue.'), - '#http':: d.obj(help="HTTPIngressRuleValue is a list of http selectors pointing to backends. In the example: http:///? -> backend where where parts of the url correspond to RFC 3986, this resource will be used to match against everything after the last '/' and before the first '?' or '#'."), - http: { - '#withPaths':: d.fn(help='A collection of paths that map requests to backends.', args=[d.arg(name='paths', type=d.T.array)]), - withPaths(paths): { http+: { paths: if std.isArray(v=paths) then paths else [paths] } }, - '#withPathsMixin':: d.fn(help='A collection of paths that map requests to backends.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='paths', type=d.T.array)]), - withPathsMixin(paths): { http+: { paths+: if std.isArray(v=paths) then paths else [paths] } }, - }, - '#withHost':: d.fn(help="Host is the fully qualified domain name of a network host, as defined by RFC 3986. Note the following deviations from the 'host' part of the URI as defined in RFC 3986: 1. IPs are not allowed. Currently an IngressRuleValue can only apply to\n the IP in the Spec of the parent Ingress.\n2. The `:` delimiter is not respected because ports are not allowed.\n\t Currently the port of an Ingress is implicitly :80 for http and\n\t :443 for https.\nBoth these may change in the future. Incoming requests are matched against the host before the IngressRuleValue. If the host is unspecified, the Ingress routes all traffic based on the specified IngressRuleValue.\n\nHost can be 'precise' which is a domain name without the terminating dot of a network host (e.g. 'foo.bar.com') or 'wildcard', which is a domain name prefixed with a single wildcard label (e.g. '*.foo.com'). The wildcard character '*' must appear by itself as the first DNS label and matches only a single label. You cannot have a wildcard label by itself (e.g. Host == '*'). Requests will be matched against the Host field in the following way: 1. If Host is precise, the request matches this rule if the http host header is equal to Host. 2. If Host is a wildcard, then the request matches this rule if the http host header is to equal to the suffix (removing the first label) of the wildcard rule.", args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { host: host }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/ingressServiceBackend.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/ingressServiceBackend.libsonnet deleted file mode 100644 index 93ba846cf911..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/ingressServiceBackend.libsonnet +++ /dev/null @@ -1,15 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='ingressServiceBackend', url='', help='IngressServiceBackend references a Kubernetes Service as a Backend.'), - '#port':: d.obj(help='ServiceBackendPort is the service port being referenced.'), - port: { - '#withName':: d.fn(help='Name is the name of the port on the Service. This is a mutually exclusive setting with "Number".', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { port+: { name: name } }, - '#withNumber':: d.fn(help='Number is the numerical port number (e.g. 80) on the Service. This is a mutually exclusive setting with "Name".', args=[d.arg(name='number', type=d.T.integer)]), - withNumber(number): { port+: { number: number } }, - }, - '#withName':: d.fn(help='Name is the referenced service. The service must exist in the same namespace as the Ingress object.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/ingressSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/ingressSpec.libsonnet deleted file mode 100644 index 77acb03787d7..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/ingressSpec.libsonnet +++ /dev/null @@ -1,40 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='ingressSpec', url='', help='IngressSpec describes the Ingress the user wishes to exist.'), - '#defaultBackend':: d.obj(help='IngressBackend describes all endpoints for a given service and port.'), - defaultBackend: { - '#resource':: d.obj(help='TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace.'), - resource: { - '#withApiGroup':: d.fn(help='APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.', args=[d.arg(name='apiGroup', type=d.T.string)]), - withApiGroup(apiGroup): { defaultBackend+: { resource+: { apiGroup: apiGroup } } }, - '#withKind':: d.fn(help='Kind is the type of resource being referenced', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { defaultBackend+: { resource+: { kind: kind } } }, - '#withName':: d.fn(help='Name is the name of resource being referenced', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { defaultBackend+: { resource+: { name: name } } }, - }, - '#service':: d.obj(help='IngressServiceBackend references a Kubernetes Service as a Backend.'), - service: { - '#port':: d.obj(help='ServiceBackendPort is the service port being referenced.'), - port: { - '#withName':: d.fn(help='Name is the name of the port on the Service. This is a mutually exclusive setting with "Number".', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { defaultBackend+: { service+: { port+: { name: name } } } }, - '#withNumber':: d.fn(help='Number is the numerical port number (e.g. 80) on the Service. This is a mutually exclusive setting with "Name".', args=[d.arg(name='number', type=d.T.integer)]), - withNumber(number): { defaultBackend+: { service+: { port+: { number: number } } } }, - }, - '#withName':: d.fn(help='Name is the referenced service. The service must exist in the same namespace as the Ingress object.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { defaultBackend+: { service+: { name: name } } }, - }, - }, - '#withIngressClassName':: d.fn(help='IngressClassName is the name of the IngressClass cluster resource. The associated IngressClass defines which controller will implement the resource. This replaces the deprecated `kubernetes.io/ingress.class` annotation. For backwards compatibility, when that annotation is set, it must be given precedence over this field. The controller may emit a warning if the field and annotation have different values. Implementations of this API should ignore Ingresses without a class specified. An IngressClass resource may be marked as default, which can be used to set a default value for this field. For more information, refer to the IngressClass documentation.', args=[d.arg(name='ingressClassName', type=d.T.string)]), - withIngressClassName(ingressClassName): { ingressClassName: ingressClassName }, - '#withRules':: d.fn(help='A list of host rules used to configure the Ingress. If unspecified, or no rule matches, all traffic is sent to the default backend.', args=[d.arg(name='rules', type=d.T.array)]), - withRules(rules): { rules: if std.isArray(v=rules) then rules else [rules] }, - '#withRulesMixin':: d.fn(help='A list of host rules used to configure the Ingress. If unspecified, or no rule matches, all traffic is sent to the default backend.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='rules', type=d.T.array)]), - withRulesMixin(rules): { rules+: if std.isArray(v=rules) then rules else [rules] }, - '#withTls':: d.fn(help='TLS configuration. Currently the Ingress only supports a single TLS port, 443. If multiple members of this list specify different hosts, they will be multiplexed on the same port according to the hostname specified through the SNI TLS extension, if the ingress controller fulfilling the ingress supports SNI.', args=[d.arg(name='tls', type=d.T.array)]), - withTls(tls): { tls: if std.isArray(v=tls) then tls else [tls] }, - '#withTlsMixin':: d.fn(help='TLS configuration. Currently the Ingress only supports a single TLS port, 443. If multiple members of this list specify different hosts, they will be multiplexed on the same port according to the hostname specified through the SNI TLS extension, if the ingress controller fulfilling the ingress supports SNI.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='tls', type=d.T.array)]), - withTlsMixin(tls): { tls+: if std.isArray(v=tls) then tls else [tls] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/ingressStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/ingressStatus.libsonnet deleted file mode 100644 index 697b5b33c1a1..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/ingressStatus.libsonnet +++ /dev/null @@ -1,13 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='ingressStatus', url='', help='IngressStatus describe the current state of the Ingress.'), - '#loadBalancer':: d.obj(help='LoadBalancerStatus represents the status of a load-balancer.'), - loadBalancer: { - '#withIngress':: d.fn(help='Ingress is a list containing ingress points for the load-balancer. Traffic intended for the service should be sent to these ingress points.', args=[d.arg(name='ingress', type=d.T.array)]), - withIngress(ingress): { loadBalancer+: { ingress: if std.isArray(v=ingress) then ingress else [ingress] } }, - '#withIngressMixin':: d.fn(help='Ingress is a list containing ingress points for the load-balancer. Traffic intended for the service should be sent to these ingress points.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ingress', type=d.T.array)]), - withIngressMixin(ingress): { loadBalancer+: { ingress+: if std.isArray(v=ingress) then ingress else [ingress] } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/ingressTLS.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/ingressTLS.libsonnet deleted file mode 100644 index fbbe8558c317..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/ingressTLS.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='ingressTLS', url='', help='IngressTLS describes the transport layer security associated with an Ingress.'), - '#withHosts':: d.fn(help='Hosts are a list of hosts included in the TLS certificate. The values in this list must match the name/s used in the tlsSecret. Defaults to the wildcard host setting for the loadbalancer controller fulfilling this Ingress, if left unspecified.', args=[d.arg(name='hosts', type=d.T.array)]), - withHosts(hosts): { hosts: if std.isArray(v=hosts) then hosts else [hosts] }, - '#withHostsMixin':: d.fn(help='Hosts are a list of hosts included in the TLS certificate. The values in this list must match the name/s used in the tlsSecret. Defaults to the wildcard host setting for the loadbalancer controller fulfilling this Ingress, if left unspecified.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='hosts', type=d.T.array)]), - withHostsMixin(hosts): { hosts+: if std.isArray(v=hosts) then hosts else [hosts] }, - '#withSecretName':: d.fn(help='SecretName is the name of the secret used to terminate TLS traffic on port 443. Field is left optional to allow TLS routing based on SNI hostname alone. If the SNI host in a listener conflicts with the "Host" header field used by an IngressRule, the SNI host is used for termination and value of the Host header is used for routing.', args=[d.arg(name='secretName', type=d.T.string)]), - withSecretName(secretName): { secretName: secretName }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/ipBlock.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/ipBlock.libsonnet deleted file mode 100644 index b7523163cce7..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/ipBlock.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='ipBlock', url='', help="IPBlock describes a particular CIDR (Ex. '192.168.1.1/24','2001:db9::/64') that is allowed to the pods matched by a NetworkPolicySpec's podSelector. The except entry describes CIDRs that should not be included within this rule."), - '#withCidr':: d.fn(help='CIDR is a string representing the IP Block Valid examples are "192.168.1.1/24" or "2001:db9::/64"', args=[d.arg(name='cidr', type=d.T.string)]), - withCidr(cidr): { cidr: cidr }, - '#withExcept':: d.fn(help='Except is a slice of CIDRs that should not be included within an IP Block Valid examples are "192.168.1.1/24" or "2001:db9::/64" Except values will be rejected if they are outside the CIDR range', args=[d.arg(name='except', type=d.T.array)]), - withExcept(except): { except: if std.isArray(v=except) then except else [except] }, - '#withExceptMixin':: d.fn(help='Except is a slice of CIDRs that should not be included within an IP Block Valid examples are "192.168.1.1/24" or "2001:db9::/64" Except values will be rejected if they are outside the CIDR range\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='except', type=d.T.array)]), - withExceptMixin(except): { except+: if std.isArray(v=except) then except else [except] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/main.libsonnet deleted file mode 100644 index fdfbdc14ac60..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/main.libsonnet +++ /dev/null @@ -1,24 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1', url='', help=''), - httpIngressPath: (import 'httpIngressPath.libsonnet'), - httpIngressRuleValue: (import 'httpIngressRuleValue.libsonnet'), - ingress: (import 'ingress.libsonnet'), - ingressBackend: (import 'ingressBackend.libsonnet'), - ingressClass: (import 'ingressClass.libsonnet'), - ingressClassParametersReference: (import 'ingressClassParametersReference.libsonnet'), - ingressClassSpec: (import 'ingressClassSpec.libsonnet'), - ingressRule: (import 'ingressRule.libsonnet'), - ingressServiceBackend: (import 'ingressServiceBackend.libsonnet'), - ingressSpec: (import 'ingressSpec.libsonnet'), - ingressStatus: (import 'ingressStatus.libsonnet'), - ingressTLS: (import 'ingressTLS.libsonnet'), - ipBlock: (import 'ipBlock.libsonnet'), - networkPolicy: (import 'networkPolicy.libsonnet'), - networkPolicyEgressRule: (import 'networkPolicyEgressRule.libsonnet'), - networkPolicyIngressRule: (import 'networkPolicyIngressRule.libsonnet'), - networkPolicyPeer: (import 'networkPolicyPeer.libsonnet'), - networkPolicyPort: (import 'networkPolicyPort.libsonnet'), - networkPolicySpec: (import 'networkPolicySpec.libsonnet'), - serviceBackendPort: (import 'serviceBackendPort.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/networkPolicy.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/networkPolicy.libsonnet deleted file mode 100644 index c8e3d33156dc..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/networkPolicy.libsonnet +++ /dev/null @@ -1,82 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='networkPolicy', url='', help='NetworkPolicy describes what network traffic is allowed for a set of Pods'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Networkpolicy', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'networking.k8s.io/v1', - kind: 'NetworkPolicy', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='NetworkPolicySpec provides the specification of a NetworkPolicy'), - spec: { - '#podSelector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - podSelector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { spec+: { podSelector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { spec+: { podSelector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { spec+: { podSelector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { spec+: { podSelector+: { matchLabels+: matchLabels } } }, - }, - '#withEgress':: d.fn(help='List of egress rules to be applied to the selected pods. Outgoing traffic is allowed if there are no NetworkPolicies selecting the pod (and cluster policy otherwise allows the traffic), OR if the traffic matches at least one egress rule across all of the NetworkPolicy objects whose podSelector matches the pod. If this field is empty then this NetworkPolicy limits all outgoing traffic (and serves solely to ensure that the pods it selects are isolated by default). This field is beta-level in 1.8', args=[d.arg(name='egress', type=d.T.array)]), - withEgress(egress): { spec+: { egress: if std.isArray(v=egress) then egress else [egress] } }, - '#withEgressMixin':: d.fn(help='List of egress rules to be applied to the selected pods. Outgoing traffic is allowed if there are no NetworkPolicies selecting the pod (and cluster policy otherwise allows the traffic), OR if the traffic matches at least one egress rule across all of the NetworkPolicy objects whose podSelector matches the pod. If this field is empty then this NetworkPolicy limits all outgoing traffic (and serves solely to ensure that the pods it selects are isolated by default). This field is beta-level in 1.8\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='egress', type=d.T.array)]), - withEgressMixin(egress): { spec+: { egress+: if std.isArray(v=egress) then egress else [egress] } }, - '#withIngress':: d.fn(help="List of ingress rules to be applied to the selected pods. Traffic is allowed to a pod if there are no NetworkPolicies selecting the pod (and cluster policy otherwise allows the traffic), OR if the traffic source is the pod's local node, OR if the traffic matches at least one ingress rule across all of the NetworkPolicy objects whose podSelector matches the pod. If this field is empty then this NetworkPolicy does not allow any traffic (and serves solely to ensure that the pods it selects are isolated by default)", args=[d.arg(name='ingress', type=d.T.array)]), - withIngress(ingress): { spec+: { ingress: if std.isArray(v=ingress) then ingress else [ingress] } }, - '#withIngressMixin':: d.fn(help="List of ingress rules to be applied to the selected pods. Traffic is allowed to a pod if there are no NetworkPolicies selecting the pod (and cluster policy otherwise allows the traffic), OR if the traffic source is the pod's local node, OR if the traffic matches at least one ingress rule across all of the NetworkPolicy objects whose podSelector matches the pod. If this field is empty then this NetworkPolicy does not allow any traffic (and serves solely to ensure that the pods it selects are isolated by default)\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='ingress', type=d.T.array)]), - withIngressMixin(ingress): { spec+: { ingress+: if std.isArray(v=ingress) then ingress else [ingress] } }, - '#withPolicyTypes':: d.fn(help='List of rule types that the NetworkPolicy relates to. Valid options are ["Ingress"], ["Egress"], or ["Ingress", "Egress"]. If this field is not specified, it will default based on the existence of Ingress or Egress rules; policies that contain an Egress section are assumed to affect Egress, and all policies (whether or not they contain an Ingress section) are assumed to affect Ingress. If you want to write an egress-only policy, you must explicitly specify policyTypes [ "Egress" ]. Likewise, if you want to write a policy that specifies that no egress is allowed, you must specify a policyTypes value that include "Egress" (since such a policy would not include an Egress section and would otherwise default to just [ "Ingress" ]). This field is beta-level in 1.8', args=[d.arg(name='policyTypes', type=d.T.array)]), - withPolicyTypes(policyTypes): { spec+: { policyTypes: if std.isArray(v=policyTypes) then policyTypes else [policyTypes] } }, - '#withPolicyTypesMixin':: d.fn(help='List of rule types that the NetworkPolicy relates to. Valid options are ["Ingress"], ["Egress"], or ["Ingress", "Egress"]. If this field is not specified, it will default based on the existence of Ingress or Egress rules; policies that contain an Egress section are assumed to affect Egress, and all policies (whether or not they contain an Ingress section) are assumed to affect Ingress. If you want to write an egress-only policy, you must explicitly specify policyTypes [ "Egress" ]. Likewise, if you want to write a policy that specifies that no egress is allowed, you must specify a policyTypes value that include "Egress" (since such a policy would not include an Egress section and would otherwise default to just [ "Ingress" ]). This field is beta-level in 1.8\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='policyTypes', type=d.T.array)]), - withPolicyTypesMixin(policyTypes): { spec+: { policyTypes+: if std.isArray(v=policyTypes) then policyTypes else [policyTypes] } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/networkPolicyEgressRule.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/networkPolicyEgressRule.libsonnet deleted file mode 100644 index eb4f7f9bbd27..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/networkPolicyEgressRule.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='networkPolicyEgressRule', url='', help="NetworkPolicyEgressRule describes a particular set of traffic that is allowed out of pods matched by a NetworkPolicySpec's podSelector. The traffic must match both ports and to. This type is beta-level in 1.8"), - '#withPorts':: d.fn(help='List of destination ports for outgoing traffic. Each item in this list is combined using a logical OR. If this field is empty or missing, this rule matches all ports (traffic not restricted by port). If this field is present and contains at least one item, then this rule allows traffic only if the traffic matches at least one port in the list.', args=[d.arg(name='ports', type=d.T.array)]), - withPorts(ports): { ports: if std.isArray(v=ports) then ports else [ports] }, - '#withPortsMixin':: d.fn(help='List of destination ports for outgoing traffic. Each item in this list is combined using a logical OR. If this field is empty or missing, this rule matches all ports (traffic not restricted by port). If this field is present and contains at least one item, then this rule allows traffic only if the traffic matches at least one port in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ports', type=d.T.array)]), - withPortsMixin(ports): { ports+: if std.isArray(v=ports) then ports else [ports] }, - '#withTo':: d.fn(help='List of destinations for outgoing traffic of pods selected for this rule. Items in this list are combined using a logical OR operation. If this field is empty or missing, this rule matches all destinations (traffic not restricted by destination). If this field is present and contains at least one item, this rule allows traffic only if the traffic matches at least one item in the to list.', args=[d.arg(name='to', type=d.T.array)]), - withTo(to): { to: if std.isArray(v=to) then to else [to] }, - '#withToMixin':: d.fn(help='List of destinations for outgoing traffic of pods selected for this rule. Items in this list are combined using a logical OR operation. If this field is empty or missing, this rule matches all destinations (traffic not restricted by destination). If this field is present and contains at least one item, this rule allows traffic only if the traffic matches at least one item in the to list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='to', type=d.T.array)]), - withToMixin(to): { to+: if std.isArray(v=to) then to else [to] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/networkPolicyIngressRule.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/networkPolicyIngressRule.libsonnet deleted file mode 100644 index eb84a4ac05da..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/networkPolicyIngressRule.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='networkPolicyIngressRule', url='', help="NetworkPolicyIngressRule describes a particular set of traffic that is allowed to the pods matched by a NetworkPolicySpec's podSelector. The traffic must match both ports and from."), - '#withFrom':: d.fn(help='List of sources which should be able to access the pods selected for this rule. Items in this list are combined using a logical OR operation. If this field is empty or missing, this rule matches all sources (traffic not restricted by source). If this field is present and contains at least one item, this rule allows traffic only if the traffic matches at least one item in the from list.', args=[d.arg(name='from', type=d.T.array)]), - withFrom(from): { from: if std.isArray(v=from) then from else [from] }, - '#withFromMixin':: d.fn(help='List of sources which should be able to access the pods selected for this rule. Items in this list are combined using a logical OR operation. If this field is empty or missing, this rule matches all sources (traffic not restricted by source). If this field is present and contains at least one item, this rule allows traffic only if the traffic matches at least one item in the from list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='from', type=d.T.array)]), - withFromMixin(from): { from+: if std.isArray(v=from) then from else [from] }, - '#withPorts':: d.fn(help='List of ports which should be made accessible on the pods selected for this rule. Each item in this list is combined using a logical OR. If this field is empty or missing, this rule matches all ports (traffic not restricted by port). If this field is present and contains at least one item, then this rule allows traffic only if the traffic matches at least one port in the list.', args=[d.arg(name='ports', type=d.T.array)]), - withPorts(ports): { ports: if std.isArray(v=ports) then ports else [ports] }, - '#withPortsMixin':: d.fn(help='List of ports which should be made accessible on the pods selected for this rule. Each item in this list is combined using a logical OR. If this field is empty or missing, this rule matches all ports (traffic not restricted by port). If this field is present and contains at least one item, then this rule allows traffic only if the traffic matches at least one port in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ports', type=d.T.array)]), - withPortsMixin(ports): { ports+: if std.isArray(v=ports) then ports else [ports] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/networkPolicyPeer.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/networkPolicyPeer.libsonnet deleted file mode 100644 index 625d2a5f0f97..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/networkPolicyPeer.libsonnet +++ /dev/null @@ -1,37 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='networkPolicyPeer', url='', help='NetworkPolicyPeer describes a peer to allow traffic to/from. Only certain combinations of fields are allowed'), - '#ipBlock':: d.obj(help="IPBlock describes a particular CIDR (Ex. '192.168.1.1/24','2001:db9::/64') that is allowed to the pods matched by a NetworkPolicySpec's podSelector. The except entry describes CIDRs that should not be included within this rule."), - ipBlock: { - '#withCidr':: d.fn(help='CIDR is a string representing the IP Block Valid examples are "192.168.1.1/24" or "2001:db9::/64"', args=[d.arg(name='cidr', type=d.T.string)]), - withCidr(cidr): { ipBlock+: { cidr: cidr } }, - '#withExcept':: d.fn(help='Except is a slice of CIDRs that should not be included within an IP Block Valid examples are "192.168.1.1/24" or "2001:db9::/64" Except values will be rejected if they are outside the CIDR range', args=[d.arg(name='except', type=d.T.array)]), - withExcept(except): { ipBlock+: { except: if std.isArray(v=except) then except else [except] } }, - '#withExceptMixin':: d.fn(help='Except is a slice of CIDRs that should not be included within an IP Block Valid examples are "192.168.1.1/24" or "2001:db9::/64" Except values will be rejected if they are outside the CIDR range\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='except', type=d.T.array)]), - withExceptMixin(except): { ipBlock+: { except+: if std.isArray(v=except) then except else [except] } }, - }, - '#namespaceSelector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - namespaceSelector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { namespaceSelector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { namespaceSelector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { namespaceSelector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { namespaceSelector+: { matchLabels+: matchLabels } }, - }, - '#podSelector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - podSelector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { podSelector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { podSelector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { podSelector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { podSelector+: { matchLabels+: matchLabels } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/networkPolicyPort.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/networkPolicyPort.libsonnet deleted file mode 100644 index d180f4753da4..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/networkPolicyPort.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='networkPolicyPort', url='', help='NetworkPolicyPort describes a port to allow traffic on'), - '#withEndPort':: d.fn(help='If set, indicates that the range of ports from port to endPort, inclusive, should be allowed by the policy. This field cannot be defined if the port field is not defined or if the port field is defined as a named (string) port. The endPort must be equal or greater than port. This feature is in Alpha state and should be enabled using the Feature Gate "NetworkPolicyEndPort".', args=[d.arg(name='endPort', type=d.T.integer)]), - withEndPort(endPort): { endPort: endPort }, - '#withPort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='port', type=d.T.string)]), - withPort(port): { port: port }, - '#withProtocol':: d.fn(help='The protocol (TCP, UDP, or SCTP) which traffic must match. If not specified, this field defaults to TCP.', args=[d.arg(name='protocol', type=d.T.string)]), - withProtocol(protocol): { protocol: protocol }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/networkPolicySpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/networkPolicySpec.libsonnet deleted file mode 100644 index 133ea2d7bedc..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/networkPolicySpec.libsonnet +++ /dev/null @@ -1,29 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='networkPolicySpec', url='', help='NetworkPolicySpec provides the specification of a NetworkPolicy'), - '#podSelector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - podSelector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { podSelector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { podSelector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { podSelector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { podSelector+: { matchLabels+: matchLabels } }, - }, - '#withEgress':: d.fn(help='List of egress rules to be applied to the selected pods. Outgoing traffic is allowed if there are no NetworkPolicies selecting the pod (and cluster policy otherwise allows the traffic), OR if the traffic matches at least one egress rule across all of the NetworkPolicy objects whose podSelector matches the pod. If this field is empty then this NetworkPolicy limits all outgoing traffic (and serves solely to ensure that the pods it selects are isolated by default). This field is beta-level in 1.8', args=[d.arg(name='egress', type=d.T.array)]), - withEgress(egress): { egress: if std.isArray(v=egress) then egress else [egress] }, - '#withEgressMixin':: d.fn(help='List of egress rules to be applied to the selected pods. Outgoing traffic is allowed if there are no NetworkPolicies selecting the pod (and cluster policy otherwise allows the traffic), OR if the traffic matches at least one egress rule across all of the NetworkPolicy objects whose podSelector matches the pod. If this field is empty then this NetworkPolicy limits all outgoing traffic (and serves solely to ensure that the pods it selects are isolated by default). This field is beta-level in 1.8\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='egress', type=d.T.array)]), - withEgressMixin(egress): { egress+: if std.isArray(v=egress) then egress else [egress] }, - '#withIngress':: d.fn(help="List of ingress rules to be applied to the selected pods. Traffic is allowed to a pod if there are no NetworkPolicies selecting the pod (and cluster policy otherwise allows the traffic), OR if the traffic source is the pod's local node, OR if the traffic matches at least one ingress rule across all of the NetworkPolicy objects whose podSelector matches the pod. If this field is empty then this NetworkPolicy does not allow any traffic (and serves solely to ensure that the pods it selects are isolated by default)", args=[d.arg(name='ingress', type=d.T.array)]), - withIngress(ingress): { ingress: if std.isArray(v=ingress) then ingress else [ingress] }, - '#withIngressMixin':: d.fn(help="List of ingress rules to be applied to the selected pods. Traffic is allowed to a pod if there are no NetworkPolicies selecting the pod (and cluster policy otherwise allows the traffic), OR if the traffic source is the pod's local node, OR if the traffic matches at least one ingress rule across all of the NetworkPolicy objects whose podSelector matches the pod. If this field is empty then this NetworkPolicy does not allow any traffic (and serves solely to ensure that the pods it selects are isolated by default)\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='ingress', type=d.T.array)]), - withIngressMixin(ingress): { ingress+: if std.isArray(v=ingress) then ingress else [ingress] }, - '#withPolicyTypes':: d.fn(help='List of rule types that the NetworkPolicy relates to. Valid options are ["Ingress"], ["Egress"], or ["Ingress", "Egress"]. If this field is not specified, it will default based on the existence of Ingress or Egress rules; policies that contain an Egress section are assumed to affect Egress, and all policies (whether or not they contain an Ingress section) are assumed to affect Ingress. If you want to write an egress-only policy, you must explicitly specify policyTypes [ "Egress" ]. Likewise, if you want to write a policy that specifies that no egress is allowed, you must specify a policyTypes value that include "Egress" (since such a policy would not include an Egress section and would otherwise default to just [ "Ingress" ]). This field is beta-level in 1.8', args=[d.arg(name='policyTypes', type=d.T.array)]), - withPolicyTypes(policyTypes): { policyTypes: if std.isArray(v=policyTypes) then policyTypes else [policyTypes] }, - '#withPolicyTypesMixin':: d.fn(help='List of rule types that the NetworkPolicy relates to. Valid options are ["Ingress"], ["Egress"], or ["Ingress", "Egress"]. If this field is not specified, it will default based on the existence of Ingress or Egress rules; policies that contain an Egress section are assumed to affect Egress, and all policies (whether or not they contain an Ingress section) are assumed to affect Ingress. If you want to write an egress-only policy, you must explicitly specify policyTypes [ "Egress" ]. Likewise, if you want to write a policy that specifies that no egress is allowed, you must specify a policyTypes value that include "Egress" (since such a policy would not include an Egress section and would otherwise default to just [ "Ingress" ]). This field is beta-level in 1.8\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='policyTypes', type=d.T.array)]), - withPolicyTypesMixin(policyTypes): { policyTypes+: if std.isArray(v=policyTypes) then policyTypes else [policyTypes] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/serviceBackendPort.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/serviceBackendPort.libsonnet deleted file mode 100644 index 3688de8126b4..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1/serviceBackendPort.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='serviceBackendPort', url='', help='ServiceBackendPort is the service port being referenced.'), - '#withName':: d.fn(help='Name is the name of the port on the Service. This is a mutually exclusive setting with "Number".', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withNumber':: d.fn(help='Number is the numerical port number (e.g. 80) on the Service. This is a mutually exclusive setting with "Name".', args=[d.arg(name='number', type=d.T.integer)]), - withNumber(number): { number: number }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1beta1/httpIngressPath.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1beta1/httpIngressPath.libsonnet deleted file mode 100644 index 75e77b0c68d4..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1beta1/httpIngressPath.libsonnet +++ /dev/null @@ -1,26 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='httpIngressPath', url='', help='HTTPIngressPath associates a path with a backend. Incoming urls matching the path are forwarded to the backend.'), - '#backend':: d.obj(help='IngressBackend describes all endpoints for a given service and port.'), - backend: { - '#resource':: d.obj(help='TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace.'), - resource: { - '#withApiGroup':: d.fn(help='APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.', args=[d.arg(name='apiGroup', type=d.T.string)]), - withApiGroup(apiGroup): { backend+: { resource+: { apiGroup: apiGroup } } }, - '#withKind':: d.fn(help='Kind is the type of resource being referenced', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { backend+: { resource+: { kind: kind } } }, - '#withName':: d.fn(help='Name is the name of resource being referenced', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { backend+: { resource+: { name: name } } }, - }, - '#withServiceName':: d.fn(help='Specifies the name of the referenced service.', args=[d.arg(name='serviceName', type=d.T.string)]), - withServiceName(serviceName): { backend+: { serviceName: serviceName } }, - '#withServicePort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='servicePort', type=d.T.string)]), - withServicePort(servicePort): { backend+: { servicePort: servicePort } }, - }, - '#withPath':: d.fn(help="Path is matched against the path of an incoming request. Currently it can contain characters disallowed from the conventional 'path' part of a URL as defined by RFC 3986. Paths must begin with a '/'. When unspecified, all paths from incoming requests are matched.", args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { path: path }, - '#withPathType':: d.fn(help="PathType determines the interpretation of the Path matching. PathType can be one of the following values: * Exact: Matches the URL path exactly. * Prefix: Matches based on a URL path prefix split by '/'. Matching is\n done on a path element by element basis. A path element refers is the\n list of labels in the path split by the '/' separator. A request is a\n match for path p if every p is an element-wise prefix of p of the\n request path. Note that if the last element of the path is a substring\n of the last element in request path, it is not a match (e.g. /foo/bar\n matches /foo/bar/baz, but does not match /foo/barbaz).\n* ImplementationSpecific: Interpretation of the Path matching is up to\n the IngressClass. Implementations can treat this as a separate PathType\n or treat it identically to Prefix or Exact path types.\nImplementations are required to support all path types. Defaults to ImplementationSpecific.", args=[d.arg(name='pathType', type=d.T.string)]), - withPathType(pathType): { pathType: pathType }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1beta1/httpIngressRuleValue.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1beta1/httpIngressRuleValue.libsonnet deleted file mode 100644 index 31169937a555..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1beta1/httpIngressRuleValue.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='httpIngressRuleValue', url='', help="HTTPIngressRuleValue is a list of http selectors pointing to backends. In the example: http:///? -> backend where where parts of the url correspond to RFC 3986, this resource will be used to match against everything after the last '/' and before the first '?' or '#'."), - '#withPaths':: d.fn(help='A collection of paths that map requests to backends.', args=[d.arg(name='paths', type=d.T.array)]), - withPaths(paths): { paths: if std.isArray(v=paths) then paths else [paths] }, - '#withPathsMixin':: d.fn(help='A collection of paths that map requests to backends.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='paths', type=d.T.array)]), - withPathsMixin(paths): { paths+: if std.isArray(v=paths) then paths else [paths] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1beta1/ingress.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1beta1/ingress.libsonnet deleted file mode 100644 index 5aeb1ccf620c..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1beta1/ingress.libsonnet +++ /dev/null @@ -1,85 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='ingress', url='', help='Ingress is a collection of rules that allow inbound connections to reach the endpoints defined by a backend. An Ingress can be configured to give services externally-reachable urls, load balance traffic, terminate SSL, offer name based virtual hosting etc.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Ingress', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'networking.k8s.io/v1beta1', - kind: 'Ingress', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='IngressSpec describes the Ingress the user wishes to exist.'), - spec: { - '#backend':: d.obj(help='IngressBackend describes all endpoints for a given service and port.'), - backend: { - '#resource':: d.obj(help='TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace.'), - resource: { - '#withApiGroup':: d.fn(help='APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.', args=[d.arg(name='apiGroup', type=d.T.string)]), - withApiGroup(apiGroup): { spec+: { backend+: { resource+: { apiGroup: apiGroup } } } }, - '#withKind':: d.fn(help='Kind is the type of resource being referenced', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { backend+: { resource+: { kind: kind } } } }, - '#withName':: d.fn(help='Name is the name of resource being referenced', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { backend+: { resource+: { name: name } } } }, - }, - '#withServiceName':: d.fn(help='Specifies the name of the referenced service.', args=[d.arg(name='serviceName', type=d.T.string)]), - withServiceName(serviceName): { spec+: { backend+: { serviceName: serviceName } } }, - '#withServicePort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='servicePort', type=d.T.string)]), - withServicePort(servicePort): { spec+: { backend+: { servicePort: servicePort } } }, - }, - '#withIngressClassName':: d.fn(help='IngressClassName is the name of the IngressClass cluster resource. The associated IngressClass defines which controller will implement the resource. This replaces the deprecated `kubernetes.io/ingress.class` annotation. For backwards compatibility, when that annotation is set, it must be given precedence over this field. The controller may emit a warning if the field and annotation have different values. Implementations of this API should ignore Ingresses without a class specified. An IngressClass resource may be marked as default, which can be used to set a default value for this field. For more information, refer to the IngressClass documentation.', args=[d.arg(name='ingressClassName', type=d.T.string)]), - withIngressClassName(ingressClassName): { spec+: { ingressClassName: ingressClassName } }, - '#withRules':: d.fn(help='A list of host rules used to configure the Ingress. If unspecified, or no rule matches, all traffic is sent to the default backend.', args=[d.arg(name='rules', type=d.T.array)]), - withRules(rules): { spec+: { rules: if std.isArray(v=rules) then rules else [rules] } }, - '#withRulesMixin':: d.fn(help='A list of host rules used to configure the Ingress. If unspecified, or no rule matches, all traffic is sent to the default backend.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='rules', type=d.T.array)]), - withRulesMixin(rules): { spec+: { rules+: if std.isArray(v=rules) then rules else [rules] } }, - '#withTls':: d.fn(help='TLS configuration. Currently the Ingress only supports a single TLS port, 443. If multiple members of this list specify different hosts, they will be multiplexed on the same port according to the hostname specified through the SNI TLS extension, if the ingress controller fulfilling the ingress supports SNI.', args=[d.arg(name='tls', type=d.T.array)]), - withTls(tls): { spec+: { tls: if std.isArray(v=tls) then tls else [tls] } }, - '#withTlsMixin':: d.fn(help='TLS configuration. Currently the Ingress only supports a single TLS port, 443. If multiple members of this list specify different hosts, they will be multiplexed on the same port according to the hostname specified through the SNI TLS extension, if the ingress controller fulfilling the ingress supports SNI.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='tls', type=d.T.array)]), - withTlsMixin(tls): { spec+: { tls+: if std.isArray(v=tls) then tls else [tls] } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1beta1/ingressBackend.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1beta1/ingressBackend.libsonnet deleted file mode 100644 index 1106f3161877..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1beta1/ingressBackend.libsonnet +++ /dev/null @@ -1,19 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='ingressBackend', url='', help='IngressBackend describes all endpoints for a given service and port.'), - '#resource':: d.obj(help='TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace.'), - resource: { - '#withApiGroup':: d.fn(help='APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.', args=[d.arg(name='apiGroup', type=d.T.string)]), - withApiGroup(apiGroup): { resource+: { apiGroup: apiGroup } }, - '#withKind':: d.fn(help='Kind is the type of resource being referenced', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { resource+: { kind: kind } }, - '#withName':: d.fn(help='Name is the name of resource being referenced', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { resource+: { name: name } }, - }, - '#withServiceName':: d.fn(help='Specifies the name of the referenced service.', args=[d.arg(name='serviceName', type=d.T.string)]), - withServiceName(serviceName): { serviceName: serviceName }, - '#withServicePort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='servicePort', type=d.T.string)]), - withServicePort(servicePort): { servicePort: servicePort }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1beta1/ingressClass.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1beta1/ingressClass.libsonnet deleted file mode 100644 index ed3f4cd42984..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1beta1/ingressClass.libsonnet +++ /dev/null @@ -1,74 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='ingressClass', url='', help='IngressClass represents the class of the Ingress, referenced by the Ingress Spec. The `ingressclass.kubernetes.io/is-default-class` annotation can be used to indicate that an IngressClass should be considered default. When a single IngressClass resource has this annotation set to true, new Ingress resources without a class specified will be assigned this default class.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Ingressclass', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'networking.k8s.io/v1beta1', - kind: 'IngressClass', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='IngressClassSpec provides information about the class of an Ingress.'), - spec: { - '#parameters':: d.obj(help='IngressClassParametersReference identifies an API object. This can be used to specify a cluster or namespace-scoped resource.'), - parameters: { - '#withApiGroup':: d.fn(help='APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.', args=[d.arg(name='apiGroup', type=d.T.string)]), - withApiGroup(apiGroup): { spec+: { parameters+: { apiGroup: apiGroup } } }, - '#withKind':: d.fn(help='Kind is the type of resource being referenced.', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { parameters+: { kind: kind } } }, - '#withName':: d.fn(help='Name is the name of resource being referenced.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { parameters+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace is the namespace of the resource being referenced. This field is required when scope is set to "Namespace" and must be unset when scope is set to "Cluster".', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { parameters+: { namespace: namespace } } }, - '#withScope':: d.fn(help='Scope represents if this refers to a cluster or namespace scoped resource. This may be set to "Cluster" (default) or "Namespace". Field can be enabled with IngressClassNamespacedParams feature gate.', args=[d.arg(name='scope', type=d.T.string)]), - withScope(scope): { spec+: { parameters+: { scope: scope } } }, - }, - '#withController':: d.fn(help='Controller refers to the name of the controller that should handle this class. This allows for different "flavors" that are controlled by the same controller. For example, you may have different Parameters for the same implementing controller. This should be specified as a domain-prefixed path no more than 250 characters in length, e.g. "acme.io/ingress-controller". This field is immutable.', args=[d.arg(name='controller', type=d.T.string)]), - withController(controller): { spec+: { controller: controller } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1beta1/ingressClassParametersReference.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1beta1/ingressClassParametersReference.libsonnet deleted file mode 100644 index 36601aa2f12d..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1beta1/ingressClassParametersReference.libsonnet +++ /dev/null @@ -1,16 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='ingressClassParametersReference', url='', help='IngressClassParametersReference identifies an API object. This can be used to specify a cluster or namespace-scoped resource.'), - '#withApiGroup':: d.fn(help='APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.', args=[d.arg(name='apiGroup', type=d.T.string)]), - withApiGroup(apiGroup): { apiGroup: apiGroup }, - '#withKind':: d.fn(help='Kind is the type of resource being referenced.', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { kind: kind }, - '#withName':: d.fn(help='Name is the name of resource being referenced.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withNamespace':: d.fn(help='Namespace is the namespace of the resource being referenced. This field is required when scope is set to "Namespace" and must be unset when scope is set to "Cluster".', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { namespace: namespace }, - '#withScope':: d.fn(help='Scope represents if this refers to a cluster or namespace scoped resource. This may be set to "Cluster" (default) or "Namespace". Field can be enabled with IngressClassNamespacedParams feature gate.', args=[d.arg(name='scope', type=d.T.string)]), - withScope(scope): { scope: scope }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1beta1/ingressClassSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1beta1/ingressClassSpec.libsonnet deleted file mode 100644 index 1b87fee84a8e..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1beta1/ingressClassSpec.libsonnet +++ /dev/null @@ -1,21 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='ingressClassSpec', url='', help='IngressClassSpec provides information about the class of an Ingress.'), - '#parameters':: d.obj(help='IngressClassParametersReference identifies an API object. This can be used to specify a cluster or namespace-scoped resource.'), - parameters: { - '#withApiGroup':: d.fn(help='APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.', args=[d.arg(name='apiGroup', type=d.T.string)]), - withApiGroup(apiGroup): { parameters+: { apiGroup: apiGroup } }, - '#withKind':: d.fn(help='Kind is the type of resource being referenced.', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { parameters+: { kind: kind } }, - '#withName':: d.fn(help='Name is the name of resource being referenced.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { parameters+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace is the namespace of the resource being referenced. This field is required when scope is set to "Namespace" and must be unset when scope is set to "Cluster".', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { parameters+: { namespace: namespace } }, - '#withScope':: d.fn(help='Scope represents if this refers to a cluster or namespace scoped resource. This may be set to "Cluster" (default) or "Namespace". Field can be enabled with IngressClassNamespacedParams feature gate.', args=[d.arg(name='scope', type=d.T.string)]), - withScope(scope): { parameters+: { scope: scope } }, - }, - '#withController':: d.fn(help='Controller refers to the name of the controller that should handle this class. This allows for different "flavors" that are controlled by the same controller. For example, you may have different Parameters for the same implementing controller. This should be specified as a domain-prefixed path no more than 250 characters in length, e.g. "acme.io/ingress-controller". This field is immutable.', args=[d.arg(name='controller', type=d.T.string)]), - withController(controller): { controller: controller }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1beta1/ingressRule.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1beta1/ingressRule.libsonnet deleted file mode 100644 index 3a0a5dca509d..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1beta1/ingressRule.libsonnet +++ /dev/null @@ -1,15 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='ingressRule', url='', help='IngressRule represents the rules mapping the paths under a specified host to the related backend services. Incoming requests are first evaluated for a host match, then routed to the backend associated with the matching IngressRuleValue.'), - '#http':: d.obj(help="HTTPIngressRuleValue is a list of http selectors pointing to backends. In the example: http:///? -> backend where where parts of the url correspond to RFC 3986, this resource will be used to match against everything after the last '/' and before the first '?' or '#'."), - http: { - '#withPaths':: d.fn(help='A collection of paths that map requests to backends.', args=[d.arg(name='paths', type=d.T.array)]), - withPaths(paths): { http+: { paths: if std.isArray(v=paths) then paths else [paths] } }, - '#withPathsMixin':: d.fn(help='A collection of paths that map requests to backends.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='paths', type=d.T.array)]), - withPathsMixin(paths): { http+: { paths+: if std.isArray(v=paths) then paths else [paths] } }, - }, - '#withHost':: d.fn(help="Host is the fully qualified domain name of a network host, as defined by RFC 3986. Note the following deviations from the 'host' part of the URI as defined in RFC 3986: 1. IPs are not allowed. Currently an IngressRuleValue can only apply to\n the IP in the Spec of the parent Ingress.\n2. The `:` delimiter is not respected because ports are not allowed.\n\t Currently the port of an Ingress is implicitly :80 for http and\n\t :443 for https.\nBoth these may change in the future. Incoming requests are matched against the host before the IngressRuleValue. If the host is unspecified, the Ingress routes all traffic based on the specified IngressRuleValue.\n\nHost can be 'precise' which is a domain name without the terminating dot of a network host (e.g. 'foo.bar.com') or 'wildcard', which is a domain name prefixed with a single wildcard label (e.g. '*.foo.com'). The wildcard character '*' must appear by itself as the first DNS label and matches only a single label. You cannot have a wildcard label by itself (e.g. Host == '*'). Requests will be matched against the Host field in the following way: 1. If Host is precise, the request matches this rule if the http host header is equal to Host. 2. If Host is a wildcard, then the request matches this rule if the http host header is to equal to the suffix (removing the first label) of the wildcard rule.", args=[d.arg(name='host', type=d.T.string)]), - withHost(host): { host: host }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1beta1/ingressSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1beta1/ingressSpec.libsonnet deleted file mode 100644 index a61df751c899..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1beta1/ingressSpec.libsonnet +++ /dev/null @@ -1,32 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='ingressSpec', url='', help='IngressSpec describes the Ingress the user wishes to exist.'), - '#backend':: d.obj(help='IngressBackend describes all endpoints for a given service and port.'), - backend: { - '#resource':: d.obj(help='TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace.'), - resource: { - '#withApiGroup':: d.fn(help='APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.', args=[d.arg(name='apiGroup', type=d.T.string)]), - withApiGroup(apiGroup): { backend+: { resource+: { apiGroup: apiGroup } } }, - '#withKind':: d.fn(help='Kind is the type of resource being referenced', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { backend+: { resource+: { kind: kind } } }, - '#withName':: d.fn(help='Name is the name of resource being referenced', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { backend+: { resource+: { name: name } } }, - }, - '#withServiceName':: d.fn(help='Specifies the name of the referenced service.', args=[d.arg(name='serviceName', type=d.T.string)]), - withServiceName(serviceName): { backend+: { serviceName: serviceName } }, - '#withServicePort':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='servicePort', type=d.T.string)]), - withServicePort(servicePort): { backend+: { servicePort: servicePort } }, - }, - '#withIngressClassName':: d.fn(help='IngressClassName is the name of the IngressClass cluster resource. The associated IngressClass defines which controller will implement the resource. This replaces the deprecated `kubernetes.io/ingress.class` annotation. For backwards compatibility, when that annotation is set, it must be given precedence over this field. The controller may emit a warning if the field and annotation have different values. Implementations of this API should ignore Ingresses without a class specified. An IngressClass resource may be marked as default, which can be used to set a default value for this field. For more information, refer to the IngressClass documentation.', args=[d.arg(name='ingressClassName', type=d.T.string)]), - withIngressClassName(ingressClassName): { ingressClassName: ingressClassName }, - '#withRules':: d.fn(help='A list of host rules used to configure the Ingress. If unspecified, or no rule matches, all traffic is sent to the default backend.', args=[d.arg(name='rules', type=d.T.array)]), - withRules(rules): { rules: if std.isArray(v=rules) then rules else [rules] }, - '#withRulesMixin':: d.fn(help='A list of host rules used to configure the Ingress. If unspecified, or no rule matches, all traffic is sent to the default backend.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='rules', type=d.T.array)]), - withRulesMixin(rules): { rules+: if std.isArray(v=rules) then rules else [rules] }, - '#withTls':: d.fn(help='TLS configuration. Currently the Ingress only supports a single TLS port, 443. If multiple members of this list specify different hosts, they will be multiplexed on the same port according to the hostname specified through the SNI TLS extension, if the ingress controller fulfilling the ingress supports SNI.', args=[d.arg(name='tls', type=d.T.array)]), - withTls(tls): { tls: if std.isArray(v=tls) then tls else [tls] }, - '#withTlsMixin':: d.fn(help='TLS configuration. Currently the Ingress only supports a single TLS port, 443. If multiple members of this list specify different hosts, they will be multiplexed on the same port according to the hostname specified through the SNI TLS extension, if the ingress controller fulfilling the ingress supports SNI.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='tls', type=d.T.array)]), - withTlsMixin(tls): { tls+: if std.isArray(v=tls) then tls else [tls] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1beta1/ingressStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1beta1/ingressStatus.libsonnet deleted file mode 100644 index 697b5b33c1a1..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1beta1/ingressStatus.libsonnet +++ /dev/null @@ -1,13 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='ingressStatus', url='', help='IngressStatus describe the current state of the Ingress.'), - '#loadBalancer':: d.obj(help='LoadBalancerStatus represents the status of a load-balancer.'), - loadBalancer: { - '#withIngress':: d.fn(help='Ingress is a list containing ingress points for the load-balancer. Traffic intended for the service should be sent to these ingress points.', args=[d.arg(name='ingress', type=d.T.array)]), - withIngress(ingress): { loadBalancer+: { ingress: if std.isArray(v=ingress) then ingress else [ingress] } }, - '#withIngressMixin':: d.fn(help='Ingress is a list containing ingress points for the load-balancer. Traffic intended for the service should be sent to these ingress points.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ingress', type=d.T.array)]), - withIngressMixin(ingress): { loadBalancer+: { ingress+: if std.isArray(v=ingress) then ingress else [ingress] } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1beta1/ingressTLS.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1beta1/ingressTLS.libsonnet deleted file mode 100644 index fbbe8558c317..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1beta1/ingressTLS.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='ingressTLS', url='', help='IngressTLS describes the transport layer security associated with an Ingress.'), - '#withHosts':: d.fn(help='Hosts are a list of hosts included in the TLS certificate. The values in this list must match the name/s used in the tlsSecret. Defaults to the wildcard host setting for the loadbalancer controller fulfilling this Ingress, if left unspecified.', args=[d.arg(name='hosts', type=d.T.array)]), - withHosts(hosts): { hosts: if std.isArray(v=hosts) then hosts else [hosts] }, - '#withHostsMixin':: d.fn(help='Hosts are a list of hosts included in the TLS certificate. The values in this list must match the name/s used in the tlsSecret. Defaults to the wildcard host setting for the loadbalancer controller fulfilling this Ingress, if left unspecified.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='hosts', type=d.T.array)]), - withHostsMixin(hosts): { hosts+: if std.isArray(v=hosts) then hosts else [hosts] }, - '#withSecretName':: d.fn(help='SecretName is the name of the secret used to terminate TLS traffic on port 443. Field is left optional to allow TLS routing based on SNI hostname alone. If the SNI host in a listener conflicts with the "Host" header field used by an IngressRule, the SNI host is used for termination and value of the Host header is used for routing.', args=[d.arg(name='secretName', type=d.T.string)]), - withSecretName(secretName): { secretName: secretName }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1beta1/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1beta1/main.libsonnet deleted file mode 100644 index 798e438d625b..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/networking/v1beta1/main.libsonnet +++ /dev/null @@ -1,15 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1beta1', url='', help=''), - httpIngressPath: (import 'httpIngressPath.libsonnet'), - httpIngressRuleValue: (import 'httpIngressRuleValue.libsonnet'), - ingress: (import 'ingress.libsonnet'), - ingressBackend: (import 'ingressBackend.libsonnet'), - ingressClass: (import 'ingressClass.libsonnet'), - ingressClassParametersReference: (import 'ingressClassParametersReference.libsonnet'), - ingressClassSpec: (import 'ingressClassSpec.libsonnet'), - ingressRule: (import 'ingressRule.libsonnet'), - ingressSpec: (import 'ingressSpec.libsonnet'), - ingressStatus: (import 'ingressStatus.libsonnet'), - ingressTLS: (import 'ingressTLS.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/main.libsonnet deleted file mode 100644 index 5ffbc8e086ed..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/main.libsonnet +++ /dev/null @@ -1,7 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='node', url='', help=''), - v1: (import 'v1/main.libsonnet'), - v1alpha1: (import 'v1alpha1/main.libsonnet'), - v1beta1: (import 'v1beta1/main.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/v1/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/v1/main.libsonnet deleted file mode 100644 index 020318dab4d5..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/v1/main.libsonnet +++ /dev/null @@ -1,7 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1', url='', help=''), - overhead: (import 'overhead.libsonnet'), - runtimeClass: (import 'runtimeClass.libsonnet'), - scheduling: (import 'scheduling.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/v1/overhead.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/v1/overhead.libsonnet deleted file mode 100644 index 768cb90d25c7..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/v1/overhead.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='overhead', url='', help='Overhead structure represents the resource overhead associated with running a pod.'), - '#withPodFixed':: d.fn(help='PodFixed represents the fixed resource overhead associated with running a pod.', args=[d.arg(name='podFixed', type=d.T.object)]), - withPodFixed(podFixed): { podFixed: podFixed }, - '#withPodFixedMixin':: d.fn(help='PodFixed represents the fixed resource overhead associated with running a pod.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='podFixed', type=d.T.object)]), - withPodFixedMixin(podFixed): { podFixed+: podFixed }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/v1/runtimeClass.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/v1/runtimeClass.libsonnet deleted file mode 100644 index 28e97074d4a1..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/v1/runtimeClass.libsonnet +++ /dev/null @@ -1,76 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='runtimeClass', url='', help='RuntimeClass defines a class of container runtime supported in the cluster. The RuntimeClass is used to determine which container runtime is used to run all containers in a pod. RuntimeClasses are manually defined by a user or cluster provisioner, and referenced in the PodSpec. The Kubelet is responsible for resolving the RuntimeClassName reference before running the pod. For more details, see https://kubernetes.io/docs/concepts/containers/runtime-class/'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Runtimeclass', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'node.k8s.io/v1', - kind: 'RuntimeClass', - } + self.metadata.withName(name=name), - '#overhead':: d.obj(help='Overhead structure represents the resource overhead associated with running a pod.'), - overhead: { - '#withPodFixed':: d.fn(help='PodFixed represents the fixed resource overhead associated with running a pod.', args=[d.arg(name='podFixed', type=d.T.object)]), - withPodFixed(podFixed): { overhead+: { podFixed: podFixed } }, - '#withPodFixedMixin':: d.fn(help='PodFixed represents the fixed resource overhead associated with running a pod.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='podFixed', type=d.T.object)]), - withPodFixedMixin(podFixed): { overhead+: { podFixed+: podFixed } }, - }, - '#scheduling':: d.obj(help='Scheduling specifies the scheduling constraints for nodes supporting a RuntimeClass.'), - scheduling: { - '#withNodeSelector':: d.fn(help="nodeSelector lists labels that must be present on nodes that support this RuntimeClass. Pods using this RuntimeClass can only be scheduled to a node matched by this selector. The RuntimeClass nodeSelector is merged with a pod's existing nodeSelector. Any conflicts will cause the pod to be rejected in admission.", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { scheduling+: { nodeSelector: nodeSelector } }, - '#withNodeSelectorMixin':: d.fn(help="nodeSelector lists labels that must be present on nodes that support this RuntimeClass. Pods using this RuntimeClass can only be scheduled to a node matched by this selector. The RuntimeClass nodeSelector is merged with a pod's existing nodeSelector. Any conflicts will cause the pod to be rejected in admission.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { scheduling+: { nodeSelector+: nodeSelector } }, - '#withTolerations':: d.fn(help='tolerations are appended (excluding duplicates) to pods running with this RuntimeClass during admission, effectively unioning the set of nodes tolerated by the pod and the RuntimeClass.', args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { scheduling+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } }, - '#withTolerationsMixin':: d.fn(help='tolerations are appended (excluding duplicates) to pods running with this RuntimeClass during admission, effectively unioning the set of nodes tolerated by the pod and the RuntimeClass.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { scheduling+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } }, - }, - '#withHandler':: d.fn(help='Handler specifies the underlying runtime and configuration that the CRI implementation will use to handle pods of this class. The possible values are specific to the node & CRI configuration. It is assumed that all handlers are available on every node, and handlers of the same name are equivalent on every node. For example, a handler called "runc" might specify that the runc OCI runtime (using native Linux containers) will be used to run the containers in a pod. The Handler must be lowercase, conform to the DNS Label (RFC 1123) requirements, and is immutable.', args=[d.arg(name='handler', type=d.T.string)]), - withHandler(handler): { handler: handler }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/v1/scheduling.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/v1/scheduling.libsonnet deleted file mode 100644 index 0443f726b23c..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/v1/scheduling.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='scheduling', url='', help='Scheduling specifies the scheduling constraints for nodes supporting a RuntimeClass.'), - '#withNodeSelector':: d.fn(help="nodeSelector lists labels that must be present on nodes that support this RuntimeClass. Pods using this RuntimeClass can only be scheduled to a node matched by this selector. The RuntimeClass nodeSelector is merged with a pod's existing nodeSelector. Any conflicts will cause the pod to be rejected in admission.", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { nodeSelector: nodeSelector }, - '#withNodeSelectorMixin':: d.fn(help="nodeSelector lists labels that must be present on nodes that support this RuntimeClass. Pods using this RuntimeClass can only be scheduled to a node matched by this selector. The RuntimeClass nodeSelector is merged with a pod's existing nodeSelector. Any conflicts will cause the pod to be rejected in admission.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { nodeSelector+: nodeSelector }, - '#withTolerations':: d.fn(help='tolerations are appended (excluding duplicates) to pods running with this RuntimeClass during admission, effectively unioning the set of nodes tolerated by the pod and the RuntimeClass.', args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] }, - '#withTolerationsMixin':: d.fn(help='tolerations are appended (excluding duplicates) to pods running with this RuntimeClass during admission, effectively unioning the set of nodes tolerated by the pod and the RuntimeClass.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/v1alpha1/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/v1alpha1/main.libsonnet deleted file mode 100644 index fc1ded9abfdf..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/v1alpha1/main.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1alpha1', url='', help=''), - overhead: (import 'overhead.libsonnet'), - runtimeClass: (import 'runtimeClass.libsonnet'), - runtimeClassSpec: (import 'runtimeClassSpec.libsonnet'), - scheduling: (import 'scheduling.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/v1alpha1/overhead.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/v1alpha1/overhead.libsonnet deleted file mode 100644 index 768cb90d25c7..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/v1alpha1/overhead.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='overhead', url='', help='Overhead structure represents the resource overhead associated with running a pod.'), - '#withPodFixed':: d.fn(help='PodFixed represents the fixed resource overhead associated with running a pod.', args=[d.arg(name='podFixed', type=d.T.object)]), - withPodFixed(podFixed): { podFixed: podFixed }, - '#withPodFixedMixin':: d.fn(help='PodFixed represents the fixed resource overhead associated with running a pod.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='podFixed', type=d.T.object)]), - withPodFixedMixin(podFixed): { podFixed+: podFixed }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/v1alpha1/runtimeClass.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/v1alpha1/runtimeClass.libsonnet deleted file mode 100644 index d64a8990205a..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/v1alpha1/runtimeClass.libsonnet +++ /dev/null @@ -1,79 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='runtimeClass', url='', help='RuntimeClass defines a class of container runtime supported in the cluster. The RuntimeClass is used to determine which container runtime is used to run all containers in a pod. RuntimeClasses are (currently) manually defined by a user or cluster provisioner, and referenced in the PodSpec. The Kubelet is responsible for resolving the RuntimeClassName reference before running the pod. For more details, see https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Runtimeclass', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'node.k8s.io/v1alpha1', - kind: 'RuntimeClass', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='RuntimeClassSpec is a specification of a RuntimeClass. It contains parameters that are required to describe the RuntimeClass to the Container Runtime Interface (CRI) implementation, as well as any other components that need to understand how the pod will be run. The RuntimeClassSpec is immutable.'), - spec: { - '#overhead':: d.obj(help='Overhead structure represents the resource overhead associated with running a pod.'), - overhead: { - '#withPodFixed':: d.fn(help='PodFixed represents the fixed resource overhead associated with running a pod.', args=[d.arg(name='podFixed', type=d.T.object)]), - withPodFixed(podFixed): { spec+: { overhead+: { podFixed: podFixed } } }, - '#withPodFixedMixin':: d.fn(help='PodFixed represents the fixed resource overhead associated with running a pod.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='podFixed', type=d.T.object)]), - withPodFixedMixin(podFixed): { spec+: { overhead+: { podFixed+: podFixed } } }, - }, - '#scheduling':: d.obj(help='Scheduling specifies the scheduling constraints for nodes supporting a RuntimeClass.'), - scheduling: { - '#withNodeSelector':: d.fn(help="nodeSelector lists labels that must be present on nodes that support this RuntimeClass. Pods using this RuntimeClass can only be scheduled to a node matched by this selector. The RuntimeClass nodeSelector is merged with a pod's existing nodeSelector. Any conflicts will cause the pod to be rejected in admission.", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { spec+: { scheduling+: { nodeSelector: nodeSelector } } }, - '#withNodeSelectorMixin':: d.fn(help="nodeSelector lists labels that must be present on nodes that support this RuntimeClass. Pods using this RuntimeClass can only be scheduled to a node matched by this selector. The RuntimeClass nodeSelector is merged with a pod's existing nodeSelector. Any conflicts will cause the pod to be rejected in admission.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { spec+: { scheduling+: { nodeSelector+: nodeSelector } } }, - '#withTolerations':: d.fn(help='tolerations are appended (excluding duplicates) to pods running with this RuntimeClass during admission, effectively unioning the set of nodes tolerated by the pod and the RuntimeClass.', args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { spec+: { scheduling+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } } }, - '#withTolerationsMixin':: d.fn(help='tolerations are appended (excluding duplicates) to pods running with this RuntimeClass during admission, effectively unioning the set of nodes tolerated by the pod and the RuntimeClass.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { spec+: { scheduling+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } } }, - }, - '#withRuntimeHandler':: d.fn(help='RuntimeHandler specifies the underlying runtime and configuration that the CRI implementation will use to handle pods of this class. The possible values are specific to the node & CRI configuration. It is assumed that all handlers are available on every node, and handlers of the same name are equivalent on every node. For example, a handler called "runc" might specify that the runc OCI runtime (using native Linux containers) will be used to run the containers in a pod. The RuntimeHandler must be lowercase, conform to the DNS Label (RFC 1123) requirements, and is immutable.', args=[d.arg(name='runtimeHandler', type=d.T.string)]), - withRuntimeHandler(runtimeHandler): { spec+: { runtimeHandler: runtimeHandler } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/v1alpha1/runtimeClassSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/v1alpha1/runtimeClassSpec.libsonnet deleted file mode 100644 index 89dc9e847bab..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/v1alpha1/runtimeClassSpec.libsonnet +++ /dev/null @@ -1,26 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='runtimeClassSpec', url='', help='RuntimeClassSpec is a specification of a RuntimeClass. It contains parameters that are required to describe the RuntimeClass to the Container Runtime Interface (CRI) implementation, as well as any other components that need to understand how the pod will be run. The RuntimeClassSpec is immutable.'), - '#overhead':: d.obj(help='Overhead structure represents the resource overhead associated with running a pod.'), - overhead: { - '#withPodFixed':: d.fn(help='PodFixed represents the fixed resource overhead associated with running a pod.', args=[d.arg(name='podFixed', type=d.T.object)]), - withPodFixed(podFixed): { overhead+: { podFixed: podFixed } }, - '#withPodFixedMixin':: d.fn(help='PodFixed represents the fixed resource overhead associated with running a pod.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='podFixed', type=d.T.object)]), - withPodFixedMixin(podFixed): { overhead+: { podFixed+: podFixed } }, - }, - '#scheduling':: d.obj(help='Scheduling specifies the scheduling constraints for nodes supporting a RuntimeClass.'), - scheduling: { - '#withNodeSelector':: d.fn(help="nodeSelector lists labels that must be present on nodes that support this RuntimeClass. Pods using this RuntimeClass can only be scheduled to a node matched by this selector. The RuntimeClass nodeSelector is merged with a pod's existing nodeSelector. Any conflicts will cause the pod to be rejected in admission.", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { scheduling+: { nodeSelector: nodeSelector } }, - '#withNodeSelectorMixin':: d.fn(help="nodeSelector lists labels that must be present on nodes that support this RuntimeClass. Pods using this RuntimeClass can only be scheduled to a node matched by this selector. The RuntimeClass nodeSelector is merged with a pod's existing nodeSelector. Any conflicts will cause the pod to be rejected in admission.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { scheduling+: { nodeSelector+: nodeSelector } }, - '#withTolerations':: d.fn(help='tolerations are appended (excluding duplicates) to pods running with this RuntimeClass during admission, effectively unioning the set of nodes tolerated by the pod and the RuntimeClass.', args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { scheduling+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } }, - '#withTolerationsMixin':: d.fn(help='tolerations are appended (excluding duplicates) to pods running with this RuntimeClass during admission, effectively unioning the set of nodes tolerated by the pod and the RuntimeClass.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { scheduling+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } }, - }, - '#withRuntimeHandler':: d.fn(help='RuntimeHandler specifies the underlying runtime and configuration that the CRI implementation will use to handle pods of this class. The possible values are specific to the node & CRI configuration. It is assumed that all handlers are available on every node, and handlers of the same name are equivalent on every node. For example, a handler called "runc" might specify that the runc OCI runtime (using native Linux containers) will be used to run the containers in a pod. The RuntimeHandler must be lowercase, conform to the DNS Label (RFC 1123) requirements, and is immutable.', args=[d.arg(name='runtimeHandler', type=d.T.string)]), - withRuntimeHandler(runtimeHandler): { runtimeHandler: runtimeHandler }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/v1alpha1/scheduling.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/v1alpha1/scheduling.libsonnet deleted file mode 100644 index 0443f726b23c..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/v1alpha1/scheduling.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='scheduling', url='', help='Scheduling specifies the scheduling constraints for nodes supporting a RuntimeClass.'), - '#withNodeSelector':: d.fn(help="nodeSelector lists labels that must be present on nodes that support this RuntimeClass. Pods using this RuntimeClass can only be scheduled to a node matched by this selector. The RuntimeClass nodeSelector is merged with a pod's existing nodeSelector. Any conflicts will cause the pod to be rejected in admission.", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { nodeSelector: nodeSelector }, - '#withNodeSelectorMixin':: d.fn(help="nodeSelector lists labels that must be present on nodes that support this RuntimeClass. Pods using this RuntimeClass can only be scheduled to a node matched by this selector. The RuntimeClass nodeSelector is merged with a pod's existing nodeSelector. Any conflicts will cause the pod to be rejected in admission.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { nodeSelector+: nodeSelector }, - '#withTolerations':: d.fn(help='tolerations are appended (excluding duplicates) to pods running with this RuntimeClass during admission, effectively unioning the set of nodes tolerated by the pod and the RuntimeClass.', args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] }, - '#withTolerationsMixin':: d.fn(help='tolerations are appended (excluding duplicates) to pods running with this RuntimeClass during admission, effectively unioning the set of nodes tolerated by the pod and the RuntimeClass.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/v1beta1/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/v1beta1/main.libsonnet deleted file mode 100644 index cbc6521678c0..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/v1beta1/main.libsonnet +++ /dev/null @@ -1,7 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1beta1', url='', help=''), - overhead: (import 'overhead.libsonnet'), - runtimeClass: (import 'runtimeClass.libsonnet'), - scheduling: (import 'scheduling.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/v1beta1/overhead.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/v1beta1/overhead.libsonnet deleted file mode 100644 index 768cb90d25c7..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/v1beta1/overhead.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='overhead', url='', help='Overhead structure represents the resource overhead associated with running a pod.'), - '#withPodFixed':: d.fn(help='PodFixed represents the fixed resource overhead associated with running a pod.', args=[d.arg(name='podFixed', type=d.T.object)]), - withPodFixed(podFixed): { podFixed: podFixed }, - '#withPodFixedMixin':: d.fn(help='PodFixed represents the fixed resource overhead associated with running a pod.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='podFixed', type=d.T.object)]), - withPodFixedMixin(podFixed): { podFixed+: podFixed }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/v1beta1/runtimeClass.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/v1beta1/runtimeClass.libsonnet deleted file mode 100644 index 0a5984cd48dd..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/v1beta1/runtimeClass.libsonnet +++ /dev/null @@ -1,76 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='runtimeClass', url='', help='RuntimeClass defines a class of container runtime supported in the cluster. The RuntimeClass is used to determine which container runtime is used to run all containers in a pod. RuntimeClasses are (currently) manually defined by a user or cluster provisioner, and referenced in the PodSpec. The Kubelet is responsible for resolving the RuntimeClassName reference before running the pod. For more details, see https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Runtimeclass', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'node.k8s.io/v1beta1', - kind: 'RuntimeClass', - } + self.metadata.withName(name=name), - '#overhead':: d.obj(help='Overhead structure represents the resource overhead associated with running a pod.'), - overhead: { - '#withPodFixed':: d.fn(help='PodFixed represents the fixed resource overhead associated with running a pod.', args=[d.arg(name='podFixed', type=d.T.object)]), - withPodFixed(podFixed): { overhead+: { podFixed: podFixed } }, - '#withPodFixedMixin':: d.fn(help='PodFixed represents the fixed resource overhead associated with running a pod.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='podFixed', type=d.T.object)]), - withPodFixedMixin(podFixed): { overhead+: { podFixed+: podFixed } }, - }, - '#scheduling':: d.obj(help='Scheduling specifies the scheduling constraints for nodes supporting a RuntimeClass.'), - scheduling: { - '#withNodeSelector':: d.fn(help="nodeSelector lists labels that must be present on nodes that support this RuntimeClass. Pods using this RuntimeClass can only be scheduled to a node matched by this selector. The RuntimeClass nodeSelector is merged with a pod's existing nodeSelector. Any conflicts will cause the pod to be rejected in admission.", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { scheduling+: { nodeSelector: nodeSelector } }, - '#withNodeSelectorMixin':: d.fn(help="nodeSelector lists labels that must be present on nodes that support this RuntimeClass. Pods using this RuntimeClass can only be scheduled to a node matched by this selector. The RuntimeClass nodeSelector is merged with a pod's existing nodeSelector. Any conflicts will cause the pod to be rejected in admission.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { scheduling+: { nodeSelector+: nodeSelector } }, - '#withTolerations':: d.fn(help='tolerations are appended (excluding duplicates) to pods running with this RuntimeClass during admission, effectively unioning the set of nodes tolerated by the pod and the RuntimeClass.', args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { scheduling+: { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] } }, - '#withTolerationsMixin':: d.fn(help='tolerations are appended (excluding duplicates) to pods running with this RuntimeClass during admission, effectively unioning the set of nodes tolerated by the pod and the RuntimeClass.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { scheduling+: { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] } }, - }, - '#withHandler':: d.fn(help='Handler specifies the underlying runtime and configuration that the CRI implementation will use to handle pods of this class. The possible values are specific to the node & CRI configuration. It is assumed that all handlers are available on every node, and handlers of the same name are equivalent on every node. For example, a handler called "runc" might specify that the runc OCI runtime (using native Linux containers) will be used to run the containers in a pod. The Handler must be lowercase, conform to the DNS Label (RFC 1123) requirements, and is immutable.', args=[d.arg(name='handler', type=d.T.string)]), - withHandler(handler): { handler: handler }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/v1beta1/scheduling.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/v1beta1/scheduling.libsonnet deleted file mode 100644 index 0443f726b23c..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/node/v1beta1/scheduling.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='scheduling', url='', help='Scheduling specifies the scheduling constraints for nodes supporting a RuntimeClass.'), - '#withNodeSelector':: d.fn(help="nodeSelector lists labels that must be present on nodes that support this RuntimeClass. Pods using this RuntimeClass can only be scheduled to a node matched by this selector. The RuntimeClass nodeSelector is merged with a pod's existing nodeSelector. Any conflicts will cause the pod to be rejected in admission.", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelector(nodeSelector): { nodeSelector: nodeSelector }, - '#withNodeSelectorMixin':: d.fn(help="nodeSelector lists labels that must be present on nodes that support this RuntimeClass. Pods using this RuntimeClass can only be scheduled to a node matched by this selector. The RuntimeClass nodeSelector is merged with a pod's existing nodeSelector. Any conflicts will cause the pod to be rejected in admission.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='nodeSelector', type=d.T.object)]), - withNodeSelectorMixin(nodeSelector): { nodeSelector+: nodeSelector }, - '#withTolerations':: d.fn(help='tolerations are appended (excluding duplicates) to pods running with this RuntimeClass during admission, effectively unioning the set of nodes tolerated by the pod and the RuntimeClass.', args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerations(tolerations): { tolerations: if std.isArray(v=tolerations) then tolerations else [tolerations] }, - '#withTolerationsMixin':: d.fn(help='tolerations are appended (excluding duplicates) to pods running with this RuntimeClass during admission, effectively unioning the set of nodes tolerated by the pod and the RuntimeClass.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='tolerations', type=d.T.array)]), - withTolerationsMixin(tolerations): { tolerations+: if std.isArray(v=tolerations) then tolerations else [tolerations] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/main.libsonnet deleted file mode 100644 index 4d23cf36e8fb..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/main.libsonnet +++ /dev/null @@ -1,6 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='policy', url='', help=''), - v1: (import 'v1/main.libsonnet'), - v1beta1: (import 'v1beta1/main.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1/main.libsonnet deleted file mode 100644 index 756aa865a8b6..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1/main.libsonnet +++ /dev/null @@ -1,7 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1', url='', help=''), - podDisruptionBudget: (import 'podDisruptionBudget.libsonnet'), - podDisruptionBudgetSpec: (import 'podDisruptionBudgetSpec.libsonnet'), - podDisruptionBudgetStatus: (import 'podDisruptionBudgetStatus.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1/podDisruptionBudget.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1/podDisruptionBudget.libsonnet deleted file mode 100644 index ced82ef9242e..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1/podDisruptionBudget.libsonnet +++ /dev/null @@ -1,74 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='podDisruptionBudget', url='', help='PodDisruptionBudget is an object to define the max disruption that can be caused to a collection of pods'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Poddisruptionbudget', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'policy/v1', - kind: 'PodDisruptionBudget', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='PodDisruptionBudgetSpec is a description of a PodDisruptionBudget.'), - spec: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { spec+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { spec+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { spec+: { selector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { spec+: { selector+: { matchLabels+: matchLabels } } }, - }, - '#withMaxUnavailable':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxUnavailable', type=d.T.string)]), - withMaxUnavailable(maxUnavailable): { spec+: { maxUnavailable: maxUnavailable } }, - '#withMinAvailable':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='minAvailable', type=d.T.string)]), - withMinAvailable(minAvailable): { spec+: { minAvailable: minAvailable } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1/podDisruptionBudgetSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1/podDisruptionBudgetSpec.libsonnet deleted file mode 100644 index d7c9a5ea7261..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1/podDisruptionBudgetSpec.libsonnet +++ /dev/null @@ -1,21 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='podDisruptionBudgetSpec', url='', help='PodDisruptionBudgetSpec is a description of a PodDisruptionBudget.'), - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { selector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { selector+: { matchLabels+: matchLabels } }, - }, - '#withMaxUnavailable':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxUnavailable', type=d.T.string)]), - withMaxUnavailable(maxUnavailable): { maxUnavailable: maxUnavailable }, - '#withMinAvailable':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='minAvailable', type=d.T.string)]), - withMinAvailable(minAvailable): { minAvailable: minAvailable }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1/podDisruptionBudgetStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1/podDisruptionBudgetStatus.libsonnet deleted file mode 100644 index 8391c0639dcf..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1/podDisruptionBudgetStatus.libsonnet +++ /dev/null @@ -1,24 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='podDisruptionBudgetStatus', url='', help='PodDisruptionBudgetStatus represents information about the status of a PodDisruptionBudget. Status may trail the actual state of a system.'), - '#withConditions':: d.fn(help="Conditions contain conditions for PDB. The disruption controller sets the DisruptionAllowed condition. The following are known values for the reason field (additional reasons could be added in the future): - SyncFailed: The controller encountered an error and wasn't able to compute\n the number of allowed disruptions. Therefore no disruptions are\n allowed and the status of the condition will be False.\n- InsufficientPods: The number of pods are either at or below the number\n required by the PodDisruptionBudget. No disruptions are\n allowed and the status of the condition will be False.\n- SufficientPods: There are more pods than required by the PodDisruptionBudget.\n The condition will be True, and the number of allowed\n disruptions are provided by the disruptionsAllowed property.", args=[d.arg(name='conditions', type=d.T.array)]), - withConditions(conditions): { conditions: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withConditionsMixin':: d.fn(help="Conditions contain conditions for PDB. The disruption controller sets the DisruptionAllowed condition. The following are known values for the reason field (additional reasons could be added in the future): - SyncFailed: The controller encountered an error and wasn't able to compute\n the number of allowed disruptions. Therefore no disruptions are\n allowed and the status of the condition will be False.\n- InsufficientPods: The number of pods are either at or below the number\n required by the PodDisruptionBudget. No disruptions are\n allowed and the status of the condition will be False.\n- SufficientPods: There are more pods than required by the PodDisruptionBudget.\n The condition will be True, and the number of allowed\n disruptions are provided by the disruptionsAllowed property.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='conditions', type=d.T.array)]), - withConditionsMixin(conditions): { conditions+: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withCurrentHealthy':: d.fn(help='current number of healthy pods', args=[d.arg(name='currentHealthy', type=d.T.integer)]), - withCurrentHealthy(currentHealthy): { currentHealthy: currentHealthy }, - '#withDesiredHealthy':: d.fn(help='minimum desired number of healthy pods', args=[d.arg(name='desiredHealthy', type=d.T.integer)]), - withDesiredHealthy(desiredHealthy): { desiredHealthy: desiredHealthy }, - '#withDisruptedPods':: d.fn(help="DisruptedPods contains information about pods whose eviction was processed by the API server eviction subresource handler but has not yet been observed by the PodDisruptionBudget controller. A pod will be in this map from the time when the API server processed the eviction request to the time when the pod is seen by PDB controller as having been marked for deletion (or after a timeout). The key in the map is the name of the pod and the value is the time when the API server processed the eviction request. If the deletion didn't occur and a pod is still there it will be removed from the list automatically by PodDisruptionBudget controller after some time. If everything goes smooth this map should be empty for the most of the time. Large number of entries in the map may indicate problems with pod deletions.", args=[d.arg(name='disruptedPods', type=d.T.object)]), - withDisruptedPods(disruptedPods): { disruptedPods: disruptedPods }, - '#withDisruptedPodsMixin':: d.fn(help="DisruptedPods contains information about pods whose eviction was processed by the API server eviction subresource handler but has not yet been observed by the PodDisruptionBudget controller. A pod will be in this map from the time when the API server processed the eviction request to the time when the pod is seen by PDB controller as having been marked for deletion (or after a timeout). The key in the map is the name of the pod and the value is the time when the API server processed the eviction request. If the deletion didn't occur and a pod is still there it will be removed from the list automatically by PodDisruptionBudget controller after some time. If everything goes smooth this map should be empty for the most of the time. Large number of entries in the map may indicate problems with pod deletions.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='disruptedPods', type=d.T.object)]), - withDisruptedPodsMixin(disruptedPods): { disruptedPods+: disruptedPods }, - '#withDisruptionsAllowed':: d.fn(help='Number of pod disruptions that are currently allowed.', args=[d.arg(name='disruptionsAllowed', type=d.T.integer)]), - withDisruptionsAllowed(disruptionsAllowed): { disruptionsAllowed: disruptionsAllowed }, - '#withExpectedPods':: d.fn(help='total number of pods counted by this disruption budget', args=[d.arg(name='expectedPods', type=d.T.integer)]), - withExpectedPods(expectedPods): { expectedPods: expectedPods }, - '#withObservedGeneration':: d.fn(help="Most recent generation observed when updating this PDB status. DisruptionsAllowed and other status information is valid only if observedGeneration equals to PDB's object generation.", args=[d.arg(name='observedGeneration', type=d.T.integer)]), - withObservedGeneration(observedGeneration): { observedGeneration: observedGeneration }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/allowedCSIDriver.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/allowedCSIDriver.libsonnet deleted file mode 100644 index f8e7dadc0a2f..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/allowedCSIDriver.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='allowedCSIDriver', url='', help='AllowedCSIDriver represents a single inline CSI Driver that is allowed to be used.'), - '#withName':: d.fn(help='Name is the registered name of the CSI driver', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/allowedFlexVolume.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/allowedFlexVolume.libsonnet deleted file mode 100644 index 9d5ce68dbcb7..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/allowedFlexVolume.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='allowedFlexVolume', url='', help='AllowedFlexVolume represents a single Flexvolume that is allowed to be used.'), - '#withDriver':: d.fn(help='driver is the name of the Flexvolume driver.', args=[d.arg(name='driver', type=d.T.string)]), - withDriver(driver): { driver: driver }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/allowedHostPath.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/allowedHostPath.libsonnet deleted file mode 100644 index 8daf70220e0c..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/allowedHostPath.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='allowedHostPath', url='', help='AllowedHostPath defines the host volume conditions that will be enabled by a policy for pods to use. It requires the path prefix to be defined.'), - '#withPathPrefix':: d.fn(help='pathPrefix is the path prefix that the host volume must match. It does not support `*`. Trailing slashes are trimmed when validating the path prefix with a host path.\n\nExamples: `/foo` would allow `/foo`, `/foo/` and `/foo/bar` `/foo` would not allow `/food` or `/etc/foo`', args=[d.arg(name='pathPrefix', type=d.T.string)]), - withPathPrefix(pathPrefix): { pathPrefix: pathPrefix }, - '#withReadOnly':: d.fn(help='when set to true, will allow host volumes matching the pathPrefix only if all volume mounts are readOnly.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { readOnly: readOnly }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/eviction.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/eviction.libsonnet deleted file mode 100644 index c0bf81d99851..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/eviction.libsonnet +++ /dev/null @@ -1,80 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='eviction', url='', help='Eviction evicts a pod from its node subject to certain policies and safety constraints. This is a subresource of Pod. A request to cause such an eviction is created by POSTing to .../pods//evictions.'), - '#deleteOptions':: d.obj(help='DeleteOptions may be provided when deleting an API object.'), - deleteOptions: { - '#preconditions':: d.obj(help='Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out.'), - preconditions: { - '#withResourceVersion':: d.fn(help='Specifies the target ResourceVersion', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { deleteOptions+: { preconditions+: { resourceVersion: resourceVersion } } }, - '#withUid':: d.fn(help='Specifies the target UID.', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { deleteOptions+: { preconditions+: { uid: uid } } }, - }, - '#withApiVersion':: d.fn(help='APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources', args=[d.arg(name='apiVersion', type=d.T.string)]), - withApiVersion(apiVersion): { deleteOptions+: { apiVersion: apiVersion } }, - '#withDryRun':: d.fn(help='When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed', args=[d.arg(name='dryRun', type=d.T.array)]), - withDryRun(dryRun): { deleteOptions+: { dryRun: if std.isArray(v=dryRun) then dryRun else [dryRun] } }, - '#withDryRunMixin':: d.fn(help='When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='dryRun', type=d.T.array)]), - withDryRunMixin(dryRun): { deleteOptions+: { dryRun+: if std.isArray(v=dryRun) then dryRun else [dryRun] } }, - '#withGracePeriodSeconds':: d.fn(help='The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.', args=[d.arg(name='gracePeriodSeconds', type=d.T.integer)]), - withGracePeriodSeconds(gracePeriodSeconds): { deleteOptions+: { gracePeriodSeconds: gracePeriodSeconds } }, - '#withKind':: d.fn(help='Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { deleteOptions+: { kind: kind } }, - '#withOrphanDependents':: d.fn(help="Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the 'orphan' finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", args=[d.arg(name='orphanDependents', type=d.T.boolean)]), - withOrphanDependents(orphanDependents): { deleteOptions+: { orphanDependents: orphanDependents } }, - '#withPropagationPolicy':: d.fn(help="Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground.", args=[d.arg(name='propagationPolicy', type=d.T.string)]), - withPropagationPolicy(propagationPolicy): { deleteOptions+: { propagationPolicy: propagationPolicy } }, - }, - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Eviction', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'policy/v1beta1', - kind: 'Eviction', - } + self.metadata.withName(name=name), - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/fsGroupStrategyOptions.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/fsGroupStrategyOptions.libsonnet deleted file mode 100644 index 9ff2b429fced..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/fsGroupStrategyOptions.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='fsGroupStrategyOptions', url='', help='FSGroupStrategyOptions defines the strategy type and options used to create the strategy.'), - '#withRanges':: d.fn(help='ranges are the allowed ranges of fs groups. If you would like to force a single fs group then supply a single range with the same start and end. Required for MustRunAs.', args=[d.arg(name='ranges', type=d.T.array)]), - withRanges(ranges): { ranges: if std.isArray(v=ranges) then ranges else [ranges] }, - '#withRangesMixin':: d.fn(help='ranges are the allowed ranges of fs groups. If you would like to force a single fs group then supply a single range with the same start and end. Required for MustRunAs.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ranges', type=d.T.array)]), - withRangesMixin(ranges): { ranges+: if std.isArray(v=ranges) then ranges else [ranges] }, - '#withRule':: d.fn(help='rule is the strategy that will dictate what FSGroup is used in the SecurityContext.', args=[d.arg(name='rule', type=d.T.string)]), - withRule(rule): { rule: rule }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/hostPortRange.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/hostPortRange.libsonnet deleted file mode 100644 index 777c3f7c8ed4..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/hostPortRange.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='hostPortRange', url='', help='HostPortRange defines a range of host ports that will be enabled by a policy for pods to use. It requires both the start and end to be defined.'), - '#withMax':: d.fn(help='max is the end of the range, inclusive.', args=[d.arg(name='max', type=d.T.integer)]), - withMax(max): { max: max }, - '#withMin':: d.fn(help='min is the start of the range, inclusive.', args=[d.arg(name='min', type=d.T.integer)]), - withMin(min): { min: min }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/idRange.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/idRange.libsonnet deleted file mode 100644 index 30e7e28bd65f..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/idRange.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='idRange', url='', help='IDRange provides a min/max of an allowed range of IDs.'), - '#withMax':: d.fn(help='max is the end of the range, inclusive.', args=[d.arg(name='max', type=d.T.integer)]), - withMax(max): { max: max }, - '#withMin':: d.fn(help='min is the start of the range, inclusive.', args=[d.arg(name='min', type=d.T.integer)]), - withMin(min): { min: min }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/main.libsonnet deleted file mode 100644 index 3b0bb525f0f9..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/main.libsonnet +++ /dev/null @@ -1,21 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1beta1', url='', help=''), - allowedCSIDriver: (import 'allowedCSIDriver.libsonnet'), - allowedFlexVolume: (import 'allowedFlexVolume.libsonnet'), - allowedHostPath: (import 'allowedHostPath.libsonnet'), - eviction: (import 'eviction.libsonnet'), - fsGroupStrategyOptions: (import 'fsGroupStrategyOptions.libsonnet'), - hostPortRange: (import 'hostPortRange.libsonnet'), - idRange: (import 'idRange.libsonnet'), - podDisruptionBudget: (import 'podDisruptionBudget.libsonnet'), - podDisruptionBudgetSpec: (import 'podDisruptionBudgetSpec.libsonnet'), - podDisruptionBudgetStatus: (import 'podDisruptionBudgetStatus.libsonnet'), - podSecurityPolicy: (import 'podSecurityPolicy.libsonnet'), - podSecurityPolicySpec: (import 'podSecurityPolicySpec.libsonnet'), - runAsGroupStrategyOptions: (import 'runAsGroupStrategyOptions.libsonnet'), - runAsUserStrategyOptions: (import 'runAsUserStrategyOptions.libsonnet'), - runtimeClassStrategyOptions: (import 'runtimeClassStrategyOptions.libsonnet'), - seLinuxStrategyOptions: (import 'seLinuxStrategyOptions.libsonnet'), - supplementalGroupsStrategyOptions: (import 'supplementalGroupsStrategyOptions.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/podDisruptionBudget.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/podDisruptionBudget.libsonnet deleted file mode 100644 index 009b193d67a5..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/podDisruptionBudget.libsonnet +++ /dev/null @@ -1,74 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='podDisruptionBudget', url='', help='PodDisruptionBudget is an object to define the max disruption that can be caused to a collection of pods'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Poddisruptionbudget', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'policy/v1beta1', - kind: 'PodDisruptionBudget', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='PodDisruptionBudgetSpec is a description of a PodDisruptionBudget.'), - spec: { - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { spec+: { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { spec+: { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { spec+: { selector+: { matchLabels: matchLabels } } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { spec+: { selector+: { matchLabels+: matchLabels } } }, - }, - '#withMaxUnavailable':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxUnavailable', type=d.T.string)]), - withMaxUnavailable(maxUnavailable): { spec+: { maxUnavailable: maxUnavailable } }, - '#withMinAvailable':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='minAvailable', type=d.T.string)]), - withMinAvailable(minAvailable): { spec+: { minAvailable: minAvailable } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/podDisruptionBudgetSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/podDisruptionBudgetSpec.libsonnet deleted file mode 100644 index d7c9a5ea7261..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/podDisruptionBudgetSpec.libsonnet +++ /dev/null @@ -1,21 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='podDisruptionBudgetSpec', url='', help='PodDisruptionBudgetSpec is a description of a PodDisruptionBudget.'), - '#selector':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - selector: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { selector+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { selector+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { selector+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { selector+: { matchLabels+: matchLabels } }, - }, - '#withMaxUnavailable':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='maxUnavailable', type=d.T.string)]), - withMaxUnavailable(maxUnavailable): { maxUnavailable: maxUnavailable }, - '#withMinAvailable':: d.fn(help='IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.', args=[d.arg(name='minAvailable', type=d.T.string)]), - withMinAvailable(minAvailable): { minAvailable: minAvailable }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/podDisruptionBudgetStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/podDisruptionBudgetStatus.libsonnet deleted file mode 100644 index 8391c0639dcf..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/podDisruptionBudgetStatus.libsonnet +++ /dev/null @@ -1,24 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='podDisruptionBudgetStatus', url='', help='PodDisruptionBudgetStatus represents information about the status of a PodDisruptionBudget. Status may trail the actual state of a system.'), - '#withConditions':: d.fn(help="Conditions contain conditions for PDB. The disruption controller sets the DisruptionAllowed condition. The following are known values for the reason field (additional reasons could be added in the future): - SyncFailed: The controller encountered an error and wasn't able to compute\n the number of allowed disruptions. Therefore no disruptions are\n allowed and the status of the condition will be False.\n- InsufficientPods: The number of pods are either at or below the number\n required by the PodDisruptionBudget. No disruptions are\n allowed and the status of the condition will be False.\n- SufficientPods: There are more pods than required by the PodDisruptionBudget.\n The condition will be True, and the number of allowed\n disruptions are provided by the disruptionsAllowed property.", args=[d.arg(name='conditions', type=d.T.array)]), - withConditions(conditions): { conditions: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withConditionsMixin':: d.fn(help="Conditions contain conditions for PDB. The disruption controller sets the DisruptionAllowed condition. The following are known values for the reason field (additional reasons could be added in the future): - SyncFailed: The controller encountered an error and wasn't able to compute\n the number of allowed disruptions. Therefore no disruptions are\n allowed and the status of the condition will be False.\n- InsufficientPods: The number of pods are either at or below the number\n required by the PodDisruptionBudget. No disruptions are\n allowed and the status of the condition will be False.\n- SufficientPods: There are more pods than required by the PodDisruptionBudget.\n The condition will be True, and the number of allowed\n disruptions are provided by the disruptionsAllowed property.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='conditions', type=d.T.array)]), - withConditionsMixin(conditions): { conditions+: if std.isArray(v=conditions) then conditions else [conditions] }, - '#withCurrentHealthy':: d.fn(help='current number of healthy pods', args=[d.arg(name='currentHealthy', type=d.T.integer)]), - withCurrentHealthy(currentHealthy): { currentHealthy: currentHealthy }, - '#withDesiredHealthy':: d.fn(help='minimum desired number of healthy pods', args=[d.arg(name='desiredHealthy', type=d.T.integer)]), - withDesiredHealthy(desiredHealthy): { desiredHealthy: desiredHealthy }, - '#withDisruptedPods':: d.fn(help="DisruptedPods contains information about pods whose eviction was processed by the API server eviction subresource handler but has not yet been observed by the PodDisruptionBudget controller. A pod will be in this map from the time when the API server processed the eviction request to the time when the pod is seen by PDB controller as having been marked for deletion (or after a timeout). The key in the map is the name of the pod and the value is the time when the API server processed the eviction request. If the deletion didn't occur and a pod is still there it will be removed from the list automatically by PodDisruptionBudget controller after some time. If everything goes smooth this map should be empty for the most of the time. Large number of entries in the map may indicate problems with pod deletions.", args=[d.arg(name='disruptedPods', type=d.T.object)]), - withDisruptedPods(disruptedPods): { disruptedPods: disruptedPods }, - '#withDisruptedPodsMixin':: d.fn(help="DisruptedPods contains information about pods whose eviction was processed by the API server eviction subresource handler but has not yet been observed by the PodDisruptionBudget controller. A pod will be in this map from the time when the API server processed the eviction request to the time when the pod is seen by PDB controller as having been marked for deletion (or after a timeout). The key in the map is the name of the pod and the value is the time when the API server processed the eviction request. If the deletion didn't occur and a pod is still there it will be removed from the list automatically by PodDisruptionBudget controller after some time. If everything goes smooth this map should be empty for the most of the time. Large number of entries in the map may indicate problems with pod deletions.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='disruptedPods', type=d.T.object)]), - withDisruptedPodsMixin(disruptedPods): { disruptedPods+: disruptedPods }, - '#withDisruptionsAllowed':: d.fn(help='Number of pod disruptions that are currently allowed.', args=[d.arg(name='disruptionsAllowed', type=d.T.integer)]), - withDisruptionsAllowed(disruptionsAllowed): { disruptionsAllowed: disruptionsAllowed }, - '#withExpectedPods':: d.fn(help='total number of pods counted by this disruption budget', args=[d.arg(name='expectedPods', type=d.T.integer)]), - withExpectedPods(expectedPods): { expectedPods: expectedPods }, - '#withObservedGeneration':: d.fn(help="Most recent generation observed when updating this PDB status. DisruptionsAllowed and other status information is valid only if observedGeneration equals to PDB's object generation.", args=[d.arg(name='observedGeneration', type=d.T.integer)]), - withObservedGeneration(observedGeneration): { observedGeneration: observedGeneration }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/podSecurityPolicy.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/podSecurityPolicy.libsonnet deleted file mode 100644 index c0ca798805fc..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/podSecurityPolicy.libsonnet +++ /dev/null @@ -1,178 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='podSecurityPolicy', url='', help='PodSecurityPolicy governs the ability to make requests that affect the Security Context that will be applied to a pod and container. Deprecated in 1.21.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Podsecuritypolicy', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'policy/v1beta1', - kind: 'PodSecurityPolicy', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='PodSecurityPolicySpec defines the policy enforced.'), - spec: { - '#fsGroup':: d.obj(help='FSGroupStrategyOptions defines the strategy type and options used to create the strategy.'), - fsGroup: { - '#withRanges':: d.fn(help='ranges are the allowed ranges of fs groups. If you would like to force a single fs group then supply a single range with the same start and end. Required for MustRunAs.', args=[d.arg(name='ranges', type=d.T.array)]), - withRanges(ranges): { spec+: { fsGroup+: { ranges: if std.isArray(v=ranges) then ranges else [ranges] } } }, - '#withRangesMixin':: d.fn(help='ranges are the allowed ranges of fs groups. If you would like to force a single fs group then supply a single range with the same start and end. Required for MustRunAs.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ranges', type=d.T.array)]), - withRangesMixin(ranges): { spec+: { fsGroup+: { ranges+: if std.isArray(v=ranges) then ranges else [ranges] } } }, - '#withRule':: d.fn(help='rule is the strategy that will dictate what FSGroup is used in the SecurityContext.', args=[d.arg(name='rule', type=d.T.string)]), - withRule(rule): { spec+: { fsGroup+: { rule: rule } } }, - }, - '#runAsGroup':: d.obj(help='RunAsGroupStrategyOptions defines the strategy type and any options used to create the strategy.'), - runAsGroup: { - '#withRanges':: d.fn(help='ranges are the allowed ranges of gids that may be used. If you would like to force a single gid then supply a single range with the same start and end. Required for MustRunAs.', args=[d.arg(name='ranges', type=d.T.array)]), - withRanges(ranges): { spec+: { runAsGroup+: { ranges: if std.isArray(v=ranges) then ranges else [ranges] } } }, - '#withRangesMixin':: d.fn(help='ranges are the allowed ranges of gids that may be used. If you would like to force a single gid then supply a single range with the same start and end. Required for MustRunAs.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ranges', type=d.T.array)]), - withRangesMixin(ranges): { spec+: { runAsGroup+: { ranges+: if std.isArray(v=ranges) then ranges else [ranges] } } }, - '#withRule':: d.fn(help='rule is the strategy that will dictate the allowable RunAsGroup values that may be set.', args=[d.arg(name='rule', type=d.T.string)]), - withRule(rule): { spec+: { runAsGroup+: { rule: rule } } }, - }, - '#runAsUser':: d.obj(help='RunAsUserStrategyOptions defines the strategy type and any options used to create the strategy.'), - runAsUser: { - '#withRanges':: d.fn(help='ranges are the allowed ranges of uids that may be used. If you would like to force a single uid then supply a single range with the same start and end. Required for MustRunAs.', args=[d.arg(name='ranges', type=d.T.array)]), - withRanges(ranges): { spec+: { runAsUser+: { ranges: if std.isArray(v=ranges) then ranges else [ranges] } } }, - '#withRangesMixin':: d.fn(help='ranges are the allowed ranges of uids that may be used. If you would like to force a single uid then supply a single range with the same start and end. Required for MustRunAs.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ranges', type=d.T.array)]), - withRangesMixin(ranges): { spec+: { runAsUser+: { ranges+: if std.isArray(v=ranges) then ranges else [ranges] } } }, - '#withRule':: d.fn(help='rule is the strategy that will dictate the allowable RunAsUser values that may be set.', args=[d.arg(name='rule', type=d.T.string)]), - withRule(rule): { spec+: { runAsUser+: { rule: rule } } }, - }, - '#runtimeClass':: d.obj(help='RuntimeClassStrategyOptions define the strategy that will dictate the allowable RuntimeClasses for a pod.'), - runtimeClass: { - '#withAllowedRuntimeClassNames':: d.fn(help='allowedRuntimeClassNames is an allowlist of RuntimeClass names that may be specified on a pod. A value of "*" means that any RuntimeClass name is allowed, and must be the only item in the list. An empty list requires the RuntimeClassName field to be unset.', args=[d.arg(name='allowedRuntimeClassNames', type=d.T.array)]), - withAllowedRuntimeClassNames(allowedRuntimeClassNames): { spec+: { runtimeClass+: { allowedRuntimeClassNames: if std.isArray(v=allowedRuntimeClassNames) then allowedRuntimeClassNames else [allowedRuntimeClassNames] } } }, - '#withAllowedRuntimeClassNamesMixin':: d.fn(help='allowedRuntimeClassNames is an allowlist of RuntimeClass names that may be specified on a pod. A value of "*" means that any RuntimeClass name is allowed, and must be the only item in the list. An empty list requires the RuntimeClassName field to be unset.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='allowedRuntimeClassNames', type=d.T.array)]), - withAllowedRuntimeClassNamesMixin(allowedRuntimeClassNames): { spec+: { runtimeClass+: { allowedRuntimeClassNames+: if std.isArray(v=allowedRuntimeClassNames) then allowedRuntimeClassNames else [allowedRuntimeClassNames] } } }, - '#withDefaultRuntimeClassName':: d.fn(help='defaultRuntimeClassName is the default RuntimeClassName to set on the pod. The default MUST be allowed by the allowedRuntimeClassNames list. A value of nil does not mutate the Pod.', args=[d.arg(name='defaultRuntimeClassName', type=d.T.string)]), - withDefaultRuntimeClassName(defaultRuntimeClassName): { spec+: { runtimeClass+: { defaultRuntimeClassName: defaultRuntimeClassName } } }, - }, - '#seLinux':: d.obj(help='SELinuxStrategyOptions defines the strategy type and any options used to create the strategy.'), - seLinux: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { spec+: { seLinux+: { seLinuxOptions+: { level: level } } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { spec+: { seLinux+: { seLinuxOptions+: { role: role } } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { seLinux+: { seLinuxOptions+: { type: type } } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { seLinux+: { seLinuxOptions+: { user: user } } } }, - }, - '#withRule':: d.fn(help='rule is the strategy that will dictate the allowable labels that may be set.', args=[d.arg(name='rule', type=d.T.string)]), - withRule(rule): { spec+: { seLinux+: { rule: rule } } }, - }, - '#supplementalGroups':: d.obj(help='SupplementalGroupsStrategyOptions defines the strategy type and options used to create the strategy.'), - supplementalGroups: { - '#withRanges':: d.fn(help='ranges are the allowed ranges of supplemental groups. If you would like to force a single supplemental group then supply a single range with the same start and end. Required for MustRunAs.', args=[d.arg(name='ranges', type=d.T.array)]), - withRanges(ranges): { spec+: { supplementalGroups+: { ranges: if std.isArray(v=ranges) then ranges else [ranges] } } }, - '#withRangesMixin':: d.fn(help='ranges are the allowed ranges of supplemental groups. If you would like to force a single supplemental group then supply a single range with the same start and end. Required for MustRunAs.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ranges', type=d.T.array)]), - withRangesMixin(ranges): { spec+: { supplementalGroups+: { ranges+: if std.isArray(v=ranges) then ranges else [ranges] } } }, - '#withRule':: d.fn(help='rule is the strategy that will dictate what supplemental groups is used in the SecurityContext.', args=[d.arg(name='rule', type=d.T.string)]), - withRule(rule): { spec+: { supplementalGroups+: { rule: rule } } }, - }, - '#withAllowPrivilegeEscalation':: d.fn(help='allowPrivilegeEscalation determines if a pod can request to allow privilege escalation. If unspecified, defaults to true.', args=[d.arg(name='allowPrivilegeEscalation', type=d.T.boolean)]), - withAllowPrivilegeEscalation(allowPrivilegeEscalation): { spec+: { allowPrivilegeEscalation: allowPrivilegeEscalation } }, - '#withAllowedCSIDrivers':: d.fn(help='AllowedCSIDrivers is an allowlist of inline CSI drivers that must be explicitly set to be embedded within a pod spec. An empty value indicates that any CSI driver can be used for inline ephemeral volumes. This is a beta field, and is only honored if the API server enables the CSIInlineVolume feature gate.', args=[d.arg(name='allowedCSIDrivers', type=d.T.array)]), - withAllowedCSIDrivers(allowedCSIDrivers): { spec+: { allowedCSIDrivers: if std.isArray(v=allowedCSIDrivers) then allowedCSIDrivers else [allowedCSIDrivers] } }, - '#withAllowedCSIDriversMixin':: d.fn(help='AllowedCSIDrivers is an allowlist of inline CSI drivers that must be explicitly set to be embedded within a pod spec. An empty value indicates that any CSI driver can be used for inline ephemeral volumes. This is a beta field, and is only honored if the API server enables the CSIInlineVolume feature gate.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='allowedCSIDrivers', type=d.T.array)]), - withAllowedCSIDriversMixin(allowedCSIDrivers): { spec+: { allowedCSIDrivers+: if std.isArray(v=allowedCSIDrivers) then allowedCSIDrivers else [allowedCSIDrivers] } }, - '#withAllowedCapabilities':: d.fn(help="allowedCapabilities is a list of capabilities that can be requested to add to the container. Capabilities in this field may be added at the pod author's discretion. You must not list a capability in both allowedCapabilities and requiredDropCapabilities.", args=[d.arg(name='allowedCapabilities', type=d.T.array)]), - withAllowedCapabilities(allowedCapabilities): { spec+: { allowedCapabilities: if std.isArray(v=allowedCapabilities) then allowedCapabilities else [allowedCapabilities] } }, - '#withAllowedCapabilitiesMixin':: d.fn(help="allowedCapabilities is a list of capabilities that can be requested to add to the container. Capabilities in this field may be added at the pod author's discretion. You must not list a capability in both allowedCapabilities and requiredDropCapabilities.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='allowedCapabilities', type=d.T.array)]), - withAllowedCapabilitiesMixin(allowedCapabilities): { spec+: { allowedCapabilities+: if std.isArray(v=allowedCapabilities) then allowedCapabilities else [allowedCapabilities] } }, - '#withAllowedFlexVolumes':: d.fn(help='allowedFlexVolumes is an allowlist of Flexvolumes. Empty or nil indicates that all Flexvolumes may be used. This parameter is effective only when the usage of the Flexvolumes is allowed in the "volumes" field.', args=[d.arg(name='allowedFlexVolumes', type=d.T.array)]), - withAllowedFlexVolumes(allowedFlexVolumes): { spec+: { allowedFlexVolumes: if std.isArray(v=allowedFlexVolumes) then allowedFlexVolumes else [allowedFlexVolumes] } }, - '#withAllowedFlexVolumesMixin':: d.fn(help='allowedFlexVolumes is an allowlist of Flexvolumes. Empty or nil indicates that all Flexvolumes may be used. This parameter is effective only when the usage of the Flexvolumes is allowed in the "volumes" field.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='allowedFlexVolumes', type=d.T.array)]), - withAllowedFlexVolumesMixin(allowedFlexVolumes): { spec+: { allowedFlexVolumes+: if std.isArray(v=allowedFlexVolumes) then allowedFlexVolumes else [allowedFlexVolumes] } }, - '#withAllowedHostPaths':: d.fn(help='allowedHostPaths is an allowlist of host paths. Empty indicates that all host paths may be used.', args=[d.arg(name='allowedHostPaths', type=d.T.array)]), - withAllowedHostPaths(allowedHostPaths): { spec+: { allowedHostPaths: if std.isArray(v=allowedHostPaths) then allowedHostPaths else [allowedHostPaths] } }, - '#withAllowedHostPathsMixin':: d.fn(help='allowedHostPaths is an allowlist of host paths. Empty indicates that all host paths may be used.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='allowedHostPaths', type=d.T.array)]), - withAllowedHostPathsMixin(allowedHostPaths): { spec+: { allowedHostPaths+: if std.isArray(v=allowedHostPaths) then allowedHostPaths else [allowedHostPaths] } }, - '#withAllowedProcMountTypes':: d.fn(help='AllowedProcMountTypes is an allowlist of allowed ProcMountTypes. Empty or nil indicates that only the DefaultProcMountType may be used. This requires the ProcMountType feature flag to be enabled.', args=[d.arg(name='allowedProcMountTypes', type=d.T.array)]), - withAllowedProcMountTypes(allowedProcMountTypes): { spec+: { allowedProcMountTypes: if std.isArray(v=allowedProcMountTypes) then allowedProcMountTypes else [allowedProcMountTypes] } }, - '#withAllowedProcMountTypesMixin':: d.fn(help='AllowedProcMountTypes is an allowlist of allowed ProcMountTypes. Empty or nil indicates that only the DefaultProcMountType may be used. This requires the ProcMountType feature flag to be enabled.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='allowedProcMountTypes', type=d.T.array)]), - withAllowedProcMountTypesMixin(allowedProcMountTypes): { spec+: { allowedProcMountTypes+: if std.isArray(v=allowedProcMountTypes) then allowedProcMountTypes else [allowedProcMountTypes] } }, - '#withAllowedUnsafeSysctls':: d.fn(help='allowedUnsafeSysctls is a list of explicitly allowed unsafe sysctls, defaults to none. Each entry is either a plain sysctl name or ends in "*" in which case it is considered as a prefix of allowed sysctls. Single * means all unsafe sysctls are allowed. Kubelet has to allowlist all allowed unsafe sysctls explicitly to avoid rejection.\n\nExamples: e.g. "foo/*" allows "foo/bar", "foo/baz", etc. e.g. "foo.*" allows "foo.bar", "foo.baz", etc.', args=[d.arg(name='allowedUnsafeSysctls', type=d.T.array)]), - withAllowedUnsafeSysctls(allowedUnsafeSysctls): { spec+: { allowedUnsafeSysctls: if std.isArray(v=allowedUnsafeSysctls) then allowedUnsafeSysctls else [allowedUnsafeSysctls] } }, - '#withAllowedUnsafeSysctlsMixin':: d.fn(help='allowedUnsafeSysctls is a list of explicitly allowed unsafe sysctls, defaults to none. Each entry is either a plain sysctl name or ends in "*" in which case it is considered as a prefix of allowed sysctls. Single * means all unsafe sysctls are allowed. Kubelet has to allowlist all allowed unsafe sysctls explicitly to avoid rejection.\n\nExamples: e.g. "foo/*" allows "foo/bar", "foo/baz", etc. e.g. "foo.*" allows "foo.bar", "foo.baz", etc.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='allowedUnsafeSysctls', type=d.T.array)]), - withAllowedUnsafeSysctlsMixin(allowedUnsafeSysctls): { spec+: { allowedUnsafeSysctls+: if std.isArray(v=allowedUnsafeSysctls) then allowedUnsafeSysctls else [allowedUnsafeSysctls] } }, - '#withDefaultAddCapabilities':: d.fn(help='defaultAddCapabilities is the default set of capabilities that will be added to the container unless the pod spec specifically drops the capability. You may not list a capability in both defaultAddCapabilities and requiredDropCapabilities. Capabilities added here are implicitly allowed, and need not be included in the allowedCapabilities list.', args=[d.arg(name='defaultAddCapabilities', type=d.T.array)]), - withDefaultAddCapabilities(defaultAddCapabilities): { spec+: { defaultAddCapabilities: if std.isArray(v=defaultAddCapabilities) then defaultAddCapabilities else [defaultAddCapabilities] } }, - '#withDefaultAddCapabilitiesMixin':: d.fn(help='defaultAddCapabilities is the default set of capabilities that will be added to the container unless the pod spec specifically drops the capability. You may not list a capability in both defaultAddCapabilities and requiredDropCapabilities. Capabilities added here are implicitly allowed, and need not be included in the allowedCapabilities list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='defaultAddCapabilities', type=d.T.array)]), - withDefaultAddCapabilitiesMixin(defaultAddCapabilities): { spec+: { defaultAddCapabilities+: if std.isArray(v=defaultAddCapabilities) then defaultAddCapabilities else [defaultAddCapabilities] } }, - '#withDefaultAllowPrivilegeEscalation':: d.fn(help='defaultAllowPrivilegeEscalation controls the default setting for whether a process can gain more privileges than its parent process.', args=[d.arg(name='defaultAllowPrivilegeEscalation', type=d.T.boolean)]), - withDefaultAllowPrivilegeEscalation(defaultAllowPrivilegeEscalation): { spec+: { defaultAllowPrivilegeEscalation: defaultAllowPrivilegeEscalation } }, - '#withForbiddenSysctls':: d.fn(help='forbiddenSysctls is a list of explicitly forbidden sysctls, defaults to none. Each entry is either a plain sysctl name or ends in "*" in which case it is considered as a prefix of forbidden sysctls. Single * means all sysctls are forbidden.\n\nExamples: e.g. "foo/*" forbids "foo/bar", "foo/baz", etc. e.g. "foo.*" forbids "foo.bar", "foo.baz", etc.', args=[d.arg(name='forbiddenSysctls', type=d.T.array)]), - withForbiddenSysctls(forbiddenSysctls): { spec+: { forbiddenSysctls: if std.isArray(v=forbiddenSysctls) then forbiddenSysctls else [forbiddenSysctls] } }, - '#withForbiddenSysctlsMixin':: d.fn(help='forbiddenSysctls is a list of explicitly forbidden sysctls, defaults to none. Each entry is either a plain sysctl name or ends in "*" in which case it is considered as a prefix of forbidden sysctls. Single * means all sysctls are forbidden.\n\nExamples: e.g. "foo/*" forbids "foo/bar", "foo/baz", etc. e.g. "foo.*" forbids "foo.bar", "foo.baz", etc.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='forbiddenSysctls', type=d.T.array)]), - withForbiddenSysctlsMixin(forbiddenSysctls): { spec+: { forbiddenSysctls+: if std.isArray(v=forbiddenSysctls) then forbiddenSysctls else [forbiddenSysctls] } }, - '#withHostIPC':: d.fn(help='hostIPC determines if the policy allows the use of HostIPC in the pod spec.', args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { spec+: { hostIPC: hostIPC } }, - '#withHostNetwork':: d.fn(help='hostNetwork determines if the policy allows the use of HostNetwork in the pod spec.', args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { spec+: { hostNetwork: hostNetwork } }, - '#withHostPID':: d.fn(help='hostPID determines if the policy allows the use of HostPID in the pod spec.', args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { spec+: { hostPID: hostPID } }, - '#withHostPorts':: d.fn(help='hostPorts determines which host port ranges are allowed to be exposed.', args=[d.arg(name='hostPorts', type=d.T.array)]), - withHostPorts(hostPorts): { spec+: { hostPorts: if std.isArray(v=hostPorts) then hostPorts else [hostPorts] } }, - '#withHostPortsMixin':: d.fn(help='hostPorts determines which host port ranges are allowed to be exposed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='hostPorts', type=d.T.array)]), - withHostPortsMixin(hostPorts): { spec+: { hostPorts+: if std.isArray(v=hostPorts) then hostPorts else [hostPorts] } }, - '#withPrivileged':: d.fn(help='privileged determines if a pod can request to be run as privileged.', args=[d.arg(name='privileged', type=d.T.boolean)]), - withPrivileged(privileged): { spec+: { privileged: privileged } }, - '#withReadOnlyRootFilesystem':: d.fn(help='readOnlyRootFilesystem when set to true will force containers to run with a read only root file system. If the container specifically requests to run with a non-read only root file system the PSP should deny the pod. If set to false the container may run with a read only root file system if it wishes but it will not be forced to.', args=[d.arg(name='readOnlyRootFilesystem', type=d.T.boolean)]), - withReadOnlyRootFilesystem(readOnlyRootFilesystem): { spec+: { readOnlyRootFilesystem: readOnlyRootFilesystem } }, - '#withRequiredDropCapabilities':: d.fn(help='requiredDropCapabilities are the capabilities that will be dropped from the container. These are required to be dropped and cannot be added.', args=[d.arg(name='requiredDropCapabilities', type=d.T.array)]), - withRequiredDropCapabilities(requiredDropCapabilities): { spec+: { requiredDropCapabilities: if std.isArray(v=requiredDropCapabilities) then requiredDropCapabilities else [requiredDropCapabilities] } }, - '#withRequiredDropCapabilitiesMixin':: d.fn(help='requiredDropCapabilities are the capabilities that will be dropped from the container. These are required to be dropped and cannot be added.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDropCapabilities', type=d.T.array)]), - withRequiredDropCapabilitiesMixin(requiredDropCapabilities): { spec+: { requiredDropCapabilities+: if std.isArray(v=requiredDropCapabilities) then requiredDropCapabilities else [requiredDropCapabilities] } }, - '#withVolumes':: d.fn(help="volumes is an allowlist of volume plugins. Empty indicates that no volumes may be used. To allow all volumes you may use '*'.", args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { spec+: { volumes: if std.isArray(v=volumes) then volumes else [volumes] } }, - '#withVolumesMixin':: d.fn(help="volumes is an allowlist of volume plugins. Empty indicates that no volumes may be used. To allow all volumes you may use '*'.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { spec+: { volumes+: if std.isArray(v=volumes) then volumes else [volumes] } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/podSecurityPolicySpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/podSecurityPolicySpec.libsonnet deleted file mode 100644 index 3d5969b897bf..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/podSecurityPolicySpec.libsonnet +++ /dev/null @@ -1,125 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='podSecurityPolicySpec', url='', help='PodSecurityPolicySpec defines the policy enforced.'), - '#fsGroup':: d.obj(help='FSGroupStrategyOptions defines the strategy type and options used to create the strategy.'), - fsGroup: { - '#withRanges':: d.fn(help='ranges are the allowed ranges of fs groups. If you would like to force a single fs group then supply a single range with the same start and end. Required for MustRunAs.', args=[d.arg(name='ranges', type=d.T.array)]), - withRanges(ranges): { fsGroup+: { ranges: if std.isArray(v=ranges) then ranges else [ranges] } }, - '#withRangesMixin':: d.fn(help='ranges are the allowed ranges of fs groups. If you would like to force a single fs group then supply a single range with the same start and end. Required for MustRunAs.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ranges', type=d.T.array)]), - withRangesMixin(ranges): { fsGroup+: { ranges+: if std.isArray(v=ranges) then ranges else [ranges] } }, - '#withRule':: d.fn(help='rule is the strategy that will dictate what FSGroup is used in the SecurityContext.', args=[d.arg(name='rule', type=d.T.string)]), - withRule(rule): { fsGroup+: { rule: rule } }, - }, - '#runAsGroup':: d.obj(help='RunAsGroupStrategyOptions defines the strategy type and any options used to create the strategy.'), - runAsGroup: { - '#withRanges':: d.fn(help='ranges are the allowed ranges of gids that may be used. If you would like to force a single gid then supply a single range with the same start and end. Required for MustRunAs.', args=[d.arg(name='ranges', type=d.T.array)]), - withRanges(ranges): { runAsGroup+: { ranges: if std.isArray(v=ranges) then ranges else [ranges] } }, - '#withRangesMixin':: d.fn(help='ranges are the allowed ranges of gids that may be used. If you would like to force a single gid then supply a single range with the same start and end. Required for MustRunAs.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ranges', type=d.T.array)]), - withRangesMixin(ranges): { runAsGroup+: { ranges+: if std.isArray(v=ranges) then ranges else [ranges] } }, - '#withRule':: d.fn(help='rule is the strategy that will dictate the allowable RunAsGroup values that may be set.', args=[d.arg(name='rule', type=d.T.string)]), - withRule(rule): { runAsGroup+: { rule: rule } }, - }, - '#runAsUser':: d.obj(help='RunAsUserStrategyOptions defines the strategy type and any options used to create the strategy.'), - runAsUser: { - '#withRanges':: d.fn(help='ranges are the allowed ranges of uids that may be used. If you would like to force a single uid then supply a single range with the same start and end. Required for MustRunAs.', args=[d.arg(name='ranges', type=d.T.array)]), - withRanges(ranges): { runAsUser+: { ranges: if std.isArray(v=ranges) then ranges else [ranges] } }, - '#withRangesMixin':: d.fn(help='ranges are the allowed ranges of uids that may be used. If you would like to force a single uid then supply a single range with the same start and end. Required for MustRunAs.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ranges', type=d.T.array)]), - withRangesMixin(ranges): { runAsUser+: { ranges+: if std.isArray(v=ranges) then ranges else [ranges] } }, - '#withRule':: d.fn(help='rule is the strategy that will dictate the allowable RunAsUser values that may be set.', args=[d.arg(name='rule', type=d.T.string)]), - withRule(rule): { runAsUser+: { rule: rule } }, - }, - '#runtimeClass':: d.obj(help='RuntimeClassStrategyOptions define the strategy that will dictate the allowable RuntimeClasses for a pod.'), - runtimeClass: { - '#withAllowedRuntimeClassNames':: d.fn(help='allowedRuntimeClassNames is an allowlist of RuntimeClass names that may be specified on a pod. A value of "*" means that any RuntimeClass name is allowed, and must be the only item in the list. An empty list requires the RuntimeClassName field to be unset.', args=[d.arg(name='allowedRuntimeClassNames', type=d.T.array)]), - withAllowedRuntimeClassNames(allowedRuntimeClassNames): { runtimeClass+: { allowedRuntimeClassNames: if std.isArray(v=allowedRuntimeClassNames) then allowedRuntimeClassNames else [allowedRuntimeClassNames] } }, - '#withAllowedRuntimeClassNamesMixin':: d.fn(help='allowedRuntimeClassNames is an allowlist of RuntimeClass names that may be specified on a pod. A value of "*" means that any RuntimeClass name is allowed, and must be the only item in the list. An empty list requires the RuntimeClassName field to be unset.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='allowedRuntimeClassNames', type=d.T.array)]), - withAllowedRuntimeClassNamesMixin(allowedRuntimeClassNames): { runtimeClass+: { allowedRuntimeClassNames+: if std.isArray(v=allowedRuntimeClassNames) then allowedRuntimeClassNames else [allowedRuntimeClassNames] } }, - '#withDefaultRuntimeClassName':: d.fn(help='defaultRuntimeClassName is the default RuntimeClassName to set on the pod. The default MUST be allowed by the allowedRuntimeClassNames list. A value of nil does not mutate the Pod.', args=[d.arg(name='defaultRuntimeClassName', type=d.T.string)]), - withDefaultRuntimeClassName(defaultRuntimeClassName): { runtimeClass+: { defaultRuntimeClassName: defaultRuntimeClassName } }, - }, - '#seLinux':: d.obj(help='SELinuxStrategyOptions defines the strategy type and any options used to create the strategy.'), - seLinux: { - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { seLinux+: { seLinuxOptions+: { level: level } } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { seLinux+: { seLinuxOptions+: { role: role } } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { seLinux+: { seLinuxOptions+: { type: type } } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { seLinux+: { seLinuxOptions+: { user: user } } }, - }, - '#withRule':: d.fn(help='rule is the strategy that will dictate the allowable labels that may be set.', args=[d.arg(name='rule', type=d.T.string)]), - withRule(rule): { seLinux+: { rule: rule } }, - }, - '#supplementalGroups':: d.obj(help='SupplementalGroupsStrategyOptions defines the strategy type and options used to create the strategy.'), - supplementalGroups: { - '#withRanges':: d.fn(help='ranges are the allowed ranges of supplemental groups. If you would like to force a single supplemental group then supply a single range with the same start and end. Required for MustRunAs.', args=[d.arg(name='ranges', type=d.T.array)]), - withRanges(ranges): { supplementalGroups+: { ranges: if std.isArray(v=ranges) then ranges else [ranges] } }, - '#withRangesMixin':: d.fn(help='ranges are the allowed ranges of supplemental groups. If you would like to force a single supplemental group then supply a single range with the same start and end. Required for MustRunAs.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ranges', type=d.T.array)]), - withRangesMixin(ranges): { supplementalGroups+: { ranges+: if std.isArray(v=ranges) then ranges else [ranges] } }, - '#withRule':: d.fn(help='rule is the strategy that will dictate what supplemental groups is used in the SecurityContext.', args=[d.arg(name='rule', type=d.T.string)]), - withRule(rule): { supplementalGroups+: { rule: rule } }, - }, - '#withAllowPrivilegeEscalation':: d.fn(help='allowPrivilegeEscalation determines if a pod can request to allow privilege escalation. If unspecified, defaults to true.', args=[d.arg(name='allowPrivilegeEscalation', type=d.T.boolean)]), - withAllowPrivilegeEscalation(allowPrivilegeEscalation): { allowPrivilegeEscalation: allowPrivilegeEscalation }, - '#withAllowedCSIDrivers':: d.fn(help='AllowedCSIDrivers is an allowlist of inline CSI drivers that must be explicitly set to be embedded within a pod spec. An empty value indicates that any CSI driver can be used for inline ephemeral volumes. This is a beta field, and is only honored if the API server enables the CSIInlineVolume feature gate.', args=[d.arg(name='allowedCSIDrivers', type=d.T.array)]), - withAllowedCSIDrivers(allowedCSIDrivers): { allowedCSIDrivers: if std.isArray(v=allowedCSIDrivers) then allowedCSIDrivers else [allowedCSIDrivers] }, - '#withAllowedCSIDriversMixin':: d.fn(help='AllowedCSIDrivers is an allowlist of inline CSI drivers that must be explicitly set to be embedded within a pod spec. An empty value indicates that any CSI driver can be used for inline ephemeral volumes. This is a beta field, and is only honored if the API server enables the CSIInlineVolume feature gate.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='allowedCSIDrivers', type=d.T.array)]), - withAllowedCSIDriversMixin(allowedCSIDrivers): { allowedCSIDrivers+: if std.isArray(v=allowedCSIDrivers) then allowedCSIDrivers else [allowedCSIDrivers] }, - '#withAllowedCapabilities':: d.fn(help="allowedCapabilities is a list of capabilities that can be requested to add to the container. Capabilities in this field may be added at the pod author's discretion. You must not list a capability in both allowedCapabilities and requiredDropCapabilities.", args=[d.arg(name='allowedCapabilities', type=d.T.array)]), - withAllowedCapabilities(allowedCapabilities): { allowedCapabilities: if std.isArray(v=allowedCapabilities) then allowedCapabilities else [allowedCapabilities] }, - '#withAllowedCapabilitiesMixin':: d.fn(help="allowedCapabilities is a list of capabilities that can be requested to add to the container. Capabilities in this field may be added at the pod author's discretion. You must not list a capability in both allowedCapabilities and requiredDropCapabilities.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='allowedCapabilities', type=d.T.array)]), - withAllowedCapabilitiesMixin(allowedCapabilities): { allowedCapabilities+: if std.isArray(v=allowedCapabilities) then allowedCapabilities else [allowedCapabilities] }, - '#withAllowedFlexVolumes':: d.fn(help='allowedFlexVolumes is an allowlist of Flexvolumes. Empty or nil indicates that all Flexvolumes may be used. This parameter is effective only when the usage of the Flexvolumes is allowed in the "volumes" field.', args=[d.arg(name='allowedFlexVolumes', type=d.T.array)]), - withAllowedFlexVolumes(allowedFlexVolumes): { allowedFlexVolumes: if std.isArray(v=allowedFlexVolumes) then allowedFlexVolumes else [allowedFlexVolumes] }, - '#withAllowedFlexVolumesMixin':: d.fn(help='allowedFlexVolumes is an allowlist of Flexvolumes. Empty or nil indicates that all Flexvolumes may be used. This parameter is effective only when the usage of the Flexvolumes is allowed in the "volumes" field.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='allowedFlexVolumes', type=d.T.array)]), - withAllowedFlexVolumesMixin(allowedFlexVolumes): { allowedFlexVolumes+: if std.isArray(v=allowedFlexVolumes) then allowedFlexVolumes else [allowedFlexVolumes] }, - '#withAllowedHostPaths':: d.fn(help='allowedHostPaths is an allowlist of host paths. Empty indicates that all host paths may be used.', args=[d.arg(name='allowedHostPaths', type=d.T.array)]), - withAllowedHostPaths(allowedHostPaths): { allowedHostPaths: if std.isArray(v=allowedHostPaths) then allowedHostPaths else [allowedHostPaths] }, - '#withAllowedHostPathsMixin':: d.fn(help='allowedHostPaths is an allowlist of host paths. Empty indicates that all host paths may be used.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='allowedHostPaths', type=d.T.array)]), - withAllowedHostPathsMixin(allowedHostPaths): { allowedHostPaths+: if std.isArray(v=allowedHostPaths) then allowedHostPaths else [allowedHostPaths] }, - '#withAllowedProcMountTypes':: d.fn(help='AllowedProcMountTypes is an allowlist of allowed ProcMountTypes. Empty or nil indicates that only the DefaultProcMountType may be used. This requires the ProcMountType feature flag to be enabled.', args=[d.arg(name='allowedProcMountTypes', type=d.T.array)]), - withAllowedProcMountTypes(allowedProcMountTypes): { allowedProcMountTypes: if std.isArray(v=allowedProcMountTypes) then allowedProcMountTypes else [allowedProcMountTypes] }, - '#withAllowedProcMountTypesMixin':: d.fn(help='AllowedProcMountTypes is an allowlist of allowed ProcMountTypes. Empty or nil indicates that only the DefaultProcMountType may be used. This requires the ProcMountType feature flag to be enabled.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='allowedProcMountTypes', type=d.T.array)]), - withAllowedProcMountTypesMixin(allowedProcMountTypes): { allowedProcMountTypes+: if std.isArray(v=allowedProcMountTypes) then allowedProcMountTypes else [allowedProcMountTypes] }, - '#withAllowedUnsafeSysctls':: d.fn(help='allowedUnsafeSysctls is a list of explicitly allowed unsafe sysctls, defaults to none. Each entry is either a plain sysctl name or ends in "*" in which case it is considered as a prefix of allowed sysctls. Single * means all unsafe sysctls are allowed. Kubelet has to allowlist all allowed unsafe sysctls explicitly to avoid rejection.\n\nExamples: e.g. "foo/*" allows "foo/bar", "foo/baz", etc. e.g. "foo.*" allows "foo.bar", "foo.baz", etc.', args=[d.arg(name='allowedUnsafeSysctls', type=d.T.array)]), - withAllowedUnsafeSysctls(allowedUnsafeSysctls): { allowedUnsafeSysctls: if std.isArray(v=allowedUnsafeSysctls) then allowedUnsafeSysctls else [allowedUnsafeSysctls] }, - '#withAllowedUnsafeSysctlsMixin':: d.fn(help='allowedUnsafeSysctls is a list of explicitly allowed unsafe sysctls, defaults to none. Each entry is either a plain sysctl name or ends in "*" in which case it is considered as a prefix of allowed sysctls. Single * means all unsafe sysctls are allowed. Kubelet has to allowlist all allowed unsafe sysctls explicitly to avoid rejection.\n\nExamples: e.g. "foo/*" allows "foo/bar", "foo/baz", etc. e.g. "foo.*" allows "foo.bar", "foo.baz", etc.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='allowedUnsafeSysctls', type=d.T.array)]), - withAllowedUnsafeSysctlsMixin(allowedUnsafeSysctls): { allowedUnsafeSysctls+: if std.isArray(v=allowedUnsafeSysctls) then allowedUnsafeSysctls else [allowedUnsafeSysctls] }, - '#withDefaultAddCapabilities':: d.fn(help='defaultAddCapabilities is the default set of capabilities that will be added to the container unless the pod spec specifically drops the capability. You may not list a capability in both defaultAddCapabilities and requiredDropCapabilities. Capabilities added here are implicitly allowed, and need not be included in the allowedCapabilities list.', args=[d.arg(name='defaultAddCapabilities', type=d.T.array)]), - withDefaultAddCapabilities(defaultAddCapabilities): { defaultAddCapabilities: if std.isArray(v=defaultAddCapabilities) then defaultAddCapabilities else [defaultAddCapabilities] }, - '#withDefaultAddCapabilitiesMixin':: d.fn(help='defaultAddCapabilities is the default set of capabilities that will be added to the container unless the pod spec specifically drops the capability. You may not list a capability in both defaultAddCapabilities and requiredDropCapabilities. Capabilities added here are implicitly allowed, and need not be included in the allowedCapabilities list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='defaultAddCapabilities', type=d.T.array)]), - withDefaultAddCapabilitiesMixin(defaultAddCapabilities): { defaultAddCapabilities+: if std.isArray(v=defaultAddCapabilities) then defaultAddCapabilities else [defaultAddCapabilities] }, - '#withDefaultAllowPrivilegeEscalation':: d.fn(help='defaultAllowPrivilegeEscalation controls the default setting for whether a process can gain more privileges than its parent process.', args=[d.arg(name='defaultAllowPrivilegeEscalation', type=d.T.boolean)]), - withDefaultAllowPrivilegeEscalation(defaultAllowPrivilegeEscalation): { defaultAllowPrivilegeEscalation: defaultAllowPrivilegeEscalation }, - '#withForbiddenSysctls':: d.fn(help='forbiddenSysctls is a list of explicitly forbidden sysctls, defaults to none. Each entry is either a plain sysctl name or ends in "*" in which case it is considered as a prefix of forbidden sysctls. Single * means all sysctls are forbidden.\n\nExamples: e.g. "foo/*" forbids "foo/bar", "foo/baz", etc. e.g. "foo.*" forbids "foo.bar", "foo.baz", etc.', args=[d.arg(name='forbiddenSysctls', type=d.T.array)]), - withForbiddenSysctls(forbiddenSysctls): { forbiddenSysctls: if std.isArray(v=forbiddenSysctls) then forbiddenSysctls else [forbiddenSysctls] }, - '#withForbiddenSysctlsMixin':: d.fn(help='forbiddenSysctls is a list of explicitly forbidden sysctls, defaults to none. Each entry is either a plain sysctl name or ends in "*" in which case it is considered as a prefix of forbidden sysctls. Single * means all sysctls are forbidden.\n\nExamples: e.g. "foo/*" forbids "foo/bar", "foo/baz", etc. e.g. "foo.*" forbids "foo.bar", "foo.baz", etc.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='forbiddenSysctls', type=d.T.array)]), - withForbiddenSysctlsMixin(forbiddenSysctls): { forbiddenSysctls+: if std.isArray(v=forbiddenSysctls) then forbiddenSysctls else [forbiddenSysctls] }, - '#withHostIPC':: d.fn(help='hostIPC determines if the policy allows the use of HostIPC in the pod spec.', args=[d.arg(name='hostIPC', type=d.T.boolean)]), - withHostIPC(hostIPC): { hostIPC: hostIPC }, - '#withHostNetwork':: d.fn(help='hostNetwork determines if the policy allows the use of HostNetwork in the pod spec.', args=[d.arg(name='hostNetwork', type=d.T.boolean)]), - withHostNetwork(hostNetwork): { hostNetwork: hostNetwork }, - '#withHostPID':: d.fn(help='hostPID determines if the policy allows the use of HostPID in the pod spec.', args=[d.arg(name='hostPID', type=d.T.boolean)]), - withHostPID(hostPID): { hostPID: hostPID }, - '#withHostPorts':: d.fn(help='hostPorts determines which host port ranges are allowed to be exposed.', args=[d.arg(name='hostPorts', type=d.T.array)]), - withHostPorts(hostPorts): { hostPorts: if std.isArray(v=hostPorts) then hostPorts else [hostPorts] }, - '#withHostPortsMixin':: d.fn(help='hostPorts determines which host port ranges are allowed to be exposed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='hostPorts', type=d.T.array)]), - withHostPortsMixin(hostPorts): { hostPorts+: if std.isArray(v=hostPorts) then hostPorts else [hostPorts] }, - '#withPrivileged':: d.fn(help='privileged determines if a pod can request to be run as privileged.', args=[d.arg(name='privileged', type=d.T.boolean)]), - withPrivileged(privileged): { privileged: privileged }, - '#withReadOnlyRootFilesystem':: d.fn(help='readOnlyRootFilesystem when set to true will force containers to run with a read only root file system. If the container specifically requests to run with a non-read only root file system the PSP should deny the pod. If set to false the container may run with a read only root file system if it wishes but it will not be forced to.', args=[d.arg(name='readOnlyRootFilesystem', type=d.T.boolean)]), - withReadOnlyRootFilesystem(readOnlyRootFilesystem): { readOnlyRootFilesystem: readOnlyRootFilesystem }, - '#withRequiredDropCapabilities':: d.fn(help='requiredDropCapabilities are the capabilities that will be dropped from the container. These are required to be dropped and cannot be added.', args=[d.arg(name='requiredDropCapabilities', type=d.T.array)]), - withRequiredDropCapabilities(requiredDropCapabilities): { requiredDropCapabilities: if std.isArray(v=requiredDropCapabilities) then requiredDropCapabilities else [requiredDropCapabilities] }, - '#withRequiredDropCapabilitiesMixin':: d.fn(help='requiredDropCapabilities are the capabilities that will be dropped from the container. These are required to be dropped and cannot be added.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='requiredDropCapabilities', type=d.T.array)]), - withRequiredDropCapabilitiesMixin(requiredDropCapabilities): { requiredDropCapabilities+: if std.isArray(v=requiredDropCapabilities) then requiredDropCapabilities else [requiredDropCapabilities] }, - '#withVolumes':: d.fn(help="volumes is an allowlist of volume plugins. Empty indicates that no volumes may be used. To allow all volumes you may use '*'.", args=[d.arg(name='volumes', type=d.T.array)]), - withVolumes(volumes): { volumes: if std.isArray(v=volumes) then volumes else [volumes] }, - '#withVolumesMixin':: d.fn(help="volumes is an allowlist of volume plugins. Empty indicates that no volumes may be used. To allow all volumes you may use '*'.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='volumes', type=d.T.array)]), - withVolumesMixin(volumes): { volumes+: if std.isArray(v=volumes) then volumes else [volumes] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/runAsGroupStrategyOptions.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/runAsGroupStrategyOptions.libsonnet deleted file mode 100644 index 36af206820d1..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/runAsGroupStrategyOptions.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='runAsGroupStrategyOptions', url='', help='RunAsGroupStrategyOptions defines the strategy type and any options used to create the strategy.'), - '#withRanges':: d.fn(help='ranges are the allowed ranges of gids that may be used. If you would like to force a single gid then supply a single range with the same start and end. Required for MustRunAs.', args=[d.arg(name='ranges', type=d.T.array)]), - withRanges(ranges): { ranges: if std.isArray(v=ranges) then ranges else [ranges] }, - '#withRangesMixin':: d.fn(help='ranges are the allowed ranges of gids that may be used. If you would like to force a single gid then supply a single range with the same start and end. Required for MustRunAs.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ranges', type=d.T.array)]), - withRangesMixin(ranges): { ranges+: if std.isArray(v=ranges) then ranges else [ranges] }, - '#withRule':: d.fn(help='rule is the strategy that will dictate the allowable RunAsGroup values that may be set.', args=[d.arg(name='rule', type=d.T.string)]), - withRule(rule): { rule: rule }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/runAsUserStrategyOptions.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/runAsUserStrategyOptions.libsonnet deleted file mode 100644 index 3a4fbe770fa2..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/runAsUserStrategyOptions.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='runAsUserStrategyOptions', url='', help='RunAsUserStrategyOptions defines the strategy type and any options used to create the strategy.'), - '#withRanges':: d.fn(help='ranges are the allowed ranges of uids that may be used. If you would like to force a single uid then supply a single range with the same start and end. Required for MustRunAs.', args=[d.arg(name='ranges', type=d.T.array)]), - withRanges(ranges): { ranges: if std.isArray(v=ranges) then ranges else [ranges] }, - '#withRangesMixin':: d.fn(help='ranges are the allowed ranges of uids that may be used. If you would like to force a single uid then supply a single range with the same start and end. Required for MustRunAs.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ranges', type=d.T.array)]), - withRangesMixin(ranges): { ranges+: if std.isArray(v=ranges) then ranges else [ranges] }, - '#withRule':: d.fn(help='rule is the strategy that will dictate the allowable RunAsUser values that may be set.', args=[d.arg(name='rule', type=d.T.string)]), - withRule(rule): { rule: rule }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/runtimeClassStrategyOptions.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/runtimeClassStrategyOptions.libsonnet deleted file mode 100644 index 491c0d47c6f0..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/runtimeClassStrategyOptions.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='runtimeClassStrategyOptions', url='', help='RuntimeClassStrategyOptions define the strategy that will dictate the allowable RuntimeClasses for a pod.'), - '#withAllowedRuntimeClassNames':: d.fn(help='allowedRuntimeClassNames is an allowlist of RuntimeClass names that may be specified on a pod. A value of "*" means that any RuntimeClass name is allowed, and must be the only item in the list. An empty list requires the RuntimeClassName field to be unset.', args=[d.arg(name='allowedRuntimeClassNames', type=d.T.array)]), - withAllowedRuntimeClassNames(allowedRuntimeClassNames): { allowedRuntimeClassNames: if std.isArray(v=allowedRuntimeClassNames) then allowedRuntimeClassNames else [allowedRuntimeClassNames] }, - '#withAllowedRuntimeClassNamesMixin':: d.fn(help='allowedRuntimeClassNames is an allowlist of RuntimeClass names that may be specified on a pod. A value of "*" means that any RuntimeClass name is allowed, and must be the only item in the list. An empty list requires the RuntimeClassName field to be unset.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='allowedRuntimeClassNames', type=d.T.array)]), - withAllowedRuntimeClassNamesMixin(allowedRuntimeClassNames): { allowedRuntimeClassNames+: if std.isArray(v=allowedRuntimeClassNames) then allowedRuntimeClassNames else [allowedRuntimeClassNames] }, - '#withDefaultRuntimeClassName':: d.fn(help='defaultRuntimeClassName is the default RuntimeClassName to set on the pod. The default MUST be allowed by the allowedRuntimeClassNames list. A value of nil does not mutate the Pod.', args=[d.arg(name='defaultRuntimeClassName', type=d.T.string)]), - withDefaultRuntimeClassName(defaultRuntimeClassName): { defaultRuntimeClassName: defaultRuntimeClassName }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/seLinuxStrategyOptions.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/seLinuxStrategyOptions.libsonnet deleted file mode 100644 index 870a8e85f900..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/seLinuxStrategyOptions.libsonnet +++ /dev/null @@ -1,19 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='seLinuxStrategyOptions', url='', help='SELinuxStrategyOptions defines the strategy type and any options used to create the strategy.'), - '#seLinuxOptions':: d.obj(help='SELinuxOptions are the labels to be applied to the container'), - seLinuxOptions: { - '#withLevel':: d.fn(help='Level is SELinux level label that applies to the container.', args=[d.arg(name='level', type=d.T.string)]), - withLevel(level): { seLinuxOptions+: { level: level } }, - '#withRole':: d.fn(help='Role is a SELinux role label that applies to the container.', args=[d.arg(name='role', type=d.T.string)]), - withRole(role): { seLinuxOptions+: { role: role } }, - '#withType':: d.fn(help='Type is a SELinux type label that applies to the container.', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { seLinuxOptions+: { type: type } }, - '#withUser':: d.fn(help='User is a SELinux user label that applies to the container.', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { seLinuxOptions+: { user: user } }, - }, - '#withRule':: d.fn(help='rule is the strategy that will dictate the allowable labels that may be set.', args=[d.arg(name='rule', type=d.T.string)]), - withRule(rule): { rule: rule }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/supplementalGroupsStrategyOptions.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/supplementalGroupsStrategyOptions.libsonnet deleted file mode 100644 index f4691e623732..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/policy/v1beta1/supplementalGroupsStrategyOptions.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='supplementalGroupsStrategyOptions', url='', help='SupplementalGroupsStrategyOptions defines the strategy type and options used to create the strategy.'), - '#withRanges':: d.fn(help='ranges are the allowed ranges of supplemental groups. If you would like to force a single supplemental group then supply a single range with the same start and end. Required for MustRunAs.', args=[d.arg(name='ranges', type=d.T.array)]), - withRanges(ranges): { ranges: if std.isArray(v=ranges) then ranges else [ranges] }, - '#withRangesMixin':: d.fn(help='ranges are the allowed ranges of supplemental groups. If you would like to force a single supplemental group then supply a single range with the same start and end. Required for MustRunAs.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ranges', type=d.T.array)]), - withRangesMixin(ranges): { ranges+: if std.isArray(v=ranges) then ranges else [ranges] }, - '#withRule':: d.fn(help='rule is the strategy that will dictate what supplemental groups is used in the SecurityContext.', args=[d.arg(name='rule', type=d.T.string)]), - withRule(rule): { rule: rule }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/main.libsonnet deleted file mode 100644 index f7d3fc1bb5b8..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/main.libsonnet +++ /dev/null @@ -1,7 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='rbac', url='', help=''), - v1: (import 'v1/main.libsonnet'), - v1alpha1: (import 'v1alpha1/main.libsonnet'), - v1beta1: (import 'v1beta1/main.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1/aggregationRule.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1/aggregationRule.libsonnet deleted file mode 100644 index 5684fae2f953..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1/aggregationRule.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='aggregationRule', url='', help='AggregationRule describes how to locate ClusterRoles to aggregate into the ClusterRole'), - '#withClusterRoleSelectors':: d.fn(help="ClusterRoleSelectors holds a list of selectors which will be used to find ClusterRoles and create the rules. If any of the selectors match, then the ClusterRole's permissions will be added", args=[d.arg(name='clusterRoleSelectors', type=d.T.array)]), - withClusterRoleSelectors(clusterRoleSelectors): { clusterRoleSelectors: if std.isArray(v=clusterRoleSelectors) then clusterRoleSelectors else [clusterRoleSelectors] }, - '#withClusterRoleSelectorsMixin':: d.fn(help="ClusterRoleSelectors holds a list of selectors which will be used to find ClusterRoles and create the rules. If any of the selectors match, then the ClusterRole's permissions will be added\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='clusterRoleSelectors', type=d.T.array)]), - withClusterRoleSelectorsMixin(clusterRoleSelectors): { clusterRoleSelectors+: if std.isArray(v=clusterRoleSelectors) then clusterRoleSelectors else [clusterRoleSelectors] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1/clusterRole.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1/clusterRole.libsonnet deleted file mode 100644 index 01d38210b7bb..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1/clusterRole.libsonnet +++ /dev/null @@ -1,67 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='clusterRole', url='', help='ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding.'), - '#aggregationRule':: d.obj(help='AggregationRule describes how to locate ClusterRoles to aggregate into the ClusterRole'), - aggregationRule: { - '#withClusterRoleSelectors':: d.fn(help="ClusterRoleSelectors holds a list of selectors which will be used to find ClusterRoles and create the rules. If any of the selectors match, then the ClusterRole's permissions will be added", args=[d.arg(name='clusterRoleSelectors', type=d.T.array)]), - withClusterRoleSelectors(clusterRoleSelectors): { aggregationRule+: { clusterRoleSelectors: if std.isArray(v=clusterRoleSelectors) then clusterRoleSelectors else [clusterRoleSelectors] } }, - '#withClusterRoleSelectorsMixin':: d.fn(help="ClusterRoleSelectors holds a list of selectors which will be used to find ClusterRoles and create the rules. If any of the selectors match, then the ClusterRole's permissions will be added\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='clusterRoleSelectors', type=d.T.array)]), - withClusterRoleSelectorsMixin(clusterRoleSelectors): { aggregationRule+: { clusterRoleSelectors+: if std.isArray(v=clusterRoleSelectors) then clusterRoleSelectors else [clusterRoleSelectors] } }, - }, - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Clusterrole', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'rbac.authorization.k8s.io/v1', - kind: 'ClusterRole', - } + self.metadata.withName(name=name), - '#withRules':: d.fn(help='Rules holds all the PolicyRules for this ClusterRole', args=[d.arg(name='rules', type=d.T.array)]), - withRules(rules): { rules: if std.isArray(v=rules) then rules else [rules] }, - '#withRulesMixin':: d.fn(help='Rules holds all the PolicyRules for this ClusterRole\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='rules', type=d.T.array)]), - withRulesMixin(rules): { rules+: if std.isArray(v=rules) then rules else [rules] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1/clusterRoleBinding.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1/clusterRoleBinding.libsonnet deleted file mode 100644 index 86b1808e693a..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1/clusterRoleBinding.libsonnet +++ /dev/null @@ -1,69 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='clusterRoleBinding', url='', help='ClusterRoleBinding references a ClusterRole, but not contain it. It can reference a ClusterRole in the global namespace, and adds who information via Subject.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Clusterrolebinding', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'rbac.authorization.k8s.io/v1', - kind: 'ClusterRoleBinding', - } + self.metadata.withName(name=name), - '#roleRef':: d.obj(help='RoleRef contains information that points to the role being used'), - roleRef: { - '#withApiGroup':: d.fn(help='APIGroup is the group for the resource being referenced', args=[d.arg(name='apiGroup', type=d.T.string)]), - withApiGroup(apiGroup): { roleRef+: { apiGroup: apiGroup } }, - '#withKind':: d.fn(help='Kind is the type of resource being referenced', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { roleRef+: { kind: kind } }, - '#withName':: d.fn(help='Name is the name of resource being referenced', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { roleRef+: { name: name } }, - }, - '#withSubjects':: d.fn(help='Subjects holds references to the objects the role applies to.', args=[d.arg(name='subjects', type=d.T.array)]), - withSubjects(subjects): { subjects: if std.isArray(v=subjects) then subjects else [subjects] }, - '#withSubjectsMixin':: d.fn(help='Subjects holds references to the objects the role applies to.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='subjects', type=d.T.array)]), - withSubjectsMixin(subjects): { subjects+: if std.isArray(v=subjects) then subjects else [subjects] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1/main.libsonnet deleted file mode 100644 index 30ab3dd87c45..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1/main.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1', url='', help=''), - aggregationRule: (import 'aggregationRule.libsonnet'), - clusterRole: (import 'clusterRole.libsonnet'), - clusterRoleBinding: (import 'clusterRoleBinding.libsonnet'), - policyRule: (import 'policyRule.libsonnet'), - role: (import 'role.libsonnet'), - roleBinding: (import 'roleBinding.libsonnet'), - roleRef: (import 'roleRef.libsonnet'), - subject: (import 'subject.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1/policyRule.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1/policyRule.libsonnet deleted file mode 100644 index 0fccf0aa9bd2..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1/policyRule.libsonnet +++ /dev/null @@ -1,26 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='policyRule', url='', help='PolicyRule holds information that describes a policy rule, but does not contain information about who the rule applies to or which namespace the rule applies to.'), - '#withApiGroups':: d.fn(help='APIGroups is the name of the APIGroup that contains the resources. If multiple API groups are specified, any action requested against one of the enumerated resources in any API group will be allowed.', args=[d.arg(name='apiGroups', type=d.T.array)]), - withApiGroups(apiGroups): { apiGroups: if std.isArray(v=apiGroups) then apiGroups else [apiGroups] }, - '#withApiGroupsMixin':: d.fn(help='APIGroups is the name of the APIGroup that contains the resources. If multiple API groups are specified, any action requested against one of the enumerated resources in any API group will be allowed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='apiGroups', type=d.T.array)]), - withApiGroupsMixin(apiGroups): { apiGroups+: if std.isArray(v=apiGroups) then apiGroups else [apiGroups] }, - '#withNonResourceURLs':: d.fn(help='NonResourceURLs is a set of partial urls that a user should have access to. *s are allowed, but only as the full, final step in the path Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding. Rules can either apply to API resources (such as "pods" or "secrets") or non-resource URL paths (such as "/api"), but not both.', args=[d.arg(name='nonResourceURLs', type=d.T.array)]), - withNonResourceURLs(nonResourceURLs): { nonResourceURLs: if std.isArray(v=nonResourceURLs) then nonResourceURLs else [nonResourceURLs] }, - '#withNonResourceURLsMixin':: d.fn(help='NonResourceURLs is a set of partial urls that a user should have access to. *s are allowed, but only as the full, final step in the path Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding. Rules can either apply to API resources (such as "pods" or "secrets") or non-resource URL paths (such as "/api"), but not both.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nonResourceURLs', type=d.T.array)]), - withNonResourceURLsMixin(nonResourceURLs): { nonResourceURLs+: if std.isArray(v=nonResourceURLs) then nonResourceURLs else [nonResourceURLs] }, - '#withResourceNames':: d.fn(help='ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed.', args=[d.arg(name='resourceNames', type=d.T.array)]), - withResourceNames(resourceNames): { resourceNames: if std.isArray(v=resourceNames) then resourceNames else [resourceNames] }, - '#withResourceNamesMixin':: d.fn(help='ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='resourceNames', type=d.T.array)]), - withResourceNamesMixin(resourceNames): { resourceNames+: if std.isArray(v=resourceNames) then resourceNames else [resourceNames] }, - '#withResources':: d.fn(help='Resources is a list of resources this rule applies to. ResourceAll represents all resources.', args=[d.arg(name='resources', type=d.T.array)]), - withResources(resources): { resources: if std.isArray(v=resources) then resources else [resources] }, - '#withResourcesMixin':: d.fn(help='Resources is a list of resources this rule applies to. ResourceAll represents all resources.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='resources', type=d.T.array)]), - withResourcesMixin(resources): { resources+: if std.isArray(v=resources) then resources else [resources] }, - '#withVerbs':: d.fn(help='Verbs is a list of Verbs that apply to ALL the ResourceKinds and AttributeRestrictions contained in this rule. VerbAll represents all kinds.', args=[d.arg(name='verbs', type=d.T.array)]), - withVerbs(verbs): { verbs: if std.isArray(v=verbs) then verbs else [verbs] }, - '#withVerbsMixin':: d.fn(help='Verbs is a list of Verbs that apply to ALL the ResourceKinds and AttributeRestrictions contained in this rule. VerbAll represents all kinds.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='verbs', type=d.T.array)]), - withVerbsMixin(verbs): { verbs+: if std.isArray(v=verbs) then verbs else [verbs] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1/role.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1/role.libsonnet deleted file mode 100644 index e9661d75a97d..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1/role.libsonnet +++ /dev/null @@ -1,60 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='role', url='', help='Role is a namespaced, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Role', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'rbac.authorization.k8s.io/v1', - kind: 'Role', - } + self.metadata.withName(name=name), - '#withRules':: d.fn(help='Rules holds all the PolicyRules for this Role', args=[d.arg(name='rules', type=d.T.array)]), - withRules(rules): { rules: if std.isArray(v=rules) then rules else [rules] }, - '#withRulesMixin':: d.fn(help='Rules holds all the PolicyRules for this Role\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='rules', type=d.T.array)]), - withRulesMixin(rules): { rules+: if std.isArray(v=rules) then rules else [rules] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1/roleBinding.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1/roleBinding.libsonnet deleted file mode 100644 index 27e97975dee4..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1/roleBinding.libsonnet +++ /dev/null @@ -1,69 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='roleBinding', url='', help='RoleBinding references a role, but does not contain it. It can reference a Role in the same namespace or a ClusterRole in the global namespace. It adds who information via Subjects and namespace information by which namespace it exists in. RoleBindings in a given namespace only have effect in that namespace.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Rolebinding', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'rbac.authorization.k8s.io/v1', - kind: 'RoleBinding', - } + self.metadata.withName(name=name), - '#roleRef':: d.obj(help='RoleRef contains information that points to the role being used'), - roleRef: { - '#withApiGroup':: d.fn(help='APIGroup is the group for the resource being referenced', args=[d.arg(name='apiGroup', type=d.T.string)]), - withApiGroup(apiGroup): { roleRef+: { apiGroup: apiGroup } }, - '#withKind':: d.fn(help='Kind is the type of resource being referenced', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { roleRef+: { kind: kind } }, - '#withName':: d.fn(help='Name is the name of resource being referenced', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { roleRef+: { name: name } }, - }, - '#withSubjects':: d.fn(help='Subjects holds references to the objects the role applies to.', args=[d.arg(name='subjects', type=d.T.array)]), - withSubjects(subjects): { subjects: if std.isArray(v=subjects) then subjects else [subjects] }, - '#withSubjectsMixin':: d.fn(help='Subjects holds references to the objects the role applies to.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='subjects', type=d.T.array)]), - withSubjectsMixin(subjects): { subjects+: if std.isArray(v=subjects) then subjects else [subjects] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1/roleRef.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1/roleRef.libsonnet deleted file mode 100644 index ff8c4fae6cd5..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1/roleRef.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='roleRef', url='', help='RoleRef contains information that points to the role being used'), - '#withApiGroup':: d.fn(help='APIGroup is the group for the resource being referenced', args=[d.arg(name='apiGroup', type=d.T.string)]), - withApiGroup(apiGroup): { apiGroup: apiGroup }, - '#withKind':: d.fn(help='Kind is the type of resource being referenced', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { kind: kind }, - '#withName':: d.fn(help='Name is the name of resource being referenced', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1/subject.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1/subject.libsonnet deleted file mode 100644 index 29265d03d16e..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1/subject.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='subject', url='', help='Subject contains a reference to the object or user identities a role binding applies to. This can either hold a direct API object reference, or a value for non-objects such as user and group names.'), - '#withApiGroup':: d.fn(help='APIGroup holds the API group of the referenced subject. Defaults to "" for ServiceAccount subjects. Defaults to "rbac.authorization.k8s.io" for User and Group subjects.', args=[d.arg(name='apiGroup', type=d.T.string)]), - withApiGroup(apiGroup): { apiGroup: apiGroup }, - '#withKind':: d.fn(help='Kind of object being referenced. Values defined by this API group are "User", "Group", and "ServiceAccount". If the Authorizer does not recognized the kind value, the Authorizer should report an error.', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { kind: kind }, - '#withName':: d.fn(help='Name of the object being referenced.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withNamespace':: d.fn(help='Namespace of the referenced object. If the object kind is non-namespace, such as "User" or "Group", and this value is not empty the Authorizer should report an error.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { namespace: namespace }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1alpha1/aggregationRule.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1alpha1/aggregationRule.libsonnet deleted file mode 100644 index 5684fae2f953..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1alpha1/aggregationRule.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='aggregationRule', url='', help='AggregationRule describes how to locate ClusterRoles to aggregate into the ClusterRole'), - '#withClusterRoleSelectors':: d.fn(help="ClusterRoleSelectors holds a list of selectors which will be used to find ClusterRoles and create the rules. If any of the selectors match, then the ClusterRole's permissions will be added", args=[d.arg(name='clusterRoleSelectors', type=d.T.array)]), - withClusterRoleSelectors(clusterRoleSelectors): { clusterRoleSelectors: if std.isArray(v=clusterRoleSelectors) then clusterRoleSelectors else [clusterRoleSelectors] }, - '#withClusterRoleSelectorsMixin':: d.fn(help="ClusterRoleSelectors holds a list of selectors which will be used to find ClusterRoles and create the rules. If any of the selectors match, then the ClusterRole's permissions will be added\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='clusterRoleSelectors', type=d.T.array)]), - withClusterRoleSelectorsMixin(clusterRoleSelectors): { clusterRoleSelectors+: if std.isArray(v=clusterRoleSelectors) then clusterRoleSelectors else [clusterRoleSelectors] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1alpha1/clusterRole.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1alpha1/clusterRole.libsonnet deleted file mode 100644 index 0abdcf931d21..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1alpha1/clusterRole.libsonnet +++ /dev/null @@ -1,67 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='clusterRole', url='', help='ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding. Deprecated in v1.17 in favor of rbac.authorization.k8s.io/v1 ClusterRole, and will no longer be served in v1.22.'), - '#aggregationRule':: d.obj(help='AggregationRule describes how to locate ClusterRoles to aggregate into the ClusterRole'), - aggregationRule: { - '#withClusterRoleSelectors':: d.fn(help="ClusterRoleSelectors holds a list of selectors which will be used to find ClusterRoles and create the rules. If any of the selectors match, then the ClusterRole's permissions will be added", args=[d.arg(name='clusterRoleSelectors', type=d.T.array)]), - withClusterRoleSelectors(clusterRoleSelectors): { aggregationRule+: { clusterRoleSelectors: if std.isArray(v=clusterRoleSelectors) then clusterRoleSelectors else [clusterRoleSelectors] } }, - '#withClusterRoleSelectorsMixin':: d.fn(help="ClusterRoleSelectors holds a list of selectors which will be used to find ClusterRoles and create the rules. If any of the selectors match, then the ClusterRole's permissions will be added\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='clusterRoleSelectors', type=d.T.array)]), - withClusterRoleSelectorsMixin(clusterRoleSelectors): { aggregationRule+: { clusterRoleSelectors+: if std.isArray(v=clusterRoleSelectors) then clusterRoleSelectors else [clusterRoleSelectors] } }, - }, - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Clusterrole', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'rbac.authorization.k8s.io/v1alpha1', - kind: 'ClusterRole', - } + self.metadata.withName(name=name), - '#withRules':: d.fn(help='Rules holds all the PolicyRules for this ClusterRole', args=[d.arg(name='rules', type=d.T.array)]), - withRules(rules): { rules: if std.isArray(v=rules) then rules else [rules] }, - '#withRulesMixin':: d.fn(help='Rules holds all the PolicyRules for this ClusterRole\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='rules', type=d.T.array)]), - withRulesMixin(rules): { rules+: if std.isArray(v=rules) then rules else [rules] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1alpha1/clusterRoleBinding.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1alpha1/clusterRoleBinding.libsonnet deleted file mode 100644 index 17f3351fc4af..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1alpha1/clusterRoleBinding.libsonnet +++ /dev/null @@ -1,69 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='clusterRoleBinding', url='', help='ClusterRoleBinding references a ClusterRole, but not contain it. It can reference a ClusterRole in the global namespace, and adds who information via Subject. Deprecated in v1.17 in favor of rbac.authorization.k8s.io/v1 ClusterRoleBinding, and will no longer be served in v1.22.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Clusterrolebinding', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'rbac.authorization.k8s.io/v1alpha1', - kind: 'ClusterRoleBinding', - } + self.metadata.withName(name=name), - '#roleRef':: d.obj(help='RoleRef contains information that points to the role being used'), - roleRef: { - '#withApiGroup':: d.fn(help='APIGroup is the group for the resource being referenced', args=[d.arg(name='apiGroup', type=d.T.string)]), - withApiGroup(apiGroup): { roleRef+: { apiGroup: apiGroup } }, - '#withKind':: d.fn(help='Kind is the type of resource being referenced', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { roleRef+: { kind: kind } }, - '#withName':: d.fn(help='Name is the name of resource being referenced', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { roleRef+: { name: name } }, - }, - '#withSubjects':: d.fn(help='Subjects holds references to the objects the role applies to.', args=[d.arg(name='subjects', type=d.T.array)]), - withSubjects(subjects): { subjects: if std.isArray(v=subjects) then subjects else [subjects] }, - '#withSubjectsMixin':: d.fn(help='Subjects holds references to the objects the role applies to.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='subjects', type=d.T.array)]), - withSubjectsMixin(subjects): { subjects+: if std.isArray(v=subjects) then subjects else [subjects] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1alpha1/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1alpha1/main.libsonnet deleted file mode 100644 index cababc33d00b..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1alpha1/main.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1alpha1', url='', help=''), - aggregationRule: (import 'aggregationRule.libsonnet'), - clusterRole: (import 'clusterRole.libsonnet'), - clusterRoleBinding: (import 'clusterRoleBinding.libsonnet'), - policyRule: (import 'policyRule.libsonnet'), - role: (import 'role.libsonnet'), - roleBinding: (import 'roleBinding.libsonnet'), - roleRef: (import 'roleRef.libsonnet'), - subject: (import 'subject.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1alpha1/policyRule.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1alpha1/policyRule.libsonnet deleted file mode 100644 index 0fccf0aa9bd2..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1alpha1/policyRule.libsonnet +++ /dev/null @@ -1,26 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='policyRule', url='', help='PolicyRule holds information that describes a policy rule, but does not contain information about who the rule applies to or which namespace the rule applies to.'), - '#withApiGroups':: d.fn(help='APIGroups is the name of the APIGroup that contains the resources. If multiple API groups are specified, any action requested against one of the enumerated resources in any API group will be allowed.', args=[d.arg(name='apiGroups', type=d.T.array)]), - withApiGroups(apiGroups): { apiGroups: if std.isArray(v=apiGroups) then apiGroups else [apiGroups] }, - '#withApiGroupsMixin':: d.fn(help='APIGroups is the name of the APIGroup that contains the resources. If multiple API groups are specified, any action requested against one of the enumerated resources in any API group will be allowed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='apiGroups', type=d.T.array)]), - withApiGroupsMixin(apiGroups): { apiGroups+: if std.isArray(v=apiGroups) then apiGroups else [apiGroups] }, - '#withNonResourceURLs':: d.fn(help='NonResourceURLs is a set of partial urls that a user should have access to. *s are allowed, but only as the full, final step in the path Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding. Rules can either apply to API resources (such as "pods" or "secrets") or non-resource URL paths (such as "/api"), but not both.', args=[d.arg(name='nonResourceURLs', type=d.T.array)]), - withNonResourceURLs(nonResourceURLs): { nonResourceURLs: if std.isArray(v=nonResourceURLs) then nonResourceURLs else [nonResourceURLs] }, - '#withNonResourceURLsMixin':: d.fn(help='NonResourceURLs is a set of partial urls that a user should have access to. *s are allowed, but only as the full, final step in the path Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding. Rules can either apply to API resources (such as "pods" or "secrets") or non-resource URL paths (such as "/api"), but not both.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nonResourceURLs', type=d.T.array)]), - withNonResourceURLsMixin(nonResourceURLs): { nonResourceURLs+: if std.isArray(v=nonResourceURLs) then nonResourceURLs else [nonResourceURLs] }, - '#withResourceNames':: d.fn(help='ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed.', args=[d.arg(name='resourceNames', type=d.T.array)]), - withResourceNames(resourceNames): { resourceNames: if std.isArray(v=resourceNames) then resourceNames else [resourceNames] }, - '#withResourceNamesMixin':: d.fn(help='ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='resourceNames', type=d.T.array)]), - withResourceNamesMixin(resourceNames): { resourceNames+: if std.isArray(v=resourceNames) then resourceNames else [resourceNames] }, - '#withResources':: d.fn(help='Resources is a list of resources this rule applies to. ResourceAll represents all resources.', args=[d.arg(name='resources', type=d.T.array)]), - withResources(resources): { resources: if std.isArray(v=resources) then resources else [resources] }, - '#withResourcesMixin':: d.fn(help='Resources is a list of resources this rule applies to. ResourceAll represents all resources.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='resources', type=d.T.array)]), - withResourcesMixin(resources): { resources+: if std.isArray(v=resources) then resources else [resources] }, - '#withVerbs':: d.fn(help='Verbs is a list of Verbs that apply to ALL the ResourceKinds and AttributeRestrictions contained in this rule. VerbAll represents all kinds.', args=[d.arg(name='verbs', type=d.T.array)]), - withVerbs(verbs): { verbs: if std.isArray(v=verbs) then verbs else [verbs] }, - '#withVerbsMixin':: d.fn(help='Verbs is a list of Verbs that apply to ALL the ResourceKinds and AttributeRestrictions contained in this rule. VerbAll represents all kinds.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='verbs', type=d.T.array)]), - withVerbsMixin(verbs): { verbs+: if std.isArray(v=verbs) then verbs else [verbs] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1alpha1/role.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1alpha1/role.libsonnet deleted file mode 100644 index 3aee62aa96ba..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1alpha1/role.libsonnet +++ /dev/null @@ -1,60 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='role', url='', help='Role is a namespaced, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding. Deprecated in v1.17 in favor of rbac.authorization.k8s.io/v1 Role, and will no longer be served in v1.22.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Role', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'rbac.authorization.k8s.io/v1alpha1', - kind: 'Role', - } + self.metadata.withName(name=name), - '#withRules':: d.fn(help='Rules holds all the PolicyRules for this Role', args=[d.arg(name='rules', type=d.T.array)]), - withRules(rules): { rules: if std.isArray(v=rules) then rules else [rules] }, - '#withRulesMixin':: d.fn(help='Rules holds all the PolicyRules for this Role\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='rules', type=d.T.array)]), - withRulesMixin(rules): { rules+: if std.isArray(v=rules) then rules else [rules] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1alpha1/roleBinding.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1alpha1/roleBinding.libsonnet deleted file mode 100644 index 1b0fa65f1f2f..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1alpha1/roleBinding.libsonnet +++ /dev/null @@ -1,69 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='roleBinding', url='', help='RoleBinding references a role, but does not contain it. It can reference a Role in the same namespace or a ClusterRole in the global namespace. It adds who information via Subjects and namespace information by which namespace it exists in. RoleBindings in a given namespace only have effect in that namespace. Deprecated in v1.17 in favor of rbac.authorization.k8s.io/v1 RoleBinding, and will no longer be served in v1.22.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Rolebinding', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'rbac.authorization.k8s.io/v1alpha1', - kind: 'RoleBinding', - } + self.metadata.withName(name=name), - '#roleRef':: d.obj(help='RoleRef contains information that points to the role being used'), - roleRef: { - '#withApiGroup':: d.fn(help='APIGroup is the group for the resource being referenced', args=[d.arg(name='apiGroup', type=d.T.string)]), - withApiGroup(apiGroup): { roleRef+: { apiGroup: apiGroup } }, - '#withKind':: d.fn(help='Kind is the type of resource being referenced', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { roleRef+: { kind: kind } }, - '#withName':: d.fn(help='Name is the name of resource being referenced', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { roleRef+: { name: name } }, - }, - '#withSubjects':: d.fn(help='Subjects holds references to the objects the role applies to.', args=[d.arg(name='subjects', type=d.T.array)]), - withSubjects(subjects): { subjects: if std.isArray(v=subjects) then subjects else [subjects] }, - '#withSubjectsMixin':: d.fn(help='Subjects holds references to the objects the role applies to.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='subjects', type=d.T.array)]), - withSubjectsMixin(subjects): { subjects+: if std.isArray(v=subjects) then subjects else [subjects] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1alpha1/roleRef.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1alpha1/roleRef.libsonnet deleted file mode 100644 index ff8c4fae6cd5..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1alpha1/roleRef.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='roleRef', url='', help='RoleRef contains information that points to the role being used'), - '#withApiGroup':: d.fn(help='APIGroup is the group for the resource being referenced', args=[d.arg(name='apiGroup', type=d.T.string)]), - withApiGroup(apiGroup): { apiGroup: apiGroup }, - '#withKind':: d.fn(help='Kind is the type of resource being referenced', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { kind: kind }, - '#withName':: d.fn(help='Name is the name of resource being referenced', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1alpha1/subject.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1alpha1/subject.libsonnet deleted file mode 100644 index a6e90aeb1ae4..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1alpha1/subject.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='subject', url='', help='Subject contains a reference to the object or user identities a role binding applies to. This can either hold a direct API object reference, or a value for non-objects such as user and group names.'), - '#withKind':: d.fn(help='Kind of object being referenced. Values defined by this API group are "User", "Group", and "ServiceAccount". If the Authorizer does not recognized the kind value, the Authorizer should report an error.', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { kind: kind }, - '#withName':: d.fn(help='Name of the object being referenced.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withNamespace':: d.fn(help='Namespace of the referenced object. If the object kind is non-namespace, such as "User" or "Group", and this value is not empty the Authorizer should report an error.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { namespace: namespace }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1beta1/aggregationRule.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1beta1/aggregationRule.libsonnet deleted file mode 100644 index 5684fae2f953..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1beta1/aggregationRule.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='aggregationRule', url='', help='AggregationRule describes how to locate ClusterRoles to aggregate into the ClusterRole'), - '#withClusterRoleSelectors':: d.fn(help="ClusterRoleSelectors holds a list of selectors which will be used to find ClusterRoles and create the rules. If any of the selectors match, then the ClusterRole's permissions will be added", args=[d.arg(name='clusterRoleSelectors', type=d.T.array)]), - withClusterRoleSelectors(clusterRoleSelectors): { clusterRoleSelectors: if std.isArray(v=clusterRoleSelectors) then clusterRoleSelectors else [clusterRoleSelectors] }, - '#withClusterRoleSelectorsMixin':: d.fn(help="ClusterRoleSelectors holds a list of selectors which will be used to find ClusterRoles and create the rules. If any of the selectors match, then the ClusterRole's permissions will be added\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='clusterRoleSelectors', type=d.T.array)]), - withClusterRoleSelectorsMixin(clusterRoleSelectors): { clusterRoleSelectors+: if std.isArray(v=clusterRoleSelectors) then clusterRoleSelectors else [clusterRoleSelectors] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1beta1/clusterRole.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1beta1/clusterRole.libsonnet deleted file mode 100644 index acc697644a2e..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1beta1/clusterRole.libsonnet +++ /dev/null @@ -1,67 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='clusterRole', url='', help='ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding. Deprecated in v1.17 in favor of rbac.authorization.k8s.io/v1 ClusterRole, and will no longer be served in v1.22.'), - '#aggregationRule':: d.obj(help='AggregationRule describes how to locate ClusterRoles to aggregate into the ClusterRole'), - aggregationRule: { - '#withClusterRoleSelectors':: d.fn(help="ClusterRoleSelectors holds a list of selectors which will be used to find ClusterRoles and create the rules. If any of the selectors match, then the ClusterRole's permissions will be added", args=[d.arg(name='clusterRoleSelectors', type=d.T.array)]), - withClusterRoleSelectors(clusterRoleSelectors): { aggregationRule+: { clusterRoleSelectors: if std.isArray(v=clusterRoleSelectors) then clusterRoleSelectors else [clusterRoleSelectors] } }, - '#withClusterRoleSelectorsMixin':: d.fn(help="ClusterRoleSelectors holds a list of selectors which will be used to find ClusterRoles and create the rules. If any of the selectors match, then the ClusterRole's permissions will be added\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='clusterRoleSelectors', type=d.T.array)]), - withClusterRoleSelectorsMixin(clusterRoleSelectors): { aggregationRule+: { clusterRoleSelectors+: if std.isArray(v=clusterRoleSelectors) then clusterRoleSelectors else [clusterRoleSelectors] } }, - }, - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Clusterrole', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'rbac.authorization.k8s.io/v1beta1', - kind: 'ClusterRole', - } + self.metadata.withName(name=name), - '#withRules':: d.fn(help='Rules holds all the PolicyRules for this ClusterRole', args=[d.arg(name='rules', type=d.T.array)]), - withRules(rules): { rules: if std.isArray(v=rules) then rules else [rules] }, - '#withRulesMixin':: d.fn(help='Rules holds all the PolicyRules for this ClusterRole\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='rules', type=d.T.array)]), - withRulesMixin(rules): { rules+: if std.isArray(v=rules) then rules else [rules] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1beta1/clusterRoleBinding.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1beta1/clusterRoleBinding.libsonnet deleted file mode 100644 index 042bd6d9a0bc..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1beta1/clusterRoleBinding.libsonnet +++ /dev/null @@ -1,69 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='clusterRoleBinding', url='', help='ClusterRoleBinding references a ClusterRole, but not contain it. It can reference a ClusterRole in the global namespace, and adds who information via Subject. Deprecated in v1.17 in favor of rbac.authorization.k8s.io/v1 ClusterRoleBinding, and will no longer be served in v1.22.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Clusterrolebinding', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'rbac.authorization.k8s.io/v1beta1', - kind: 'ClusterRoleBinding', - } + self.metadata.withName(name=name), - '#roleRef':: d.obj(help='RoleRef contains information that points to the role being used'), - roleRef: { - '#withApiGroup':: d.fn(help='APIGroup is the group for the resource being referenced', args=[d.arg(name='apiGroup', type=d.T.string)]), - withApiGroup(apiGroup): { roleRef+: { apiGroup: apiGroup } }, - '#withKind':: d.fn(help='Kind is the type of resource being referenced', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { roleRef+: { kind: kind } }, - '#withName':: d.fn(help='Name is the name of resource being referenced', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { roleRef+: { name: name } }, - }, - '#withSubjects':: d.fn(help='Subjects holds references to the objects the role applies to.', args=[d.arg(name='subjects', type=d.T.array)]), - withSubjects(subjects): { subjects: if std.isArray(v=subjects) then subjects else [subjects] }, - '#withSubjectsMixin':: d.fn(help='Subjects holds references to the objects the role applies to.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='subjects', type=d.T.array)]), - withSubjectsMixin(subjects): { subjects+: if std.isArray(v=subjects) then subjects else [subjects] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1beta1/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1beta1/main.libsonnet deleted file mode 100644 index 67591074ee65..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1beta1/main.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1beta1', url='', help=''), - aggregationRule: (import 'aggregationRule.libsonnet'), - clusterRole: (import 'clusterRole.libsonnet'), - clusterRoleBinding: (import 'clusterRoleBinding.libsonnet'), - policyRule: (import 'policyRule.libsonnet'), - role: (import 'role.libsonnet'), - roleBinding: (import 'roleBinding.libsonnet'), - roleRef: (import 'roleRef.libsonnet'), - subject: (import 'subject.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1beta1/policyRule.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1beta1/policyRule.libsonnet deleted file mode 100644 index 86f9ce8dc1ca..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1beta1/policyRule.libsonnet +++ /dev/null @@ -1,26 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='policyRule', url='', help='PolicyRule holds information that describes a policy rule, but does not contain information about who the rule applies to or which namespace the rule applies to.'), - '#withApiGroups':: d.fn(help='APIGroups is the name of the APIGroup that contains the resources. If multiple API groups are specified, any action requested against one of the enumerated resources in any API group will be allowed.', args=[d.arg(name='apiGroups', type=d.T.array)]), - withApiGroups(apiGroups): { apiGroups: if std.isArray(v=apiGroups) then apiGroups else [apiGroups] }, - '#withApiGroupsMixin':: d.fn(help='APIGroups is the name of the APIGroup that contains the resources. If multiple API groups are specified, any action requested against one of the enumerated resources in any API group will be allowed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='apiGroups', type=d.T.array)]), - withApiGroupsMixin(apiGroups): { apiGroups+: if std.isArray(v=apiGroups) then apiGroups else [apiGroups] }, - '#withNonResourceURLs':: d.fn(help='NonResourceURLs is a set of partial urls that a user should have access to. *s are allowed, but only as the full, final step in the path Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding. Rules can either apply to API resources (such as "pods" or "secrets") or non-resource URL paths (such as "/api"), but not both.', args=[d.arg(name='nonResourceURLs', type=d.T.array)]), - withNonResourceURLs(nonResourceURLs): { nonResourceURLs: if std.isArray(v=nonResourceURLs) then nonResourceURLs else [nonResourceURLs] }, - '#withNonResourceURLsMixin':: d.fn(help='NonResourceURLs is a set of partial urls that a user should have access to. *s are allowed, but only as the full, final step in the path Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding. Rules can either apply to API resources (such as "pods" or "secrets") or non-resource URL paths (such as "/api"), but not both.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nonResourceURLs', type=d.T.array)]), - withNonResourceURLsMixin(nonResourceURLs): { nonResourceURLs+: if std.isArray(v=nonResourceURLs) then nonResourceURLs else [nonResourceURLs] }, - '#withResourceNames':: d.fn(help='ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed.', args=[d.arg(name='resourceNames', type=d.T.array)]), - withResourceNames(resourceNames): { resourceNames: if std.isArray(v=resourceNames) then resourceNames else [resourceNames] }, - '#withResourceNamesMixin':: d.fn(help='ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='resourceNames', type=d.T.array)]), - withResourceNamesMixin(resourceNames): { resourceNames+: if std.isArray(v=resourceNames) then resourceNames else [resourceNames] }, - '#withResources':: d.fn(help="Resources is a list of resources this rule applies to. '*' represents all resources in the specified apiGroups. '*/foo' represents the subresource 'foo' for all resources in the specified apiGroups.", args=[d.arg(name='resources', type=d.T.array)]), - withResources(resources): { resources: if std.isArray(v=resources) then resources else [resources] }, - '#withResourcesMixin':: d.fn(help="Resources is a list of resources this rule applies to. '*' represents all resources in the specified apiGroups. '*/foo' represents the subresource 'foo' for all resources in the specified apiGroups.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='resources', type=d.T.array)]), - withResourcesMixin(resources): { resources+: if std.isArray(v=resources) then resources else [resources] }, - '#withVerbs':: d.fn(help='Verbs is a list of Verbs that apply to ALL the ResourceKinds and AttributeRestrictions contained in this rule. VerbAll represents all kinds.', args=[d.arg(name='verbs', type=d.T.array)]), - withVerbs(verbs): { verbs: if std.isArray(v=verbs) then verbs else [verbs] }, - '#withVerbsMixin':: d.fn(help='Verbs is a list of Verbs that apply to ALL the ResourceKinds and AttributeRestrictions contained in this rule. VerbAll represents all kinds.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='verbs', type=d.T.array)]), - withVerbsMixin(verbs): { verbs+: if std.isArray(v=verbs) then verbs else [verbs] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1beta1/role.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1beta1/role.libsonnet deleted file mode 100644 index 37ed05eda7c5..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1beta1/role.libsonnet +++ /dev/null @@ -1,60 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='role', url='', help='Role is a namespaced, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding. Deprecated in v1.17 in favor of rbac.authorization.k8s.io/v1 Role, and will no longer be served in v1.22.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Role', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'rbac.authorization.k8s.io/v1beta1', - kind: 'Role', - } + self.metadata.withName(name=name), - '#withRules':: d.fn(help='Rules holds all the PolicyRules for this Role', args=[d.arg(name='rules', type=d.T.array)]), - withRules(rules): { rules: if std.isArray(v=rules) then rules else [rules] }, - '#withRulesMixin':: d.fn(help='Rules holds all the PolicyRules for this Role\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='rules', type=d.T.array)]), - withRulesMixin(rules): { rules+: if std.isArray(v=rules) then rules else [rules] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1beta1/roleBinding.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1beta1/roleBinding.libsonnet deleted file mode 100644 index fc1fb9b8eb57..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1beta1/roleBinding.libsonnet +++ /dev/null @@ -1,69 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='roleBinding', url='', help='RoleBinding references a role, but does not contain it. It can reference a Role in the same namespace or a ClusterRole in the global namespace. It adds who information via Subjects and namespace information by which namespace it exists in. RoleBindings in a given namespace only have effect in that namespace. Deprecated in v1.17 in favor of rbac.authorization.k8s.io/v1 RoleBinding, and will no longer be served in v1.22.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Rolebinding', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'rbac.authorization.k8s.io/v1beta1', - kind: 'RoleBinding', - } + self.metadata.withName(name=name), - '#roleRef':: d.obj(help='RoleRef contains information that points to the role being used'), - roleRef: { - '#withApiGroup':: d.fn(help='APIGroup is the group for the resource being referenced', args=[d.arg(name='apiGroup', type=d.T.string)]), - withApiGroup(apiGroup): { roleRef+: { apiGroup: apiGroup } }, - '#withKind':: d.fn(help='Kind is the type of resource being referenced', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { roleRef+: { kind: kind } }, - '#withName':: d.fn(help='Name is the name of resource being referenced', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { roleRef+: { name: name } }, - }, - '#withSubjects':: d.fn(help='Subjects holds references to the objects the role applies to.', args=[d.arg(name='subjects', type=d.T.array)]), - withSubjects(subjects): { subjects: if std.isArray(v=subjects) then subjects else [subjects] }, - '#withSubjectsMixin':: d.fn(help='Subjects holds references to the objects the role applies to.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='subjects', type=d.T.array)]), - withSubjectsMixin(subjects): { subjects+: if std.isArray(v=subjects) then subjects else [subjects] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1beta1/roleRef.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1beta1/roleRef.libsonnet deleted file mode 100644 index ff8c4fae6cd5..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1beta1/roleRef.libsonnet +++ /dev/null @@ -1,12 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='roleRef', url='', help='RoleRef contains information that points to the role being used'), - '#withApiGroup':: d.fn(help='APIGroup is the group for the resource being referenced', args=[d.arg(name='apiGroup', type=d.T.string)]), - withApiGroup(apiGroup): { apiGroup: apiGroup }, - '#withKind':: d.fn(help='Kind is the type of resource being referenced', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { kind: kind }, - '#withName':: d.fn(help='Name is the name of resource being referenced', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1beta1/subject.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1beta1/subject.libsonnet deleted file mode 100644 index 29265d03d16e..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/rbac/v1beta1/subject.libsonnet +++ /dev/null @@ -1,14 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='subject', url='', help='Subject contains a reference to the object or user identities a role binding applies to. This can either hold a direct API object reference, or a value for non-objects such as user and group names.'), - '#withApiGroup':: d.fn(help='APIGroup holds the API group of the referenced subject. Defaults to "" for ServiceAccount subjects. Defaults to "rbac.authorization.k8s.io" for User and Group subjects.', args=[d.arg(name='apiGroup', type=d.T.string)]), - withApiGroup(apiGroup): { apiGroup: apiGroup }, - '#withKind':: d.fn(help='Kind of object being referenced. Values defined by this API group are "User", "Group", and "ServiceAccount". If the Authorizer does not recognized the kind value, the Authorizer should report an error.', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { kind: kind }, - '#withName':: d.fn(help='Name of the object being referenced.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withNamespace':: d.fn(help='Namespace of the referenced object. If the object kind is non-namespace, such as "User" or "Group", and this value is not empty the Authorizer should report an error.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { namespace: namespace }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/scheduling/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/scheduling/main.libsonnet deleted file mode 100644 index 695795388432..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/scheduling/main.libsonnet +++ /dev/null @@ -1,7 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='scheduling', url='', help=''), - v1: (import 'v1/main.libsonnet'), - v1alpha1: (import 'v1alpha1/main.libsonnet'), - v1beta1: (import 'v1beta1/main.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/scheduling/v1/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/scheduling/v1/main.libsonnet deleted file mode 100644 index 76a7ed5aabaf..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/scheduling/v1/main.libsonnet +++ /dev/null @@ -1,5 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1', url='', help=''), - priorityClass: (import 'priorityClass.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/scheduling/v1/priorityClass.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/scheduling/v1/priorityClass.libsonnet deleted file mode 100644 index cbaad8cf0cde..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/scheduling/v1/priorityClass.libsonnet +++ /dev/null @@ -1,64 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='priorityClass', url='', help='PriorityClass defines mapping from a priority class name to the priority integer value. The value can be any valid integer.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Priorityclass', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'scheduling.k8s.io/v1', - kind: 'PriorityClass', - } + self.metadata.withName(name=name), - '#withDescription':: d.fn(help='description is an arbitrary string that usually provides guidelines on when this priority class should be used.', args=[d.arg(name='description', type=d.T.string)]), - withDescription(description): { description: description }, - '#withGlobalDefault':: d.fn(help='globalDefault specifies whether this PriorityClass should be considered as the default priority for pods that do not have any priority class. Only one PriorityClass can be marked as `globalDefault`. However, if more than one PriorityClasses exists with their `globalDefault` field set to true, the smallest value of such global default PriorityClasses will be used as the default priority.', args=[d.arg(name='globalDefault', type=d.T.boolean)]), - withGlobalDefault(globalDefault): { globalDefault: globalDefault }, - '#withPreemptionPolicy':: d.fn(help='PreemptionPolicy is the Policy for preempting pods with lower priority. One of Never, PreemptLowerPriority. Defaults to PreemptLowerPriority if unset. This field is beta-level, gated by the NonPreemptingPriority feature-gate.', args=[d.arg(name='preemptionPolicy', type=d.T.string)]), - withPreemptionPolicy(preemptionPolicy): { preemptionPolicy: preemptionPolicy }, - '#withValue':: d.fn(help='The value of this priority class. This is the actual priority that pods receive when they have the name of this class in their pod spec.', args=[d.arg(name='value', type=d.T.integer)]), - withValue(value): { value: value }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/scheduling/v1alpha1/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/scheduling/v1alpha1/main.libsonnet deleted file mode 100644 index 1b042817725f..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/scheduling/v1alpha1/main.libsonnet +++ /dev/null @@ -1,5 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1alpha1', url='', help=''), - priorityClass: (import 'priorityClass.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/scheduling/v1alpha1/priorityClass.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/scheduling/v1alpha1/priorityClass.libsonnet deleted file mode 100644 index 83a38c4fa21b..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/scheduling/v1alpha1/priorityClass.libsonnet +++ /dev/null @@ -1,64 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='priorityClass', url='', help='DEPRECATED - This group version of PriorityClass is deprecated by scheduling.k8s.io/v1/PriorityClass. PriorityClass defines mapping from a priority class name to the priority integer value. The value can be any valid integer.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Priorityclass', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'scheduling.k8s.io/v1alpha1', - kind: 'PriorityClass', - } + self.metadata.withName(name=name), - '#withDescription':: d.fn(help='description is an arbitrary string that usually provides guidelines on when this priority class should be used.', args=[d.arg(name='description', type=d.T.string)]), - withDescription(description): { description: description }, - '#withGlobalDefault':: d.fn(help='globalDefault specifies whether this PriorityClass should be considered as the default priority for pods that do not have any priority class. Only one PriorityClass can be marked as `globalDefault`. However, if more than one PriorityClasses exists with their `globalDefault` field set to true, the smallest value of such global default PriorityClasses will be used as the default priority.', args=[d.arg(name='globalDefault', type=d.T.boolean)]), - withGlobalDefault(globalDefault): { globalDefault: globalDefault }, - '#withPreemptionPolicy':: d.fn(help='PreemptionPolicy is the Policy for preempting pods with lower priority. One of Never, PreemptLowerPriority. Defaults to PreemptLowerPriority if unset. This field is beta-level, gated by the NonPreemptingPriority feature-gate.', args=[d.arg(name='preemptionPolicy', type=d.T.string)]), - withPreemptionPolicy(preemptionPolicy): { preemptionPolicy: preemptionPolicy }, - '#withValue':: d.fn(help='The value of this priority class. This is the actual priority that pods receive when they have the name of this class in their pod spec.', args=[d.arg(name='value', type=d.T.integer)]), - withValue(value): { value: value }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/scheduling/v1beta1/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/scheduling/v1beta1/main.libsonnet deleted file mode 100644 index 3b681adec031..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/scheduling/v1beta1/main.libsonnet +++ /dev/null @@ -1,5 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1beta1', url='', help=''), - priorityClass: (import 'priorityClass.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/scheduling/v1beta1/priorityClass.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/scheduling/v1beta1/priorityClass.libsonnet deleted file mode 100644 index d9002396a62c..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/scheduling/v1beta1/priorityClass.libsonnet +++ /dev/null @@ -1,64 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='priorityClass', url='', help='DEPRECATED - This group version of PriorityClass is deprecated by scheduling.k8s.io/v1/PriorityClass. PriorityClass defines mapping from a priority class name to the priority integer value. The value can be any valid integer.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Priorityclass', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'scheduling.k8s.io/v1beta1', - kind: 'PriorityClass', - } + self.metadata.withName(name=name), - '#withDescription':: d.fn(help='description is an arbitrary string that usually provides guidelines on when this priority class should be used.', args=[d.arg(name='description', type=d.T.string)]), - withDescription(description): { description: description }, - '#withGlobalDefault':: d.fn(help='globalDefault specifies whether this PriorityClass should be considered as the default priority for pods that do not have any priority class. Only one PriorityClass can be marked as `globalDefault`. However, if more than one PriorityClasses exists with their `globalDefault` field set to true, the smallest value of such global default PriorityClasses will be used as the default priority.', args=[d.arg(name='globalDefault', type=d.T.boolean)]), - withGlobalDefault(globalDefault): { globalDefault: globalDefault }, - '#withPreemptionPolicy':: d.fn(help='PreemptionPolicy is the Policy for preempting pods with lower priority. One of Never, PreemptLowerPriority. Defaults to PreemptLowerPriority if unset. This field is beta-level, gated by the NonPreemptingPriority feature-gate.', args=[d.arg(name='preemptionPolicy', type=d.T.string)]), - withPreemptionPolicy(preemptionPolicy): { preemptionPolicy: preemptionPolicy }, - '#withValue':: d.fn(help='The value of this priority class. This is the actual priority that pods receive when they have the name of this class in their pod spec.', args=[d.arg(name='value', type=d.T.integer)]), - withValue(value): { value: value }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/main.libsonnet deleted file mode 100644 index 5b2186168a58..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/main.libsonnet +++ /dev/null @@ -1,7 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='storage', url='', help=''), - v1: (import 'v1/main.libsonnet'), - v1alpha1: (import 'v1alpha1/main.libsonnet'), - v1beta1: (import 'v1beta1/main.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/csiDriver.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/csiDriver.libsonnet deleted file mode 100644 index 818aed5b2cf8..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/csiDriver.libsonnet +++ /dev/null @@ -1,77 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='csiDriver', url='', help='CSIDriver captures information about a Container Storage Interface (CSI) volume driver deployed on the cluster. Kubernetes attach detach controller uses this object to determine whether attach is required. Kubelet uses this object to determine whether pod information needs to be passed on mount. CSIDriver objects are non-namespaced.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Csidriver', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'storage.k8s.io/v1', - kind: 'CsiDriver', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='CSIDriverSpec is the specification of a CSIDriver.'), - spec: { - '#withAttachRequired':: d.fn(help='attachRequired indicates this CSI volume driver requires an attach operation (because it implements the CSI ControllerPublishVolume() method), and that the Kubernetes attach detach controller should call the attach volume interface which checks the volumeattachment status and waits until the volume is attached before proceeding to mounting. The CSI external-attacher coordinates with CSI volume driver and updates the volumeattachment status when the attach operation is complete. If the CSIDriverRegistry feature gate is enabled and the value is specified to false, the attach operation will be skipped. Otherwise the attach operation will be called.\n\nThis field is immutable.', args=[d.arg(name='attachRequired', type=d.T.boolean)]), - withAttachRequired(attachRequired): { spec+: { attachRequired: attachRequired } }, - '#withFsGroupPolicy':: d.fn(help='Defines if the underlying volume supports changing ownership and permission of the volume before being mounted. Refer to the specific FSGroupPolicy values for additional details. This field is alpha-level, and is only honored by servers that enable the CSIVolumeFSGroupPolicy feature gate.\n\nThis field is immutable.', args=[d.arg(name='fsGroupPolicy', type=d.T.string)]), - withFsGroupPolicy(fsGroupPolicy): { spec+: { fsGroupPolicy: fsGroupPolicy } }, - '#withPodInfoOnMount':: d.fn(help="If set to true, podInfoOnMount indicates this CSI volume driver requires additional pod information (like podName, podUID, etc.) during mount operations. If set to false, pod information will not be passed on mount. Default is false. The CSI driver specifies podInfoOnMount as part of driver deployment. If true, Kubelet will pass pod information as VolumeContext in the CSI NodePublishVolume() calls. The CSI driver is responsible for parsing and validating the information passed in as VolumeContext. The following VolumeConext will be passed if podInfoOnMount is set to true. This list might grow, but the prefix will be used. 'csi.storage.k8s.io/pod.name': pod.Name 'csi.storage.k8s.io/pod.namespace': pod.Namespace 'csi.storage.k8s.io/pod.uid': string(pod.UID) 'csi.storage.k8s.io/ephemeral': 'true' if the volume is an ephemeral inline volume\n defined by a CSIVolumeSource, otherwise 'false'\n\n'csi.storage.k8s.io/ephemeral' is a new feature in Kubernetes 1.16. It is only required for drivers which support both the 'Persistent' and 'Ephemeral' VolumeLifecycleMode. Other drivers can leave pod info disabled and/or ignore this field. As Kubernetes 1.15 doesn't support this field, drivers can only support one mode when deployed on such a cluster and the deployment determines which mode that is, for example via a command line parameter of the driver.\n\nThis field is immutable.", args=[d.arg(name='podInfoOnMount', type=d.T.boolean)]), - withPodInfoOnMount(podInfoOnMount): { spec+: { podInfoOnMount: podInfoOnMount } }, - '#withRequiresRepublish':: d.fn(help='RequiresRepublish indicates the CSI driver wants `NodePublishVolume` being periodically called to reflect any possible change in the mounted volume. This field defaults to false.\n\nNote: After a successful initial NodePublishVolume call, subsequent calls to NodePublishVolume should only update the contents of the volume. New mount points will not be seen by a running container.\n\nThis is a beta feature and only available when the CSIServiceAccountToken feature is enabled.', args=[d.arg(name='requiresRepublish', type=d.T.boolean)]), - withRequiresRepublish(requiresRepublish): { spec+: { requiresRepublish: requiresRepublish } }, - '#withStorageCapacity':: d.fn(help='If set to true, storageCapacity indicates that the CSI volume driver wants pod scheduling to consider the storage capacity that the driver deployment will report by creating CSIStorageCapacity objects with capacity information.\n\nThe check can be enabled immediately when deploying a driver. In that case, provisioning new volumes with late binding will pause until the driver deployment has published some suitable CSIStorageCapacity object.\n\nAlternatively, the driver can be deployed with the field unset or false and it can be flipped later when storage capacity information has been published.\n\nThis field is immutable.\n\nThis is a beta field and only available when the CSIStorageCapacity feature is enabled. The default is false.', args=[d.arg(name='storageCapacity', type=d.T.boolean)]), - withStorageCapacity(storageCapacity): { spec+: { storageCapacity: storageCapacity } }, - '#withTokenRequests':: d.fn(help="TokenRequests indicates the CSI driver needs pods' service account tokens it is mounting volume for to do necessary authentication. Kubelet will pass the tokens in VolumeContext in the CSI NodePublishVolume calls. The CSI driver should parse and validate the following VolumeContext: 'csi.storage.k8s.io/serviceAccount.tokens': {\n '': {\n 'token': ,\n 'expirationTimestamp': ,\n },\n ...\n}\n\nNote: Audience in each TokenRequest should be different and at most one token is empty string. To receive a new token after expiry, RequiresRepublish can be used to trigger NodePublishVolume periodically.\n\nThis is a beta feature and only available when the CSIServiceAccountToken feature is enabled.", args=[d.arg(name='tokenRequests', type=d.T.array)]), - withTokenRequests(tokenRequests): { spec+: { tokenRequests: if std.isArray(v=tokenRequests) then tokenRequests else [tokenRequests] } }, - '#withTokenRequestsMixin':: d.fn(help="TokenRequests indicates the CSI driver needs pods' service account tokens it is mounting volume for to do necessary authentication. Kubelet will pass the tokens in VolumeContext in the CSI NodePublishVolume calls. The CSI driver should parse and validate the following VolumeContext: 'csi.storage.k8s.io/serviceAccount.tokens': {\n '': {\n 'token': ,\n 'expirationTimestamp': ,\n },\n ...\n}\n\nNote: Audience in each TokenRequest should be different and at most one token is empty string. To receive a new token after expiry, RequiresRepublish can be used to trigger NodePublishVolume periodically.\n\nThis is a beta feature and only available when the CSIServiceAccountToken feature is enabled.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tokenRequests', type=d.T.array)]), - withTokenRequestsMixin(tokenRequests): { spec+: { tokenRequests+: if std.isArray(v=tokenRequests) then tokenRequests else [tokenRequests] } }, - '#withVolumeLifecycleModes':: d.fn(help='volumeLifecycleModes defines what kind of volumes this CSI volume driver supports. The default if the list is empty is "Persistent", which is the usage defined by the CSI specification and implemented in Kubernetes via the usual PV/PVC mechanism. The other mode is "Ephemeral". In this mode, volumes are defined inline inside the pod spec with CSIVolumeSource and their lifecycle is tied to the lifecycle of that pod. A driver has to be aware of this because it is only going to get a NodePublishVolume call for such a volume. For more information about implementing this mode, see https://kubernetes-csi.github.io/docs/ephemeral-local-volumes.html A driver can support one or more of these modes and more modes may be added in the future. This field is beta.\n\nThis field is immutable.', args=[d.arg(name='volumeLifecycleModes', type=d.T.array)]), - withVolumeLifecycleModes(volumeLifecycleModes): { spec+: { volumeLifecycleModes: if std.isArray(v=volumeLifecycleModes) then volumeLifecycleModes else [volumeLifecycleModes] } }, - '#withVolumeLifecycleModesMixin':: d.fn(help='volumeLifecycleModes defines what kind of volumes this CSI volume driver supports. The default if the list is empty is "Persistent", which is the usage defined by the CSI specification and implemented in Kubernetes via the usual PV/PVC mechanism. The other mode is "Ephemeral". In this mode, volumes are defined inline inside the pod spec with CSIVolumeSource and their lifecycle is tied to the lifecycle of that pod. A driver has to be aware of this because it is only going to get a NodePublishVolume call for such a volume. For more information about implementing this mode, see https://kubernetes-csi.github.io/docs/ephemeral-local-volumes.html A driver can support one or more of these modes and more modes may be added in the future. This field is beta.\n\nThis field is immutable.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumeLifecycleModes', type=d.T.array)]), - withVolumeLifecycleModesMixin(volumeLifecycleModes): { spec+: { volumeLifecycleModes+: if std.isArray(v=volumeLifecycleModes) then volumeLifecycleModes else [volumeLifecycleModes] } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/csiDriverSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/csiDriverSpec.libsonnet deleted file mode 100644 index a810372461a7..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/csiDriverSpec.libsonnet +++ /dev/null @@ -1,24 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='csiDriverSpec', url='', help='CSIDriverSpec is the specification of a CSIDriver.'), - '#withAttachRequired':: d.fn(help='attachRequired indicates this CSI volume driver requires an attach operation (because it implements the CSI ControllerPublishVolume() method), and that the Kubernetes attach detach controller should call the attach volume interface which checks the volumeattachment status and waits until the volume is attached before proceeding to mounting. The CSI external-attacher coordinates with CSI volume driver and updates the volumeattachment status when the attach operation is complete. If the CSIDriverRegistry feature gate is enabled and the value is specified to false, the attach operation will be skipped. Otherwise the attach operation will be called.\n\nThis field is immutable.', args=[d.arg(name='attachRequired', type=d.T.boolean)]), - withAttachRequired(attachRequired): { attachRequired: attachRequired }, - '#withFsGroupPolicy':: d.fn(help='Defines if the underlying volume supports changing ownership and permission of the volume before being mounted. Refer to the specific FSGroupPolicy values for additional details. This field is alpha-level, and is only honored by servers that enable the CSIVolumeFSGroupPolicy feature gate.\n\nThis field is immutable.', args=[d.arg(name='fsGroupPolicy', type=d.T.string)]), - withFsGroupPolicy(fsGroupPolicy): { fsGroupPolicy: fsGroupPolicy }, - '#withPodInfoOnMount':: d.fn(help="If set to true, podInfoOnMount indicates this CSI volume driver requires additional pod information (like podName, podUID, etc.) during mount operations. If set to false, pod information will not be passed on mount. Default is false. The CSI driver specifies podInfoOnMount as part of driver deployment. If true, Kubelet will pass pod information as VolumeContext in the CSI NodePublishVolume() calls. The CSI driver is responsible for parsing and validating the information passed in as VolumeContext. The following VolumeConext will be passed if podInfoOnMount is set to true. This list might grow, but the prefix will be used. 'csi.storage.k8s.io/pod.name': pod.Name 'csi.storage.k8s.io/pod.namespace': pod.Namespace 'csi.storage.k8s.io/pod.uid': string(pod.UID) 'csi.storage.k8s.io/ephemeral': 'true' if the volume is an ephemeral inline volume\n defined by a CSIVolumeSource, otherwise 'false'\n\n'csi.storage.k8s.io/ephemeral' is a new feature in Kubernetes 1.16. It is only required for drivers which support both the 'Persistent' and 'Ephemeral' VolumeLifecycleMode. Other drivers can leave pod info disabled and/or ignore this field. As Kubernetes 1.15 doesn't support this field, drivers can only support one mode when deployed on such a cluster and the deployment determines which mode that is, for example via a command line parameter of the driver.\n\nThis field is immutable.", args=[d.arg(name='podInfoOnMount', type=d.T.boolean)]), - withPodInfoOnMount(podInfoOnMount): { podInfoOnMount: podInfoOnMount }, - '#withRequiresRepublish':: d.fn(help='RequiresRepublish indicates the CSI driver wants `NodePublishVolume` being periodically called to reflect any possible change in the mounted volume. This field defaults to false.\n\nNote: After a successful initial NodePublishVolume call, subsequent calls to NodePublishVolume should only update the contents of the volume. New mount points will not be seen by a running container.\n\nThis is a beta feature and only available when the CSIServiceAccountToken feature is enabled.', args=[d.arg(name='requiresRepublish', type=d.T.boolean)]), - withRequiresRepublish(requiresRepublish): { requiresRepublish: requiresRepublish }, - '#withStorageCapacity':: d.fn(help='If set to true, storageCapacity indicates that the CSI volume driver wants pod scheduling to consider the storage capacity that the driver deployment will report by creating CSIStorageCapacity objects with capacity information.\n\nThe check can be enabled immediately when deploying a driver. In that case, provisioning new volumes with late binding will pause until the driver deployment has published some suitable CSIStorageCapacity object.\n\nAlternatively, the driver can be deployed with the field unset or false and it can be flipped later when storage capacity information has been published.\n\nThis field is immutable.\n\nThis is a beta field and only available when the CSIStorageCapacity feature is enabled. The default is false.', args=[d.arg(name='storageCapacity', type=d.T.boolean)]), - withStorageCapacity(storageCapacity): { storageCapacity: storageCapacity }, - '#withTokenRequests':: d.fn(help="TokenRequests indicates the CSI driver needs pods' service account tokens it is mounting volume for to do necessary authentication. Kubelet will pass the tokens in VolumeContext in the CSI NodePublishVolume calls. The CSI driver should parse and validate the following VolumeContext: 'csi.storage.k8s.io/serviceAccount.tokens': {\n '': {\n 'token': ,\n 'expirationTimestamp': ,\n },\n ...\n}\n\nNote: Audience in each TokenRequest should be different and at most one token is empty string. To receive a new token after expiry, RequiresRepublish can be used to trigger NodePublishVolume periodically.\n\nThis is a beta feature and only available when the CSIServiceAccountToken feature is enabled.", args=[d.arg(name='tokenRequests', type=d.T.array)]), - withTokenRequests(tokenRequests): { tokenRequests: if std.isArray(v=tokenRequests) then tokenRequests else [tokenRequests] }, - '#withTokenRequestsMixin':: d.fn(help="TokenRequests indicates the CSI driver needs pods' service account tokens it is mounting volume for to do necessary authentication. Kubelet will pass the tokens in VolumeContext in the CSI NodePublishVolume calls. The CSI driver should parse and validate the following VolumeContext: 'csi.storage.k8s.io/serviceAccount.tokens': {\n '': {\n 'token': ,\n 'expirationTimestamp': ,\n },\n ...\n}\n\nNote: Audience in each TokenRequest should be different and at most one token is empty string. To receive a new token after expiry, RequiresRepublish can be used to trigger NodePublishVolume periodically.\n\nThis is a beta feature and only available when the CSIServiceAccountToken feature is enabled.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tokenRequests', type=d.T.array)]), - withTokenRequestsMixin(tokenRequests): { tokenRequests+: if std.isArray(v=tokenRequests) then tokenRequests else [tokenRequests] }, - '#withVolumeLifecycleModes':: d.fn(help='volumeLifecycleModes defines what kind of volumes this CSI volume driver supports. The default if the list is empty is "Persistent", which is the usage defined by the CSI specification and implemented in Kubernetes via the usual PV/PVC mechanism. The other mode is "Ephemeral". In this mode, volumes are defined inline inside the pod spec with CSIVolumeSource and their lifecycle is tied to the lifecycle of that pod. A driver has to be aware of this because it is only going to get a NodePublishVolume call for such a volume. For more information about implementing this mode, see https://kubernetes-csi.github.io/docs/ephemeral-local-volumes.html A driver can support one or more of these modes and more modes may be added in the future. This field is beta.\n\nThis field is immutable.', args=[d.arg(name='volumeLifecycleModes', type=d.T.array)]), - withVolumeLifecycleModes(volumeLifecycleModes): { volumeLifecycleModes: if std.isArray(v=volumeLifecycleModes) then volumeLifecycleModes else [volumeLifecycleModes] }, - '#withVolumeLifecycleModesMixin':: d.fn(help='volumeLifecycleModes defines what kind of volumes this CSI volume driver supports. The default if the list is empty is "Persistent", which is the usage defined by the CSI specification and implemented in Kubernetes via the usual PV/PVC mechanism. The other mode is "Ephemeral". In this mode, volumes are defined inline inside the pod spec with CSIVolumeSource and their lifecycle is tied to the lifecycle of that pod. A driver has to be aware of this because it is only going to get a NodePublishVolume call for such a volume. For more information about implementing this mode, see https://kubernetes-csi.github.io/docs/ephemeral-local-volumes.html A driver can support one or more of these modes and more modes may be added in the future. This field is beta.\n\nThis field is immutable.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumeLifecycleModes', type=d.T.array)]), - withVolumeLifecycleModesMixin(volumeLifecycleModes): { volumeLifecycleModes+: if std.isArray(v=volumeLifecycleModes) then volumeLifecycleModes else [volumeLifecycleModes] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/csiNode.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/csiNode.libsonnet deleted file mode 100644 index d2e440676533..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/csiNode.libsonnet +++ /dev/null @@ -1,63 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='csiNode', url='', help="CSINode holds information about all CSI drivers installed on a node. CSI drivers do not need to create the CSINode object directly. As long as they use the node-driver-registrar sidecar container, the kubelet will automatically populate the CSINode object for the CSI driver as part of kubelet plugin registration. CSINode has the same name as a node. If the object is missing, it means either there are no CSI Drivers available on the node, or the Kubelet version is low enough that it doesn't create this object. CSINode has an OwnerReference that points to the corresponding node object."), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Csinode', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'storage.k8s.io/v1', - kind: 'CsiNode', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='CSINodeSpec holds information about the specification of all CSI drivers installed on a node'), - spec: { - '#withDrivers':: d.fn(help='drivers is a list of information of all CSI Drivers existing on a node. If all drivers in the list are uninstalled, this can become empty.', args=[d.arg(name='drivers', type=d.T.array)]), - withDrivers(drivers): { spec+: { drivers: if std.isArray(v=drivers) then drivers else [drivers] } }, - '#withDriversMixin':: d.fn(help='drivers is a list of information of all CSI Drivers existing on a node. If all drivers in the list are uninstalled, this can become empty.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='drivers', type=d.T.array)]), - withDriversMixin(drivers): { spec+: { drivers+: if std.isArray(v=drivers) then drivers else [drivers] } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/csiNodeDriver.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/csiNodeDriver.libsonnet deleted file mode 100644 index 3acd27eaba44..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/csiNodeDriver.libsonnet +++ /dev/null @@ -1,19 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='csiNodeDriver', url='', help='CSINodeDriver holds information about the specification of one CSI driver installed on a node'), - '#allocatable':: d.obj(help='VolumeNodeResources is a set of resource limits for scheduling of volumes.'), - allocatable: { - '#withCount':: d.fn(help='Maximum number of unique volumes managed by the CSI driver that can be used on a node. A volume that is both attached and mounted on a node is considered to be used once, not twice. The same rule applies for a unique volume that is shared among multiple pods on the same node. If this field is not specified, then the supported number of volumes on this node is unbounded.', args=[d.arg(name='count', type=d.T.integer)]), - withCount(count): { allocatable+: { count: count } }, - }, - '#withName':: d.fn(help='This is the name of the CSI driver that this object refers to. This MUST be the same name returned by the CSI GetPluginName() call for that driver.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withNodeID':: d.fn(help='nodeID of the node from the driver point of view. This field enables Kubernetes to communicate with storage systems that do not share the same nomenclature for nodes. For example, Kubernetes may refer to a given node as "node1", but the storage system may refer to the same node as "nodeA". When Kubernetes issues a command to the storage system to attach a volume to a specific node, it can use this field to refer to the node name using the ID that the storage system will understand, e.g. "nodeA" instead of "node1". This field is required.', args=[d.arg(name='nodeID', type=d.T.string)]), - withNodeID(nodeID): { nodeID: nodeID }, - '#withTopologyKeys':: d.fn(help='topologyKeys is the list of keys supported by the driver. When a driver is initialized on a cluster, it provides a set of topology keys that it understands (e.g. "company.com/zone", "company.com/region"). When a driver is initialized on a node, it provides the same topology keys along with values. Kubelet will expose these topology keys as labels on its own node object. When Kubernetes does topology aware provisioning, it can use this list to determine which labels it should retrieve from the node object and pass back to the driver. It is possible for different nodes to use different topology keys. This can be empty if driver does not support topology.', args=[d.arg(name='topologyKeys', type=d.T.array)]), - withTopologyKeys(topologyKeys): { topologyKeys: if std.isArray(v=topologyKeys) then topologyKeys else [topologyKeys] }, - '#withTopologyKeysMixin':: d.fn(help='topologyKeys is the list of keys supported by the driver. When a driver is initialized on a cluster, it provides a set of topology keys that it understands (e.g. "company.com/zone", "company.com/region"). When a driver is initialized on a node, it provides the same topology keys along with values. Kubelet will expose these topology keys as labels on its own node object. When Kubernetes does topology aware provisioning, it can use this list to determine which labels it should retrieve from the node object and pass back to the driver. It is possible for different nodes to use different topology keys. This can be empty if driver does not support topology.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='topologyKeys', type=d.T.array)]), - withTopologyKeysMixin(topologyKeys): { topologyKeys+: if std.isArray(v=topologyKeys) then topologyKeys else [topologyKeys] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/csiNodeSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/csiNodeSpec.libsonnet deleted file mode 100644 index c38b1d791696..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/csiNodeSpec.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='csiNodeSpec', url='', help='CSINodeSpec holds information about the specification of all CSI drivers installed on a node'), - '#withDrivers':: d.fn(help='drivers is a list of information of all CSI Drivers existing on a node. If all drivers in the list are uninstalled, this can become empty.', args=[d.arg(name='drivers', type=d.T.array)]), - withDrivers(drivers): { drivers: if std.isArray(v=drivers) then drivers else [drivers] }, - '#withDriversMixin':: d.fn(help='drivers is a list of information of all CSI Drivers existing on a node. If all drivers in the list are uninstalled, this can become empty.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='drivers', type=d.T.array)]), - withDriversMixin(drivers): { drivers+: if std.isArray(v=drivers) then drivers else [drivers] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/main.libsonnet deleted file mode 100644 index 86d2b1336c57..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/main.libsonnet +++ /dev/null @@ -1,17 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1', url='', help=''), - csiDriver: (import 'csiDriver.libsonnet'), - csiDriverSpec: (import 'csiDriverSpec.libsonnet'), - csiNode: (import 'csiNode.libsonnet'), - csiNodeDriver: (import 'csiNodeDriver.libsonnet'), - csiNodeSpec: (import 'csiNodeSpec.libsonnet'), - storageClass: (import 'storageClass.libsonnet'), - tokenRequest: (import 'tokenRequest.libsonnet'), - volumeAttachment: (import 'volumeAttachment.libsonnet'), - volumeAttachmentSource: (import 'volumeAttachmentSource.libsonnet'), - volumeAttachmentSpec: (import 'volumeAttachmentSpec.libsonnet'), - volumeAttachmentStatus: (import 'volumeAttachmentStatus.libsonnet'), - volumeError: (import 'volumeError.libsonnet'), - volumeNodeResources: (import 'volumeNodeResources.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/storageClass.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/storageClass.libsonnet deleted file mode 100644 index 4a5e651ac449..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/storageClass.libsonnet +++ /dev/null @@ -1,76 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='storageClass', url='', help='StorageClass describes the parameters for a class of storage for which PersistentVolumes can be dynamically provisioned.\n\nStorageClasses are non-namespaced; the name of the storage class according to etcd is in ObjectMeta.Name.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Storageclass', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'storage.k8s.io/v1', - kind: 'StorageClass', - } + self.metadata.withName(name=name), - '#withAllowVolumeExpansion':: d.fn(help='AllowVolumeExpansion shows whether the storage class allow volume expand', args=[d.arg(name='allowVolumeExpansion', type=d.T.boolean)]), - withAllowVolumeExpansion(allowVolumeExpansion): { allowVolumeExpansion: allowVolumeExpansion }, - '#withAllowedTopologies':: d.fn(help='Restrict the node topologies where volumes can be dynamically provisioned. Each volume plugin defines its own supported topology specifications. An empty TopologySelectorTerm list means there is no topology restriction. This field is only honored by servers that enable the VolumeScheduling feature.', args=[d.arg(name='allowedTopologies', type=d.T.array)]), - withAllowedTopologies(allowedTopologies): { allowedTopologies: if std.isArray(v=allowedTopologies) then allowedTopologies else [allowedTopologies] }, - '#withAllowedTopologiesMixin':: d.fn(help='Restrict the node topologies where volumes can be dynamically provisioned. Each volume plugin defines its own supported topology specifications. An empty TopologySelectorTerm list means there is no topology restriction. This field is only honored by servers that enable the VolumeScheduling feature.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='allowedTopologies', type=d.T.array)]), - withAllowedTopologiesMixin(allowedTopologies): { allowedTopologies+: if std.isArray(v=allowedTopologies) then allowedTopologies else [allowedTopologies] }, - '#withMountOptions':: d.fn(help='Dynamically provisioned PersistentVolumes of this storage class are created with these mountOptions, e.g. ["ro", "soft"]. Not validated - mount of the PVs will simply fail if one is invalid.', args=[d.arg(name='mountOptions', type=d.T.array)]), - withMountOptions(mountOptions): { mountOptions: if std.isArray(v=mountOptions) then mountOptions else [mountOptions] }, - '#withMountOptionsMixin':: d.fn(help='Dynamically provisioned PersistentVolumes of this storage class are created with these mountOptions, e.g. ["ro", "soft"]. Not validated - mount of the PVs will simply fail if one is invalid.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='mountOptions', type=d.T.array)]), - withMountOptionsMixin(mountOptions): { mountOptions+: if std.isArray(v=mountOptions) then mountOptions else [mountOptions] }, - '#withParameters':: d.fn(help='Parameters holds the parameters for the provisioner that should create volumes of this storage class.', args=[d.arg(name='parameters', type=d.T.object)]), - withParameters(parameters): { parameters: parameters }, - '#withParametersMixin':: d.fn(help='Parameters holds the parameters for the provisioner that should create volumes of this storage class.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='parameters', type=d.T.object)]), - withParametersMixin(parameters): { parameters+: parameters }, - '#withProvisioner':: d.fn(help='Provisioner indicates the type of the provisioner.', args=[d.arg(name='provisioner', type=d.T.string)]), - withProvisioner(provisioner): { provisioner: provisioner }, - '#withReclaimPolicy':: d.fn(help='Dynamically provisioned PersistentVolumes of this storage class are created with this reclaimPolicy. Defaults to Delete.', args=[d.arg(name='reclaimPolicy', type=d.T.string)]), - withReclaimPolicy(reclaimPolicy): { reclaimPolicy: reclaimPolicy }, - '#withVolumeBindingMode':: d.fn(help='VolumeBindingMode indicates how PersistentVolumeClaims should be provisioned and bound. When unset, VolumeBindingImmediate is used. This field is only honored by servers that enable the VolumeScheduling feature.', args=[d.arg(name='volumeBindingMode', type=d.T.string)]), - withVolumeBindingMode(volumeBindingMode): { volumeBindingMode: volumeBindingMode }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/tokenRequest.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/tokenRequest.libsonnet deleted file mode 100644 index c4d8996dc0d9..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/tokenRequest.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='tokenRequest', url='', help='TokenRequest contains parameters of a service account token.'), - '#withAudience':: d.fn(help='Audience is the intended audience of the token in "TokenRequestSpec". It will default to the audiences of kube apiserver.', args=[d.arg(name='audience', type=d.T.string)]), - withAudience(audience): { audience: audience }, - '#withExpirationSeconds':: d.fn(help='ExpirationSeconds is the duration of validity of the token in "TokenRequestSpec". It has the same default value of "ExpirationSeconds" in "TokenRequestSpec".', args=[d.arg(name='expirationSeconds', type=d.T.integer)]), - withExpirationSeconds(expirationSeconds): { expirationSeconds: expirationSeconds }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/volumeAttachment.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/volumeAttachment.libsonnet deleted file mode 100644 index 6aff6fdecf06..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/volumeAttachment.libsonnet +++ /dev/null @@ -1,479 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='volumeAttachment', url='', help='VolumeAttachment captures the intent to attach or detach the specified volume to/from the specified node.\n\nVolumeAttachment objects are non-namespaced.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Volumeattachment', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'storage.k8s.io/v1', - kind: 'VolumeAttachment', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='VolumeAttachmentSpec is the specification of a VolumeAttachment request.'), - spec: { - '#source':: d.obj(help='VolumeAttachmentSource represents a volume that should be attached. Right now only PersistenVolumes can be attached via external attacher, in future we may allow also inline volumes in pods. Exactly one member can be set.'), - source: { - '#inlineVolumeSpec':: d.obj(help='PersistentVolumeSpec is the specification of a persistent volume.'), - inlineVolumeSpec: { - '#awsElasticBlockStore':: d.obj(help='Represents a Persistent Disk resource in AWS.\n\nAn AWS EBS disk must exist before mounting to a container. The disk must also be in the same AWS zone as the kubelet. An AWS EBS disk can only be mounted as read/write once. AWS EBS volumes support ownership management and SELinux relabeling.'), - awsElasticBlockStore: { - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { source+: { inlineVolumeSpec+: { awsElasticBlockStore+: { fsType: fsType } } } } }, - '#withPartition':: d.fn(help='The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).', args=[d.arg(name='partition', type=d.T.integer)]), - withPartition(partition): { spec+: { source+: { inlineVolumeSpec+: { awsElasticBlockStore+: { partition: partition } } } } }, - '#withReadOnly':: d.fn(help='Specify "true" to force and set the ReadOnly property in VolumeMounts to "true". If omitted, the default is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { source+: { inlineVolumeSpec+: { awsElasticBlockStore+: { readOnly: readOnly } } } } }, - '#withVolumeID':: d.fn(help='Unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore', args=[d.arg(name='volumeID', type=d.T.string)]), - withVolumeID(volumeID): { spec+: { source+: { inlineVolumeSpec+: { awsElasticBlockStore+: { volumeID: volumeID } } } } }, - }, - '#azureDisk':: d.obj(help='AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.'), - azureDisk: { - '#withCachingMode':: d.fn(help='Host Caching mode: None, Read Only, Read Write.', args=[d.arg(name='cachingMode', type=d.T.string)]), - withCachingMode(cachingMode): { spec+: { source+: { inlineVolumeSpec+: { azureDisk+: { cachingMode: cachingMode } } } } }, - '#withDiskName':: d.fn(help='The Name of the data disk in the blob storage', args=[d.arg(name='diskName', type=d.T.string)]), - withDiskName(diskName): { spec+: { source+: { inlineVolumeSpec+: { azureDisk+: { diskName: diskName } } } } }, - '#withDiskURI':: d.fn(help='The URI the data disk in the blob storage', args=[d.arg(name='diskURI', type=d.T.string)]), - withDiskURI(diskURI): { spec+: { source+: { inlineVolumeSpec+: { azureDisk+: { diskURI: diskURI } } } } }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { source+: { inlineVolumeSpec+: { azureDisk+: { fsType: fsType } } } } }, - '#withKind':: d.fn(help='Expected values Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { source+: { inlineVolumeSpec+: { azureDisk+: { kind: kind } } } } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { source+: { inlineVolumeSpec+: { azureDisk+: { readOnly: readOnly } } } } }, - }, - '#azureFile':: d.obj(help='AzureFile represents an Azure File Service mount on the host and bind mount to the pod.'), - azureFile: { - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { source+: { inlineVolumeSpec+: { azureFile+: { readOnly: readOnly } } } } }, - '#withSecretName':: d.fn(help='the name of secret that contains Azure Storage Account Name and Key', args=[d.arg(name='secretName', type=d.T.string)]), - withSecretName(secretName): { spec+: { source+: { inlineVolumeSpec+: { azureFile+: { secretName: secretName } } } } }, - '#withSecretNamespace':: d.fn(help='the namespace of the secret that contains Azure Storage Account Name and Key default is the same as the Pod', args=[d.arg(name='secretNamespace', type=d.T.string)]), - withSecretNamespace(secretNamespace): { spec+: { source+: { inlineVolumeSpec+: { azureFile+: { secretNamespace: secretNamespace } } } } }, - '#withShareName':: d.fn(help='Share Name', args=[d.arg(name='shareName', type=d.T.string)]), - withShareName(shareName): { spec+: { source+: { inlineVolumeSpec+: { azureFile+: { shareName: shareName } } } } }, - }, - '#cephfs':: d.obj(help='Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling.'), - cephfs: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { source+: { inlineVolumeSpec+: { cephfs+: { secretRef+: { name: name } } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { source+: { inlineVolumeSpec+: { cephfs+: { secretRef+: { namespace: namespace } } } } } }, - }, - '#withMonitors':: d.fn(help='Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitors(monitors): { spec+: { source+: { inlineVolumeSpec+: { cephfs+: { monitors: if std.isArray(v=monitors) then monitors else [monitors] } } } } }, - '#withMonitorsMixin':: d.fn(help='Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitorsMixin(monitors): { spec+: { source+: { inlineVolumeSpec+: { cephfs+: { monitors+: if std.isArray(v=monitors) then monitors else [monitors] } } } } }, - '#withPath':: d.fn(help='Optional: Used as the mounted root, rather than the full Ceph tree, default is /', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { spec+: { source+: { inlineVolumeSpec+: { cephfs+: { path: path } } } } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { source+: { inlineVolumeSpec+: { cephfs+: { readOnly: readOnly } } } } }, - '#withSecretFile':: d.fn(help='Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='secretFile', type=d.T.string)]), - withSecretFile(secretFile): { spec+: { source+: { inlineVolumeSpec+: { cephfs+: { secretFile: secretFile } } } } }, - '#withUser':: d.fn(help='Optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { source+: { inlineVolumeSpec+: { cephfs+: { user: user } } } } }, - }, - '#cinder':: d.obj(help='Represents a cinder volume resource in Openstack. A Cinder volume must exist before mounting to a container. The volume must also be in the same region as the kubelet. Cinder volumes support ownership management and SELinux relabeling.'), - cinder: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { source+: { inlineVolumeSpec+: { cinder+: { secretRef+: { name: name } } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { source+: { inlineVolumeSpec+: { cinder+: { secretRef+: { namespace: namespace } } } } } }, - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { source+: { inlineVolumeSpec+: { cinder+: { fsType: fsType } } } } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { source+: { inlineVolumeSpec+: { cinder+: { readOnly: readOnly } } } } }, - '#withVolumeID':: d.fn(help='volume id used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md', args=[d.arg(name='volumeID', type=d.T.string)]), - withVolumeID(volumeID): { spec+: { source+: { inlineVolumeSpec+: { cinder+: { volumeID: volumeID } } } } }, - }, - '#claimRef':: d.obj(help='ObjectReference contains enough information to let you inspect or modify the referred object.'), - claimRef: { - '#withApiVersion':: d.fn(help='API version of the referent.', args=[d.arg(name='apiVersion', type=d.T.string)]), - withApiVersion(apiVersion): { spec+: { source+: { inlineVolumeSpec+: { claimRef+: { apiVersion: apiVersion } } } } }, - '#withFieldPath':: d.fn(help='If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { spec+: { source+: { inlineVolumeSpec+: { claimRef+: { fieldPath: fieldPath } } } } }, - '#withKind':: d.fn(help='Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { source+: { inlineVolumeSpec+: { claimRef+: { kind: kind } } } } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { source+: { inlineVolumeSpec+: { claimRef+: { name: name } } } } }, - '#withNamespace':: d.fn(help='Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { source+: { inlineVolumeSpec+: { claimRef+: { namespace: namespace } } } } }, - '#withResourceVersion':: d.fn(help='Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { spec+: { source+: { inlineVolumeSpec+: { claimRef+: { resourceVersion: resourceVersion } } } } }, - '#withUid':: d.fn(help='UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { source+: { inlineVolumeSpec+: { claimRef+: { uid: uid } } } } }, - }, - '#csi':: d.obj(help='Represents storage that is managed by an external CSI volume driver (Beta feature)'), - csi: { - '#controllerExpandSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - controllerExpandSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { source+: { inlineVolumeSpec+: { csi+: { controllerExpandSecretRef+: { name: name } } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { source+: { inlineVolumeSpec+: { csi+: { controllerExpandSecretRef+: { namespace: namespace } } } } } }, - }, - '#controllerPublishSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - controllerPublishSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { source+: { inlineVolumeSpec+: { csi+: { controllerPublishSecretRef+: { name: name } } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { source+: { inlineVolumeSpec+: { csi+: { controllerPublishSecretRef+: { namespace: namespace } } } } } }, - }, - '#nodePublishSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - nodePublishSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { source+: { inlineVolumeSpec+: { csi+: { nodePublishSecretRef+: { name: name } } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { source+: { inlineVolumeSpec+: { csi+: { nodePublishSecretRef+: { namespace: namespace } } } } } }, - }, - '#nodeStageSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - nodeStageSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { source+: { inlineVolumeSpec+: { csi+: { nodeStageSecretRef+: { name: name } } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { source+: { inlineVolumeSpec+: { csi+: { nodeStageSecretRef+: { namespace: namespace } } } } } }, - }, - '#withDriver':: d.fn(help='Driver is the name of the driver to use for this volume. Required.', args=[d.arg(name='driver', type=d.T.string)]), - withDriver(driver): { spec+: { source+: { inlineVolumeSpec+: { csi+: { driver: driver } } } } }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs".', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { source+: { inlineVolumeSpec+: { csi+: { fsType: fsType } } } } }, - '#withReadOnly':: d.fn(help='Optional: The value to pass to ControllerPublishVolumeRequest. Defaults to false (read/write).', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { source+: { inlineVolumeSpec+: { csi+: { readOnly: readOnly } } } } }, - '#withVolumeAttributes':: d.fn(help='Attributes of the volume to publish.', args=[d.arg(name='volumeAttributes', type=d.T.object)]), - withVolumeAttributes(volumeAttributes): { spec+: { source+: { inlineVolumeSpec+: { csi+: { volumeAttributes: volumeAttributes } } } } }, - '#withVolumeAttributesMixin':: d.fn(help='Attributes of the volume to publish.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumeAttributes', type=d.T.object)]), - withVolumeAttributesMixin(volumeAttributes): { spec+: { source+: { inlineVolumeSpec+: { csi+: { volumeAttributes+: volumeAttributes } } } } }, - '#withVolumeHandle':: d.fn(help='VolumeHandle is the unique volume name returned by the CSI volume plugin’s CreateVolume to refer to the volume on all subsequent calls. Required.', args=[d.arg(name='volumeHandle', type=d.T.string)]), - withVolumeHandle(volumeHandle): { spec+: { source+: { inlineVolumeSpec+: { csi+: { volumeHandle: volumeHandle } } } } }, - }, - '#fc':: d.obj(help='Represents a Fibre Channel volume. Fibre Channel volumes can only be mounted as read/write once. Fibre Channel volumes support ownership management and SELinux relabeling.'), - fc: { - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { source+: { inlineVolumeSpec+: { fc+: { fsType: fsType } } } } }, - '#withLun':: d.fn(help='Optional: FC target lun number', args=[d.arg(name='lun', type=d.T.integer)]), - withLun(lun): { spec+: { source+: { inlineVolumeSpec+: { fc+: { lun: lun } } } } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { source+: { inlineVolumeSpec+: { fc+: { readOnly: readOnly } } } } }, - '#withTargetWWNs':: d.fn(help='Optional: FC target worldwide names (WWNs)', args=[d.arg(name='targetWWNs', type=d.T.array)]), - withTargetWWNs(targetWWNs): { spec+: { source+: { inlineVolumeSpec+: { fc+: { targetWWNs: if std.isArray(v=targetWWNs) then targetWWNs else [targetWWNs] } } } } }, - '#withTargetWWNsMixin':: d.fn(help='Optional: FC target worldwide names (WWNs)\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='targetWWNs', type=d.T.array)]), - withTargetWWNsMixin(targetWWNs): { spec+: { source+: { inlineVolumeSpec+: { fc+: { targetWWNs+: if std.isArray(v=targetWWNs) then targetWWNs else [targetWWNs] } } } } }, - '#withWwids':: d.fn(help='Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.', args=[d.arg(name='wwids', type=d.T.array)]), - withWwids(wwids): { spec+: { source+: { inlineVolumeSpec+: { fc+: { wwids: if std.isArray(v=wwids) then wwids else [wwids] } } } } }, - '#withWwidsMixin':: d.fn(help='Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='wwids', type=d.T.array)]), - withWwidsMixin(wwids): { spec+: { source+: { inlineVolumeSpec+: { fc+: { wwids+: if std.isArray(v=wwids) then wwids else [wwids] } } } } }, - }, - '#flexVolume':: d.obj(help='FlexPersistentVolumeSource represents a generic persistent volume resource that is provisioned/attached using an exec based plugin.'), - flexVolume: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { source+: { inlineVolumeSpec+: { flexVolume+: { secretRef+: { name: name } } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { source+: { inlineVolumeSpec+: { flexVolume+: { secretRef+: { namespace: namespace } } } } } }, - }, - '#withDriver':: d.fn(help='Driver is the name of the driver to use for this volume.', args=[d.arg(name='driver', type=d.T.string)]), - withDriver(driver): { spec+: { source+: { inlineVolumeSpec+: { flexVolume+: { driver: driver } } } } }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { source+: { inlineVolumeSpec+: { flexVolume+: { fsType: fsType } } } } }, - '#withOptions':: d.fn(help='Optional: Extra command options if any.', args=[d.arg(name='options', type=d.T.object)]), - withOptions(options): { spec+: { source+: { inlineVolumeSpec+: { flexVolume+: { options: options } } } } }, - '#withOptionsMixin':: d.fn(help='Optional: Extra command options if any.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.object)]), - withOptionsMixin(options): { spec+: { source+: { inlineVolumeSpec+: { flexVolume+: { options+: options } } } } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { source+: { inlineVolumeSpec+: { flexVolume+: { readOnly: readOnly } } } } }, - }, - '#flocker':: d.obj(help='Represents a Flocker volume mounted by the Flocker agent. One and only one of datasetName and datasetUUID should be set. Flocker volumes do not support ownership management or SELinux relabeling.'), - flocker: { - '#withDatasetName':: d.fn(help='Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated', args=[d.arg(name='datasetName', type=d.T.string)]), - withDatasetName(datasetName): { spec+: { source+: { inlineVolumeSpec+: { flocker+: { datasetName: datasetName } } } } }, - '#withDatasetUUID':: d.fn(help='UUID of the dataset. This is unique identifier of a Flocker dataset', args=[d.arg(name='datasetUUID', type=d.T.string)]), - withDatasetUUID(datasetUUID): { spec+: { source+: { inlineVolumeSpec+: { flocker+: { datasetUUID: datasetUUID } } } } }, - }, - '#gcePersistentDisk':: d.obj(help='Represents a Persistent Disk resource in Google Compute Engine.\n\nA GCE PD must exist before mounting to a container. The disk must also be in the same GCE project and zone as the kubelet. A GCE PD can only be mounted as read/write once or read-only many times. GCE PDs support ownership management and SELinux relabeling.'), - gcePersistentDisk: { - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { source+: { inlineVolumeSpec+: { gcePersistentDisk+: { fsType: fsType } } } } }, - '#withPartition':: d.fn(help='The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='partition', type=d.T.integer)]), - withPartition(partition): { spec+: { source+: { inlineVolumeSpec+: { gcePersistentDisk+: { partition: partition } } } } }, - '#withPdName':: d.fn(help='Unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='pdName', type=d.T.string)]), - withPdName(pdName): { spec+: { source+: { inlineVolumeSpec+: { gcePersistentDisk+: { pdName: pdName } } } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { source+: { inlineVolumeSpec+: { gcePersistentDisk+: { readOnly: readOnly } } } } }, - }, - '#glusterfs':: d.obj(help='Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling.'), - glusterfs: { - '#withEndpoints':: d.fn(help='EndpointsName is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='endpoints', type=d.T.string)]), - withEndpoints(endpoints): { spec+: { source+: { inlineVolumeSpec+: { glusterfs+: { endpoints: endpoints } } } } }, - '#withEndpointsNamespace':: d.fn(help='EndpointsNamespace is the namespace that contains Glusterfs endpoint. If this field is empty, the EndpointNamespace defaults to the same namespace as the bound PVC. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='endpointsNamespace', type=d.T.string)]), - withEndpointsNamespace(endpointsNamespace): { spec+: { source+: { inlineVolumeSpec+: { glusterfs+: { endpointsNamespace: endpointsNamespace } } } } }, - '#withPath':: d.fn(help='Path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { spec+: { source+: { inlineVolumeSpec+: { glusterfs+: { path: path } } } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { source+: { inlineVolumeSpec+: { glusterfs+: { readOnly: readOnly } } } } }, - }, - '#hostPath':: d.obj(help='Represents a host path mapped into a pod. Host path volumes do not support ownership management or SELinux relabeling.'), - hostPath: { - '#withPath':: d.fn(help='Path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { spec+: { source+: { inlineVolumeSpec+: { hostPath+: { path: path } } } } }, - '#withType':: d.fn(help='Type for HostPath Volume Defaults to "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { source+: { inlineVolumeSpec+: { hostPath+: { type: type } } } } }, - }, - '#iscsi':: d.obj(help='ISCSIPersistentVolumeSource represents an ISCSI disk. ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling.'), - iscsi: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { source+: { inlineVolumeSpec+: { iscsi+: { secretRef+: { name: name } } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { source+: { inlineVolumeSpec+: { iscsi+: { secretRef+: { namespace: namespace } } } } } }, - }, - '#withChapAuthDiscovery':: d.fn(help='whether support iSCSI Discovery CHAP authentication', args=[d.arg(name='chapAuthDiscovery', type=d.T.boolean)]), - withChapAuthDiscovery(chapAuthDiscovery): { spec+: { source+: { inlineVolumeSpec+: { iscsi+: { chapAuthDiscovery: chapAuthDiscovery } } } } }, - '#withChapAuthSession':: d.fn(help='whether support iSCSI Session CHAP authentication', args=[d.arg(name='chapAuthSession', type=d.T.boolean)]), - withChapAuthSession(chapAuthSession): { spec+: { source+: { inlineVolumeSpec+: { iscsi+: { chapAuthSession: chapAuthSession } } } } }, - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { source+: { inlineVolumeSpec+: { iscsi+: { fsType: fsType } } } } }, - '#withInitiatorName':: d.fn(help='Custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface : will be created for the connection.', args=[d.arg(name='initiatorName', type=d.T.string)]), - withInitiatorName(initiatorName): { spec+: { source+: { inlineVolumeSpec+: { iscsi+: { initiatorName: initiatorName } } } } }, - '#withIqn':: d.fn(help='Target iSCSI Qualified Name.', args=[d.arg(name='iqn', type=d.T.string)]), - withIqn(iqn): { spec+: { source+: { inlineVolumeSpec+: { iscsi+: { iqn: iqn } } } } }, - '#withIscsiInterface':: d.fn(help="iSCSI Interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).", args=[d.arg(name='iscsiInterface', type=d.T.string)]), - withIscsiInterface(iscsiInterface): { spec+: { source+: { inlineVolumeSpec+: { iscsi+: { iscsiInterface: iscsiInterface } } } } }, - '#withLun':: d.fn(help='iSCSI Target Lun number.', args=[d.arg(name='lun', type=d.T.integer)]), - withLun(lun): { spec+: { source+: { inlineVolumeSpec+: { iscsi+: { lun: lun } } } } }, - '#withPortals':: d.fn(help='iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).', args=[d.arg(name='portals', type=d.T.array)]), - withPortals(portals): { spec+: { source+: { inlineVolumeSpec+: { iscsi+: { portals: if std.isArray(v=portals) then portals else [portals] } } } } }, - '#withPortalsMixin':: d.fn(help='iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='portals', type=d.T.array)]), - withPortalsMixin(portals): { spec+: { source+: { inlineVolumeSpec+: { iscsi+: { portals+: if std.isArray(v=portals) then portals else [portals] } } } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { source+: { inlineVolumeSpec+: { iscsi+: { readOnly: readOnly } } } } }, - '#withTargetPortal':: d.fn(help='iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).', args=[d.arg(name='targetPortal', type=d.T.string)]), - withTargetPortal(targetPortal): { spec+: { source+: { inlineVolumeSpec+: { iscsi+: { targetPortal: targetPortal } } } } }, - }, - '#local':: d.obj(help='Local represents directly-attached storage with node affinity (Beta feature)'), - 'local': { - '#withFsType':: d.fn(help='Filesystem type to mount. It applies only when the Path is a block device. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default value is to auto-select a fileystem if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { source+: { inlineVolumeSpec+: { 'local'+: { fsType: fsType } } } } }, - '#withPath':: d.fn(help='The full path to the volume on the node. It can be either a directory or block device (disk, partition, ...).', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { spec+: { source+: { inlineVolumeSpec+: { 'local'+: { path: path } } } } }, - }, - '#nfs':: d.obj(help='Represents an NFS mount that lasts the lifetime of a pod. NFS volumes do not support ownership management or SELinux relabeling.'), - nfs: { - '#withPath':: d.fn(help='Path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { spec+: { source+: { inlineVolumeSpec+: { nfs+: { path: path } } } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { source+: { inlineVolumeSpec+: { nfs+: { readOnly: readOnly } } } } }, - '#withServer':: d.fn(help='Server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs', args=[d.arg(name='server', type=d.T.string)]), - withServer(server): { spec+: { source+: { inlineVolumeSpec+: { nfs+: { server: server } } } } }, - }, - '#nodeAffinity':: d.obj(help='VolumeNodeAffinity defines constraints that limit what nodes this volume can be accessed from.'), - nodeAffinity: { - '#required':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - required: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { spec+: { source+: { inlineVolumeSpec+: { nodeAffinity+: { required+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { spec+: { source+: { inlineVolumeSpec+: { nodeAffinity+: { required+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } }, - }, - }, - '#photonPersistentDisk':: d.obj(help='Represents a Photon Controller persistent disk resource.'), - photonPersistentDisk: { - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { source+: { inlineVolumeSpec+: { photonPersistentDisk+: { fsType: fsType } } } } }, - '#withPdID':: d.fn(help='ID that identifies Photon Controller persistent disk', args=[d.arg(name='pdID', type=d.T.string)]), - withPdID(pdID): { spec+: { source+: { inlineVolumeSpec+: { photonPersistentDisk+: { pdID: pdID } } } } }, - }, - '#portworxVolume':: d.obj(help='PortworxVolumeSource represents a Portworx volume resource.'), - portworxVolume: { - '#withFsType':: d.fn(help='FSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { source+: { inlineVolumeSpec+: { portworxVolume+: { fsType: fsType } } } } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { source+: { inlineVolumeSpec+: { portworxVolume+: { readOnly: readOnly } } } } }, - '#withVolumeID':: d.fn(help='VolumeID uniquely identifies a Portworx volume', args=[d.arg(name='volumeID', type=d.T.string)]), - withVolumeID(volumeID): { spec+: { source+: { inlineVolumeSpec+: { portworxVolume+: { volumeID: volumeID } } } } }, - }, - '#quobyte':: d.obj(help='Represents a Quobyte mount that lasts the lifetime of a pod. Quobyte volumes do not support ownership management or SELinux relabeling.'), - quobyte: { - '#withGroup':: d.fn(help='Group to map volume access to Default is no group', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { spec+: { source+: { inlineVolumeSpec+: { quobyte+: { group: group } } } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { source+: { inlineVolumeSpec+: { quobyte+: { readOnly: readOnly } } } } }, - '#withRegistry':: d.fn(help='Registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes', args=[d.arg(name='registry', type=d.T.string)]), - withRegistry(registry): { spec+: { source+: { inlineVolumeSpec+: { quobyte+: { registry: registry } } } } }, - '#withTenant':: d.fn(help='Tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin', args=[d.arg(name='tenant', type=d.T.string)]), - withTenant(tenant): { spec+: { source+: { inlineVolumeSpec+: { quobyte+: { tenant: tenant } } } } }, - '#withUser':: d.fn(help='User to map volume access to Defaults to serivceaccount user', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { source+: { inlineVolumeSpec+: { quobyte+: { user: user } } } } }, - '#withVolume':: d.fn(help='Volume is a string that references an already created Quobyte volume by name.', args=[d.arg(name='volume', type=d.T.string)]), - withVolume(volume): { spec+: { source+: { inlineVolumeSpec+: { quobyte+: { volume: volume } } } } }, - }, - '#rbd':: d.obj(help='Represents a Rados Block Device mount that lasts the lifetime of a pod. RBD volumes support ownership management and SELinux relabeling.'), - rbd: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { source+: { inlineVolumeSpec+: { rbd+: { secretRef+: { name: name } } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { source+: { inlineVolumeSpec+: { rbd+: { secretRef+: { namespace: namespace } } } } } }, - }, - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { source+: { inlineVolumeSpec+: { rbd+: { fsType: fsType } } } } }, - '#withImage':: d.fn(help='The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='image', type=d.T.string)]), - withImage(image): { spec+: { source+: { inlineVolumeSpec+: { rbd+: { image: image } } } } }, - '#withKeyring':: d.fn(help='Keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='keyring', type=d.T.string)]), - withKeyring(keyring): { spec+: { source+: { inlineVolumeSpec+: { rbd+: { keyring: keyring } } } } }, - '#withMonitors':: d.fn(help='A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitors(monitors): { spec+: { source+: { inlineVolumeSpec+: { rbd+: { monitors: if std.isArray(v=monitors) then monitors else [monitors] } } } } }, - '#withMonitorsMixin':: d.fn(help='A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitorsMixin(monitors): { spec+: { source+: { inlineVolumeSpec+: { rbd+: { monitors+: if std.isArray(v=monitors) then monitors else [monitors] } } } } }, - '#withPool':: d.fn(help='The rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='pool', type=d.T.string)]), - withPool(pool): { spec+: { source+: { inlineVolumeSpec+: { rbd+: { pool: pool } } } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { source+: { inlineVolumeSpec+: { rbd+: { readOnly: readOnly } } } } }, - '#withUser':: d.fn(help='The rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { source+: { inlineVolumeSpec+: { rbd+: { user: user } } } } }, - }, - '#scaleIO':: d.obj(help='ScaleIOPersistentVolumeSource represents a persistent ScaleIO volume'), - scaleIO: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { source+: { inlineVolumeSpec+: { scaleIO+: { secretRef+: { name: name } } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { source+: { inlineVolumeSpec+: { scaleIO+: { secretRef+: { namespace: namespace } } } } } }, - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Default is "xfs"', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { source+: { inlineVolumeSpec+: { scaleIO+: { fsType: fsType } } } } }, - '#withGateway':: d.fn(help='The host address of the ScaleIO API Gateway.', args=[d.arg(name='gateway', type=d.T.string)]), - withGateway(gateway): { spec+: { source+: { inlineVolumeSpec+: { scaleIO+: { gateway: gateway } } } } }, - '#withProtectionDomain':: d.fn(help='The name of the ScaleIO Protection Domain for the configured storage.', args=[d.arg(name='protectionDomain', type=d.T.string)]), - withProtectionDomain(protectionDomain): { spec+: { source+: { inlineVolumeSpec+: { scaleIO+: { protectionDomain: protectionDomain } } } } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { source+: { inlineVolumeSpec+: { scaleIO+: { readOnly: readOnly } } } } }, - '#withSslEnabled':: d.fn(help='Flag to enable/disable SSL communication with Gateway, default false', args=[d.arg(name='sslEnabled', type=d.T.boolean)]), - withSslEnabled(sslEnabled): { spec+: { source+: { inlineVolumeSpec+: { scaleIO+: { sslEnabled: sslEnabled } } } } }, - '#withStorageMode':: d.fn(help='Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.', args=[d.arg(name='storageMode', type=d.T.string)]), - withStorageMode(storageMode): { spec+: { source+: { inlineVolumeSpec+: { scaleIO+: { storageMode: storageMode } } } } }, - '#withStoragePool':: d.fn(help='The ScaleIO Storage Pool associated with the protection domain.', args=[d.arg(name='storagePool', type=d.T.string)]), - withStoragePool(storagePool): { spec+: { source+: { inlineVolumeSpec+: { scaleIO+: { storagePool: storagePool } } } } }, - '#withSystem':: d.fn(help='The name of the storage system as configured in ScaleIO.', args=[d.arg(name='system', type=d.T.string)]), - withSystem(system): { spec+: { source+: { inlineVolumeSpec+: { scaleIO+: { system: system } } } } }, - '#withVolumeName':: d.fn(help='The name of a volume already created in the ScaleIO system that is associated with this volume source.', args=[d.arg(name='volumeName', type=d.T.string)]), - withVolumeName(volumeName): { spec+: { source+: { inlineVolumeSpec+: { scaleIO+: { volumeName: volumeName } } } } }, - }, - '#storageos':: d.obj(help='Represents a StorageOS persistent volume resource.'), - storageos: { - '#secretRef':: d.obj(help='ObjectReference contains enough information to let you inspect or modify the referred object.'), - secretRef: { - '#withApiVersion':: d.fn(help='API version of the referent.', args=[d.arg(name='apiVersion', type=d.T.string)]), - withApiVersion(apiVersion): { spec+: { source+: { inlineVolumeSpec+: { storageos+: { secretRef+: { apiVersion: apiVersion } } } } } }, - '#withFieldPath':: d.fn(help='If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { spec+: { source+: { inlineVolumeSpec+: { storageos+: { secretRef+: { fieldPath: fieldPath } } } } } }, - '#withKind':: d.fn(help='Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { source+: { inlineVolumeSpec+: { storageos+: { secretRef+: { kind: kind } } } } } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { source+: { inlineVolumeSpec+: { storageos+: { secretRef+: { name: name } } } } } }, - '#withNamespace':: d.fn(help='Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { source+: { inlineVolumeSpec+: { storageos+: { secretRef+: { namespace: namespace } } } } } }, - '#withResourceVersion':: d.fn(help='Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { spec+: { source+: { inlineVolumeSpec+: { storageos+: { secretRef+: { resourceVersion: resourceVersion } } } } } }, - '#withUid':: d.fn(help='UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { source+: { inlineVolumeSpec+: { storageos+: { secretRef+: { uid: uid } } } } } }, - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { source+: { inlineVolumeSpec+: { storageos+: { fsType: fsType } } } } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { source+: { inlineVolumeSpec+: { storageos+: { readOnly: readOnly } } } } }, - '#withVolumeName':: d.fn(help='VolumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.', args=[d.arg(name='volumeName', type=d.T.string)]), - withVolumeName(volumeName): { spec+: { source+: { inlineVolumeSpec+: { storageos+: { volumeName: volumeName } } } } }, - '#withVolumeNamespace':: d.fn(help="VolumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod's namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to 'default' if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created.", args=[d.arg(name='volumeNamespace', type=d.T.string)]), - withVolumeNamespace(volumeNamespace): { spec+: { source+: { inlineVolumeSpec+: { storageos+: { volumeNamespace: volumeNamespace } } } } }, - }, - '#vsphereVolume':: d.obj(help='Represents a vSphere volume resource.'), - vsphereVolume: { - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { source+: { inlineVolumeSpec+: { vsphereVolume+: { fsType: fsType } } } } }, - '#withStoragePolicyID':: d.fn(help='Storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.', args=[d.arg(name='storagePolicyID', type=d.T.string)]), - withStoragePolicyID(storagePolicyID): { spec+: { source+: { inlineVolumeSpec+: { vsphereVolume+: { storagePolicyID: storagePolicyID } } } } }, - '#withStoragePolicyName':: d.fn(help='Storage Policy Based Management (SPBM) profile name.', args=[d.arg(name='storagePolicyName', type=d.T.string)]), - withStoragePolicyName(storagePolicyName): { spec+: { source+: { inlineVolumeSpec+: { vsphereVolume+: { storagePolicyName: storagePolicyName } } } } }, - '#withVolumePath':: d.fn(help='Path that identifies vSphere volume vmdk', args=[d.arg(name='volumePath', type=d.T.string)]), - withVolumePath(volumePath): { spec+: { source+: { inlineVolumeSpec+: { vsphereVolume+: { volumePath: volumePath } } } } }, - }, - '#withAccessModes':: d.fn(help='AccessModes contains all ways the volume can be mounted. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes', args=[d.arg(name='accessModes', type=d.T.array)]), - withAccessModes(accessModes): { spec+: { source+: { inlineVolumeSpec+: { accessModes: if std.isArray(v=accessModes) then accessModes else [accessModes] } } } }, - '#withAccessModesMixin':: d.fn(help='AccessModes contains all ways the volume can be mounted. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='accessModes', type=d.T.array)]), - withAccessModesMixin(accessModes): { spec+: { source+: { inlineVolumeSpec+: { accessModes+: if std.isArray(v=accessModes) then accessModes else [accessModes] } } } }, - '#withCapacity':: d.fn(help="A description of the persistent volume's resources and capacity. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity", args=[d.arg(name='capacity', type=d.T.object)]), - withCapacity(capacity): { spec+: { source+: { inlineVolumeSpec+: { capacity: capacity } } } }, - '#withCapacityMixin':: d.fn(help="A description of the persistent volume's resources and capacity. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='capacity', type=d.T.object)]), - withCapacityMixin(capacity): { spec+: { source+: { inlineVolumeSpec+: { capacity+: capacity } } } }, - '#withMountOptions':: d.fn(help='A list of mount options, e.g. ["ro", "soft"]. Not validated - mount will simply fail if one is invalid. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options', args=[d.arg(name='mountOptions', type=d.T.array)]), - withMountOptions(mountOptions): { spec+: { source+: { inlineVolumeSpec+: { mountOptions: if std.isArray(v=mountOptions) then mountOptions else [mountOptions] } } } }, - '#withMountOptionsMixin':: d.fn(help='A list of mount options, e.g. ["ro", "soft"]. Not validated - mount will simply fail if one is invalid. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='mountOptions', type=d.T.array)]), - withMountOptionsMixin(mountOptions): { spec+: { source+: { inlineVolumeSpec+: { mountOptions+: if std.isArray(v=mountOptions) then mountOptions else [mountOptions] } } } }, - '#withPersistentVolumeReclaimPolicy':: d.fn(help='What happens to a persistent volume when released from its claim. Valid options are Retain (default for manually created PersistentVolumes), Delete (default for dynamically provisioned PersistentVolumes), and Recycle (deprecated). Recycle must be supported by the volume plugin underlying this PersistentVolume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#reclaiming', args=[d.arg(name='persistentVolumeReclaimPolicy', type=d.T.string)]), - withPersistentVolumeReclaimPolicy(persistentVolumeReclaimPolicy): { spec+: { source+: { inlineVolumeSpec+: { persistentVolumeReclaimPolicy: persistentVolumeReclaimPolicy } } } }, - '#withStorageClassName':: d.fn(help='Name of StorageClass to which this persistent volume belongs. Empty value means that this volume does not belong to any StorageClass.', args=[d.arg(name='storageClassName', type=d.T.string)]), - withStorageClassName(storageClassName): { spec+: { source+: { inlineVolumeSpec+: { storageClassName: storageClassName } } } }, - '#withVolumeMode':: d.fn(help='volumeMode defines if a volume is intended to be used with a formatted filesystem or to remain in raw block state. Value of Filesystem is implied when not included in spec.', args=[d.arg(name='volumeMode', type=d.T.string)]), - withVolumeMode(volumeMode): { spec+: { source+: { inlineVolumeSpec+: { volumeMode: volumeMode } } } }, - }, - '#withPersistentVolumeName':: d.fn(help='Name of the persistent volume to attach.', args=[d.arg(name='persistentVolumeName', type=d.T.string)]), - withPersistentVolumeName(persistentVolumeName): { spec+: { source+: { persistentVolumeName: persistentVolumeName } } }, - }, - '#withAttacher':: d.fn(help='Attacher indicates the name of the volume driver that MUST handle this request. This is the name returned by GetPluginName().', args=[d.arg(name='attacher', type=d.T.string)]), - withAttacher(attacher): { spec+: { attacher: attacher } }, - '#withNodeName':: d.fn(help='The node that the volume should be attached to.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { spec+: { nodeName: nodeName } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/volumeAttachmentSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/volumeAttachmentSource.libsonnet deleted file mode 100644 index 65b29e14e100..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/volumeAttachmentSource.libsonnet +++ /dev/null @@ -1,419 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='volumeAttachmentSource', url='', help='VolumeAttachmentSource represents a volume that should be attached. Right now only PersistenVolumes can be attached via external attacher, in future we may allow also inline volumes in pods. Exactly one member can be set.'), - '#inlineVolumeSpec':: d.obj(help='PersistentVolumeSpec is the specification of a persistent volume.'), - inlineVolumeSpec: { - '#awsElasticBlockStore':: d.obj(help='Represents a Persistent Disk resource in AWS.\n\nAn AWS EBS disk must exist before mounting to a container. The disk must also be in the same AWS zone as the kubelet. An AWS EBS disk can only be mounted as read/write once. AWS EBS volumes support ownership management and SELinux relabeling.'), - awsElasticBlockStore: { - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { inlineVolumeSpec+: { awsElasticBlockStore+: { fsType: fsType } } }, - '#withPartition':: d.fn(help='The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).', args=[d.arg(name='partition', type=d.T.integer)]), - withPartition(partition): { inlineVolumeSpec+: { awsElasticBlockStore+: { partition: partition } } }, - '#withReadOnly':: d.fn(help='Specify "true" to force and set the ReadOnly property in VolumeMounts to "true". If omitted, the default is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { inlineVolumeSpec+: { awsElasticBlockStore+: { readOnly: readOnly } } }, - '#withVolumeID':: d.fn(help='Unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore', args=[d.arg(name='volumeID', type=d.T.string)]), - withVolumeID(volumeID): { inlineVolumeSpec+: { awsElasticBlockStore+: { volumeID: volumeID } } }, - }, - '#azureDisk':: d.obj(help='AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.'), - azureDisk: { - '#withCachingMode':: d.fn(help='Host Caching mode: None, Read Only, Read Write.', args=[d.arg(name='cachingMode', type=d.T.string)]), - withCachingMode(cachingMode): { inlineVolumeSpec+: { azureDisk+: { cachingMode: cachingMode } } }, - '#withDiskName':: d.fn(help='The Name of the data disk in the blob storage', args=[d.arg(name='diskName', type=d.T.string)]), - withDiskName(diskName): { inlineVolumeSpec+: { azureDisk+: { diskName: diskName } } }, - '#withDiskURI':: d.fn(help='The URI the data disk in the blob storage', args=[d.arg(name='diskURI', type=d.T.string)]), - withDiskURI(diskURI): { inlineVolumeSpec+: { azureDisk+: { diskURI: diskURI } } }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { inlineVolumeSpec+: { azureDisk+: { fsType: fsType } } }, - '#withKind':: d.fn(help='Expected values Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { inlineVolumeSpec+: { azureDisk+: { kind: kind } } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { inlineVolumeSpec+: { azureDisk+: { readOnly: readOnly } } }, - }, - '#azureFile':: d.obj(help='AzureFile represents an Azure File Service mount on the host and bind mount to the pod.'), - azureFile: { - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { inlineVolumeSpec+: { azureFile+: { readOnly: readOnly } } }, - '#withSecretName':: d.fn(help='the name of secret that contains Azure Storage Account Name and Key', args=[d.arg(name='secretName', type=d.T.string)]), - withSecretName(secretName): { inlineVolumeSpec+: { azureFile+: { secretName: secretName } } }, - '#withSecretNamespace':: d.fn(help='the namespace of the secret that contains Azure Storage Account Name and Key default is the same as the Pod', args=[d.arg(name='secretNamespace', type=d.T.string)]), - withSecretNamespace(secretNamespace): { inlineVolumeSpec+: { azureFile+: { secretNamespace: secretNamespace } } }, - '#withShareName':: d.fn(help='Share Name', args=[d.arg(name='shareName', type=d.T.string)]), - withShareName(shareName): { inlineVolumeSpec+: { azureFile+: { shareName: shareName } } }, - }, - '#cephfs':: d.obj(help='Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling.'), - cephfs: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { inlineVolumeSpec+: { cephfs+: { secretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { inlineVolumeSpec+: { cephfs+: { secretRef+: { namespace: namespace } } } }, - }, - '#withMonitors':: d.fn(help='Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitors(monitors): { inlineVolumeSpec+: { cephfs+: { monitors: if std.isArray(v=monitors) then monitors else [monitors] } } }, - '#withMonitorsMixin':: d.fn(help='Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitorsMixin(monitors): { inlineVolumeSpec+: { cephfs+: { monitors+: if std.isArray(v=monitors) then monitors else [monitors] } } }, - '#withPath':: d.fn(help='Optional: Used as the mounted root, rather than the full Ceph tree, default is /', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { inlineVolumeSpec+: { cephfs+: { path: path } } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { inlineVolumeSpec+: { cephfs+: { readOnly: readOnly } } }, - '#withSecretFile':: d.fn(help='Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='secretFile', type=d.T.string)]), - withSecretFile(secretFile): { inlineVolumeSpec+: { cephfs+: { secretFile: secretFile } } }, - '#withUser':: d.fn(help='Optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { inlineVolumeSpec+: { cephfs+: { user: user } } }, - }, - '#cinder':: d.obj(help='Represents a cinder volume resource in Openstack. A Cinder volume must exist before mounting to a container. The volume must also be in the same region as the kubelet. Cinder volumes support ownership management and SELinux relabeling.'), - cinder: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { inlineVolumeSpec+: { cinder+: { secretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { inlineVolumeSpec+: { cinder+: { secretRef+: { namespace: namespace } } } }, - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { inlineVolumeSpec+: { cinder+: { fsType: fsType } } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { inlineVolumeSpec+: { cinder+: { readOnly: readOnly } } }, - '#withVolumeID':: d.fn(help='volume id used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md', args=[d.arg(name='volumeID', type=d.T.string)]), - withVolumeID(volumeID): { inlineVolumeSpec+: { cinder+: { volumeID: volumeID } } }, - }, - '#claimRef':: d.obj(help='ObjectReference contains enough information to let you inspect or modify the referred object.'), - claimRef: { - '#withApiVersion':: d.fn(help='API version of the referent.', args=[d.arg(name='apiVersion', type=d.T.string)]), - withApiVersion(apiVersion): { inlineVolumeSpec+: { claimRef+: { apiVersion: apiVersion } } }, - '#withFieldPath':: d.fn(help='If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { inlineVolumeSpec+: { claimRef+: { fieldPath: fieldPath } } }, - '#withKind':: d.fn(help='Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { inlineVolumeSpec+: { claimRef+: { kind: kind } } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { inlineVolumeSpec+: { claimRef+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { inlineVolumeSpec+: { claimRef+: { namespace: namespace } } }, - '#withResourceVersion':: d.fn(help='Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { inlineVolumeSpec+: { claimRef+: { resourceVersion: resourceVersion } } }, - '#withUid':: d.fn(help='UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { inlineVolumeSpec+: { claimRef+: { uid: uid } } }, - }, - '#csi':: d.obj(help='Represents storage that is managed by an external CSI volume driver (Beta feature)'), - csi: { - '#controllerExpandSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - controllerExpandSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { inlineVolumeSpec+: { csi+: { controllerExpandSecretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { inlineVolumeSpec+: { csi+: { controllerExpandSecretRef+: { namespace: namespace } } } }, - }, - '#controllerPublishSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - controllerPublishSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { inlineVolumeSpec+: { csi+: { controllerPublishSecretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { inlineVolumeSpec+: { csi+: { controllerPublishSecretRef+: { namespace: namespace } } } }, - }, - '#nodePublishSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - nodePublishSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { inlineVolumeSpec+: { csi+: { nodePublishSecretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { inlineVolumeSpec+: { csi+: { nodePublishSecretRef+: { namespace: namespace } } } }, - }, - '#nodeStageSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - nodeStageSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { inlineVolumeSpec+: { csi+: { nodeStageSecretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { inlineVolumeSpec+: { csi+: { nodeStageSecretRef+: { namespace: namespace } } } }, - }, - '#withDriver':: d.fn(help='Driver is the name of the driver to use for this volume. Required.', args=[d.arg(name='driver', type=d.T.string)]), - withDriver(driver): { inlineVolumeSpec+: { csi+: { driver: driver } } }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs".', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { inlineVolumeSpec+: { csi+: { fsType: fsType } } }, - '#withReadOnly':: d.fn(help='Optional: The value to pass to ControllerPublishVolumeRequest. Defaults to false (read/write).', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { inlineVolumeSpec+: { csi+: { readOnly: readOnly } } }, - '#withVolumeAttributes':: d.fn(help='Attributes of the volume to publish.', args=[d.arg(name='volumeAttributes', type=d.T.object)]), - withVolumeAttributes(volumeAttributes): { inlineVolumeSpec+: { csi+: { volumeAttributes: volumeAttributes } } }, - '#withVolumeAttributesMixin':: d.fn(help='Attributes of the volume to publish.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumeAttributes', type=d.T.object)]), - withVolumeAttributesMixin(volumeAttributes): { inlineVolumeSpec+: { csi+: { volumeAttributes+: volumeAttributes } } }, - '#withVolumeHandle':: d.fn(help='VolumeHandle is the unique volume name returned by the CSI volume plugin’s CreateVolume to refer to the volume on all subsequent calls. Required.', args=[d.arg(name='volumeHandle', type=d.T.string)]), - withVolumeHandle(volumeHandle): { inlineVolumeSpec+: { csi+: { volumeHandle: volumeHandle } } }, - }, - '#fc':: d.obj(help='Represents a Fibre Channel volume. Fibre Channel volumes can only be mounted as read/write once. Fibre Channel volumes support ownership management and SELinux relabeling.'), - fc: { - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { inlineVolumeSpec+: { fc+: { fsType: fsType } } }, - '#withLun':: d.fn(help='Optional: FC target lun number', args=[d.arg(name='lun', type=d.T.integer)]), - withLun(lun): { inlineVolumeSpec+: { fc+: { lun: lun } } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { inlineVolumeSpec+: { fc+: { readOnly: readOnly } } }, - '#withTargetWWNs':: d.fn(help='Optional: FC target worldwide names (WWNs)', args=[d.arg(name='targetWWNs', type=d.T.array)]), - withTargetWWNs(targetWWNs): { inlineVolumeSpec+: { fc+: { targetWWNs: if std.isArray(v=targetWWNs) then targetWWNs else [targetWWNs] } } }, - '#withTargetWWNsMixin':: d.fn(help='Optional: FC target worldwide names (WWNs)\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='targetWWNs', type=d.T.array)]), - withTargetWWNsMixin(targetWWNs): { inlineVolumeSpec+: { fc+: { targetWWNs+: if std.isArray(v=targetWWNs) then targetWWNs else [targetWWNs] } } }, - '#withWwids':: d.fn(help='Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.', args=[d.arg(name='wwids', type=d.T.array)]), - withWwids(wwids): { inlineVolumeSpec+: { fc+: { wwids: if std.isArray(v=wwids) then wwids else [wwids] } } }, - '#withWwidsMixin':: d.fn(help='Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='wwids', type=d.T.array)]), - withWwidsMixin(wwids): { inlineVolumeSpec+: { fc+: { wwids+: if std.isArray(v=wwids) then wwids else [wwids] } } }, - }, - '#flexVolume':: d.obj(help='FlexPersistentVolumeSource represents a generic persistent volume resource that is provisioned/attached using an exec based plugin.'), - flexVolume: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { inlineVolumeSpec+: { flexVolume+: { secretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { inlineVolumeSpec+: { flexVolume+: { secretRef+: { namespace: namespace } } } }, - }, - '#withDriver':: d.fn(help='Driver is the name of the driver to use for this volume.', args=[d.arg(name='driver', type=d.T.string)]), - withDriver(driver): { inlineVolumeSpec+: { flexVolume+: { driver: driver } } }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { inlineVolumeSpec+: { flexVolume+: { fsType: fsType } } }, - '#withOptions':: d.fn(help='Optional: Extra command options if any.', args=[d.arg(name='options', type=d.T.object)]), - withOptions(options): { inlineVolumeSpec+: { flexVolume+: { options: options } } }, - '#withOptionsMixin':: d.fn(help='Optional: Extra command options if any.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.object)]), - withOptionsMixin(options): { inlineVolumeSpec+: { flexVolume+: { options+: options } } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { inlineVolumeSpec+: { flexVolume+: { readOnly: readOnly } } }, - }, - '#flocker':: d.obj(help='Represents a Flocker volume mounted by the Flocker agent. One and only one of datasetName and datasetUUID should be set. Flocker volumes do not support ownership management or SELinux relabeling.'), - flocker: { - '#withDatasetName':: d.fn(help='Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated', args=[d.arg(name='datasetName', type=d.T.string)]), - withDatasetName(datasetName): { inlineVolumeSpec+: { flocker+: { datasetName: datasetName } } }, - '#withDatasetUUID':: d.fn(help='UUID of the dataset. This is unique identifier of a Flocker dataset', args=[d.arg(name='datasetUUID', type=d.T.string)]), - withDatasetUUID(datasetUUID): { inlineVolumeSpec+: { flocker+: { datasetUUID: datasetUUID } } }, - }, - '#gcePersistentDisk':: d.obj(help='Represents a Persistent Disk resource in Google Compute Engine.\n\nA GCE PD must exist before mounting to a container. The disk must also be in the same GCE project and zone as the kubelet. A GCE PD can only be mounted as read/write once or read-only many times. GCE PDs support ownership management and SELinux relabeling.'), - gcePersistentDisk: { - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { inlineVolumeSpec+: { gcePersistentDisk+: { fsType: fsType } } }, - '#withPartition':: d.fn(help='The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='partition', type=d.T.integer)]), - withPartition(partition): { inlineVolumeSpec+: { gcePersistentDisk+: { partition: partition } } }, - '#withPdName':: d.fn(help='Unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='pdName', type=d.T.string)]), - withPdName(pdName): { inlineVolumeSpec+: { gcePersistentDisk+: { pdName: pdName } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { inlineVolumeSpec+: { gcePersistentDisk+: { readOnly: readOnly } } }, - }, - '#glusterfs':: d.obj(help='Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling.'), - glusterfs: { - '#withEndpoints':: d.fn(help='EndpointsName is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='endpoints', type=d.T.string)]), - withEndpoints(endpoints): { inlineVolumeSpec+: { glusterfs+: { endpoints: endpoints } } }, - '#withEndpointsNamespace':: d.fn(help='EndpointsNamespace is the namespace that contains Glusterfs endpoint. If this field is empty, the EndpointNamespace defaults to the same namespace as the bound PVC. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='endpointsNamespace', type=d.T.string)]), - withEndpointsNamespace(endpointsNamespace): { inlineVolumeSpec+: { glusterfs+: { endpointsNamespace: endpointsNamespace } } }, - '#withPath':: d.fn(help='Path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { inlineVolumeSpec+: { glusterfs+: { path: path } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { inlineVolumeSpec+: { glusterfs+: { readOnly: readOnly } } }, - }, - '#hostPath':: d.obj(help='Represents a host path mapped into a pod. Host path volumes do not support ownership management or SELinux relabeling.'), - hostPath: { - '#withPath':: d.fn(help='Path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { inlineVolumeSpec+: { hostPath+: { path: path } } }, - '#withType':: d.fn(help='Type for HostPath Volume Defaults to "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { inlineVolumeSpec+: { hostPath+: { type: type } } }, - }, - '#iscsi':: d.obj(help='ISCSIPersistentVolumeSource represents an ISCSI disk. ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling.'), - iscsi: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { inlineVolumeSpec+: { iscsi+: { secretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { inlineVolumeSpec+: { iscsi+: { secretRef+: { namespace: namespace } } } }, - }, - '#withChapAuthDiscovery':: d.fn(help='whether support iSCSI Discovery CHAP authentication', args=[d.arg(name='chapAuthDiscovery', type=d.T.boolean)]), - withChapAuthDiscovery(chapAuthDiscovery): { inlineVolumeSpec+: { iscsi+: { chapAuthDiscovery: chapAuthDiscovery } } }, - '#withChapAuthSession':: d.fn(help='whether support iSCSI Session CHAP authentication', args=[d.arg(name='chapAuthSession', type=d.T.boolean)]), - withChapAuthSession(chapAuthSession): { inlineVolumeSpec+: { iscsi+: { chapAuthSession: chapAuthSession } } }, - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { inlineVolumeSpec+: { iscsi+: { fsType: fsType } } }, - '#withInitiatorName':: d.fn(help='Custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface : will be created for the connection.', args=[d.arg(name='initiatorName', type=d.T.string)]), - withInitiatorName(initiatorName): { inlineVolumeSpec+: { iscsi+: { initiatorName: initiatorName } } }, - '#withIqn':: d.fn(help='Target iSCSI Qualified Name.', args=[d.arg(name='iqn', type=d.T.string)]), - withIqn(iqn): { inlineVolumeSpec+: { iscsi+: { iqn: iqn } } }, - '#withIscsiInterface':: d.fn(help="iSCSI Interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).", args=[d.arg(name='iscsiInterface', type=d.T.string)]), - withIscsiInterface(iscsiInterface): { inlineVolumeSpec+: { iscsi+: { iscsiInterface: iscsiInterface } } }, - '#withLun':: d.fn(help='iSCSI Target Lun number.', args=[d.arg(name='lun', type=d.T.integer)]), - withLun(lun): { inlineVolumeSpec+: { iscsi+: { lun: lun } } }, - '#withPortals':: d.fn(help='iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).', args=[d.arg(name='portals', type=d.T.array)]), - withPortals(portals): { inlineVolumeSpec+: { iscsi+: { portals: if std.isArray(v=portals) then portals else [portals] } } }, - '#withPortalsMixin':: d.fn(help='iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='portals', type=d.T.array)]), - withPortalsMixin(portals): { inlineVolumeSpec+: { iscsi+: { portals+: if std.isArray(v=portals) then portals else [portals] } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { inlineVolumeSpec+: { iscsi+: { readOnly: readOnly } } }, - '#withTargetPortal':: d.fn(help='iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).', args=[d.arg(name='targetPortal', type=d.T.string)]), - withTargetPortal(targetPortal): { inlineVolumeSpec+: { iscsi+: { targetPortal: targetPortal } } }, - }, - '#local':: d.obj(help='Local represents directly-attached storage with node affinity (Beta feature)'), - 'local': { - '#withFsType':: d.fn(help='Filesystem type to mount. It applies only when the Path is a block device. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default value is to auto-select a fileystem if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { inlineVolumeSpec+: { 'local'+: { fsType: fsType } } }, - '#withPath':: d.fn(help='The full path to the volume on the node. It can be either a directory or block device (disk, partition, ...).', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { inlineVolumeSpec+: { 'local'+: { path: path } } }, - }, - '#nfs':: d.obj(help='Represents an NFS mount that lasts the lifetime of a pod. NFS volumes do not support ownership management or SELinux relabeling.'), - nfs: { - '#withPath':: d.fn(help='Path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { inlineVolumeSpec+: { nfs+: { path: path } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { inlineVolumeSpec+: { nfs+: { readOnly: readOnly } } }, - '#withServer':: d.fn(help='Server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs', args=[d.arg(name='server', type=d.T.string)]), - withServer(server): { inlineVolumeSpec+: { nfs+: { server: server } } }, - }, - '#nodeAffinity':: d.obj(help='VolumeNodeAffinity defines constraints that limit what nodes this volume can be accessed from.'), - nodeAffinity: { - '#required':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - required: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { inlineVolumeSpec+: { nodeAffinity+: { required+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { inlineVolumeSpec+: { nodeAffinity+: { required+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } }, - }, - }, - '#photonPersistentDisk':: d.obj(help='Represents a Photon Controller persistent disk resource.'), - photonPersistentDisk: { - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { inlineVolumeSpec+: { photonPersistentDisk+: { fsType: fsType } } }, - '#withPdID':: d.fn(help='ID that identifies Photon Controller persistent disk', args=[d.arg(name='pdID', type=d.T.string)]), - withPdID(pdID): { inlineVolumeSpec+: { photonPersistentDisk+: { pdID: pdID } } }, - }, - '#portworxVolume':: d.obj(help='PortworxVolumeSource represents a Portworx volume resource.'), - portworxVolume: { - '#withFsType':: d.fn(help='FSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { inlineVolumeSpec+: { portworxVolume+: { fsType: fsType } } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { inlineVolumeSpec+: { portworxVolume+: { readOnly: readOnly } } }, - '#withVolumeID':: d.fn(help='VolumeID uniquely identifies a Portworx volume', args=[d.arg(name='volumeID', type=d.T.string)]), - withVolumeID(volumeID): { inlineVolumeSpec+: { portworxVolume+: { volumeID: volumeID } } }, - }, - '#quobyte':: d.obj(help='Represents a Quobyte mount that lasts the lifetime of a pod. Quobyte volumes do not support ownership management or SELinux relabeling.'), - quobyte: { - '#withGroup':: d.fn(help='Group to map volume access to Default is no group', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { inlineVolumeSpec+: { quobyte+: { group: group } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { inlineVolumeSpec+: { quobyte+: { readOnly: readOnly } } }, - '#withRegistry':: d.fn(help='Registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes', args=[d.arg(name='registry', type=d.T.string)]), - withRegistry(registry): { inlineVolumeSpec+: { quobyte+: { registry: registry } } }, - '#withTenant':: d.fn(help='Tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin', args=[d.arg(name='tenant', type=d.T.string)]), - withTenant(tenant): { inlineVolumeSpec+: { quobyte+: { tenant: tenant } } }, - '#withUser':: d.fn(help='User to map volume access to Defaults to serivceaccount user', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { inlineVolumeSpec+: { quobyte+: { user: user } } }, - '#withVolume':: d.fn(help='Volume is a string that references an already created Quobyte volume by name.', args=[d.arg(name='volume', type=d.T.string)]), - withVolume(volume): { inlineVolumeSpec+: { quobyte+: { volume: volume } } }, - }, - '#rbd':: d.obj(help='Represents a Rados Block Device mount that lasts the lifetime of a pod. RBD volumes support ownership management and SELinux relabeling.'), - rbd: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { inlineVolumeSpec+: { rbd+: { secretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { inlineVolumeSpec+: { rbd+: { secretRef+: { namespace: namespace } } } }, - }, - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { inlineVolumeSpec+: { rbd+: { fsType: fsType } } }, - '#withImage':: d.fn(help='The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='image', type=d.T.string)]), - withImage(image): { inlineVolumeSpec+: { rbd+: { image: image } } }, - '#withKeyring':: d.fn(help='Keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='keyring', type=d.T.string)]), - withKeyring(keyring): { inlineVolumeSpec+: { rbd+: { keyring: keyring } } }, - '#withMonitors':: d.fn(help='A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitors(monitors): { inlineVolumeSpec+: { rbd+: { monitors: if std.isArray(v=monitors) then monitors else [monitors] } } }, - '#withMonitorsMixin':: d.fn(help='A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitorsMixin(monitors): { inlineVolumeSpec+: { rbd+: { monitors+: if std.isArray(v=monitors) then monitors else [monitors] } } }, - '#withPool':: d.fn(help='The rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='pool', type=d.T.string)]), - withPool(pool): { inlineVolumeSpec+: { rbd+: { pool: pool } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { inlineVolumeSpec+: { rbd+: { readOnly: readOnly } } }, - '#withUser':: d.fn(help='The rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { inlineVolumeSpec+: { rbd+: { user: user } } }, - }, - '#scaleIO':: d.obj(help='ScaleIOPersistentVolumeSource represents a persistent ScaleIO volume'), - scaleIO: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { inlineVolumeSpec+: { scaleIO+: { secretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { inlineVolumeSpec+: { scaleIO+: { secretRef+: { namespace: namespace } } } }, - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Default is "xfs"', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { inlineVolumeSpec+: { scaleIO+: { fsType: fsType } } }, - '#withGateway':: d.fn(help='The host address of the ScaleIO API Gateway.', args=[d.arg(name='gateway', type=d.T.string)]), - withGateway(gateway): { inlineVolumeSpec+: { scaleIO+: { gateway: gateway } } }, - '#withProtectionDomain':: d.fn(help='The name of the ScaleIO Protection Domain for the configured storage.', args=[d.arg(name='protectionDomain', type=d.T.string)]), - withProtectionDomain(protectionDomain): { inlineVolumeSpec+: { scaleIO+: { protectionDomain: protectionDomain } } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { inlineVolumeSpec+: { scaleIO+: { readOnly: readOnly } } }, - '#withSslEnabled':: d.fn(help='Flag to enable/disable SSL communication with Gateway, default false', args=[d.arg(name='sslEnabled', type=d.T.boolean)]), - withSslEnabled(sslEnabled): { inlineVolumeSpec+: { scaleIO+: { sslEnabled: sslEnabled } } }, - '#withStorageMode':: d.fn(help='Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.', args=[d.arg(name='storageMode', type=d.T.string)]), - withStorageMode(storageMode): { inlineVolumeSpec+: { scaleIO+: { storageMode: storageMode } } }, - '#withStoragePool':: d.fn(help='The ScaleIO Storage Pool associated with the protection domain.', args=[d.arg(name='storagePool', type=d.T.string)]), - withStoragePool(storagePool): { inlineVolumeSpec+: { scaleIO+: { storagePool: storagePool } } }, - '#withSystem':: d.fn(help='The name of the storage system as configured in ScaleIO.', args=[d.arg(name='system', type=d.T.string)]), - withSystem(system): { inlineVolumeSpec+: { scaleIO+: { system: system } } }, - '#withVolumeName':: d.fn(help='The name of a volume already created in the ScaleIO system that is associated with this volume source.', args=[d.arg(name='volumeName', type=d.T.string)]), - withVolumeName(volumeName): { inlineVolumeSpec+: { scaleIO+: { volumeName: volumeName } } }, - }, - '#storageos':: d.obj(help='Represents a StorageOS persistent volume resource.'), - storageos: { - '#secretRef':: d.obj(help='ObjectReference contains enough information to let you inspect or modify the referred object.'), - secretRef: { - '#withApiVersion':: d.fn(help='API version of the referent.', args=[d.arg(name='apiVersion', type=d.T.string)]), - withApiVersion(apiVersion): { inlineVolumeSpec+: { storageos+: { secretRef+: { apiVersion: apiVersion } } } }, - '#withFieldPath':: d.fn(help='If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { inlineVolumeSpec+: { storageos+: { secretRef+: { fieldPath: fieldPath } } } }, - '#withKind':: d.fn(help='Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { inlineVolumeSpec+: { storageos+: { secretRef+: { kind: kind } } } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { inlineVolumeSpec+: { storageos+: { secretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { inlineVolumeSpec+: { storageos+: { secretRef+: { namespace: namespace } } } }, - '#withResourceVersion':: d.fn(help='Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { inlineVolumeSpec+: { storageos+: { secretRef+: { resourceVersion: resourceVersion } } } }, - '#withUid':: d.fn(help='UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { inlineVolumeSpec+: { storageos+: { secretRef+: { uid: uid } } } }, - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { inlineVolumeSpec+: { storageos+: { fsType: fsType } } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { inlineVolumeSpec+: { storageos+: { readOnly: readOnly } } }, - '#withVolumeName':: d.fn(help='VolumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.', args=[d.arg(name='volumeName', type=d.T.string)]), - withVolumeName(volumeName): { inlineVolumeSpec+: { storageos+: { volumeName: volumeName } } }, - '#withVolumeNamespace':: d.fn(help="VolumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod's namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to 'default' if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created.", args=[d.arg(name='volumeNamespace', type=d.T.string)]), - withVolumeNamespace(volumeNamespace): { inlineVolumeSpec+: { storageos+: { volumeNamespace: volumeNamespace } } }, - }, - '#vsphereVolume':: d.obj(help='Represents a vSphere volume resource.'), - vsphereVolume: { - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { inlineVolumeSpec+: { vsphereVolume+: { fsType: fsType } } }, - '#withStoragePolicyID':: d.fn(help='Storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.', args=[d.arg(name='storagePolicyID', type=d.T.string)]), - withStoragePolicyID(storagePolicyID): { inlineVolumeSpec+: { vsphereVolume+: { storagePolicyID: storagePolicyID } } }, - '#withStoragePolicyName':: d.fn(help='Storage Policy Based Management (SPBM) profile name.', args=[d.arg(name='storagePolicyName', type=d.T.string)]), - withStoragePolicyName(storagePolicyName): { inlineVolumeSpec+: { vsphereVolume+: { storagePolicyName: storagePolicyName } } }, - '#withVolumePath':: d.fn(help='Path that identifies vSphere volume vmdk', args=[d.arg(name='volumePath', type=d.T.string)]), - withVolumePath(volumePath): { inlineVolumeSpec+: { vsphereVolume+: { volumePath: volumePath } } }, - }, - '#withAccessModes':: d.fn(help='AccessModes contains all ways the volume can be mounted. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes', args=[d.arg(name='accessModes', type=d.T.array)]), - withAccessModes(accessModes): { inlineVolumeSpec+: { accessModes: if std.isArray(v=accessModes) then accessModes else [accessModes] } }, - '#withAccessModesMixin':: d.fn(help='AccessModes contains all ways the volume can be mounted. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='accessModes', type=d.T.array)]), - withAccessModesMixin(accessModes): { inlineVolumeSpec+: { accessModes+: if std.isArray(v=accessModes) then accessModes else [accessModes] } }, - '#withCapacity':: d.fn(help="A description of the persistent volume's resources and capacity. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity", args=[d.arg(name='capacity', type=d.T.object)]), - withCapacity(capacity): { inlineVolumeSpec+: { capacity: capacity } }, - '#withCapacityMixin':: d.fn(help="A description of the persistent volume's resources and capacity. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='capacity', type=d.T.object)]), - withCapacityMixin(capacity): { inlineVolumeSpec+: { capacity+: capacity } }, - '#withMountOptions':: d.fn(help='A list of mount options, e.g. ["ro", "soft"]. Not validated - mount will simply fail if one is invalid. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options', args=[d.arg(name='mountOptions', type=d.T.array)]), - withMountOptions(mountOptions): { inlineVolumeSpec+: { mountOptions: if std.isArray(v=mountOptions) then mountOptions else [mountOptions] } }, - '#withMountOptionsMixin':: d.fn(help='A list of mount options, e.g. ["ro", "soft"]. Not validated - mount will simply fail if one is invalid. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='mountOptions', type=d.T.array)]), - withMountOptionsMixin(mountOptions): { inlineVolumeSpec+: { mountOptions+: if std.isArray(v=mountOptions) then mountOptions else [mountOptions] } }, - '#withPersistentVolumeReclaimPolicy':: d.fn(help='What happens to a persistent volume when released from its claim. Valid options are Retain (default for manually created PersistentVolumes), Delete (default for dynamically provisioned PersistentVolumes), and Recycle (deprecated). Recycle must be supported by the volume plugin underlying this PersistentVolume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#reclaiming', args=[d.arg(name='persistentVolumeReclaimPolicy', type=d.T.string)]), - withPersistentVolumeReclaimPolicy(persistentVolumeReclaimPolicy): { inlineVolumeSpec+: { persistentVolumeReclaimPolicy: persistentVolumeReclaimPolicy } }, - '#withStorageClassName':: d.fn(help='Name of StorageClass to which this persistent volume belongs. Empty value means that this volume does not belong to any StorageClass.', args=[d.arg(name='storageClassName', type=d.T.string)]), - withStorageClassName(storageClassName): { inlineVolumeSpec+: { storageClassName: storageClassName } }, - '#withVolumeMode':: d.fn(help='volumeMode defines if a volume is intended to be used with a formatted filesystem or to remain in raw block state. Value of Filesystem is implied when not included in spec.', args=[d.arg(name='volumeMode', type=d.T.string)]), - withVolumeMode(volumeMode): { inlineVolumeSpec+: { volumeMode: volumeMode } }, - }, - '#withPersistentVolumeName':: d.fn(help='Name of the persistent volume to attach.', args=[d.arg(name='persistentVolumeName', type=d.T.string)]), - withPersistentVolumeName(persistentVolumeName): { persistentVolumeName: persistentVolumeName }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/volumeAttachmentSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/volumeAttachmentSpec.libsonnet deleted file mode 100644 index 29f116537cf4..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/volumeAttachmentSpec.libsonnet +++ /dev/null @@ -1,426 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='volumeAttachmentSpec', url='', help='VolumeAttachmentSpec is the specification of a VolumeAttachment request.'), - '#source':: d.obj(help='VolumeAttachmentSource represents a volume that should be attached. Right now only PersistenVolumes can be attached via external attacher, in future we may allow also inline volumes in pods. Exactly one member can be set.'), - source: { - '#inlineVolumeSpec':: d.obj(help='PersistentVolumeSpec is the specification of a persistent volume.'), - inlineVolumeSpec: { - '#awsElasticBlockStore':: d.obj(help='Represents a Persistent Disk resource in AWS.\n\nAn AWS EBS disk must exist before mounting to a container. The disk must also be in the same AWS zone as the kubelet. An AWS EBS disk can only be mounted as read/write once. AWS EBS volumes support ownership management and SELinux relabeling.'), - awsElasticBlockStore: { - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { source+: { inlineVolumeSpec+: { awsElasticBlockStore+: { fsType: fsType } } } }, - '#withPartition':: d.fn(help='The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).', args=[d.arg(name='partition', type=d.T.integer)]), - withPartition(partition): { source+: { inlineVolumeSpec+: { awsElasticBlockStore+: { partition: partition } } } }, - '#withReadOnly':: d.fn(help='Specify "true" to force and set the ReadOnly property in VolumeMounts to "true". If omitted, the default is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { source+: { inlineVolumeSpec+: { awsElasticBlockStore+: { readOnly: readOnly } } } }, - '#withVolumeID':: d.fn(help='Unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore', args=[d.arg(name='volumeID', type=d.T.string)]), - withVolumeID(volumeID): { source+: { inlineVolumeSpec+: { awsElasticBlockStore+: { volumeID: volumeID } } } }, - }, - '#azureDisk':: d.obj(help='AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.'), - azureDisk: { - '#withCachingMode':: d.fn(help='Host Caching mode: None, Read Only, Read Write.', args=[d.arg(name='cachingMode', type=d.T.string)]), - withCachingMode(cachingMode): { source+: { inlineVolumeSpec+: { azureDisk+: { cachingMode: cachingMode } } } }, - '#withDiskName':: d.fn(help='The Name of the data disk in the blob storage', args=[d.arg(name='diskName', type=d.T.string)]), - withDiskName(diskName): { source+: { inlineVolumeSpec+: { azureDisk+: { diskName: diskName } } } }, - '#withDiskURI':: d.fn(help='The URI the data disk in the blob storage', args=[d.arg(name='diskURI', type=d.T.string)]), - withDiskURI(diskURI): { source+: { inlineVolumeSpec+: { azureDisk+: { diskURI: diskURI } } } }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { source+: { inlineVolumeSpec+: { azureDisk+: { fsType: fsType } } } }, - '#withKind':: d.fn(help='Expected values Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { source+: { inlineVolumeSpec+: { azureDisk+: { kind: kind } } } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { source+: { inlineVolumeSpec+: { azureDisk+: { readOnly: readOnly } } } }, - }, - '#azureFile':: d.obj(help='AzureFile represents an Azure File Service mount on the host and bind mount to the pod.'), - azureFile: { - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { source+: { inlineVolumeSpec+: { azureFile+: { readOnly: readOnly } } } }, - '#withSecretName':: d.fn(help='the name of secret that contains Azure Storage Account Name and Key', args=[d.arg(name='secretName', type=d.T.string)]), - withSecretName(secretName): { source+: { inlineVolumeSpec+: { azureFile+: { secretName: secretName } } } }, - '#withSecretNamespace':: d.fn(help='the namespace of the secret that contains Azure Storage Account Name and Key default is the same as the Pod', args=[d.arg(name='secretNamespace', type=d.T.string)]), - withSecretNamespace(secretNamespace): { source+: { inlineVolumeSpec+: { azureFile+: { secretNamespace: secretNamespace } } } }, - '#withShareName':: d.fn(help='Share Name', args=[d.arg(name='shareName', type=d.T.string)]), - withShareName(shareName): { source+: { inlineVolumeSpec+: { azureFile+: { shareName: shareName } } } }, - }, - '#cephfs':: d.obj(help='Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling.'), - cephfs: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { source+: { inlineVolumeSpec+: { cephfs+: { secretRef+: { name: name } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { source+: { inlineVolumeSpec+: { cephfs+: { secretRef+: { namespace: namespace } } } } }, - }, - '#withMonitors':: d.fn(help='Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitors(monitors): { source+: { inlineVolumeSpec+: { cephfs+: { monitors: if std.isArray(v=monitors) then monitors else [monitors] } } } }, - '#withMonitorsMixin':: d.fn(help='Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitorsMixin(monitors): { source+: { inlineVolumeSpec+: { cephfs+: { monitors+: if std.isArray(v=monitors) then monitors else [monitors] } } } }, - '#withPath':: d.fn(help='Optional: Used as the mounted root, rather than the full Ceph tree, default is /', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { source+: { inlineVolumeSpec+: { cephfs+: { path: path } } } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { source+: { inlineVolumeSpec+: { cephfs+: { readOnly: readOnly } } } }, - '#withSecretFile':: d.fn(help='Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='secretFile', type=d.T.string)]), - withSecretFile(secretFile): { source+: { inlineVolumeSpec+: { cephfs+: { secretFile: secretFile } } } }, - '#withUser':: d.fn(help='Optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { source+: { inlineVolumeSpec+: { cephfs+: { user: user } } } }, - }, - '#cinder':: d.obj(help='Represents a cinder volume resource in Openstack. A Cinder volume must exist before mounting to a container. The volume must also be in the same region as the kubelet. Cinder volumes support ownership management and SELinux relabeling.'), - cinder: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { source+: { inlineVolumeSpec+: { cinder+: { secretRef+: { name: name } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { source+: { inlineVolumeSpec+: { cinder+: { secretRef+: { namespace: namespace } } } } }, - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { source+: { inlineVolumeSpec+: { cinder+: { fsType: fsType } } } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { source+: { inlineVolumeSpec+: { cinder+: { readOnly: readOnly } } } }, - '#withVolumeID':: d.fn(help='volume id used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md', args=[d.arg(name='volumeID', type=d.T.string)]), - withVolumeID(volumeID): { source+: { inlineVolumeSpec+: { cinder+: { volumeID: volumeID } } } }, - }, - '#claimRef':: d.obj(help='ObjectReference contains enough information to let you inspect or modify the referred object.'), - claimRef: { - '#withApiVersion':: d.fn(help='API version of the referent.', args=[d.arg(name='apiVersion', type=d.T.string)]), - withApiVersion(apiVersion): { source+: { inlineVolumeSpec+: { claimRef+: { apiVersion: apiVersion } } } }, - '#withFieldPath':: d.fn(help='If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { source+: { inlineVolumeSpec+: { claimRef+: { fieldPath: fieldPath } } } }, - '#withKind':: d.fn(help='Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { source+: { inlineVolumeSpec+: { claimRef+: { kind: kind } } } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { source+: { inlineVolumeSpec+: { claimRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { source+: { inlineVolumeSpec+: { claimRef+: { namespace: namespace } } } }, - '#withResourceVersion':: d.fn(help='Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { source+: { inlineVolumeSpec+: { claimRef+: { resourceVersion: resourceVersion } } } }, - '#withUid':: d.fn(help='UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { source+: { inlineVolumeSpec+: { claimRef+: { uid: uid } } } }, - }, - '#csi':: d.obj(help='Represents storage that is managed by an external CSI volume driver (Beta feature)'), - csi: { - '#controllerExpandSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - controllerExpandSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { source+: { inlineVolumeSpec+: { csi+: { controllerExpandSecretRef+: { name: name } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { source+: { inlineVolumeSpec+: { csi+: { controllerExpandSecretRef+: { namespace: namespace } } } } }, - }, - '#controllerPublishSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - controllerPublishSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { source+: { inlineVolumeSpec+: { csi+: { controllerPublishSecretRef+: { name: name } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { source+: { inlineVolumeSpec+: { csi+: { controllerPublishSecretRef+: { namespace: namespace } } } } }, - }, - '#nodePublishSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - nodePublishSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { source+: { inlineVolumeSpec+: { csi+: { nodePublishSecretRef+: { name: name } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { source+: { inlineVolumeSpec+: { csi+: { nodePublishSecretRef+: { namespace: namespace } } } } }, - }, - '#nodeStageSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - nodeStageSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { source+: { inlineVolumeSpec+: { csi+: { nodeStageSecretRef+: { name: name } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { source+: { inlineVolumeSpec+: { csi+: { nodeStageSecretRef+: { namespace: namespace } } } } }, - }, - '#withDriver':: d.fn(help='Driver is the name of the driver to use for this volume. Required.', args=[d.arg(name='driver', type=d.T.string)]), - withDriver(driver): { source+: { inlineVolumeSpec+: { csi+: { driver: driver } } } }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs".', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { source+: { inlineVolumeSpec+: { csi+: { fsType: fsType } } } }, - '#withReadOnly':: d.fn(help='Optional: The value to pass to ControllerPublishVolumeRequest. Defaults to false (read/write).', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { source+: { inlineVolumeSpec+: { csi+: { readOnly: readOnly } } } }, - '#withVolumeAttributes':: d.fn(help='Attributes of the volume to publish.', args=[d.arg(name='volumeAttributes', type=d.T.object)]), - withVolumeAttributes(volumeAttributes): { source+: { inlineVolumeSpec+: { csi+: { volumeAttributes: volumeAttributes } } } }, - '#withVolumeAttributesMixin':: d.fn(help='Attributes of the volume to publish.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumeAttributes', type=d.T.object)]), - withVolumeAttributesMixin(volumeAttributes): { source+: { inlineVolumeSpec+: { csi+: { volumeAttributes+: volumeAttributes } } } }, - '#withVolumeHandle':: d.fn(help='VolumeHandle is the unique volume name returned by the CSI volume plugin’s CreateVolume to refer to the volume on all subsequent calls. Required.', args=[d.arg(name='volumeHandle', type=d.T.string)]), - withVolumeHandle(volumeHandle): { source+: { inlineVolumeSpec+: { csi+: { volumeHandle: volumeHandle } } } }, - }, - '#fc':: d.obj(help='Represents a Fibre Channel volume. Fibre Channel volumes can only be mounted as read/write once. Fibre Channel volumes support ownership management and SELinux relabeling.'), - fc: { - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { source+: { inlineVolumeSpec+: { fc+: { fsType: fsType } } } }, - '#withLun':: d.fn(help='Optional: FC target lun number', args=[d.arg(name='lun', type=d.T.integer)]), - withLun(lun): { source+: { inlineVolumeSpec+: { fc+: { lun: lun } } } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { source+: { inlineVolumeSpec+: { fc+: { readOnly: readOnly } } } }, - '#withTargetWWNs':: d.fn(help='Optional: FC target worldwide names (WWNs)', args=[d.arg(name='targetWWNs', type=d.T.array)]), - withTargetWWNs(targetWWNs): { source+: { inlineVolumeSpec+: { fc+: { targetWWNs: if std.isArray(v=targetWWNs) then targetWWNs else [targetWWNs] } } } }, - '#withTargetWWNsMixin':: d.fn(help='Optional: FC target worldwide names (WWNs)\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='targetWWNs', type=d.T.array)]), - withTargetWWNsMixin(targetWWNs): { source+: { inlineVolumeSpec+: { fc+: { targetWWNs+: if std.isArray(v=targetWWNs) then targetWWNs else [targetWWNs] } } } }, - '#withWwids':: d.fn(help='Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.', args=[d.arg(name='wwids', type=d.T.array)]), - withWwids(wwids): { source+: { inlineVolumeSpec+: { fc+: { wwids: if std.isArray(v=wwids) then wwids else [wwids] } } } }, - '#withWwidsMixin':: d.fn(help='Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='wwids', type=d.T.array)]), - withWwidsMixin(wwids): { source+: { inlineVolumeSpec+: { fc+: { wwids+: if std.isArray(v=wwids) then wwids else [wwids] } } } }, - }, - '#flexVolume':: d.obj(help='FlexPersistentVolumeSource represents a generic persistent volume resource that is provisioned/attached using an exec based plugin.'), - flexVolume: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { source+: { inlineVolumeSpec+: { flexVolume+: { secretRef+: { name: name } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { source+: { inlineVolumeSpec+: { flexVolume+: { secretRef+: { namespace: namespace } } } } }, - }, - '#withDriver':: d.fn(help='Driver is the name of the driver to use for this volume.', args=[d.arg(name='driver', type=d.T.string)]), - withDriver(driver): { source+: { inlineVolumeSpec+: { flexVolume+: { driver: driver } } } }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { source+: { inlineVolumeSpec+: { flexVolume+: { fsType: fsType } } } }, - '#withOptions':: d.fn(help='Optional: Extra command options if any.', args=[d.arg(name='options', type=d.T.object)]), - withOptions(options): { source+: { inlineVolumeSpec+: { flexVolume+: { options: options } } } }, - '#withOptionsMixin':: d.fn(help='Optional: Extra command options if any.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.object)]), - withOptionsMixin(options): { source+: { inlineVolumeSpec+: { flexVolume+: { options+: options } } } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { source+: { inlineVolumeSpec+: { flexVolume+: { readOnly: readOnly } } } }, - }, - '#flocker':: d.obj(help='Represents a Flocker volume mounted by the Flocker agent. One and only one of datasetName and datasetUUID should be set. Flocker volumes do not support ownership management or SELinux relabeling.'), - flocker: { - '#withDatasetName':: d.fn(help='Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated', args=[d.arg(name='datasetName', type=d.T.string)]), - withDatasetName(datasetName): { source+: { inlineVolumeSpec+: { flocker+: { datasetName: datasetName } } } }, - '#withDatasetUUID':: d.fn(help='UUID of the dataset. This is unique identifier of a Flocker dataset', args=[d.arg(name='datasetUUID', type=d.T.string)]), - withDatasetUUID(datasetUUID): { source+: { inlineVolumeSpec+: { flocker+: { datasetUUID: datasetUUID } } } }, - }, - '#gcePersistentDisk':: d.obj(help='Represents a Persistent Disk resource in Google Compute Engine.\n\nA GCE PD must exist before mounting to a container. The disk must also be in the same GCE project and zone as the kubelet. A GCE PD can only be mounted as read/write once or read-only many times. GCE PDs support ownership management and SELinux relabeling.'), - gcePersistentDisk: { - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { source+: { inlineVolumeSpec+: { gcePersistentDisk+: { fsType: fsType } } } }, - '#withPartition':: d.fn(help='The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='partition', type=d.T.integer)]), - withPartition(partition): { source+: { inlineVolumeSpec+: { gcePersistentDisk+: { partition: partition } } } }, - '#withPdName':: d.fn(help='Unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='pdName', type=d.T.string)]), - withPdName(pdName): { source+: { inlineVolumeSpec+: { gcePersistentDisk+: { pdName: pdName } } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { source+: { inlineVolumeSpec+: { gcePersistentDisk+: { readOnly: readOnly } } } }, - }, - '#glusterfs':: d.obj(help='Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling.'), - glusterfs: { - '#withEndpoints':: d.fn(help='EndpointsName is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='endpoints', type=d.T.string)]), - withEndpoints(endpoints): { source+: { inlineVolumeSpec+: { glusterfs+: { endpoints: endpoints } } } }, - '#withEndpointsNamespace':: d.fn(help='EndpointsNamespace is the namespace that contains Glusterfs endpoint. If this field is empty, the EndpointNamespace defaults to the same namespace as the bound PVC. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='endpointsNamespace', type=d.T.string)]), - withEndpointsNamespace(endpointsNamespace): { source+: { inlineVolumeSpec+: { glusterfs+: { endpointsNamespace: endpointsNamespace } } } }, - '#withPath':: d.fn(help='Path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { source+: { inlineVolumeSpec+: { glusterfs+: { path: path } } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { source+: { inlineVolumeSpec+: { glusterfs+: { readOnly: readOnly } } } }, - }, - '#hostPath':: d.obj(help='Represents a host path mapped into a pod. Host path volumes do not support ownership management or SELinux relabeling.'), - hostPath: { - '#withPath':: d.fn(help='Path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { source+: { inlineVolumeSpec+: { hostPath+: { path: path } } } }, - '#withType':: d.fn(help='Type for HostPath Volume Defaults to "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { source+: { inlineVolumeSpec+: { hostPath+: { type: type } } } }, - }, - '#iscsi':: d.obj(help='ISCSIPersistentVolumeSource represents an ISCSI disk. ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling.'), - iscsi: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { source+: { inlineVolumeSpec+: { iscsi+: { secretRef+: { name: name } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { source+: { inlineVolumeSpec+: { iscsi+: { secretRef+: { namespace: namespace } } } } }, - }, - '#withChapAuthDiscovery':: d.fn(help='whether support iSCSI Discovery CHAP authentication', args=[d.arg(name='chapAuthDiscovery', type=d.T.boolean)]), - withChapAuthDiscovery(chapAuthDiscovery): { source+: { inlineVolumeSpec+: { iscsi+: { chapAuthDiscovery: chapAuthDiscovery } } } }, - '#withChapAuthSession':: d.fn(help='whether support iSCSI Session CHAP authentication', args=[d.arg(name='chapAuthSession', type=d.T.boolean)]), - withChapAuthSession(chapAuthSession): { source+: { inlineVolumeSpec+: { iscsi+: { chapAuthSession: chapAuthSession } } } }, - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { source+: { inlineVolumeSpec+: { iscsi+: { fsType: fsType } } } }, - '#withInitiatorName':: d.fn(help='Custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface : will be created for the connection.', args=[d.arg(name='initiatorName', type=d.T.string)]), - withInitiatorName(initiatorName): { source+: { inlineVolumeSpec+: { iscsi+: { initiatorName: initiatorName } } } }, - '#withIqn':: d.fn(help='Target iSCSI Qualified Name.', args=[d.arg(name='iqn', type=d.T.string)]), - withIqn(iqn): { source+: { inlineVolumeSpec+: { iscsi+: { iqn: iqn } } } }, - '#withIscsiInterface':: d.fn(help="iSCSI Interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).", args=[d.arg(name='iscsiInterface', type=d.T.string)]), - withIscsiInterface(iscsiInterface): { source+: { inlineVolumeSpec+: { iscsi+: { iscsiInterface: iscsiInterface } } } }, - '#withLun':: d.fn(help='iSCSI Target Lun number.', args=[d.arg(name='lun', type=d.T.integer)]), - withLun(lun): { source+: { inlineVolumeSpec+: { iscsi+: { lun: lun } } } }, - '#withPortals':: d.fn(help='iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).', args=[d.arg(name='portals', type=d.T.array)]), - withPortals(portals): { source+: { inlineVolumeSpec+: { iscsi+: { portals: if std.isArray(v=portals) then portals else [portals] } } } }, - '#withPortalsMixin':: d.fn(help='iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='portals', type=d.T.array)]), - withPortalsMixin(portals): { source+: { inlineVolumeSpec+: { iscsi+: { portals+: if std.isArray(v=portals) then portals else [portals] } } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { source+: { inlineVolumeSpec+: { iscsi+: { readOnly: readOnly } } } }, - '#withTargetPortal':: d.fn(help='iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).', args=[d.arg(name='targetPortal', type=d.T.string)]), - withTargetPortal(targetPortal): { source+: { inlineVolumeSpec+: { iscsi+: { targetPortal: targetPortal } } } }, - }, - '#local':: d.obj(help='Local represents directly-attached storage with node affinity (Beta feature)'), - 'local': { - '#withFsType':: d.fn(help='Filesystem type to mount. It applies only when the Path is a block device. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default value is to auto-select a fileystem if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { source+: { inlineVolumeSpec+: { 'local'+: { fsType: fsType } } } }, - '#withPath':: d.fn(help='The full path to the volume on the node. It can be either a directory or block device (disk, partition, ...).', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { source+: { inlineVolumeSpec+: { 'local'+: { path: path } } } }, - }, - '#nfs':: d.obj(help='Represents an NFS mount that lasts the lifetime of a pod. NFS volumes do not support ownership management or SELinux relabeling.'), - nfs: { - '#withPath':: d.fn(help='Path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { source+: { inlineVolumeSpec+: { nfs+: { path: path } } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { source+: { inlineVolumeSpec+: { nfs+: { readOnly: readOnly } } } }, - '#withServer':: d.fn(help='Server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs', args=[d.arg(name='server', type=d.T.string)]), - withServer(server): { source+: { inlineVolumeSpec+: { nfs+: { server: server } } } }, - }, - '#nodeAffinity':: d.obj(help='VolumeNodeAffinity defines constraints that limit what nodes this volume can be accessed from.'), - nodeAffinity: { - '#required':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - required: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { source+: { inlineVolumeSpec+: { nodeAffinity+: { required+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { source+: { inlineVolumeSpec+: { nodeAffinity+: { required+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } }, - }, - }, - '#photonPersistentDisk':: d.obj(help='Represents a Photon Controller persistent disk resource.'), - photonPersistentDisk: { - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { source+: { inlineVolumeSpec+: { photonPersistentDisk+: { fsType: fsType } } } }, - '#withPdID':: d.fn(help='ID that identifies Photon Controller persistent disk', args=[d.arg(name='pdID', type=d.T.string)]), - withPdID(pdID): { source+: { inlineVolumeSpec+: { photonPersistentDisk+: { pdID: pdID } } } }, - }, - '#portworxVolume':: d.obj(help='PortworxVolumeSource represents a Portworx volume resource.'), - portworxVolume: { - '#withFsType':: d.fn(help='FSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { source+: { inlineVolumeSpec+: { portworxVolume+: { fsType: fsType } } } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { source+: { inlineVolumeSpec+: { portworxVolume+: { readOnly: readOnly } } } }, - '#withVolumeID':: d.fn(help='VolumeID uniquely identifies a Portworx volume', args=[d.arg(name='volumeID', type=d.T.string)]), - withVolumeID(volumeID): { source+: { inlineVolumeSpec+: { portworxVolume+: { volumeID: volumeID } } } }, - }, - '#quobyte':: d.obj(help='Represents a Quobyte mount that lasts the lifetime of a pod. Quobyte volumes do not support ownership management or SELinux relabeling.'), - quobyte: { - '#withGroup':: d.fn(help='Group to map volume access to Default is no group', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { source+: { inlineVolumeSpec+: { quobyte+: { group: group } } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { source+: { inlineVolumeSpec+: { quobyte+: { readOnly: readOnly } } } }, - '#withRegistry':: d.fn(help='Registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes', args=[d.arg(name='registry', type=d.T.string)]), - withRegistry(registry): { source+: { inlineVolumeSpec+: { quobyte+: { registry: registry } } } }, - '#withTenant':: d.fn(help='Tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin', args=[d.arg(name='tenant', type=d.T.string)]), - withTenant(tenant): { source+: { inlineVolumeSpec+: { quobyte+: { tenant: tenant } } } }, - '#withUser':: d.fn(help='User to map volume access to Defaults to serivceaccount user', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { source+: { inlineVolumeSpec+: { quobyte+: { user: user } } } }, - '#withVolume':: d.fn(help='Volume is a string that references an already created Quobyte volume by name.', args=[d.arg(name='volume', type=d.T.string)]), - withVolume(volume): { source+: { inlineVolumeSpec+: { quobyte+: { volume: volume } } } }, - }, - '#rbd':: d.obj(help='Represents a Rados Block Device mount that lasts the lifetime of a pod. RBD volumes support ownership management and SELinux relabeling.'), - rbd: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { source+: { inlineVolumeSpec+: { rbd+: { secretRef+: { name: name } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { source+: { inlineVolumeSpec+: { rbd+: { secretRef+: { namespace: namespace } } } } }, - }, - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { source+: { inlineVolumeSpec+: { rbd+: { fsType: fsType } } } }, - '#withImage':: d.fn(help='The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='image', type=d.T.string)]), - withImage(image): { source+: { inlineVolumeSpec+: { rbd+: { image: image } } } }, - '#withKeyring':: d.fn(help='Keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='keyring', type=d.T.string)]), - withKeyring(keyring): { source+: { inlineVolumeSpec+: { rbd+: { keyring: keyring } } } }, - '#withMonitors':: d.fn(help='A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitors(monitors): { source+: { inlineVolumeSpec+: { rbd+: { monitors: if std.isArray(v=monitors) then monitors else [monitors] } } } }, - '#withMonitorsMixin':: d.fn(help='A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitorsMixin(monitors): { source+: { inlineVolumeSpec+: { rbd+: { monitors+: if std.isArray(v=monitors) then monitors else [monitors] } } } }, - '#withPool':: d.fn(help='The rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='pool', type=d.T.string)]), - withPool(pool): { source+: { inlineVolumeSpec+: { rbd+: { pool: pool } } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { source+: { inlineVolumeSpec+: { rbd+: { readOnly: readOnly } } } }, - '#withUser':: d.fn(help='The rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { source+: { inlineVolumeSpec+: { rbd+: { user: user } } } }, - }, - '#scaleIO':: d.obj(help='ScaleIOPersistentVolumeSource represents a persistent ScaleIO volume'), - scaleIO: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { source+: { inlineVolumeSpec+: { scaleIO+: { secretRef+: { name: name } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { source+: { inlineVolumeSpec+: { scaleIO+: { secretRef+: { namespace: namespace } } } } }, - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Default is "xfs"', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { source+: { inlineVolumeSpec+: { scaleIO+: { fsType: fsType } } } }, - '#withGateway':: d.fn(help='The host address of the ScaleIO API Gateway.', args=[d.arg(name='gateway', type=d.T.string)]), - withGateway(gateway): { source+: { inlineVolumeSpec+: { scaleIO+: { gateway: gateway } } } }, - '#withProtectionDomain':: d.fn(help='The name of the ScaleIO Protection Domain for the configured storage.', args=[d.arg(name='protectionDomain', type=d.T.string)]), - withProtectionDomain(protectionDomain): { source+: { inlineVolumeSpec+: { scaleIO+: { protectionDomain: protectionDomain } } } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { source+: { inlineVolumeSpec+: { scaleIO+: { readOnly: readOnly } } } }, - '#withSslEnabled':: d.fn(help='Flag to enable/disable SSL communication with Gateway, default false', args=[d.arg(name='sslEnabled', type=d.T.boolean)]), - withSslEnabled(sslEnabled): { source+: { inlineVolumeSpec+: { scaleIO+: { sslEnabled: sslEnabled } } } }, - '#withStorageMode':: d.fn(help='Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.', args=[d.arg(name='storageMode', type=d.T.string)]), - withStorageMode(storageMode): { source+: { inlineVolumeSpec+: { scaleIO+: { storageMode: storageMode } } } }, - '#withStoragePool':: d.fn(help='The ScaleIO Storage Pool associated with the protection domain.', args=[d.arg(name='storagePool', type=d.T.string)]), - withStoragePool(storagePool): { source+: { inlineVolumeSpec+: { scaleIO+: { storagePool: storagePool } } } }, - '#withSystem':: d.fn(help='The name of the storage system as configured in ScaleIO.', args=[d.arg(name='system', type=d.T.string)]), - withSystem(system): { source+: { inlineVolumeSpec+: { scaleIO+: { system: system } } } }, - '#withVolumeName':: d.fn(help='The name of a volume already created in the ScaleIO system that is associated with this volume source.', args=[d.arg(name='volumeName', type=d.T.string)]), - withVolumeName(volumeName): { source+: { inlineVolumeSpec+: { scaleIO+: { volumeName: volumeName } } } }, - }, - '#storageos':: d.obj(help='Represents a StorageOS persistent volume resource.'), - storageos: { - '#secretRef':: d.obj(help='ObjectReference contains enough information to let you inspect or modify the referred object.'), - secretRef: { - '#withApiVersion':: d.fn(help='API version of the referent.', args=[d.arg(name='apiVersion', type=d.T.string)]), - withApiVersion(apiVersion): { source+: { inlineVolumeSpec+: { storageos+: { secretRef+: { apiVersion: apiVersion } } } } }, - '#withFieldPath':: d.fn(help='If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { source+: { inlineVolumeSpec+: { storageos+: { secretRef+: { fieldPath: fieldPath } } } } }, - '#withKind':: d.fn(help='Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { source+: { inlineVolumeSpec+: { storageos+: { secretRef+: { kind: kind } } } } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { source+: { inlineVolumeSpec+: { storageos+: { secretRef+: { name: name } } } } }, - '#withNamespace':: d.fn(help='Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { source+: { inlineVolumeSpec+: { storageos+: { secretRef+: { namespace: namespace } } } } }, - '#withResourceVersion':: d.fn(help='Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { source+: { inlineVolumeSpec+: { storageos+: { secretRef+: { resourceVersion: resourceVersion } } } } }, - '#withUid':: d.fn(help='UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { source+: { inlineVolumeSpec+: { storageos+: { secretRef+: { uid: uid } } } } }, - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { source+: { inlineVolumeSpec+: { storageos+: { fsType: fsType } } } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { source+: { inlineVolumeSpec+: { storageos+: { readOnly: readOnly } } } }, - '#withVolumeName':: d.fn(help='VolumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.', args=[d.arg(name='volumeName', type=d.T.string)]), - withVolumeName(volumeName): { source+: { inlineVolumeSpec+: { storageos+: { volumeName: volumeName } } } }, - '#withVolumeNamespace':: d.fn(help="VolumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod's namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to 'default' if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created.", args=[d.arg(name='volumeNamespace', type=d.T.string)]), - withVolumeNamespace(volumeNamespace): { source+: { inlineVolumeSpec+: { storageos+: { volumeNamespace: volumeNamespace } } } }, - }, - '#vsphereVolume':: d.obj(help='Represents a vSphere volume resource.'), - vsphereVolume: { - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { source+: { inlineVolumeSpec+: { vsphereVolume+: { fsType: fsType } } } }, - '#withStoragePolicyID':: d.fn(help='Storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.', args=[d.arg(name='storagePolicyID', type=d.T.string)]), - withStoragePolicyID(storagePolicyID): { source+: { inlineVolumeSpec+: { vsphereVolume+: { storagePolicyID: storagePolicyID } } } }, - '#withStoragePolicyName':: d.fn(help='Storage Policy Based Management (SPBM) profile name.', args=[d.arg(name='storagePolicyName', type=d.T.string)]), - withStoragePolicyName(storagePolicyName): { source+: { inlineVolumeSpec+: { vsphereVolume+: { storagePolicyName: storagePolicyName } } } }, - '#withVolumePath':: d.fn(help='Path that identifies vSphere volume vmdk', args=[d.arg(name='volumePath', type=d.T.string)]), - withVolumePath(volumePath): { source+: { inlineVolumeSpec+: { vsphereVolume+: { volumePath: volumePath } } } }, - }, - '#withAccessModes':: d.fn(help='AccessModes contains all ways the volume can be mounted. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes', args=[d.arg(name='accessModes', type=d.T.array)]), - withAccessModes(accessModes): { source+: { inlineVolumeSpec+: { accessModes: if std.isArray(v=accessModes) then accessModes else [accessModes] } } }, - '#withAccessModesMixin':: d.fn(help='AccessModes contains all ways the volume can be mounted. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='accessModes', type=d.T.array)]), - withAccessModesMixin(accessModes): { source+: { inlineVolumeSpec+: { accessModes+: if std.isArray(v=accessModes) then accessModes else [accessModes] } } }, - '#withCapacity':: d.fn(help="A description of the persistent volume's resources and capacity. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity", args=[d.arg(name='capacity', type=d.T.object)]), - withCapacity(capacity): { source+: { inlineVolumeSpec+: { capacity: capacity } } }, - '#withCapacityMixin':: d.fn(help="A description of the persistent volume's resources and capacity. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='capacity', type=d.T.object)]), - withCapacityMixin(capacity): { source+: { inlineVolumeSpec+: { capacity+: capacity } } }, - '#withMountOptions':: d.fn(help='A list of mount options, e.g. ["ro", "soft"]. Not validated - mount will simply fail if one is invalid. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options', args=[d.arg(name='mountOptions', type=d.T.array)]), - withMountOptions(mountOptions): { source+: { inlineVolumeSpec+: { mountOptions: if std.isArray(v=mountOptions) then mountOptions else [mountOptions] } } }, - '#withMountOptionsMixin':: d.fn(help='A list of mount options, e.g. ["ro", "soft"]. Not validated - mount will simply fail if one is invalid. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='mountOptions', type=d.T.array)]), - withMountOptionsMixin(mountOptions): { source+: { inlineVolumeSpec+: { mountOptions+: if std.isArray(v=mountOptions) then mountOptions else [mountOptions] } } }, - '#withPersistentVolumeReclaimPolicy':: d.fn(help='What happens to a persistent volume when released from its claim. Valid options are Retain (default for manually created PersistentVolumes), Delete (default for dynamically provisioned PersistentVolumes), and Recycle (deprecated). Recycle must be supported by the volume plugin underlying this PersistentVolume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#reclaiming', args=[d.arg(name='persistentVolumeReclaimPolicy', type=d.T.string)]), - withPersistentVolumeReclaimPolicy(persistentVolumeReclaimPolicy): { source+: { inlineVolumeSpec+: { persistentVolumeReclaimPolicy: persistentVolumeReclaimPolicy } } }, - '#withStorageClassName':: d.fn(help='Name of StorageClass to which this persistent volume belongs. Empty value means that this volume does not belong to any StorageClass.', args=[d.arg(name='storageClassName', type=d.T.string)]), - withStorageClassName(storageClassName): { source+: { inlineVolumeSpec+: { storageClassName: storageClassName } } }, - '#withVolumeMode':: d.fn(help='volumeMode defines if a volume is intended to be used with a formatted filesystem or to remain in raw block state. Value of Filesystem is implied when not included in spec.', args=[d.arg(name='volumeMode', type=d.T.string)]), - withVolumeMode(volumeMode): { source+: { inlineVolumeSpec+: { volumeMode: volumeMode } } }, - }, - '#withPersistentVolumeName':: d.fn(help='Name of the persistent volume to attach.', args=[d.arg(name='persistentVolumeName', type=d.T.string)]), - withPersistentVolumeName(persistentVolumeName): { source+: { persistentVolumeName: persistentVolumeName } }, - }, - '#withAttacher':: d.fn(help='Attacher indicates the name of the volume driver that MUST handle this request. This is the name returned by GetPluginName().', args=[d.arg(name='attacher', type=d.T.string)]), - withAttacher(attacher): { attacher: attacher }, - '#withNodeName':: d.fn(help='The node that the volume should be attached to.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { nodeName: nodeName }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/volumeAttachmentStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/volumeAttachmentStatus.libsonnet deleted file mode 100644 index 7d14c51ec30d..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/volumeAttachmentStatus.libsonnet +++ /dev/null @@ -1,26 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='volumeAttachmentStatus', url='', help='VolumeAttachmentStatus is the status of a VolumeAttachment request.'), - '#attachError':: d.obj(help='VolumeError captures an error encountered during a volume operation.'), - attachError: { - '#withMessage':: d.fn(help='String detailing the error encountered during Attach or Detach operation. This string may be logged, so it should not contain sensitive information.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { attachError+: { message: message } }, - '#withTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='time', type=d.T.string)]), - withTime(time): { attachError+: { time: time } }, - }, - '#detachError':: d.obj(help='VolumeError captures an error encountered during a volume operation.'), - detachError: { - '#withMessage':: d.fn(help='String detailing the error encountered during Attach or Detach operation. This string may be logged, so it should not contain sensitive information.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { detachError+: { message: message } }, - '#withTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='time', type=d.T.string)]), - withTime(time): { detachError+: { time: time } }, - }, - '#withAttached':: d.fn(help='Indicates the volume is successfully attached. This field must only be set by the entity completing the attach operation, i.e. the external-attacher.', args=[d.arg(name='attached', type=d.T.boolean)]), - withAttached(attached): { attached: attached }, - '#withAttachmentMetadata':: d.fn(help='Upon successful attach, this field is populated with any information returned by the attach operation that must be passed into subsequent WaitForAttach or Mount calls. This field must only be set by the entity completing the attach operation, i.e. the external-attacher.', args=[d.arg(name='attachmentMetadata', type=d.T.object)]), - withAttachmentMetadata(attachmentMetadata): { attachmentMetadata: attachmentMetadata }, - '#withAttachmentMetadataMixin':: d.fn(help='Upon successful attach, this field is populated with any information returned by the attach operation that must be passed into subsequent WaitForAttach or Mount calls. This field must only be set by the entity completing the attach operation, i.e. the external-attacher.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='attachmentMetadata', type=d.T.object)]), - withAttachmentMetadataMixin(attachmentMetadata): { attachmentMetadata+: attachmentMetadata }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/volumeError.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/volumeError.libsonnet deleted file mode 100644 index aea460dc2e1d..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/volumeError.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='volumeError', url='', help='VolumeError captures an error encountered during a volume operation.'), - '#withMessage':: d.fn(help='String detailing the error encountered during Attach or Detach operation. This string may be logged, so it should not contain sensitive information.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='time', type=d.T.string)]), - withTime(time): { time: time }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/volumeNodeResources.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/volumeNodeResources.libsonnet deleted file mode 100644 index 3406637ef9ea..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1/volumeNodeResources.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='volumeNodeResources', url='', help='VolumeNodeResources is a set of resource limits for scheduling of volumes.'), - '#withCount':: d.fn(help='Maximum number of unique volumes managed by the CSI driver that can be used on a node. A volume that is both attached and mounted on a node is considered to be used once, not twice. The same rule applies for a unique volume that is shared among multiple pods on the same node. If this field is not specified, then the supported number of volumes on this node is unbounded.', args=[d.arg(name='count', type=d.T.integer)]), - withCount(count): { count: count }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1alpha1/csiStorageCapacity.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1alpha1/csiStorageCapacity.libsonnet deleted file mode 100644 index 85869eabc951..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1alpha1/csiStorageCapacity.libsonnet +++ /dev/null @@ -1,73 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='csiStorageCapacity', url='', help='CSIStorageCapacity stores the result of one CSI GetCapacity call. For a given StorageClass, this describes the available capacity in a particular topology segment. This can be used when considering where to instantiate new PersistentVolumes.\n\nFor example this can express things like: - StorageClass "standard" has "1234 GiB" available in "topology.kubernetes.io/zone=us-east1" - StorageClass "localssd" has "10 GiB" available in "kubernetes.io/hostname=knode-abc123"\n\nThe following three cases all imply that no capacity is available for a certain combination: - no object exists with suitable topology and storage class name - such an object exists, but the capacity is unset - such an object exists, but the capacity is zero\n\nThe producer of these objects can decide which approach is more suitable.\n\nThey are consumed by the kube-scheduler if the CSIStorageCapacity beta feature gate is enabled there and a CSI driver opts into capacity-aware scheduling with CSIDriver.StorageCapacity.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Csistoragecapacity', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'storage.k8s.io/v1alpha1', - kind: 'CsiStorageCapacity', - } + self.metadata.withName(name=name), - '#nodeTopology':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - nodeTopology: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { nodeTopology+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { nodeTopology+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { nodeTopology+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { nodeTopology+: { matchLabels+: matchLabels } }, - }, - '#withCapacity':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='capacity', type=d.T.string)]), - withCapacity(capacity): { capacity: capacity }, - '#withMaximumVolumeSize':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='maximumVolumeSize', type=d.T.string)]), - withMaximumVolumeSize(maximumVolumeSize): { maximumVolumeSize: maximumVolumeSize }, - '#withStorageClassName':: d.fn(help='The name of the StorageClass that the reported capacity applies to. It must meet the same requirements as the name of a StorageClass object (non-empty, DNS subdomain). If that object no longer exists, the CSIStorageCapacity object is obsolete and should be removed by its creator. This field is immutable.', args=[d.arg(name='storageClassName', type=d.T.string)]), - withStorageClassName(storageClassName): { storageClassName: storageClassName }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1alpha1/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1alpha1/main.libsonnet deleted file mode 100644 index d84b7da6f7fb..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1alpha1/main.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1alpha1', url='', help=''), - csiStorageCapacity: (import 'csiStorageCapacity.libsonnet'), - volumeAttachment: (import 'volumeAttachment.libsonnet'), - volumeAttachmentSource: (import 'volumeAttachmentSource.libsonnet'), - volumeAttachmentSpec: (import 'volumeAttachmentSpec.libsonnet'), - volumeAttachmentStatus: (import 'volumeAttachmentStatus.libsonnet'), - volumeError: (import 'volumeError.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1alpha1/volumeAttachment.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1alpha1/volumeAttachment.libsonnet deleted file mode 100644 index 3a251d3f536b..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1alpha1/volumeAttachment.libsonnet +++ /dev/null @@ -1,479 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='volumeAttachment', url='', help='VolumeAttachment captures the intent to attach or detach the specified volume to/from the specified node.\n\nVolumeAttachment objects are non-namespaced.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Volumeattachment', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'storage.k8s.io/v1alpha1', - kind: 'VolumeAttachment', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='VolumeAttachmentSpec is the specification of a VolumeAttachment request.'), - spec: { - '#source':: d.obj(help='VolumeAttachmentSource represents a volume that should be attached. Right now only PersistenVolumes can be attached via external attacher, in future we may allow also inline volumes in pods. Exactly one member can be set.'), - source: { - '#inlineVolumeSpec':: d.obj(help='PersistentVolumeSpec is the specification of a persistent volume.'), - inlineVolumeSpec: { - '#awsElasticBlockStore':: d.obj(help='Represents a Persistent Disk resource in AWS.\n\nAn AWS EBS disk must exist before mounting to a container. The disk must also be in the same AWS zone as the kubelet. An AWS EBS disk can only be mounted as read/write once. AWS EBS volumes support ownership management and SELinux relabeling.'), - awsElasticBlockStore: { - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { source+: { inlineVolumeSpec+: { awsElasticBlockStore+: { fsType: fsType } } } } }, - '#withPartition':: d.fn(help='The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).', args=[d.arg(name='partition', type=d.T.integer)]), - withPartition(partition): { spec+: { source+: { inlineVolumeSpec+: { awsElasticBlockStore+: { partition: partition } } } } }, - '#withReadOnly':: d.fn(help='Specify "true" to force and set the ReadOnly property in VolumeMounts to "true". If omitted, the default is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { source+: { inlineVolumeSpec+: { awsElasticBlockStore+: { readOnly: readOnly } } } } }, - '#withVolumeID':: d.fn(help='Unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore', args=[d.arg(name='volumeID', type=d.T.string)]), - withVolumeID(volumeID): { spec+: { source+: { inlineVolumeSpec+: { awsElasticBlockStore+: { volumeID: volumeID } } } } }, - }, - '#azureDisk':: d.obj(help='AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.'), - azureDisk: { - '#withCachingMode':: d.fn(help='Host Caching mode: None, Read Only, Read Write.', args=[d.arg(name='cachingMode', type=d.T.string)]), - withCachingMode(cachingMode): { spec+: { source+: { inlineVolumeSpec+: { azureDisk+: { cachingMode: cachingMode } } } } }, - '#withDiskName':: d.fn(help='The Name of the data disk in the blob storage', args=[d.arg(name='diskName', type=d.T.string)]), - withDiskName(diskName): { spec+: { source+: { inlineVolumeSpec+: { azureDisk+: { diskName: diskName } } } } }, - '#withDiskURI':: d.fn(help='The URI the data disk in the blob storage', args=[d.arg(name='diskURI', type=d.T.string)]), - withDiskURI(diskURI): { spec+: { source+: { inlineVolumeSpec+: { azureDisk+: { diskURI: diskURI } } } } }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { source+: { inlineVolumeSpec+: { azureDisk+: { fsType: fsType } } } } }, - '#withKind':: d.fn(help='Expected values Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { source+: { inlineVolumeSpec+: { azureDisk+: { kind: kind } } } } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { source+: { inlineVolumeSpec+: { azureDisk+: { readOnly: readOnly } } } } }, - }, - '#azureFile':: d.obj(help='AzureFile represents an Azure File Service mount on the host and bind mount to the pod.'), - azureFile: { - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { source+: { inlineVolumeSpec+: { azureFile+: { readOnly: readOnly } } } } }, - '#withSecretName':: d.fn(help='the name of secret that contains Azure Storage Account Name and Key', args=[d.arg(name='secretName', type=d.T.string)]), - withSecretName(secretName): { spec+: { source+: { inlineVolumeSpec+: { azureFile+: { secretName: secretName } } } } }, - '#withSecretNamespace':: d.fn(help='the namespace of the secret that contains Azure Storage Account Name and Key default is the same as the Pod', args=[d.arg(name='secretNamespace', type=d.T.string)]), - withSecretNamespace(secretNamespace): { spec+: { source+: { inlineVolumeSpec+: { azureFile+: { secretNamespace: secretNamespace } } } } }, - '#withShareName':: d.fn(help='Share Name', args=[d.arg(name='shareName', type=d.T.string)]), - withShareName(shareName): { spec+: { source+: { inlineVolumeSpec+: { azureFile+: { shareName: shareName } } } } }, - }, - '#cephfs':: d.obj(help='Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling.'), - cephfs: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { source+: { inlineVolumeSpec+: { cephfs+: { secretRef+: { name: name } } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { source+: { inlineVolumeSpec+: { cephfs+: { secretRef+: { namespace: namespace } } } } } }, - }, - '#withMonitors':: d.fn(help='Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitors(monitors): { spec+: { source+: { inlineVolumeSpec+: { cephfs+: { monitors: if std.isArray(v=monitors) then monitors else [monitors] } } } } }, - '#withMonitorsMixin':: d.fn(help='Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitorsMixin(monitors): { spec+: { source+: { inlineVolumeSpec+: { cephfs+: { monitors+: if std.isArray(v=monitors) then monitors else [monitors] } } } } }, - '#withPath':: d.fn(help='Optional: Used as the mounted root, rather than the full Ceph tree, default is /', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { spec+: { source+: { inlineVolumeSpec+: { cephfs+: { path: path } } } } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { source+: { inlineVolumeSpec+: { cephfs+: { readOnly: readOnly } } } } }, - '#withSecretFile':: d.fn(help='Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='secretFile', type=d.T.string)]), - withSecretFile(secretFile): { spec+: { source+: { inlineVolumeSpec+: { cephfs+: { secretFile: secretFile } } } } }, - '#withUser':: d.fn(help='Optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { source+: { inlineVolumeSpec+: { cephfs+: { user: user } } } } }, - }, - '#cinder':: d.obj(help='Represents a cinder volume resource in Openstack. A Cinder volume must exist before mounting to a container. The volume must also be in the same region as the kubelet. Cinder volumes support ownership management and SELinux relabeling.'), - cinder: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { source+: { inlineVolumeSpec+: { cinder+: { secretRef+: { name: name } } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { source+: { inlineVolumeSpec+: { cinder+: { secretRef+: { namespace: namespace } } } } } }, - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { source+: { inlineVolumeSpec+: { cinder+: { fsType: fsType } } } } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { source+: { inlineVolumeSpec+: { cinder+: { readOnly: readOnly } } } } }, - '#withVolumeID':: d.fn(help='volume id used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md', args=[d.arg(name='volumeID', type=d.T.string)]), - withVolumeID(volumeID): { spec+: { source+: { inlineVolumeSpec+: { cinder+: { volumeID: volumeID } } } } }, - }, - '#claimRef':: d.obj(help='ObjectReference contains enough information to let you inspect or modify the referred object.'), - claimRef: { - '#withApiVersion':: d.fn(help='API version of the referent.', args=[d.arg(name='apiVersion', type=d.T.string)]), - withApiVersion(apiVersion): { spec+: { source+: { inlineVolumeSpec+: { claimRef+: { apiVersion: apiVersion } } } } }, - '#withFieldPath':: d.fn(help='If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { spec+: { source+: { inlineVolumeSpec+: { claimRef+: { fieldPath: fieldPath } } } } }, - '#withKind':: d.fn(help='Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { source+: { inlineVolumeSpec+: { claimRef+: { kind: kind } } } } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { source+: { inlineVolumeSpec+: { claimRef+: { name: name } } } } }, - '#withNamespace':: d.fn(help='Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { source+: { inlineVolumeSpec+: { claimRef+: { namespace: namespace } } } } }, - '#withResourceVersion':: d.fn(help='Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { spec+: { source+: { inlineVolumeSpec+: { claimRef+: { resourceVersion: resourceVersion } } } } }, - '#withUid':: d.fn(help='UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { source+: { inlineVolumeSpec+: { claimRef+: { uid: uid } } } } }, - }, - '#csi':: d.obj(help='Represents storage that is managed by an external CSI volume driver (Beta feature)'), - csi: { - '#controllerExpandSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - controllerExpandSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { source+: { inlineVolumeSpec+: { csi+: { controllerExpandSecretRef+: { name: name } } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { source+: { inlineVolumeSpec+: { csi+: { controllerExpandSecretRef+: { namespace: namespace } } } } } }, - }, - '#controllerPublishSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - controllerPublishSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { source+: { inlineVolumeSpec+: { csi+: { controllerPublishSecretRef+: { name: name } } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { source+: { inlineVolumeSpec+: { csi+: { controllerPublishSecretRef+: { namespace: namespace } } } } } }, - }, - '#nodePublishSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - nodePublishSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { source+: { inlineVolumeSpec+: { csi+: { nodePublishSecretRef+: { name: name } } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { source+: { inlineVolumeSpec+: { csi+: { nodePublishSecretRef+: { namespace: namespace } } } } } }, - }, - '#nodeStageSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - nodeStageSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { source+: { inlineVolumeSpec+: { csi+: { nodeStageSecretRef+: { name: name } } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { source+: { inlineVolumeSpec+: { csi+: { nodeStageSecretRef+: { namespace: namespace } } } } } }, - }, - '#withDriver':: d.fn(help='Driver is the name of the driver to use for this volume. Required.', args=[d.arg(name='driver', type=d.T.string)]), - withDriver(driver): { spec+: { source+: { inlineVolumeSpec+: { csi+: { driver: driver } } } } }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs".', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { source+: { inlineVolumeSpec+: { csi+: { fsType: fsType } } } } }, - '#withReadOnly':: d.fn(help='Optional: The value to pass to ControllerPublishVolumeRequest. Defaults to false (read/write).', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { source+: { inlineVolumeSpec+: { csi+: { readOnly: readOnly } } } } }, - '#withVolumeAttributes':: d.fn(help='Attributes of the volume to publish.', args=[d.arg(name='volumeAttributes', type=d.T.object)]), - withVolumeAttributes(volumeAttributes): { spec+: { source+: { inlineVolumeSpec+: { csi+: { volumeAttributes: volumeAttributes } } } } }, - '#withVolumeAttributesMixin':: d.fn(help='Attributes of the volume to publish.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumeAttributes', type=d.T.object)]), - withVolumeAttributesMixin(volumeAttributes): { spec+: { source+: { inlineVolumeSpec+: { csi+: { volumeAttributes+: volumeAttributes } } } } }, - '#withVolumeHandle':: d.fn(help='VolumeHandle is the unique volume name returned by the CSI volume plugin’s CreateVolume to refer to the volume on all subsequent calls. Required.', args=[d.arg(name='volumeHandle', type=d.T.string)]), - withVolumeHandle(volumeHandle): { spec+: { source+: { inlineVolumeSpec+: { csi+: { volumeHandle: volumeHandle } } } } }, - }, - '#fc':: d.obj(help='Represents a Fibre Channel volume. Fibre Channel volumes can only be mounted as read/write once. Fibre Channel volumes support ownership management and SELinux relabeling.'), - fc: { - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { source+: { inlineVolumeSpec+: { fc+: { fsType: fsType } } } } }, - '#withLun':: d.fn(help='Optional: FC target lun number', args=[d.arg(name='lun', type=d.T.integer)]), - withLun(lun): { spec+: { source+: { inlineVolumeSpec+: { fc+: { lun: lun } } } } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { source+: { inlineVolumeSpec+: { fc+: { readOnly: readOnly } } } } }, - '#withTargetWWNs':: d.fn(help='Optional: FC target worldwide names (WWNs)', args=[d.arg(name='targetWWNs', type=d.T.array)]), - withTargetWWNs(targetWWNs): { spec+: { source+: { inlineVolumeSpec+: { fc+: { targetWWNs: if std.isArray(v=targetWWNs) then targetWWNs else [targetWWNs] } } } } }, - '#withTargetWWNsMixin':: d.fn(help='Optional: FC target worldwide names (WWNs)\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='targetWWNs', type=d.T.array)]), - withTargetWWNsMixin(targetWWNs): { spec+: { source+: { inlineVolumeSpec+: { fc+: { targetWWNs+: if std.isArray(v=targetWWNs) then targetWWNs else [targetWWNs] } } } } }, - '#withWwids':: d.fn(help='Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.', args=[d.arg(name='wwids', type=d.T.array)]), - withWwids(wwids): { spec+: { source+: { inlineVolumeSpec+: { fc+: { wwids: if std.isArray(v=wwids) then wwids else [wwids] } } } } }, - '#withWwidsMixin':: d.fn(help='Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='wwids', type=d.T.array)]), - withWwidsMixin(wwids): { spec+: { source+: { inlineVolumeSpec+: { fc+: { wwids+: if std.isArray(v=wwids) then wwids else [wwids] } } } } }, - }, - '#flexVolume':: d.obj(help='FlexPersistentVolumeSource represents a generic persistent volume resource that is provisioned/attached using an exec based plugin.'), - flexVolume: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { source+: { inlineVolumeSpec+: { flexVolume+: { secretRef+: { name: name } } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { source+: { inlineVolumeSpec+: { flexVolume+: { secretRef+: { namespace: namespace } } } } } }, - }, - '#withDriver':: d.fn(help='Driver is the name of the driver to use for this volume.', args=[d.arg(name='driver', type=d.T.string)]), - withDriver(driver): { spec+: { source+: { inlineVolumeSpec+: { flexVolume+: { driver: driver } } } } }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { source+: { inlineVolumeSpec+: { flexVolume+: { fsType: fsType } } } } }, - '#withOptions':: d.fn(help='Optional: Extra command options if any.', args=[d.arg(name='options', type=d.T.object)]), - withOptions(options): { spec+: { source+: { inlineVolumeSpec+: { flexVolume+: { options: options } } } } }, - '#withOptionsMixin':: d.fn(help='Optional: Extra command options if any.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.object)]), - withOptionsMixin(options): { spec+: { source+: { inlineVolumeSpec+: { flexVolume+: { options+: options } } } } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { source+: { inlineVolumeSpec+: { flexVolume+: { readOnly: readOnly } } } } }, - }, - '#flocker':: d.obj(help='Represents a Flocker volume mounted by the Flocker agent. One and only one of datasetName and datasetUUID should be set. Flocker volumes do not support ownership management or SELinux relabeling.'), - flocker: { - '#withDatasetName':: d.fn(help='Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated', args=[d.arg(name='datasetName', type=d.T.string)]), - withDatasetName(datasetName): { spec+: { source+: { inlineVolumeSpec+: { flocker+: { datasetName: datasetName } } } } }, - '#withDatasetUUID':: d.fn(help='UUID of the dataset. This is unique identifier of a Flocker dataset', args=[d.arg(name='datasetUUID', type=d.T.string)]), - withDatasetUUID(datasetUUID): { spec+: { source+: { inlineVolumeSpec+: { flocker+: { datasetUUID: datasetUUID } } } } }, - }, - '#gcePersistentDisk':: d.obj(help='Represents a Persistent Disk resource in Google Compute Engine.\n\nA GCE PD must exist before mounting to a container. The disk must also be in the same GCE project and zone as the kubelet. A GCE PD can only be mounted as read/write once or read-only many times. GCE PDs support ownership management and SELinux relabeling.'), - gcePersistentDisk: { - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { source+: { inlineVolumeSpec+: { gcePersistentDisk+: { fsType: fsType } } } } }, - '#withPartition':: d.fn(help='The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='partition', type=d.T.integer)]), - withPartition(partition): { spec+: { source+: { inlineVolumeSpec+: { gcePersistentDisk+: { partition: partition } } } } }, - '#withPdName':: d.fn(help='Unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='pdName', type=d.T.string)]), - withPdName(pdName): { spec+: { source+: { inlineVolumeSpec+: { gcePersistentDisk+: { pdName: pdName } } } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { source+: { inlineVolumeSpec+: { gcePersistentDisk+: { readOnly: readOnly } } } } }, - }, - '#glusterfs':: d.obj(help='Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling.'), - glusterfs: { - '#withEndpoints':: d.fn(help='EndpointsName is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='endpoints', type=d.T.string)]), - withEndpoints(endpoints): { spec+: { source+: { inlineVolumeSpec+: { glusterfs+: { endpoints: endpoints } } } } }, - '#withEndpointsNamespace':: d.fn(help='EndpointsNamespace is the namespace that contains Glusterfs endpoint. If this field is empty, the EndpointNamespace defaults to the same namespace as the bound PVC. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='endpointsNamespace', type=d.T.string)]), - withEndpointsNamespace(endpointsNamespace): { spec+: { source+: { inlineVolumeSpec+: { glusterfs+: { endpointsNamespace: endpointsNamespace } } } } }, - '#withPath':: d.fn(help='Path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { spec+: { source+: { inlineVolumeSpec+: { glusterfs+: { path: path } } } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { source+: { inlineVolumeSpec+: { glusterfs+: { readOnly: readOnly } } } } }, - }, - '#hostPath':: d.obj(help='Represents a host path mapped into a pod. Host path volumes do not support ownership management or SELinux relabeling.'), - hostPath: { - '#withPath':: d.fn(help='Path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { spec+: { source+: { inlineVolumeSpec+: { hostPath+: { path: path } } } } }, - '#withType':: d.fn(help='Type for HostPath Volume Defaults to "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { source+: { inlineVolumeSpec+: { hostPath+: { type: type } } } } }, - }, - '#iscsi':: d.obj(help='ISCSIPersistentVolumeSource represents an ISCSI disk. ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling.'), - iscsi: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { source+: { inlineVolumeSpec+: { iscsi+: { secretRef+: { name: name } } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { source+: { inlineVolumeSpec+: { iscsi+: { secretRef+: { namespace: namespace } } } } } }, - }, - '#withChapAuthDiscovery':: d.fn(help='whether support iSCSI Discovery CHAP authentication', args=[d.arg(name='chapAuthDiscovery', type=d.T.boolean)]), - withChapAuthDiscovery(chapAuthDiscovery): { spec+: { source+: { inlineVolumeSpec+: { iscsi+: { chapAuthDiscovery: chapAuthDiscovery } } } } }, - '#withChapAuthSession':: d.fn(help='whether support iSCSI Session CHAP authentication', args=[d.arg(name='chapAuthSession', type=d.T.boolean)]), - withChapAuthSession(chapAuthSession): { spec+: { source+: { inlineVolumeSpec+: { iscsi+: { chapAuthSession: chapAuthSession } } } } }, - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { source+: { inlineVolumeSpec+: { iscsi+: { fsType: fsType } } } } }, - '#withInitiatorName':: d.fn(help='Custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface : will be created for the connection.', args=[d.arg(name='initiatorName', type=d.T.string)]), - withInitiatorName(initiatorName): { spec+: { source+: { inlineVolumeSpec+: { iscsi+: { initiatorName: initiatorName } } } } }, - '#withIqn':: d.fn(help='Target iSCSI Qualified Name.', args=[d.arg(name='iqn', type=d.T.string)]), - withIqn(iqn): { spec+: { source+: { inlineVolumeSpec+: { iscsi+: { iqn: iqn } } } } }, - '#withIscsiInterface':: d.fn(help="iSCSI Interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).", args=[d.arg(name='iscsiInterface', type=d.T.string)]), - withIscsiInterface(iscsiInterface): { spec+: { source+: { inlineVolumeSpec+: { iscsi+: { iscsiInterface: iscsiInterface } } } } }, - '#withLun':: d.fn(help='iSCSI Target Lun number.', args=[d.arg(name='lun', type=d.T.integer)]), - withLun(lun): { spec+: { source+: { inlineVolumeSpec+: { iscsi+: { lun: lun } } } } }, - '#withPortals':: d.fn(help='iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).', args=[d.arg(name='portals', type=d.T.array)]), - withPortals(portals): { spec+: { source+: { inlineVolumeSpec+: { iscsi+: { portals: if std.isArray(v=portals) then portals else [portals] } } } } }, - '#withPortalsMixin':: d.fn(help='iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='portals', type=d.T.array)]), - withPortalsMixin(portals): { spec+: { source+: { inlineVolumeSpec+: { iscsi+: { portals+: if std.isArray(v=portals) then portals else [portals] } } } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { source+: { inlineVolumeSpec+: { iscsi+: { readOnly: readOnly } } } } }, - '#withTargetPortal':: d.fn(help='iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).', args=[d.arg(name='targetPortal', type=d.T.string)]), - withTargetPortal(targetPortal): { spec+: { source+: { inlineVolumeSpec+: { iscsi+: { targetPortal: targetPortal } } } } }, - }, - '#local':: d.obj(help='Local represents directly-attached storage with node affinity (Beta feature)'), - 'local': { - '#withFsType':: d.fn(help='Filesystem type to mount. It applies only when the Path is a block device. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default value is to auto-select a fileystem if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { source+: { inlineVolumeSpec+: { 'local'+: { fsType: fsType } } } } }, - '#withPath':: d.fn(help='The full path to the volume on the node. It can be either a directory or block device (disk, partition, ...).', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { spec+: { source+: { inlineVolumeSpec+: { 'local'+: { path: path } } } } }, - }, - '#nfs':: d.obj(help='Represents an NFS mount that lasts the lifetime of a pod. NFS volumes do not support ownership management or SELinux relabeling.'), - nfs: { - '#withPath':: d.fn(help='Path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { spec+: { source+: { inlineVolumeSpec+: { nfs+: { path: path } } } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { source+: { inlineVolumeSpec+: { nfs+: { readOnly: readOnly } } } } }, - '#withServer':: d.fn(help='Server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs', args=[d.arg(name='server', type=d.T.string)]), - withServer(server): { spec+: { source+: { inlineVolumeSpec+: { nfs+: { server: server } } } } }, - }, - '#nodeAffinity':: d.obj(help='VolumeNodeAffinity defines constraints that limit what nodes this volume can be accessed from.'), - nodeAffinity: { - '#required':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - required: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { spec+: { source+: { inlineVolumeSpec+: { nodeAffinity+: { required+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { spec+: { source+: { inlineVolumeSpec+: { nodeAffinity+: { required+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } }, - }, - }, - '#photonPersistentDisk':: d.obj(help='Represents a Photon Controller persistent disk resource.'), - photonPersistentDisk: { - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { source+: { inlineVolumeSpec+: { photonPersistentDisk+: { fsType: fsType } } } } }, - '#withPdID':: d.fn(help='ID that identifies Photon Controller persistent disk', args=[d.arg(name='pdID', type=d.T.string)]), - withPdID(pdID): { spec+: { source+: { inlineVolumeSpec+: { photonPersistentDisk+: { pdID: pdID } } } } }, - }, - '#portworxVolume':: d.obj(help='PortworxVolumeSource represents a Portworx volume resource.'), - portworxVolume: { - '#withFsType':: d.fn(help='FSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { source+: { inlineVolumeSpec+: { portworxVolume+: { fsType: fsType } } } } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { source+: { inlineVolumeSpec+: { portworxVolume+: { readOnly: readOnly } } } } }, - '#withVolumeID':: d.fn(help='VolumeID uniquely identifies a Portworx volume', args=[d.arg(name='volumeID', type=d.T.string)]), - withVolumeID(volumeID): { spec+: { source+: { inlineVolumeSpec+: { portworxVolume+: { volumeID: volumeID } } } } }, - }, - '#quobyte':: d.obj(help='Represents a Quobyte mount that lasts the lifetime of a pod. Quobyte volumes do not support ownership management or SELinux relabeling.'), - quobyte: { - '#withGroup':: d.fn(help='Group to map volume access to Default is no group', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { spec+: { source+: { inlineVolumeSpec+: { quobyte+: { group: group } } } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { source+: { inlineVolumeSpec+: { quobyte+: { readOnly: readOnly } } } } }, - '#withRegistry':: d.fn(help='Registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes', args=[d.arg(name='registry', type=d.T.string)]), - withRegistry(registry): { spec+: { source+: { inlineVolumeSpec+: { quobyte+: { registry: registry } } } } }, - '#withTenant':: d.fn(help='Tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin', args=[d.arg(name='tenant', type=d.T.string)]), - withTenant(tenant): { spec+: { source+: { inlineVolumeSpec+: { quobyte+: { tenant: tenant } } } } }, - '#withUser':: d.fn(help='User to map volume access to Defaults to serivceaccount user', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { source+: { inlineVolumeSpec+: { quobyte+: { user: user } } } } }, - '#withVolume':: d.fn(help='Volume is a string that references an already created Quobyte volume by name.', args=[d.arg(name='volume', type=d.T.string)]), - withVolume(volume): { spec+: { source+: { inlineVolumeSpec+: { quobyte+: { volume: volume } } } } }, - }, - '#rbd':: d.obj(help='Represents a Rados Block Device mount that lasts the lifetime of a pod. RBD volumes support ownership management and SELinux relabeling.'), - rbd: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { source+: { inlineVolumeSpec+: { rbd+: { secretRef+: { name: name } } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { source+: { inlineVolumeSpec+: { rbd+: { secretRef+: { namespace: namespace } } } } } }, - }, - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { source+: { inlineVolumeSpec+: { rbd+: { fsType: fsType } } } } }, - '#withImage':: d.fn(help='The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='image', type=d.T.string)]), - withImage(image): { spec+: { source+: { inlineVolumeSpec+: { rbd+: { image: image } } } } }, - '#withKeyring':: d.fn(help='Keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='keyring', type=d.T.string)]), - withKeyring(keyring): { spec+: { source+: { inlineVolumeSpec+: { rbd+: { keyring: keyring } } } } }, - '#withMonitors':: d.fn(help='A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitors(monitors): { spec+: { source+: { inlineVolumeSpec+: { rbd+: { monitors: if std.isArray(v=monitors) then monitors else [monitors] } } } } }, - '#withMonitorsMixin':: d.fn(help='A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitorsMixin(monitors): { spec+: { source+: { inlineVolumeSpec+: { rbd+: { monitors+: if std.isArray(v=monitors) then monitors else [monitors] } } } } }, - '#withPool':: d.fn(help='The rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='pool', type=d.T.string)]), - withPool(pool): { spec+: { source+: { inlineVolumeSpec+: { rbd+: { pool: pool } } } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { source+: { inlineVolumeSpec+: { rbd+: { readOnly: readOnly } } } } }, - '#withUser':: d.fn(help='The rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { source+: { inlineVolumeSpec+: { rbd+: { user: user } } } } }, - }, - '#scaleIO':: d.obj(help='ScaleIOPersistentVolumeSource represents a persistent ScaleIO volume'), - scaleIO: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { source+: { inlineVolumeSpec+: { scaleIO+: { secretRef+: { name: name } } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { source+: { inlineVolumeSpec+: { scaleIO+: { secretRef+: { namespace: namespace } } } } } }, - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Default is "xfs"', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { source+: { inlineVolumeSpec+: { scaleIO+: { fsType: fsType } } } } }, - '#withGateway':: d.fn(help='The host address of the ScaleIO API Gateway.', args=[d.arg(name='gateway', type=d.T.string)]), - withGateway(gateway): { spec+: { source+: { inlineVolumeSpec+: { scaleIO+: { gateway: gateway } } } } }, - '#withProtectionDomain':: d.fn(help='The name of the ScaleIO Protection Domain for the configured storage.', args=[d.arg(name='protectionDomain', type=d.T.string)]), - withProtectionDomain(protectionDomain): { spec+: { source+: { inlineVolumeSpec+: { scaleIO+: { protectionDomain: protectionDomain } } } } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { source+: { inlineVolumeSpec+: { scaleIO+: { readOnly: readOnly } } } } }, - '#withSslEnabled':: d.fn(help='Flag to enable/disable SSL communication with Gateway, default false', args=[d.arg(name='sslEnabled', type=d.T.boolean)]), - withSslEnabled(sslEnabled): { spec+: { source+: { inlineVolumeSpec+: { scaleIO+: { sslEnabled: sslEnabled } } } } }, - '#withStorageMode':: d.fn(help='Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.', args=[d.arg(name='storageMode', type=d.T.string)]), - withStorageMode(storageMode): { spec+: { source+: { inlineVolumeSpec+: { scaleIO+: { storageMode: storageMode } } } } }, - '#withStoragePool':: d.fn(help='The ScaleIO Storage Pool associated with the protection domain.', args=[d.arg(name='storagePool', type=d.T.string)]), - withStoragePool(storagePool): { spec+: { source+: { inlineVolumeSpec+: { scaleIO+: { storagePool: storagePool } } } } }, - '#withSystem':: d.fn(help='The name of the storage system as configured in ScaleIO.', args=[d.arg(name='system', type=d.T.string)]), - withSystem(system): { spec+: { source+: { inlineVolumeSpec+: { scaleIO+: { system: system } } } } }, - '#withVolumeName':: d.fn(help='The name of a volume already created in the ScaleIO system that is associated with this volume source.', args=[d.arg(name='volumeName', type=d.T.string)]), - withVolumeName(volumeName): { spec+: { source+: { inlineVolumeSpec+: { scaleIO+: { volumeName: volumeName } } } } }, - }, - '#storageos':: d.obj(help='Represents a StorageOS persistent volume resource.'), - storageos: { - '#secretRef':: d.obj(help='ObjectReference contains enough information to let you inspect or modify the referred object.'), - secretRef: { - '#withApiVersion':: d.fn(help='API version of the referent.', args=[d.arg(name='apiVersion', type=d.T.string)]), - withApiVersion(apiVersion): { spec+: { source+: { inlineVolumeSpec+: { storageos+: { secretRef+: { apiVersion: apiVersion } } } } } }, - '#withFieldPath':: d.fn(help='If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { spec+: { source+: { inlineVolumeSpec+: { storageos+: { secretRef+: { fieldPath: fieldPath } } } } } }, - '#withKind':: d.fn(help='Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { source+: { inlineVolumeSpec+: { storageos+: { secretRef+: { kind: kind } } } } } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { source+: { inlineVolumeSpec+: { storageos+: { secretRef+: { name: name } } } } } }, - '#withNamespace':: d.fn(help='Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { source+: { inlineVolumeSpec+: { storageos+: { secretRef+: { namespace: namespace } } } } } }, - '#withResourceVersion':: d.fn(help='Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { spec+: { source+: { inlineVolumeSpec+: { storageos+: { secretRef+: { resourceVersion: resourceVersion } } } } } }, - '#withUid':: d.fn(help='UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { source+: { inlineVolumeSpec+: { storageos+: { secretRef+: { uid: uid } } } } } }, - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { source+: { inlineVolumeSpec+: { storageos+: { fsType: fsType } } } } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { source+: { inlineVolumeSpec+: { storageos+: { readOnly: readOnly } } } } }, - '#withVolumeName':: d.fn(help='VolumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.', args=[d.arg(name='volumeName', type=d.T.string)]), - withVolumeName(volumeName): { spec+: { source+: { inlineVolumeSpec+: { storageos+: { volumeName: volumeName } } } } }, - '#withVolumeNamespace':: d.fn(help="VolumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod's namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to 'default' if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created.", args=[d.arg(name='volumeNamespace', type=d.T.string)]), - withVolumeNamespace(volumeNamespace): { spec+: { source+: { inlineVolumeSpec+: { storageos+: { volumeNamespace: volumeNamespace } } } } }, - }, - '#vsphereVolume':: d.obj(help='Represents a vSphere volume resource.'), - vsphereVolume: { - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { source+: { inlineVolumeSpec+: { vsphereVolume+: { fsType: fsType } } } } }, - '#withStoragePolicyID':: d.fn(help='Storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.', args=[d.arg(name='storagePolicyID', type=d.T.string)]), - withStoragePolicyID(storagePolicyID): { spec+: { source+: { inlineVolumeSpec+: { vsphereVolume+: { storagePolicyID: storagePolicyID } } } } }, - '#withStoragePolicyName':: d.fn(help='Storage Policy Based Management (SPBM) profile name.', args=[d.arg(name='storagePolicyName', type=d.T.string)]), - withStoragePolicyName(storagePolicyName): { spec+: { source+: { inlineVolumeSpec+: { vsphereVolume+: { storagePolicyName: storagePolicyName } } } } }, - '#withVolumePath':: d.fn(help='Path that identifies vSphere volume vmdk', args=[d.arg(name='volumePath', type=d.T.string)]), - withVolumePath(volumePath): { spec+: { source+: { inlineVolumeSpec+: { vsphereVolume+: { volumePath: volumePath } } } } }, - }, - '#withAccessModes':: d.fn(help='AccessModes contains all ways the volume can be mounted. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes', args=[d.arg(name='accessModes', type=d.T.array)]), - withAccessModes(accessModes): { spec+: { source+: { inlineVolumeSpec+: { accessModes: if std.isArray(v=accessModes) then accessModes else [accessModes] } } } }, - '#withAccessModesMixin':: d.fn(help='AccessModes contains all ways the volume can be mounted. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='accessModes', type=d.T.array)]), - withAccessModesMixin(accessModes): { spec+: { source+: { inlineVolumeSpec+: { accessModes+: if std.isArray(v=accessModes) then accessModes else [accessModes] } } } }, - '#withCapacity':: d.fn(help="A description of the persistent volume's resources and capacity. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity", args=[d.arg(name='capacity', type=d.T.object)]), - withCapacity(capacity): { spec+: { source+: { inlineVolumeSpec+: { capacity: capacity } } } }, - '#withCapacityMixin':: d.fn(help="A description of the persistent volume's resources and capacity. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='capacity', type=d.T.object)]), - withCapacityMixin(capacity): { spec+: { source+: { inlineVolumeSpec+: { capacity+: capacity } } } }, - '#withMountOptions':: d.fn(help='A list of mount options, e.g. ["ro", "soft"]. Not validated - mount will simply fail if one is invalid. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options', args=[d.arg(name='mountOptions', type=d.T.array)]), - withMountOptions(mountOptions): { spec+: { source+: { inlineVolumeSpec+: { mountOptions: if std.isArray(v=mountOptions) then mountOptions else [mountOptions] } } } }, - '#withMountOptionsMixin':: d.fn(help='A list of mount options, e.g. ["ro", "soft"]. Not validated - mount will simply fail if one is invalid. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='mountOptions', type=d.T.array)]), - withMountOptionsMixin(mountOptions): { spec+: { source+: { inlineVolumeSpec+: { mountOptions+: if std.isArray(v=mountOptions) then mountOptions else [mountOptions] } } } }, - '#withPersistentVolumeReclaimPolicy':: d.fn(help='What happens to a persistent volume when released from its claim. Valid options are Retain (default for manually created PersistentVolumes), Delete (default for dynamically provisioned PersistentVolumes), and Recycle (deprecated). Recycle must be supported by the volume plugin underlying this PersistentVolume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#reclaiming', args=[d.arg(name='persistentVolumeReclaimPolicy', type=d.T.string)]), - withPersistentVolumeReclaimPolicy(persistentVolumeReclaimPolicy): { spec+: { source+: { inlineVolumeSpec+: { persistentVolumeReclaimPolicy: persistentVolumeReclaimPolicy } } } }, - '#withStorageClassName':: d.fn(help='Name of StorageClass to which this persistent volume belongs. Empty value means that this volume does not belong to any StorageClass.', args=[d.arg(name='storageClassName', type=d.T.string)]), - withStorageClassName(storageClassName): { spec+: { source+: { inlineVolumeSpec+: { storageClassName: storageClassName } } } }, - '#withVolumeMode':: d.fn(help='volumeMode defines if a volume is intended to be used with a formatted filesystem or to remain in raw block state. Value of Filesystem is implied when not included in spec.', args=[d.arg(name='volumeMode', type=d.T.string)]), - withVolumeMode(volumeMode): { spec+: { source+: { inlineVolumeSpec+: { volumeMode: volumeMode } } } }, - }, - '#withPersistentVolumeName':: d.fn(help='Name of the persistent volume to attach.', args=[d.arg(name='persistentVolumeName', type=d.T.string)]), - withPersistentVolumeName(persistentVolumeName): { spec+: { source+: { persistentVolumeName: persistentVolumeName } } }, - }, - '#withAttacher':: d.fn(help='Attacher indicates the name of the volume driver that MUST handle this request. This is the name returned by GetPluginName().', args=[d.arg(name='attacher', type=d.T.string)]), - withAttacher(attacher): { spec+: { attacher: attacher } }, - '#withNodeName':: d.fn(help='The node that the volume should be attached to.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { spec+: { nodeName: nodeName } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1alpha1/volumeAttachmentSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1alpha1/volumeAttachmentSource.libsonnet deleted file mode 100644 index 65b29e14e100..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1alpha1/volumeAttachmentSource.libsonnet +++ /dev/null @@ -1,419 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='volumeAttachmentSource', url='', help='VolumeAttachmentSource represents a volume that should be attached. Right now only PersistenVolumes can be attached via external attacher, in future we may allow also inline volumes in pods. Exactly one member can be set.'), - '#inlineVolumeSpec':: d.obj(help='PersistentVolumeSpec is the specification of a persistent volume.'), - inlineVolumeSpec: { - '#awsElasticBlockStore':: d.obj(help='Represents a Persistent Disk resource in AWS.\n\nAn AWS EBS disk must exist before mounting to a container. The disk must also be in the same AWS zone as the kubelet. An AWS EBS disk can only be mounted as read/write once. AWS EBS volumes support ownership management and SELinux relabeling.'), - awsElasticBlockStore: { - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { inlineVolumeSpec+: { awsElasticBlockStore+: { fsType: fsType } } }, - '#withPartition':: d.fn(help='The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).', args=[d.arg(name='partition', type=d.T.integer)]), - withPartition(partition): { inlineVolumeSpec+: { awsElasticBlockStore+: { partition: partition } } }, - '#withReadOnly':: d.fn(help='Specify "true" to force and set the ReadOnly property in VolumeMounts to "true". If omitted, the default is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { inlineVolumeSpec+: { awsElasticBlockStore+: { readOnly: readOnly } } }, - '#withVolumeID':: d.fn(help='Unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore', args=[d.arg(name='volumeID', type=d.T.string)]), - withVolumeID(volumeID): { inlineVolumeSpec+: { awsElasticBlockStore+: { volumeID: volumeID } } }, - }, - '#azureDisk':: d.obj(help='AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.'), - azureDisk: { - '#withCachingMode':: d.fn(help='Host Caching mode: None, Read Only, Read Write.', args=[d.arg(name='cachingMode', type=d.T.string)]), - withCachingMode(cachingMode): { inlineVolumeSpec+: { azureDisk+: { cachingMode: cachingMode } } }, - '#withDiskName':: d.fn(help='The Name of the data disk in the blob storage', args=[d.arg(name='diskName', type=d.T.string)]), - withDiskName(diskName): { inlineVolumeSpec+: { azureDisk+: { diskName: diskName } } }, - '#withDiskURI':: d.fn(help='The URI the data disk in the blob storage', args=[d.arg(name='diskURI', type=d.T.string)]), - withDiskURI(diskURI): { inlineVolumeSpec+: { azureDisk+: { diskURI: diskURI } } }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { inlineVolumeSpec+: { azureDisk+: { fsType: fsType } } }, - '#withKind':: d.fn(help='Expected values Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { inlineVolumeSpec+: { azureDisk+: { kind: kind } } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { inlineVolumeSpec+: { azureDisk+: { readOnly: readOnly } } }, - }, - '#azureFile':: d.obj(help='AzureFile represents an Azure File Service mount on the host and bind mount to the pod.'), - azureFile: { - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { inlineVolumeSpec+: { azureFile+: { readOnly: readOnly } } }, - '#withSecretName':: d.fn(help='the name of secret that contains Azure Storage Account Name and Key', args=[d.arg(name='secretName', type=d.T.string)]), - withSecretName(secretName): { inlineVolumeSpec+: { azureFile+: { secretName: secretName } } }, - '#withSecretNamespace':: d.fn(help='the namespace of the secret that contains Azure Storage Account Name and Key default is the same as the Pod', args=[d.arg(name='secretNamespace', type=d.T.string)]), - withSecretNamespace(secretNamespace): { inlineVolumeSpec+: { azureFile+: { secretNamespace: secretNamespace } } }, - '#withShareName':: d.fn(help='Share Name', args=[d.arg(name='shareName', type=d.T.string)]), - withShareName(shareName): { inlineVolumeSpec+: { azureFile+: { shareName: shareName } } }, - }, - '#cephfs':: d.obj(help='Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling.'), - cephfs: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { inlineVolumeSpec+: { cephfs+: { secretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { inlineVolumeSpec+: { cephfs+: { secretRef+: { namespace: namespace } } } }, - }, - '#withMonitors':: d.fn(help='Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitors(monitors): { inlineVolumeSpec+: { cephfs+: { monitors: if std.isArray(v=monitors) then monitors else [monitors] } } }, - '#withMonitorsMixin':: d.fn(help='Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitorsMixin(monitors): { inlineVolumeSpec+: { cephfs+: { monitors+: if std.isArray(v=monitors) then monitors else [monitors] } } }, - '#withPath':: d.fn(help='Optional: Used as the mounted root, rather than the full Ceph tree, default is /', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { inlineVolumeSpec+: { cephfs+: { path: path } } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { inlineVolumeSpec+: { cephfs+: { readOnly: readOnly } } }, - '#withSecretFile':: d.fn(help='Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='secretFile', type=d.T.string)]), - withSecretFile(secretFile): { inlineVolumeSpec+: { cephfs+: { secretFile: secretFile } } }, - '#withUser':: d.fn(help='Optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { inlineVolumeSpec+: { cephfs+: { user: user } } }, - }, - '#cinder':: d.obj(help='Represents a cinder volume resource in Openstack. A Cinder volume must exist before mounting to a container. The volume must also be in the same region as the kubelet. Cinder volumes support ownership management and SELinux relabeling.'), - cinder: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { inlineVolumeSpec+: { cinder+: { secretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { inlineVolumeSpec+: { cinder+: { secretRef+: { namespace: namespace } } } }, - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { inlineVolumeSpec+: { cinder+: { fsType: fsType } } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { inlineVolumeSpec+: { cinder+: { readOnly: readOnly } } }, - '#withVolumeID':: d.fn(help='volume id used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md', args=[d.arg(name='volumeID', type=d.T.string)]), - withVolumeID(volumeID): { inlineVolumeSpec+: { cinder+: { volumeID: volumeID } } }, - }, - '#claimRef':: d.obj(help='ObjectReference contains enough information to let you inspect or modify the referred object.'), - claimRef: { - '#withApiVersion':: d.fn(help='API version of the referent.', args=[d.arg(name='apiVersion', type=d.T.string)]), - withApiVersion(apiVersion): { inlineVolumeSpec+: { claimRef+: { apiVersion: apiVersion } } }, - '#withFieldPath':: d.fn(help='If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { inlineVolumeSpec+: { claimRef+: { fieldPath: fieldPath } } }, - '#withKind':: d.fn(help='Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { inlineVolumeSpec+: { claimRef+: { kind: kind } } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { inlineVolumeSpec+: { claimRef+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { inlineVolumeSpec+: { claimRef+: { namespace: namespace } } }, - '#withResourceVersion':: d.fn(help='Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { inlineVolumeSpec+: { claimRef+: { resourceVersion: resourceVersion } } }, - '#withUid':: d.fn(help='UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { inlineVolumeSpec+: { claimRef+: { uid: uid } } }, - }, - '#csi':: d.obj(help='Represents storage that is managed by an external CSI volume driver (Beta feature)'), - csi: { - '#controllerExpandSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - controllerExpandSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { inlineVolumeSpec+: { csi+: { controllerExpandSecretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { inlineVolumeSpec+: { csi+: { controllerExpandSecretRef+: { namespace: namespace } } } }, - }, - '#controllerPublishSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - controllerPublishSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { inlineVolumeSpec+: { csi+: { controllerPublishSecretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { inlineVolumeSpec+: { csi+: { controllerPublishSecretRef+: { namespace: namespace } } } }, - }, - '#nodePublishSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - nodePublishSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { inlineVolumeSpec+: { csi+: { nodePublishSecretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { inlineVolumeSpec+: { csi+: { nodePublishSecretRef+: { namespace: namespace } } } }, - }, - '#nodeStageSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - nodeStageSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { inlineVolumeSpec+: { csi+: { nodeStageSecretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { inlineVolumeSpec+: { csi+: { nodeStageSecretRef+: { namespace: namespace } } } }, - }, - '#withDriver':: d.fn(help='Driver is the name of the driver to use for this volume. Required.', args=[d.arg(name='driver', type=d.T.string)]), - withDriver(driver): { inlineVolumeSpec+: { csi+: { driver: driver } } }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs".', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { inlineVolumeSpec+: { csi+: { fsType: fsType } } }, - '#withReadOnly':: d.fn(help='Optional: The value to pass to ControllerPublishVolumeRequest. Defaults to false (read/write).', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { inlineVolumeSpec+: { csi+: { readOnly: readOnly } } }, - '#withVolumeAttributes':: d.fn(help='Attributes of the volume to publish.', args=[d.arg(name='volumeAttributes', type=d.T.object)]), - withVolumeAttributes(volumeAttributes): { inlineVolumeSpec+: { csi+: { volumeAttributes: volumeAttributes } } }, - '#withVolumeAttributesMixin':: d.fn(help='Attributes of the volume to publish.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumeAttributes', type=d.T.object)]), - withVolumeAttributesMixin(volumeAttributes): { inlineVolumeSpec+: { csi+: { volumeAttributes+: volumeAttributes } } }, - '#withVolumeHandle':: d.fn(help='VolumeHandle is the unique volume name returned by the CSI volume plugin’s CreateVolume to refer to the volume on all subsequent calls. Required.', args=[d.arg(name='volumeHandle', type=d.T.string)]), - withVolumeHandle(volumeHandle): { inlineVolumeSpec+: { csi+: { volumeHandle: volumeHandle } } }, - }, - '#fc':: d.obj(help='Represents a Fibre Channel volume. Fibre Channel volumes can only be mounted as read/write once. Fibre Channel volumes support ownership management and SELinux relabeling.'), - fc: { - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { inlineVolumeSpec+: { fc+: { fsType: fsType } } }, - '#withLun':: d.fn(help='Optional: FC target lun number', args=[d.arg(name='lun', type=d.T.integer)]), - withLun(lun): { inlineVolumeSpec+: { fc+: { lun: lun } } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { inlineVolumeSpec+: { fc+: { readOnly: readOnly } } }, - '#withTargetWWNs':: d.fn(help='Optional: FC target worldwide names (WWNs)', args=[d.arg(name='targetWWNs', type=d.T.array)]), - withTargetWWNs(targetWWNs): { inlineVolumeSpec+: { fc+: { targetWWNs: if std.isArray(v=targetWWNs) then targetWWNs else [targetWWNs] } } }, - '#withTargetWWNsMixin':: d.fn(help='Optional: FC target worldwide names (WWNs)\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='targetWWNs', type=d.T.array)]), - withTargetWWNsMixin(targetWWNs): { inlineVolumeSpec+: { fc+: { targetWWNs+: if std.isArray(v=targetWWNs) then targetWWNs else [targetWWNs] } } }, - '#withWwids':: d.fn(help='Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.', args=[d.arg(name='wwids', type=d.T.array)]), - withWwids(wwids): { inlineVolumeSpec+: { fc+: { wwids: if std.isArray(v=wwids) then wwids else [wwids] } } }, - '#withWwidsMixin':: d.fn(help='Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='wwids', type=d.T.array)]), - withWwidsMixin(wwids): { inlineVolumeSpec+: { fc+: { wwids+: if std.isArray(v=wwids) then wwids else [wwids] } } }, - }, - '#flexVolume':: d.obj(help='FlexPersistentVolumeSource represents a generic persistent volume resource that is provisioned/attached using an exec based plugin.'), - flexVolume: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { inlineVolumeSpec+: { flexVolume+: { secretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { inlineVolumeSpec+: { flexVolume+: { secretRef+: { namespace: namespace } } } }, - }, - '#withDriver':: d.fn(help='Driver is the name of the driver to use for this volume.', args=[d.arg(name='driver', type=d.T.string)]), - withDriver(driver): { inlineVolumeSpec+: { flexVolume+: { driver: driver } } }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { inlineVolumeSpec+: { flexVolume+: { fsType: fsType } } }, - '#withOptions':: d.fn(help='Optional: Extra command options if any.', args=[d.arg(name='options', type=d.T.object)]), - withOptions(options): { inlineVolumeSpec+: { flexVolume+: { options: options } } }, - '#withOptionsMixin':: d.fn(help='Optional: Extra command options if any.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.object)]), - withOptionsMixin(options): { inlineVolumeSpec+: { flexVolume+: { options+: options } } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { inlineVolumeSpec+: { flexVolume+: { readOnly: readOnly } } }, - }, - '#flocker':: d.obj(help='Represents a Flocker volume mounted by the Flocker agent. One and only one of datasetName and datasetUUID should be set. Flocker volumes do not support ownership management or SELinux relabeling.'), - flocker: { - '#withDatasetName':: d.fn(help='Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated', args=[d.arg(name='datasetName', type=d.T.string)]), - withDatasetName(datasetName): { inlineVolumeSpec+: { flocker+: { datasetName: datasetName } } }, - '#withDatasetUUID':: d.fn(help='UUID of the dataset. This is unique identifier of a Flocker dataset', args=[d.arg(name='datasetUUID', type=d.T.string)]), - withDatasetUUID(datasetUUID): { inlineVolumeSpec+: { flocker+: { datasetUUID: datasetUUID } } }, - }, - '#gcePersistentDisk':: d.obj(help='Represents a Persistent Disk resource in Google Compute Engine.\n\nA GCE PD must exist before mounting to a container. The disk must also be in the same GCE project and zone as the kubelet. A GCE PD can only be mounted as read/write once or read-only many times. GCE PDs support ownership management and SELinux relabeling.'), - gcePersistentDisk: { - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { inlineVolumeSpec+: { gcePersistentDisk+: { fsType: fsType } } }, - '#withPartition':: d.fn(help='The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='partition', type=d.T.integer)]), - withPartition(partition): { inlineVolumeSpec+: { gcePersistentDisk+: { partition: partition } } }, - '#withPdName':: d.fn(help='Unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='pdName', type=d.T.string)]), - withPdName(pdName): { inlineVolumeSpec+: { gcePersistentDisk+: { pdName: pdName } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { inlineVolumeSpec+: { gcePersistentDisk+: { readOnly: readOnly } } }, - }, - '#glusterfs':: d.obj(help='Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling.'), - glusterfs: { - '#withEndpoints':: d.fn(help='EndpointsName is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='endpoints', type=d.T.string)]), - withEndpoints(endpoints): { inlineVolumeSpec+: { glusterfs+: { endpoints: endpoints } } }, - '#withEndpointsNamespace':: d.fn(help='EndpointsNamespace is the namespace that contains Glusterfs endpoint. If this field is empty, the EndpointNamespace defaults to the same namespace as the bound PVC. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='endpointsNamespace', type=d.T.string)]), - withEndpointsNamespace(endpointsNamespace): { inlineVolumeSpec+: { glusterfs+: { endpointsNamespace: endpointsNamespace } } }, - '#withPath':: d.fn(help='Path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { inlineVolumeSpec+: { glusterfs+: { path: path } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { inlineVolumeSpec+: { glusterfs+: { readOnly: readOnly } } }, - }, - '#hostPath':: d.obj(help='Represents a host path mapped into a pod. Host path volumes do not support ownership management or SELinux relabeling.'), - hostPath: { - '#withPath':: d.fn(help='Path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { inlineVolumeSpec+: { hostPath+: { path: path } } }, - '#withType':: d.fn(help='Type for HostPath Volume Defaults to "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { inlineVolumeSpec+: { hostPath+: { type: type } } }, - }, - '#iscsi':: d.obj(help='ISCSIPersistentVolumeSource represents an ISCSI disk. ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling.'), - iscsi: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { inlineVolumeSpec+: { iscsi+: { secretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { inlineVolumeSpec+: { iscsi+: { secretRef+: { namespace: namespace } } } }, - }, - '#withChapAuthDiscovery':: d.fn(help='whether support iSCSI Discovery CHAP authentication', args=[d.arg(name='chapAuthDiscovery', type=d.T.boolean)]), - withChapAuthDiscovery(chapAuthDiscovery): { inlineVolumeSpec+: { iscsi+: { chapAuthDiscovery: chapAuthDiscovery } } }, - '#withChapAuthSession':: d.fn(help='whether support iSCSI Session CHAP authentication', args=[d.arg(name='chapAuthSession', type=d.T.boolean)]), - withChapAuthSession(chapAuthSession): { inlineVolumeSpec+: { iscsi+: { chapAuthSession: chapAuthSession } } }, - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { inlineVolumeSpec+: { iscsi+: { fsType: fsType } } }, - '#withInitiatorName':: d.fn(help='Custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface : will be created for the connection.', args=[d.arg(name='initiatorName', type=d.T.string)]), - withInitiatorName(initiatorName): { inlineVolumeSpec+: { iscsi+: { initiatorName: initiatorName } } }, - '#withIqn':: d.fn(help='Target iSCSI Qualified Name.', args=[d.arg(name='iqn', type=d.T.string)]), - withIqn(iqn): { inlineVolumeSpec+: { iscsi+: { iqn: iqn } } }, - '#withIscsiInterface':: d.fn(help="iSCSI Interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).", args=[d.arg(name='iscsiInterface', type=d.T.string)]), - withIscsiInterface(iscsiInterface): { inlineVolumeSpec+: { iscsi+: { iscsiInterface: iscsiInterface } } }, - '#withLun':: d.fn(help='iSCSI Target Lun number.', args=[d.arg(name='lun', type=d.T.integer)]), - withLun(lun): { inlineVolumeSpec+: { iscsi+: { lun: lun } } }, - '#withPortals':: d.fn(help='iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).', args=[d.arg(name='portals', type=d.T.array)]), - withPortals(portals): { inlineVolumeSpec+: { iscsi+: { portals: if std.isArray(v=portals) then portals else [portals] } } }, - '#withPortalsMixin':: d.fn(help='iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='portals', type=d.T.array)]), - withPortalsMixin(portals): { inlineVolumeSpec+: { iscsi+: { portals+: if std.isArray(v=portals) then portals else [portals] } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { inlineVolumeSpec+: { iscsi+: { readOnly: readOnly } } }, - '#withTargetPortal':: d.fn(help='iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).', args=[d.arg(name='targetPortal', type=d.T.string)]), - withTargetPortal(targetPortal): { inlineVolumeSpec+: { iscsi+: { targetPortal: targetPortal } } }, - }, - '#local':: d.obj(help='Local represents directly-attached storage with node affinity (Beta feature)'), - 'local': { - '#withFsType':: d.fn(help='Filesystem type to mount. It applies only when the Path is a block device. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default value is to auto-select a fileystem if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { inlineVolumeSpec+: { 'local'+: { fsType: fsType } } }, - '#withPath':: d.fn(help='The full path to the volume on the node. It can be either a directory or block device (disk, partition, ...).', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { inlineVolumeSpec+: { 'local'+: { path: path } } }, - }, - '#nfs':: d.obj(help='Represents an NFS mount that lasts the lifetime of a pod. NFS volumes do not support ownership management or SELinux relabeling.'), - nfs: { - '#withPath':: d.fn(help='Path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { inlineVolumeSpec+: { nfs+: { path: path } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { inlineVolumeSpec+: { nfs+: { readOnly: readOnly } } }, - '#withServer':: d.fn(help='Server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs', args=[d.arg(name='server', type=d.T.string)]), - withServer(server): { inlineVolumeSpec+: { nfs+: { server: server } } }, - }, - '#nodeAffinity':: d.obj(help='VolumeNodeAffinity defines constraints that limit what nodes this volume can be accessed from.'), - nodeAffinity: { - '#required':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - required: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { inlineVolumeSpec+: { nodeAffinity+: { required+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { inlineVolumeSpec+: { nodeAffinity+: { required+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } }, - }, - }, - '#photonPersistentDisk':: d.obj(help='Represents a Photon Controller persistent disk resource.'), - photonPersistentDisk: { - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { inlineVolumeSpec+: { photonPersistentDisk+: { fsType: fsType } } }, - '#withPdID':: d.fn(help='ID that identifies Photon Controller persistent disk', args=[d.arg(name='pdID', type=d.T.string)]), - withPdID(pdID): { inlineVolumeSpec+: { photonPersistentDisk+: { pdID: pdID } } }, - }, - '#portworxVolume':: d.obj(help='PortworxVolumeSource represents a Portworx volume resource.'), - portworxVolume: { - '#withFsType':: d.fn(help='FSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { inlineVolumeSpec+: { portworxVolume+: { fsType: fsType } } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { inlineVolumeSpec+: { portworxVolume+: { readOnly: readOnly } } }, - '#withVolumeID':: d.fn(help='VolumeID uniquely identifies a Portworx volume', args=[d.arg(name='volumeID', type=d.T.string)]), - withVolumeID(volumeID): { inlineVolumeSpec+: { portworxVolume+: { volumeID: volumeID } } }, - }, - '#quobyte':: d.obj(help='Represents a Quobyte mount that lasts the lifetime of a pod. Quobyte volumes do not support ownership management or SELinux relabeling.'), - quobyte: { - '#withGroup':: d.fn(help='Group to map volume access to Default is no group', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { inlineVolumeSpec+: { quobyte+: { group: group } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { inlineVolumeSpec+: { quobyte+: { readOnly: readOnly } } }, - '#withRegistry':: d.fn(help='Registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes', args=[d.arg(name='registry', type=d.T.string)]), - withRegistry(registry): { inlineVolumeSpec+: { quobyte+: { registry: registry } } }, - '#withTenant':: d.fn(help='Tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin', args=[d.arg(name='tenant', type=d.T.string)]), - withTenant(tenant): { inlineVolumeSpec+: { quobyte+: { tenant: tenant } } }, - '#withUser':: d.fn(help='User to map volume access to Defaults to serivceaccount user', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { inlineVolumeSpec+: { quobyte+: { user: user } } }, - '#withVolume':: d.fn(help='Volume is a string that references an already created Quobyte volume by name.', args=[d.arg(name='volume', type=d.T.string)]), - withVolume(volume): { inlineVolumeSpec+: { quobyte+: { volume: volume } } }, - }, - '#rbd':: d.obj(help='Represents a Rados Block Device mount that lasts the lifetime of a pod. RBD volumes support ownership management and SELinux relabeling.'), - rbd: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { inlineVolumeSpec+: { rbd+: { secretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { inlineVolumeSpec+: { rbd+: { secretRef+: { namespace: namespace } } } }, - }, - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { inlineVolumeSpec+: { rbd+: { fsType: fsType } } }, - '#withImage':: d.fn(help='The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='image', type=d.T.string)]), - withImage(image): { inlineVolumeSpec+: { rbd+: { image: image } } }, - '#withKeyring':: d.fn(help='Keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='keyring', type=d.T.string)]), - withKeyring(keyring): { inlineVolumeSpec+: { rbd+: { keyring: keyring } } }, - '#withMonitors':: d.fn(help='A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitors(monitors): { inlineVolumeSpec+: { rbd+: { monitors: if std.isArray(v=monitors) then monitors else [monitors] } } }, - '#withMonitorsMixin':: d.fn(help='A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitorsMixin(monitors): { inlineVolumeSpec+: { rbd+: { monitors+: if std.isArray(v=monitors) then monitors else [monitors] } } }, - '#withPool':: d.fn(help='The rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='pool', type=d.T.string)]), - withPool(pool): { inlineVolumeSpec+: { rbd+: { pool: pool } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { inlineVolumeSpec+: { rbd+: { readOnly: readOnly } } }, - '#withUser':: d.fn(help='The rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { inlineVolumeSpec+: { rbd+: { user: user } } }, - }, - '#scaleIO':: d.obj(help='ScaleIOPersistentVolumeSource represents a persistent ScaleIO volume'), - scaleIO: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { inlineVolumeSpec+: { scaleIO+: { secretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { inlineVolumeSpec+: { scaleIO+: { secretRef+: { namespace: namespace } } } }, - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Default is "xfs"', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { inlineVolumeSpec+: { scaleIO+: { fsType: fsType } } }, - '#withGateway':: d.fn(help='The host address of the ScaleIO API Gateway.', args=[d.arg(name='gateway', type=d.T.string)]), - withGateway(gateway): { inlineVolumeSpec+: { scaleIO+: { gateway: gateway } } }, - '#withProtectionDomain':: d.fn(help='The name of the ScaleIO Protection Domain for the configured storage.', args=[d.arg(name='protectionDomain', type=d.T.string)]), - withProtectionDomain(protectionDomain): { inlineVolumeSpec+: { scaleIO+: { protectionDomain: protectionDomain } } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { inlineVolumeSpec+: { scaleIO+: { readOnly: readOnly } } }, - '#withSslEnabled':: d.fn(help='Flag to enable/disable SSL communication with Gateway, default false', args=[d.arg(name='sslEnabled', type=d.T.boolean)]), - withSslEnabled(sslEnabled): { inlineVolumeSpec+: { scaleIO+: { sslEnabled: sslEnabled } } }, - '#withStorageMode':: d.fn(help='Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.', args=[d.arg(name='storageMode', type=d.T.string)]), - withStorageMode(storageMode): { inlineVolumeSpec+: { scaleIO+: { storageMode: storageMode } } }, - '#withStoragePool':: d.fn(help='The ScaleIO Storage Pool associated with the protection domain.', args=[d.arg(name='storagePool', type=d.T.string)]), - withStoragePool(storagePool): { inlineVolumeSpec+: { scaleIO+: { storagePool: storagePool } } }, - '#withSystem':: d.fn(help='The name of the storage system as configured in ScaleIO.', args=[d.arg(name='system', type=d.T.string)]), - withSystem(system): { inlineVolumeSpec+: { scaleIO+: { system: system } } }, - '#withVolumeName':: d.fn(help='The name of a volume already created in the ScaleIO system that is associated with this volume source.', args=[d.arg(name='volumeName', type=d.T.string)]), - withVolumeName(volumeName): { inlineVolumeSpec+: { scaleIO+: { volumeName: volumeName } } }, - }, - '#storageos':: d.obj(help='Represents a StorageOS persistent volume resource.'), - storageos: { - '#secretRef':: d.obj(help='ObjectReference contains enough information to let you inspect or modify the referred object.'), - secretRef: { - '#withApiVersion':: d.fn(help='API version of the referent.', args=[d.arg(name='apiVersion', type=d.T.string)]), - withApiVersion(apiVersion): { inlineVolumeSpec+: { storageos+: { secretRef+: { apiVersion: apiVersion } } } }, - '#withFieldPath':: d.fn(help='If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { inlineVolumeSpec+: { storageos+: { secretRef+: { fieldPath: fieldPath } } } }, - '#withKind':: d.fn(help='Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { inlineVolumeSpec+: { storageos+: { secretRef+: { kind: kind } } } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { inlineVolumeSpec+: { storageos+: { secretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { inlineVolumeSpec+: { storageos+: { secretRef+: { namespace: namespace } } } }, - '#withResourceVersion':: d.fn(help='Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { inlineVolumeSpec+: { storageos+: { secretRef+: { resourceVersion: resourceVersion } } } }, - '#withUid':: d.fn(help='UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { inlineVolumeSpec+: { storageos+: { secretRef+: { uid: uid } } } }, - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { inlineVolumeSpec+: { storageos+: { fsType: fsType } } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { inlineVolumeSpec+: { storageos+: { readOnly: readOnly } } }, - '#withVolumeName':: d.fn(help='VolumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.', args=[d.arg(name='volumeName', type=d.T.string)]), - withVolumeName(volumeName): { inlineVolumeSpec+: { storageos+: { volumeName: volumeName } } }, - '#withVolumeNamespace':: d.fn(help="VolumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod's namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to 'default' if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created.", args=[d.arg(name='volumeNamespace', type=d.T.string)]), - withVolumeNamespace(volumeNamespace): { inlineVolumeSpec+: { storageos+: { volumeNamespace: volumeNamespace } } }, - }, - '#vsphereVolume':: d.obj(help='Represents a vSphere volume resource.'), - vsphereVolume: { - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { inlineVolumeSpec+: { vsphereVolume+: { fsType: fsType } } }, - '#withStoragePolicyID':: d.fn(help='Storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.', args=[d.arg(name='storagePolicyID', type=d.T.string)]), - withStoragePolicyID(storagePolicyID): { inlineVolumeSpec+: { vsphereVolume+: { storagePolicyID: storagePolicyID } } }, - '#withStoragePolicyName':: d.fn(help='Storage Policy Based Management (SPBM) profile name.', args=[d.arg(name='storagePolicyName', type=d.T.string)]), - withStoragePolicyName(storagePolicyName): { inlineVolumeSpec+: { vsphereVolume+: { storagePolicyName: storagePolicyName } } }, - '#withVolumePath':: d.fn(help='Path that identifies vSphere volume vmdk', args=[d.arg(name='volumePath', type=d.T.string)]), - withVolumePath(volumePath): { inlineVolumeSpec+: { vsphereVolume+: { volumePath: volumePath } } }, - }, - '#withAccessModes':: d.fn(help='AccessModes contains all ways the volume can be mounted. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes', args=[d.arg(name='accessModes', type=d.T.array)]), - withAccessModes(accessModes): { inlineVolumeSpec+: { accessModes: if std.isArray(v=accessModes) then accessModes else [accessModes] } }, - '#withAccessModesMixin':: d.fn(help='AccessModes contains all ways the volume can be mounted. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='accessModes', type=d.T.array)]), - withAccessModesMixin(accessModes): { inlineVolumeSpec+: { accessModes+: if std.isArray(v=accessModes) then accessModes else [accessModes] } }, - '#withCapacity':: d.fn(help="A description of the persistent volume's resources and capacity. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity", args=[d.arg(name='capacity', type=d.T.object)]), - withCapacity(capacity): { inlineVolumeSpec+: { capacity: capacity } }, - '#withCapacityMixin':: d.fn(help="A description of the persistent volume's resources and capacity. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='capacity', type=d.T.object)]), - withCapacityMixin(capacity): { inlineVolumeSpec+: { capacity+: capacity } }, - '#withMountOptions':: d.fn(help='A list of mount options, e.g. ["ro", "soft"]. Not validated - mount will simply fail if one is invalid. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options', args=[d.arg(name='mountOptions', type=d.T.array)]), - withMountOptions(mountOptions): { inlineVolumeSpec+: { mountOptions: if std.isArray(v=mountOptions) then mountOptions else [mountOptions] } }, - '#withMountOptionsMixin':: d.fn(help='A list of mount options, e.g. ["ro", "soft"]. Not validated - mount will simply fail if one is invalid. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='mountOptions', type=d.T.array)]), - withMountOptionsMixin(mountOptions): { inlineVolumeSpec+: { mountOptions+: if std.isArray(v=mountOptions) then mountOptions else [mountOptions] } }, - '#withPersistentVolumeReclaimPolicy':: d.fn(help='What happens to a persistent volume when released from its claim. Valid options are Retain (default for manually created PersistentVolumes), Delete (default for dynamically provisioned PersistentVolumes), and Recycle (deprecated). Recycle must be supported by the volume plugin underlying this PersistentVolume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#reclaiming', args=[d.arg(name='persistentVolumeReclaimPolicy', type=d.T.string)]), - withPersistentVolumeReclaimPolicy(persistentVolumeReclaimPolicy): { inlineVolumeSpec+: { persistentVolumeReclaimPolicy: persistentVolumeReclaimPolicy } }, - '#withStorageClassName':: d.fn(help='Name of StorageClass to which this persistent volume belongs. Empty value means that this volume does not belong to any StorageClass.', args=[d.arg(name='storageClassName', type=d.T.string)]), - withStorageClassName(storageClassName): { inlineVolumeSpec+: { storageClassName: storageClassName } }, - '#withVolumeMode':: d.fn(help='volumeMode defines if a volume is intended to be used with a formatted filesystem or to remain in raw block state. Value of Filesystem is implied when not included in spec.', args=[d.arg(name='volumeMode', type=d.T.string)]), - withVolumeMode(volumeMode): { inlineVolumeSpec+: { volumeMode: volumeMode } }, - }, - '#withPersistentVolumeName':: d.fn(help='Name of the persistent volume to attach.', args=[d.arg(name='persistentVolumeName', type=d.T.string)]), - withPersistentVolumeName(persistentVolumeName): { persistentVolumeName: persistentVolumeName }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1alpha1/volumeAttachmentSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1alpha1/volumeAttachmentSpec.libsonnet deleted file mode 100644 index 29f116537cf4..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1alpha1/volumeAttachmentSpec.libsonnet +++ /dev/null @@ -1,426 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='volumeAttachmentSpec', url='', help='VolumeAttachmentSpec is the specification of a VolumeAttachment request.'), - '#source':: d.obj(help='VolumeAttachmentSource represents a volume that should be attached. Right now only PersistenVolumes can be attached via external attacher, in future we may allow also inline volumes in pods. Exactly one member can be set.'), - source: { - '#inlineVolumeSpec':: d.obj(help='PersistentVolumeSpec is the specification of a persistent volume.'), - inlineVolumeSpec: { - '#awsElasticBlockStore':: d.obj(help='Represents a Persistent Disk resource in AWS.\n\nAn AWS EBS disk must exist before mounting to a container. The disk must also be in the same AWS zone as the kubelet. An AWS EBS disk can only be mounted as read/write once. AWS EBS volumes support ownership management and SELinux relabeling.'), - awsElasticBlockStore: { - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { source+: { inlineVolumeSpec+: { awsElasticBlockStore+: { fsType: fsType } } } }, - '#withPartition':: d.fn(help='The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).', args=[d.arg(name='partition', type=d.T.integer)]), - withPartition(partition): { source+: { inlineVolumeSpec+: { awsElasticBlockStore+: { partition: partition } } } }, - '#withReadOnly':: d.fn(help='Specify "true" to force and set the ReadOnly property in VolumeMounts to "true". If omitted, the default is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { source+: { inlineVolumeSpec+: { awsElasticBlockStore+: { readOnly: readOnly } } } }, - '#withVolumeID':: d.fn(help='Unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore', args=[d.arg(name='volumeID', type=d.T.string)]), - withVolumeID(volumeID): { source+: { inlineVolumeSpec+: { awsElasticBlockStore+: { volumeID: volumeID } } } }, - }, - '#azureDisk':: d.obj(help='AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.'), - azureDisk: { - '#withCachingMode':: d.fn(help='Host Caching mode: None, Read Only, Read Write.', args=[d.arg(name='cachingMode', type=d.T.string)]), - withCachingMode(cachingMode): { source+: { inlineVolumeSpec+: { azureDisk+: { cachingMode: cachingMode } } } }, - '#withDiskName':: d.fn(help='The Name of the data disk in the blob storage', args=[d.arg(name='diskName', type=d.T.string)]), - withDiskName(diskName): { source+: { inlineVolumeSpec+: { azureDisk+: { diskName: diskName } } } }, - '#withDiskURI':: d.fn(help='The URI the data disk in the blob storage', args=[d.arg(name='diskURI', type=d.T.string)]), - withDiskURI(diskURI): { source+: { inlineVolumeSpec+: { azureDisk+: { diskURI: diskURI } } } }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { source+: { inlineVolumeSpec+: { azureDisk+: { fsType: fsType } } } }, - '#withKind':: d.fn(help='Expected values Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { source+: { inlineVolumeSpec+: { azureDisk+: { kind: kind } } } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { source+: { inlineVolumeSpec+: { azureDisk+: { readOnly: readOnly } } } }, - }, - '#azureFile':: d.obj(help='AzureFile represents an Azure File Service mount on the host and bind mount to the pod.'), - azureFile: { - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { source+: { inlineVolumeSpec+: { azureFile+: { readOnly: readOnly } } } }, - '#withSecretName':: d.fn(help='the name of secret that contains Azure Storage Account Name and Key', args=[d.arg(name='secretName', type=d.T.string)]), - withSecretName(secretName): { source+: { inlineVolumeSpec+: { azureFile+: { secretName: secretName } } } }, - '#withSecretNamespace':: d.fn(help='the namespace of the secret that contains Azure Storage Account Name and Key default is the same as the Pod', args=[d.arg(name='secretNamespace', type=d.T.string)]), - withSecretNamespace(secretNamespace): { source+: { inlineVolumeSpec+: { azureFile+: { secretNamespace: secretNamespace } } } }, - '#withShareName':: d.fn(help='Share Name', args=[d.arg(name='shareName', type=d.T.string)]), - withShareName(shareName): { source+: { inlineVolumeSpec+: { azureFile+: { shareName: shareName } } } }, - }, - '#cephfs':: d.obj(help='Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling.'), - cephfs: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { source+: { inlineVolumeSpec+: { cephfs+: { secretRef+: { name: name } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { source+: { inlineVolumeSpec+: { cephfs+: { secretRef+: { namespace: namespace } } } } }, - }, - '#withMonitors':: d.fn(help='Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitors(monitors): { source+: { inlineVolumeSpec+: { cephfs+: { monitors: if std.isArray(v=monitors) then monitors else [monitors] } } } }, - '#withMonitorsMixin':: d.fn(help='Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitorsMixin(monitors): { source+: { inlineVolumeSpec+: { cephfs+: { monitors+: if std.isArray(v=monitors) then monitors else [monitors] } } } }, - '#withPath':: d.fn(help='Optional: Used as the mounted root, rather than the full Ceph tree, default is /', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { source+: { inlineVolumeSpec+: { cephfs+: { path: path } } } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { source+: { inlineVolumeSpec+: { cephfs+: { readOnly: readOnly } } } }, - '#withSecretFile':: d.fn(help='Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='secretFile', type=d.T.string)]), - withSecretFile(secretFile): { source+: { inlineVolumeSpec+: { cephfs+: { secretFile: secretFile } } } }, - '#withUser':: d.fn(help='Optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { source+: { inlineVolumeSpec+: { cephfs+: { user: user } } } }, - }, - '#cinder':: d.obj(help='Represents a cinder volume resource in Openstack. A Cinder volume must exist before mounting to a container. The volume must also be in the same region as the kubelet. Cinder volumes support ownership management and SELinux relabeling.'), - cinder: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { source+: { inlineVolumeSpec+: { cinder+: { secretRef+: { name: name } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { source+: { inlineVolumeSpec+: { cinder+: { secretRef+: { namespace: namespace } } } } }, - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { source+: { inlineVolumeSpec+: { cinder+: { fsType: fsType } } } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { source+: { inlineVolumeSpec+: { cinder+: { readOnly: readOnly } } } }, - '#withVolumeID':: d.fn(help='volume id used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md', args=[d.arg(name='volumeID', type=d.T.string)]), - withVolumeID(volumeID): { source+: { inlineVolumeSpec+: { cinder+: { volumeID: volumeID } } } }, - }, - '#claimRef':: d.obj(help='ObjectReference contains enough information to let you inspect or modify the referred object.'), - claimRef: { - '#withApiVersion':: d.fn(help='API version of the referent.', args=[d.arg(name='apiVersion', type=d.T.string)]), - withApiVersion(apiVersion): { source+: { inlineVolumeSpec+: { claimRef+: { apiVersion: apiVersion } } } }, - '#withFieldPath':: d.fn(help='If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { source+: { inlineVolumeSpec+: { claimRef+: { fieldPath: fieldPath } } } }, - '#withKind':: d.fn(help='Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { source+: { inlineVolumeSpec+: { claimRef+: { kind: kind } } } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { source+: { inlineVolumeSpec+: { claimRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { source+: { inlineVolumeSpec+: { claimRef+: { namespace: namespace } } } }, - '#withResourceVersion':: d.fn(help='Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { source+: { inlineVolumeSpec+: { claimRef+: { resourceVersion: resourceVersion } } } }, - '#withUid':: d.fn(help='UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { source+: { inlineVolumeSpec+: { claimRef+: { uid: uid } } } }, - }, - '#csi':: d.obj(help='Represents storage that is managed by an external CSI volume driver (Beta feature)'), - csi: { - '#controllerExpandSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - controllerExpandSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { source+: { inlineVolumeSpec+: { csi+: { controllerExpandSecretRef+: { name: name } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { source+: { inlineVolumeSpec+: { csi+: { controllerExpandSecretRef+: { namespace: namespace } } } } }, - }, - '#controllerPublishSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - controllerPublishSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { source+: { inlineVolumeSpec+: { csi+: { controllerPublishSecretRef+: { name: name } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { source+: { inlineVolumeSpec+: { csi+: { controllerPublishSecretRef+: { namespace: namespace } } } } }, - }, - '#nodePublishSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - nodePublishSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { source+: { inlineVolumeSpec+: { csi+: { nodePublishSecretRef+: { name: name } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { source+: { inlineVolumeSpec+: { csi+: { nodePublishSecretRef+: { namespace: namespace } } } } }, - }, - '#nodeStageSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - nodeStageSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { source+: { inlineVolumeSpec+: { csi+: { nodeStageSecretRef+: { name: name } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { source+: { inlineVolumeSpec+: { csi+: { nodeStageSecretRef+: { namespace: namespace } } } } }, - }, - '#withDriver':: d.fn(help='Driver is the name of the driver to use for this volume. Required.', args=[d.arg(name='driver', type=d.T.string)]), - withDriver(driver): { source+: { inlineVolumeSpec+: { csi+: { driver: driver } } } }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs".', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { source+: { inlineVolumeSpec+: { csi+: { fsType: fsType } } } }, - '#withReadOnly':: d.fn(help='Optional: The value to pass to ControllerPublishVolumeRequest. Defaults to false (read/write).', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { source+: { inlineVolumeSpec+: { csi+: { readOnly: readOnly } } } }, - '#withVolumeAttributes':: d.fn(help='Attributes of the volume to publish.', args=[d.arg(name='volumeAttributes', type=d.T.object)]), - withVolumeAttributes(volumeAttributes): { source+: { inlineVolumeSpec+: { csi+: { volumeAttributes: volumeAttributes } } } }, - '#withVolumeAttributesMixin':: d.fn(help='Attributes of the volume to publish.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumeAttributes', type=d.T.object)]), - withVolumeAttributesMixin(volumeAttributes): { source+: { inlineVolumeSpec+: { csi+: { volumeAttributes+: volumeAttributes } } } }, - '#withVolumeHandle':: d.fn(help='VolumeHandle is the unique volume name returned by the CSI volume plugin’s CreateVolume to refer to the volume on all subsequent calls. Required.', args=[d.arg(name='volumeHandle', type=d.T.string)]), - withVolumeHandle(volumeHandle): { source+: { inlineVolumeSpec+: { csi+: { volumeHandle: volumeHandle } } } }, - }, - '#fc':: d.obj(help='Represents a Fibre Channel volume. Fibre Channel volumes can only be mounted as read/write once. Fibre Channel volumes support ownership management and SELinux relabeling.'), - fc: { - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { source+: { inlineVolumeSpec+: { fc+: { fsType: fsType } } } }, - '#withLun':: d.fn(help='Optional: FC target lun number', args=[d.arg(name='lun', type=d.T.integer)]), - withLun(lun): { source+: { inlineVolumeSpec+: { fc+: { lun: lun } } } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { source+: { inlineVolumeSpec+: { fc+: { readOnly: readOnly } } } }, - '#withTargetWWNs':: d.fn(help='Optional: FC target worldwide names (WWNs)', args=[d.arg(name='targetWWNs', type=d.T.array)]), - withTargetWWNs(targetWWNs): { source+: { inlineVolumeSpec+: { fc+: { targetWWNs: if std.isArray(v=targetWWNs) then targetWWNs else [targetWWNs] } } } }, - '#withTargetWWNsMixin':: d.fn(help='Optional: FC target worldwide names (WWNs)\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='targetWWNs', type=d.T.array)]), - withTargetWWNsMixin(targetWWNs): { source+: { inlineVolumeSpec+: { fc+: { targetWWNs+: if std.isArray(v=targetWWNs) then targetWWNs else [targetWWNs] } } } }, - '#withWwids':: d.fn(help='Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.', args=[d.arg(name='wwids', type=d.T.array)]), - withWwids(wwids): { source+: { inlineVolumeSpec+: { fc+: { wwids: if std.isArray(v=wwids) then wwids else [wwids] } } } }, - '#withWwidsMixin':: d.fn(help='Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='wwids', type=d.T.array)]), - withWwidsMixin(wwids): { source+: { inlineVolumeSpec+: { fc+: { wwids+: if std.isArray(v=wwids) then wwids else [wwids] } } } }, - }, - '#flexVolume':: d.obj(help='FlexPersistentVolumeSource represents a generic persistent volume resource that is provisioned/attached using an exec based plugin.'), - flexVolume: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { source+: { inlineVolumeSpec+: { flexVolume+: { secretRef+: { name: name } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { source+: { inlineVolumeSpec+: { flexVolume+: { secretRef+: { namespace: namespace } } } } }, - }, - '#withDriver':: d.fn(help='Driver is the name of the driver to use for this volume.', args=[d.arg(name='driver', type=d.T.string)]), - withDriver(driver): { source+: { inlineVolumeSpec+: { flexVolume+: { driver: driver } } } }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { source+: { inlineVolumeSpec+: { flexVolume+: { fsType: fsType } } } }, - '#withOptions':: d.fn(help='Optional: Extra command options if any.', args=[d.arg(name='options', type=d.T.object)]), - withOptions(options): { source+: { inlineVolumeSpec+: { flexVolume+: { options: options } } } }, - '#withOptionsMixin':: d.fn(help='Optional: Extra command options if any.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.object)]), - withOptionsMixin(options): { source+: { inlineVolumeSpec+: { flexVolume+: { options+: options } } } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { source+: { inlineVolumeSpec+: { flexVolume+: { readOnly: readOnly } } } }, - }, - '#flocker':: d.obj(help='Represents a Flocker volume mounted by the Flocker agent. One and only one of datasetName and datasetUUID should be set. Flocker volumes do not support ownership management or SELinux relabeling.'), - flocker: { - '#withDatasetName':: d.fn(help='Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated', args=[d.arg(name='datasetName', type=d.T.string)]), - withDatasetName(datasetName): { source+: { inlineVolumeSpec+: { flocker+: { datasetName: datasetName } } } }, - '#withDatasetUUID':: d.fn(help='UUID of the dataset. This is unique identifier of a Flocker dataset', args=[d.arg(name='datasetUUID', type=d.T.string)]), - withDatasetUUID(datasetUUID): { source+: { inlineVolumeSpec+: { flocker+: { datasetUUID: datasetUUID } } } }, - }, - '#gcePersistentDisk':: d.obj(help='Represents a Persistent Disk resource in Google Compute Engine.\n\nA GCE PD must exist before mounting to a container. The disk must also be in the same GCE project and zone as the kubelet. A GCE PD can only be mounted as read/write once or read-only many times. GCE PDs support ownership management and SELinux relabeling.'), - gcePersistentDisk: { - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { source+: { inlineVolumeSpec+: { gcePersistentDisk+: { fsType: fsType } } } }, - '#withPartition':: d.fn(help='The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='partition', type=d.T.integer)]), - withPartition(partition): { source+: { inlineVolumeSpec+: { gcePersistentDisk+: { partition: partition } } } }, - '#withPdName':: d.fn(help='Unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='pdName', type=d.T.string)]), - withPdName(pdName): { source+: { inlineVolumeSpec+: { gcePersistentDisk+: { pdName: pdName } } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { source+: { inlineVolumeSpec+: { gcePersistentDisk+: { readOnly: readOnly } } } }, - }, - '#glusterfs':: d.obj(help='Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling.'), - glusterfs: { - '#withEndpoints':: d.fn(help='EndpointsName is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='endpoints', type=d.T.string)]), - withEndpoints(endpoints): { source+: { inlineVolumeSpec+: { glusterfs+: { endpoints: endpoints } } } }, - '#withEndpointsNamespace':: d.fn(help='EndpointsNamespace is the namespace that contains Glusterfs endpoint. If this field is empty, the EndpointNamespace defaults to the same namespace as the bound PVC. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='endpointsNamespace', type=d.T.string)]), - withEndpointsNamespace(endpointsNamespace): { source+: { inlineVolumeSpec+: { glusterfs+: { endpointsNamespace: endpointsNamespace } } } }, - '#withPath':: d.fn(help='Path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { source+: { inlineVolumeSpec+: { glusterfs+: { path: path } } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { source+: { inlineVolumeSpec+: { glusterfs+: { readOnly: readOnly } } } }, - }, - '#hostPath':: d.obj(help='Represents a host path mapped into a pod. Host path volumes do not support ownership management or SELinux relabeling.'), - hostPath: { - '#withPath':: d.fn(help='Path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { source+: { inlineVolumeSpec+: { hostPath+: { path: path } } } }, - '#withType':: d.fn(help='Type for HostPath Volume Defaults to "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { source+: { inlineVolumeSpec+: { hostPath+: { type: type } } } }, - }, - '#iscsi':: d.obj(help='ISCSIPersistentVolumeSource represents an ISCSI disk. ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling.'), - iscsi: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { source+: { inlineVolumeSpec+: { iscsi+: { secretRef+: { name: name } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { source+: { inlineVolumeSpec+: { iscsi+: { secretRef+: { namespace: namespace } } } } }, - }, - '#withChapAuthDiscovery':: d.fn(help='whether support iSCSI Discovery CHAP authentication', args=[d.arg(name='chapAuthDiscovery', type=d.T.boolean)]), - withChapAuthDiscovery(chapAuthDiscovery): { source+: { inlineVolumeSpec+: { iscsi+: { chapAuthDiscovery: chapAuthDiscovery } } } }, - '#withChapAuthSession':: d.fn(help='whether support iSCSI Session CHAP authentication', args=[d.arg(name='chapAuthSession', type=d.T.boolean)]), - withChapAuthSession(chapAuthSession): { source+: { inlineVolumeSpec+: { iscsi+: { chapAuthSession: chapAuthSession } } } }, - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { source+: { inlineVolumeSpec+: { iscsi+: { fsType: fsType } } } }, - '#withInitiatorName':: d.fn(help='Custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface : will be created for the connection.', args=[d.arg(name='initiatorName', type=d.T.string)]), - withInitiatorName(initiatorName): { source+: { inlineVolumeSpec+: { iscsi+: { initiatorName: initiatorName } } } }, - '#withIqn':: d.fn(help='Target iSCSI Qualified Name.', args=[d.arg(name='iqn', type=d.T.string)]), - withIqn(iqn): { source+: { inlineVolumeSpec+: { iscsi+: { iqn: iqn } } } }, - '#withIscsiInterface':: d.fn(help="iSCSI Interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).", args=[d.arg(name='iscsiInterface', type=d.T.string)]), - withIscsiInterface(iscsiInterface): { source+: { inlineVolumeSpec+: { iscsi+: { iscsiInterface: iscsiInterface } } } }, - '#withLun':: d.fn(help='iSCSI Target Lun number.', args=[d.arg(name='lun', type=d.T.integer)]), - withLun(lun): { source+: { inlineVolumeSpec+: { iscsi+: { lun: lun } } } }, - '#withPortals':: d.fn(help='iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).', args=[d.arg(name='portals', type=d.T.array)]), - withPortals(portals): { source+: { inlineVolumeSpec+: { iscsi+: { portals: if std.isArray(v=portals) then portals else [portals] } } } }, - '#withPortalsMixin':: d.fn(help='iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='portals', type=d.T.array)]), - withPortalsMixin(portals): { source+: { inlineVolumeSpec+: { iscsi+: { portals+: if std.isArray(v=portals) then portals else [portals] } } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { source+: { inlineVolumeSpec+: { iscsi+: { readOnly: readOnly } } } }, - '#withTargetPortal':: d.fn(help='iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).', args=[d.arg(name='targetPortal', type=d.T.string)]), - withTargetPortal(targetPortal): { source+: { inlineVolumeSpec+: { iscsi+: { targetPortal: targetPortal } } } }, - }, - '#local':: d.obj(help='Local represents directly-attached storage with node affinity (Beta feature)'), - 'local': { - '#withFsType':: d.fn(help='Filesystem type to mount. It applies only when the Path is a block device. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default value is to auto-select a fileystem if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { source+: { inlineVolumeSpec+: { 'local'+: { fsType: fsType } } } }, - '#withPath':: d.fn(help='The full path to the volume on the node. It can be either a directory or block device (disk, partition, ...).', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { source+: { inlineVolumeSpec+: { 'local'+: { path: path } } } }, - }, - '#nfs':: d.obj(help='Represents an NFS mount that lasts the lifetime of a pod. NFS volumes do not support ownership management or SELinux relabeling.'), - nfs: { - '#withPath':: d.fn(help='Path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { source+: { inlineVolumeSpec+: { nfs+: { path: path } } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { source+: { inlineVolumeSpec+: { nfs+: { readOnly: readOnly } } } }, - '#withServer':: d.fn(help='Server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs', args=[d.arg(name='server', type=d.T.string)]), - withServer(server): { source+: { inlineVolumeSpec+: { nfs+: { server: server } } } }, - }, - '#nodeAffinity':: d.obj(help='VolumeNodeAffinity defines constraints that limit what nodes this volume can be accessed from.'), - nodeAffinity: { - '#required':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - required: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { source+: { inlineVolumeSpec+: { nodeAffinity+: { required+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { source+: { inlineVolumeSpec+: { nodeAffinity+: { required+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } }, - }, - }, - '#photonPersistentDisk':: d.obj(help='Represents a Photon Controller persistent disk resource.'), - photonPersistentDisk: { - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { source+: { inlineVolumeSpec+: { photonPersistentDisk+: { fsType: fsType } } } }, - '#withPdID':: d.fn(help='ID that identifies Photon Controller persistent disk', args=[d.arg(name='pdID', type=d.T.string)]), - withPdID(pdID): { source+: { inlineVolumeSpec+: { photonPersistentDisk+: { pdID: pdID } } } }, - }, - '#portworxVolume':: d.obj(help='PortworxVolumeSource represents a Portworx volume resource.'), - portworxVolume: { - '#withFsType':: d.fn(help='FSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { source+: { inlineVolumeSpec+: { portworxVolume+: { fsType: fsType } } } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { source+: { inlineVolumeSpec+: { portworxVolume+: { readOnly: readOnly } } } }, - '#withVolumeID':: d.fn(help='VolumeID uniquely identifies a Portworx volume', args=[d.arg(name='volumeID', type=d.T.string)]), - withVolumeID(volumeID): { source+: { inlineVolumeSpec+: { portworxVolume+: { volumeID: volumeID } } } }, - }, - '#quobyte':: d.obj(help='Represents a Quobyte mount that lasts the lifetime of a pod. Quobyte volumes do not support ownership management or SELinux relabeling.'), - quobyte: { - '#withGroup':: d.fn(help='Group to map volume access to Default is no group', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { source+: { inlineVolumeSpec+: { quobyte+: { group: group } } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { source+: { inlineVolumeSpec+: { quobyte+: { readOnly: readOnly } } } }, - '#withRegistry':: d.fn(help='Registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes', args=[d.arg(name='registry', type=d.T.string)]), - withRegistry(registry): { source+: { inlineVolumeSpec+: { quobyte+: { registry: registry } } } }, - '#withTenant':: d.fn(help='Tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin', args=[d.arg(name='tenant', type=d.T.string)]), - withTenant(tenant): { source+: { inlineVolumeSpec+: { quobyte+: { tenant: tenant } } } }, - '#withUser':: d.fn(help='User to map volume access to Defaults to serivceaccount user', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { source+: { inlineVolumeSpec+: { quobyte+: { user: user } } } }, - '#withVolume':: d.fn(help='Volume is a string that references an already created Quobyte volume by name.', args=[d.arg(name='volume', type=d.T.string)]), - withVolume(volume): { source+: { inlineVolumeSpec+: { quobyte+: { volume: volume } } } }, - }, - '#rbd':: d.obj(help='Represents a Rados Block Device mount that lasts the lifetime of a pod. RBD volumes support ownership management and SELinux relabeling.'), - rbd: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { source+: { inlineVolumeSpec+: { rbd+: { secretRef+: { name: name } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { source+: { inlineVolumeSpec+: { rbd+: { secretRef+: { namespace: namespace } } } } }, - }, - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { source+: { inlineVolumeSpec+: { rbd+: { fsType: fsType } } } }, - '#withImage':: d.fn(help='The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='image', type=d.T.string)]), - withImage(image): { source+: { inlineVolumeSpec+: { rbd+: { image: image } } } }, - '#withKeyring':: d.fn(help='Keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='keyring', type=d.T.string)]), - withKeyring(keyring): { source+: { inlineVolumeSpec+: { rbd+: { keyring: keyring } } } }, - '#withMonitors':: d.fn(help='A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitors(monitors): { source+: { inlineVolumeSpec+: { rbd+: { monitors: if std.isArray(v=monitors) then monitors else [monitors] } } } }, - '#withMonitorsMixin':: d.fn(help='A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitorsMixin(monitors): { source+: { inlineVolumeSpec+: { rbd+: { monitors+: if std.isArray(v=monitors) then monitors else [monitors] } } } }, - '#withPool':: d.fn(help='The rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='pool', type=d.T.string)]), - withPool(pool): { source+: { inlineVolumeSpec+: { rbd+: { pool: pool } } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { source+: { inlineVolumeSpec+: { rbd+: { readOnly: readOnly } } } }, - '#withUser':: d.fn(help='The rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { source+: { inlineVolumeSpec+: { rbd+: { user: user } } } }, - }, - '#scaleIO':: d.obj(help='ScaleIOPersistentVolumeSource represents a persistent ScaleIO volume'), - scaleIO: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { source+: { inlineVolumeSpec+: { scaleIO+: { secretRef+: { name: name } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { source+: { inlineVolumeSpec+: { scaleIO+: { secretRef+: { namespace: namespace } } } } }, - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Default is "xfs"', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { source+: { inlineVolumeSpec+: { scaleIO+: { fsType: fsType } } } }, - '#withGateway':: d.fn(help='The host address of the ScaleIO API Gateway.', args=[d.arg(name='gateway', type=d.T.string)]), - withGateway(gateway): { source+: { inlineVolumeSpec+: { scaleIO+: { gateway: gateway } } } }, - '#withProtectionDomain':: d.fn(help='The name of the ScaleIO Protection Domain for the configured storage.', args=[d.arg(name='protectionDomain', type=d.T.string)]), - withProtectionDomain(protectionDomain): { source+: { inlineVolumeSpec+: { scaleIO+: { protectionDomain: protectionDomain } } } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { source+: { inlineVolumeSpec+: { scaleIO+: { readOnly: readOnly } } } }, - '#withSslEnabled':: d.fn(help='Flag to enable/disable SSL communication with Gateway, default false', args=[d.arg(name='sslEnabled', type=d.T.boolean)]), - withSslEnabled(sslEnabled): { source+: { inlineVolumeSpec+: { scaleIO+: { sslEnabled: sslEnabled } } } }, - '#withStorageMode':: d.fn(help='Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.', args=[d.arg(name='storageMode', type=d.T.string)]), - withStorageMode(storageMode): { source+: { inlineVolumeSpec+: { scaleIO+: { storageMode: storageMode } } } }, - '#withStoragePool':: d.fn(help='The ScaleIO Storage Pool associated with the protection domain.', args=[d.arg(name='storagePool', type=d.T.string)]), - withStoragePool(storagePool): { source+: { inlineVolumeSpec+: { scaleIO+: { storagePool: storagePool } } } }, - '#withSystem':: d.fn(help='The name of the storage system as configured in ScaleIO.', args=[d.arg(name='system', type=d.T.string)]), - withSystem(system): { source+: { inlineVolumeSpec+: { scaleIO+: { system: system } } } }, - '#withVolumeName':: d.fn(help='The name of a volume already created in the ScaleIO system that is associated with this volume source.', args=[d.arg(name='volumeName', type=d.T.string)]), - withVolumeName(volumeName): { source+: { inlineVolumeSpec+: { scaleIO+: { volumeName: volumeName } } } }, - }, - '#storageos':: d.obj(help='Represents a StorageOS persistent volume resource.'), - storageos: { - '#secretRef':: d.obj(help='ObjectReference contains enough information to let you inspect or modify the referred object.'), - secretRef: { - '#withApiVersion':: d.fn(help='API version of the referent.', args=[d.arg(name='apiVersion', type=d.T.string)]), - withApiVersion(apiVersion): { source+: { inlineVolumeSpec+: { storageos+: { secretRef+: { apiVersion: apiVersion } } } } }, - '#withFieldPath':: d.fn(help='If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { source+: { inlineVolumeSpec+: { storageos+: { secretRef+: { fieldPath: fieldPath } } } } }, - '#withKind':: d.fn(help='Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { source+: { inlineVolumeSpec+: { storageos+: { secretRef+: { kind: kind } } } } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { source+: { inlineVolumeSpec+: { storageos+: { secretRef+: { name: name } } } } }, - '#withNamespace':: d.fn(help='Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { source+: { inlineVolumeSpec+: { storageos+: { secretRef+: { namespace: namespace } } } } }, - '#withResourceVersion':: d.fn(help='Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { source+: { inlineVolumeSpec+: { storageos+: { secretRef+: { resourceVersion: resourceVersion } } } } }, - '#withUid':: d.fn(help='UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { source+: { inlineVolumeSpec+: { storageos+: { secretRef+: { uid: uid } } } } }, - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { source+: { inlineVolumeSpec+: { storageos+: { fsType: fsType } } } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { source+: { inlineVolumeSpec+: { storageos+: { readOnly: readOnly } } } }, - '#withVolumeName':: d.fn(help='VolumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.', args=[d.arg(name='volumeName', type=d.T.string)]), - withVolumeName(volumeName): { source+: { inlineVolumeSpec+: { storageos+: { volumeName: volumeName } } } }, - '#withVolumeNamespace':: d.fn(help="VolumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod's namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to 'default' if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created.", args=[d.arg(name='volumeNamespace', type=d.T.string)]), - withVolumeNamespace(volumeNamespace): { source+: { inlineVolumeSpec+: { storageos+: { volumeNamespace: volumeNamespace } } } }, - }, - '#vsphereVolume':: d.obj(help='Represents a vSphere volume resource.'), - vsphereVolume: { - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { source+: { inlineVolumeSpec+: { vsphereVolume+: { fsType: fsType } } } }, - '#withStoragePolicyID':: d.fn(help='Storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.', args=[d.arg(name='storagePolicyID', type=d.T.string)]), - withStoragePolicyID(storagePolicyID): { source+: { inlineVolumeSpec+: { vsphereVolume+: { storagePolicyID: storagePolicyID } } } }, - '#withStoragePolicyName':: d.fn(help='Storage Policy Based Management (SPBM) profile name.', args=[d.arg(name='storagePolicyName', type=d.T.string)]), - withStoragePolicyName(storagePolicyName): { source+: { inlineVolumeSpec+: { vsphereVolume+: { storagePolicyName: storagePolicyName } } } }, - '#withVolumePath':: d.fn(help='Path that identifies vSphere volume vmdk', args=[d.arg(name='volumePath', type=d.T.string)]), - withVolumePath(volumePath): { source+: { inlineVolumeSpec+: { vsphereVolume+: { volumePath: volumePath } } } }, - }, - '#withAccessModes':: d.fn(help='AccessModes contains all ways the volume can be mounted. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes', args=[d.arg(name='accessModes', type=d.T.array)]), - withAccessModes(accessModes): { source+: { inlineVolumeSpec+: { accessModes: if std.isArray(v=accessModes) then accessModes else [accessModes] } } }, - '#withAccessModesMixin':: d.fn(help='AccessModes contains all ways the volume can be mounted. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='accessModes', type=d.T.array)]), - withAccessModesMixin(accessModes): { source+: { inlineVolumeSpec+: { accessModes+: if std.isArray(v=accessModes) then accessModes else [accessModes] } } }, - '#withCapacity':: d.fn(help="A description of the persistent volume's resources and capacity. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity", args=[d.arg(name='capacity', type=d.T.object)]), - withCapacity(capacity): { source+: { inlineVolumeSpec+: { capacity: capacity } } }, - '#withCapacityMixin':: d.fn(help="A description of the persistent volume's resources and capacity. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='capacity', type=d.T.object)]), - withCapacityMixin(capacity): { source+: { inlineVolumeSpec+: { capacity+: capacity } } }, - '#withMountOptions':: d.fn(help='A list of mount options, e.g. ["ro", "soft"]. Not validated - mount will simply fail if one is invalid. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options', args=[d.arg(name='mountOptions', type=d.T.array)]), - withMountOptions(mountOptions): { source+: { inlineVolumeSpec+: { mountOptions: if std.isArray(v=mountOptions) then mountOptions else [mountOptions] } } }, - '#withMountOptionsMixin':: d.fn(help='A list of mount options, e.g. ["ro", "soft"]. Not validated - mount will simply fail if one is invalid. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='mountOptions', type=d.T.array)]), - withMountOptionsMixin(mountOptions): { source+: { inlineVolumeSpec+: { mountOptions+: if std.isArray(v=mountOptions) then mountOptions else [mountOptions] } } }, - '#withPersistentVolumeReclaimPolicy':: d.fn(help='What happens to a persistent volume when released from its claim. Valid options are Retain (default for manually created PersistentVolumes), Delete (default for dynamically provisioned PersistentVolumes), and Recycle (deprecated). Recycle must be supported by the volume plugin underlying this PersistentVolume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#reclaiming', args=[d.arg(name='persistentVolumeReclaimPolicy', type=d.T.string)]), - withPersistentVolumeReclaimPolicy(persistentVolumeReclaimPolicy): { source+: { inlineVolumeSpec+: { persistentVolumeReclaimPolicy: persistentVolumeReclaimPolicy } } }, - '#withStorageClassName':: d.fn(help='Name of StorageClass to which this persistent volume belongs. Empty value means that this volume does not belong to any StorageClass.', args=[d.arg(name='storageClassName', type=d.T.string)]), - withStorageClassName(storageClassName): { source+: { inlineVolumeSpec+: { storageClassName: storageClassName } } }, - '#withVolumeMode':: d.fn(help='volumeMode defines if a volume is intended to be used with a formatted filesystem or to remain in raw block state. Value of Filesystem is implied when not included in spec.', args=[d.arg(name='volumeMode', type=d.T.string)]), - withVolumeMode(volumeMode): { source+: { inlineVolumeSpec+: { volumeMode: volumeMode } } }, - }, - '#withPersistentVolumeName':: d.fn(help='Name of the persistent volume to attach.', args=[d.arg(name='persistentVolumeName', type=d.T.string)]), - withPersistentVolumeName(persistentVolumeName): { source+: { persistentVolumeName: persistentVolumeName } }, - }, - '#withAttacher':: d.fn(help='Attacher indicates the name of the volume driver that MUST handle this request. This is the name returned by GetPluginName().', args=[d.arg(name='attacher', type=d.T.string)]), - withAttacher(attacher): { attacher: attacher }, - '#withNodeName':: d.fn(help='The node that the volume should be attached to.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { nodeName: nodeName }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1alpha1/volumeAttachmentStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1alpha1/volumeAttachmentStatus.libsonnet deleted file mode 100644 index 9b56054a42fb..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1alpha1/volumeAttachmentStatus.libsonnet +++ /dev/null @@ -1,26 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='volumeAttachmentStatus', url='', help='VolumeAttachmentStatus is the status of a VolumeAttachment request.'), - '#attachError':: d.obj(help='VolumeError captures an error encountered during a volume operation.'), - attachError: { - '#withMessage':: d.fn(help='String detailing the error encountered during Attach or Detach operation. This string maybe logged, so it should not contain sensitive information.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { attachError+: { message: message } }, - '#withTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='time', type=d.T.string)]), - withTime(time): { attachError+: { time: time } }, - }, - '#detachError':: d.obj(help='VolumeError captures an error encountered during a volume operation.'), - detachError: { - '#withMessage':: d.fn(help='String detailing the error encountered during Attach or Detach operation. This string maybe logged, so it should not contain sensitive information.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { detachError+: { message: message } }, - '#withTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='time', type=d.T.string)]), - withTime(time): { detachError+: { time: time } }, - }, - '#withAttached':: d.fn(help='Indicates the volume is successfully attached. This field must only be set by the entity completing the attach operation, i.e. the external-attacher.', args=[d.arg(name='attached', type=d.T.boolean)]), - withAttached(attached): { attached: attached }, - '#withAttachmentMetadata':: d.fn(help='Upon successful attach, this field is populated with any information returned by the attach operation that must be passed into subsequent WaitForAttach or Mount calls. This field must only be set by the entity completing the attach operation, i.e. the external-attacher.', args=[d.arg(name='attachmentMetadata', type=d.T.object)]), - withAttachmentMetadata(attachmentMetadata): { attachmentMetadata: attachmentMetadata }, - '#withAttachmentMetadataMixin':: d.fn(help='Upon successful attach, this field is populated with any information returned by the attach operation that must be passed into subsequent WaitForAttach or Mount calls. This field must only be set by the entity completing the attach operation, i.e. the external-attacher.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='attachmentMetadata', type=d.T.object)]), - withAttachmentMetadataMixin(attachmentMetadata): { attachmentMetadata+: attachmentMetadata }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1alpha1/volumeError.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1alpha1/volumeError.libsonnet deleted file mode 100644 index d0aa7b4405f0..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1alpha1/volumeError.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='volumeError', url='', help='VolumeError captures an error encountered during a volume operation.'), - '#withMessage':: d.fn(help='String detailing the error encountered during Attach or Detach operation. This string maybe logged, so it should not contain sensitive information.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='time', type=d.T.string)]), - withTime(time): { time: time }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/csiDriver.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/csiDriver.libsonnet deleted file mode 100644 index 2f29662cec0c..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/csiDriver.libsonnet +++ /dev/null @@ -1,77 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='csiDriver', url='', help='CSIDriver captures information about a Container Storage Interface (CSI) volume driver deployed on the cluster. CSI drivers do not need to create the CSIDriver object directly. Instead they may use the cluster-driver-registrar sidecar container. When deployed with a CSI driver it automatically creates a CSIDriver object representing the driver. Kubernetes attach detach controller uses this object to determine whether attach is required. Kubelet uses this object to determine whether pod information needs to be passed on mount. CSIDriver objects are non-namespaced.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Csidriver', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'storage.k8s.io/v1beta1', - kind: 'CsiDriver', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='CSIDriverSpec is the specification of a CSIDriver.'), - spec: { - '#withAttachRequired':: d.fn(help='attachRequired indicates this CSI volume driver requires an attach operation (because it implements the CSI ControllerPublishVolume() method), and that the Kubernetes attach detach controller should call the attach volume interface which checks the volumeattachment status and waits until the volume is attached before proceeding to mounting. The CSI external-attacher coordinates with CSI volume driver and updates the volumeattachment status when the attach operation is complete. If the CSIDriverRegistry feature gate is enabled and the value is specified to false, the attach operation will be skipped. Otherwise the attach operation will be called.\n\nThis field is immutable.', args=[d.arg(name='attachRequired', type=d.T.boolean)]), - withAttachRequired(attachRequired): { spec+: { attachRequired: attachRequired } }, - '#withFsGroupPolicy':: d.fn(help='Defines if the underlying volume supports changing ownership and permission of the volume before being mounted. Refer to the specific FSGroupPolicy values for additional details. This field is alpha-level, and is only honored by servers that enable the CSIVolumeFSGroupPolicy feature gate.\n\nThis field is immutable.', args=[d.arg(name='fsGroupPolicy', type=d.T.string)]), - withFsGroupPolicy(fsGroupPolicy): { spec+: { fsGroupPolicy: fsGroupPolicy } }, - '#withPodInfoOnMount':: d.fn(help="If set to true, podInfoOnMount indicates this CSI volume driver requires additional pod information (like podName, podUID, etc.) during mount operations. If set to false, pod information will not be passed on mount. Default is false. The CSI driver specifies podInfoOnMount as part of driver deployment. If true, Kubelet will pass pod information as VolumeContext in the CSI NodePublishVolume() calls. The CSI driver is responsible for parsing and validating the information passed in as VolumeContext. The following VolumeConext will be passed if podInfoOnMount is set to true. This list might grow, but the prefix will be used. 'csi.storage.k8s.io/pod.name': pod.Name 'csi.storage.k8s.io/pod.namespace': pod.Namespace 'csi.storage.k8s.io/pod.uid': string(pod.UID) 'csi.storage.k8s.io/ephemeral': 'true' if the volume is an ephemeral inline volume\n defined by a CSIVolumeSource, otherwise 'false'\n\n'csi.storage.k8s.io/ephemeral' is a new feature in Kubernetes 1.16. It is only required for drivers which support both the 'Persistent' and 'Ephemeral' VolumeLifecycleMode. Other drivers can leave pod info disabled and/or ignore this field. As Kubernetes 1.15 doesn't support this field, drivers can only support one mode when deployed on such a cluster and the deployment determines which mode that is, for example via a command line parameter of the driver.\n\nThis field is immutable.", args=[d.arg(name='podInfoOnMount', type=d.T.boolean)]), - withPodInfoOnMount(podInfoOnMount): { spec+: { podInfoOnMount: podInfoOnMount } }, - '#withRequiresRepublish':: d.fn(help='RequiresRepublish indicates the CSI driver wants `NodePublishVolume` being periodically called to reflect any possible change in the mounted volume. This field defaults to false.\n\nNote: After a successful initial NodePublishVolume call, subsequent calls to NodePublishVolume should only update the contents of the volume. New mount points will not be seen by a running container.\n\nThis is a beta feature and only available when the CSIServiceAccountToken feature is enabled.', args=[d.arg(name='requiresRepublish', type=d.T.boolean)]), - withRequiresRepublish(requiresRepublish): { spec+: { requiresRepublish: requiresRepublish } }, - '#withStorageCapacity':: d.fn(help='If set to true, storageCapacity indicates that the CSI volume driver wants pod scheduling to consider the storage capacity that the driver deployment will report by creating CSIStorageCapacity objects with capacity information.\n\nThe check can be enabled immediately when deploying a driver. In that case, provisioning new volumes with late binding will pause until the driver deployment has published some suitable CSIStorageCapacity object.\n\nAlternatively, the driver can be deployed with the field unset or false and it can be flipped later when storage capacity information has been published.\n\nThis field is immutable.\n\nThis is a beta field and only available when the CSIStorageCapacity feature is enabled. The default is false.', args=[d.arg(name='storageCapacity', type=d.T.boolean)]), - withStorageCapacity(storageCapacity): { spec+: { storageCapacity: storageCapacity } }, - '#withTokenRequests':: d.fn(help="TokenRequests indicates the CSI driver needs pods' service account tokens it is mounting volume for to do necessary authentication. Kubelet will pass the tokens in VolumeContext in the CSI NodePublishVolume calls. The CSI driver should parse and validate the following VolumeContext: 'csi.storage.k8s.io/serviceAccount.tokens': {\n '': {\n 'token': ,\n 'expirationTimestamp': ,\n },\n ...\n}\n\nNote: Audience in each TokenRequest should be different and at most one token is empty string. To receive a new token after expiry, RequiresRepublish can be used to trigger NodePublishVolume periodically.\n\nThis is a beta feature and only available when the CSIServiceAccountToken feature is enabled.", args=[d.arg(name='tokenRequests', type=d.T.array)]), - withTokenRequests(tokenRequests): { spec+: { tokenRequests: if std.isArray(v=tokenRequests) then tokenRequests else [tokenRequests] } }, - '#withTokenRequestsMixin':: d.fn(help="TokenRequests indicates the CSI driver needs pods' service account tokens it is mounting volume for to do necessary authentication. Kubelet will pass the tokens in VolumeContext in the CSI NodePublishVolume calls. The CSI driver should parse and validate the following VolumeContext: 'csi.storage.k8s.io/serviceAccount.tokens': {\n '': {\n 'token': ,\n 'expirationTimestamp': ,\n },\n ...\n}\n\nNote: Audience in each TokenRequest should be different and at most one token is empty string. To receive a new token after expiry, RequiresRepublish can be used to trigger NodePublishVolume periodically.\n\nThis is a beta feature and only available when the CSIServiceAccountToken feature is enabled.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tokenRequests', type=d.T.array)]), - withTokenRequestsMixin(tokenRequests): { spec+: { tokenRequests+: if std.isArray(v=tokenRequests) then tokenRequests else [tokenRequests] } }, - '#withVolumeLifecycleModes':: d.fn(help='VolumeLifecycleModes defines what kind of volumes this CSI volume driver supports. The default if the list is empty is "Persistent", which is the usage defined by the CSI specification and implemented in Kubernetes via the usual PV/PVC mechanism. The other mode is "Ephemeral". In this mode, volumes are defined inline inside the pod spec with CSIVolumeSource and their lifecycle is tied to the lifecycle of that pod. A driver has to be aware of this because it is only going to get a NodePublishVolume call for such a volume. For more information about implementing this mode, see https://kubernetes-csi.github.io/docs/ephemeral-local-volumes.html A driver can support one or more of these modes and more modes may be added in the future.\n\nThis field is immutable.', args=[d.arg(name='volumeLifecycleModes', type=d.T.array)]), - withVolumeLifecycleModes(volumeLifecycleModes): { spec+: { volumeLifecycleModes: if std.isArray(v=volumeLifecycleModes) then volumeLifecycleModes else [volumeLifecycleModes] } }, - '#withVolumeLifecycleModesMixin':: d.fn(help='VolumeLifecycleModes defines what kind of volumes this CSI volume driver supports. The default if the list is empty is "Persistent", which is the usage defined by the CSI specification and implemented in Kubernetes via the usual PV/PVC mechanism. The other mode is "Ephemeral". In this mode, volumes are defined inline inside the pod spec with CSIVolumeSource and their lifecycle is tied to the lifecycle of that pod. A driver has to be aware of this because it is only going to get a NodePublishVolume call for such a volume. For more information about implementing this mode, see https://kubernetes-csi.github.io/docs/ephemeral-local-volumes.html A driver can support one or more of these modes and more modes may be added in the future.\n\nThis field is immutable.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumeLifecycleModes', type=d.T.array)]), - withVolumeLifecycleModesMixin(volumeLifecycleModes): { spec+: { volumeLifecycleModes+: if std.isArray(v=volumeLifecycleModes) then volumeLifecycleModes else [volumeLifecycleModes] } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/csiDriverSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/csiDriverSpec.libsonnet deleted file mode 100644 index 2145f5f446b2..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/csiDriverSpec.libsonnet +++ /dev/null @@ -1,24 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='csiDriverSpec', url='', help='CSIDriverSpec is the specification of a CSIDriver.'), - '#withAttachRequired':: d.fn(help='attachRequired indicates this CSI volume driver requires an attach operation (because it implements the CSI ControllerPublishVolume() method), and that the Kubernetes attach detach controller should call the attach volume interface which checks the volumeattachment status and waits until the volume is attached before proceeding to mounting. The CSI external-attacher coordinates with CSI volume driver and updates the volumeattachment status when the attach operation is complete. If the CSIDriverRegistry feature gate is enabled and the value is specified to false, the attach operation will be skipped. Otherwise the attach operation will be called.\n\nThis field is immutable.', args=[d.arg(name='attachRequired', type=d.T.boolean)]), - withAttachRequired(attachRequired): { attachRequired: attachRequired }, - '#withFsGroupPolicy':: d.fn(help='Defines if the underlying volume supports changing ownership and permission of the volume before being mounted. Refer to the specific FSGroupPolicy values for additional details. This field is alpha-level, and is only honored by servers that enable the CSIVolumeFSGroupPolicy feature gate.\n\nThis field is immutable.', args=[d.arg(name='fsGroupPolicy', type=d.T.string)]), - withFsGroupPolicy(fsGroupPolicy): { fsGroupPolicy: fsGroupPolicy }, - '#withPodInfoOnMount':: d.fn(help="If set to true, podInfoOnMount indicates this CSI volume driver requires additional pod information (like podName, podUID, etc.) during mount operations. If set to false, pod information will not be passed on mount. Default is false. The CSI driver specifies podInfoOnMount as part of driver deployment. If true, Kubelet will pass pod information as VolumeContext in the CSI NodePublishVolume() calls. The CSI driver is responsible for parsing and validating the information passed in as VolumeContext. The following VolumeConext will be passed if podInfoOnMount is set to true. This list might grow, but the prefix will be used. 'csi.storage.k8s.io/pod.name': pod.Name 'csi.storage.k8s.io/pod.namespace': pod.Namespace 'csi.storage.k8s.io/pod.uid': string(pod.UID) 'csi.storage.k8s.io/ephemeral': 'true' if the volume is an ephemeral inline volume\n defined by a CSIVolumeSource, otherwise 'false'\n\n'csi.storage.k8s.io/ephemeral' is a new feature in Kubernetes 1.16. It is only required for drivers which support both the 'Persistent' and 'Ephemeral' VolumeLifecycleMode. Other drivers can leave pod info disabled and/or ignore this field. As Kubernetes 1.15 doesn't support this field, drivers can only support one mode when deployed on such a cluster and the deployment determines which mode that is, for example via a command line parameter of the driver.\n\nThis field is immutable.", args=[d.arg(name='podInfoOnMount', type=d.T.boolean)]), - withPodInfoOnMount(podInfoOnMount): { podInfoOnMount: podInfoOnMount }, - '#withRequiresRepublish':: d.fn(help='RequiresRepublish indicates the CSI driver wants `NodePublishVolume` being periodically called to reflect any possible change in the mounted volume. This field defaults to false.\n\nNote: After a successful initial NodePublishVolume call, subsequent calls to NodePublishVolume should only update the contents of the volume. New mount points will not be seen by a running container.\n\nThis is a beta feature and only available when the CSIServiceAccountToken feature is enabled.', args=[d.arg(name='requiresRepublish', type=d.T.boolean)]), - withRequiresRepublish(requiresRepublish): { requiresRepublish: requiresRepublish }, - '#withStorageCapacity':: d.fn(help='If set to true, storageCapacity indicates that the CSI volume driver wants pod scheduling to consider the storage capacity that the driver deployment will report by creating CSIStorageCapacity objects with capacity information.\n\nThe check can be enabled immediately when deploying a driver. In that case, provisioning new volumes with late binding will pause until the driver deployment has published some suitable CSIStorageCapacity object.\n\nAlternatively, the driver can be deployed with the field unset or false and it can be flipped later when storage capacity information has been published.\n\nThis field is immutable.\n\nThis is a beta field and only available when the CSIStorageCapacity feature is enabled. The default is false.', args=[d.arg(name='storageCapacity', type=d.T.boolean)]), - withStorageCapacity(storageCapacity): { storageCapacity: storageCapacity }, - '#withTokenRequests':: d.fn(help="TokenRequests indicates the CSI driver needs pods' service account tokens it is mounting volume for to do necessary authentication. Kubelet will pass the tokens in VolumeContext in the CSI NodePublishVolume calls. The CSI driver should parse and validate the following VolumeContext: 'csi.storage.k8s.io/serviceAccount.tokens': {\n '': {\n 'token': ,\n 'expirationTimestamp': ,\n },\n ...\n}\n\nNote: Audience in each TokenRequest should be different and at most one token is empty string. To receive a new token after expiry, RequiresRepublish can be used to trigger NodePublishVolume periodically.\n\nThis is a beta feature and only available when the CSIServiceAccountToken feature is enabled.", args=[d.arg(name='tokenRequests', type=d.T.array)]), - withTokenRequests(tokenRequests): { tokenRequests: if std.isArray(v=tokenRequests) then tokenRequests else [tokenRequests] }, - '#withTokenRequestsMixin':: d.fn(help="TokenRequests indicates the CSI driver needs pods' service account tokens it is mounting volume for to do necessary authentication. Kubelet will pass the tokens in VolumeContext in the CSI NodePublishVolume calls. The CSI driver should parse and validate the following VolumeContext: 'csi.storage.k8s.io/serviceAccount.tokens': {\n '': {\n 'token': ,\n 'expirationTimestamp': ,\n },\n ...\n}\n\nNote: Audience in each TokenRequest should be different and at most one token is empty string. To receive a new token after expiry, RequiresRepublish can be used to trigger NodePublishVolume periodically.\n\nThis is a beta feature and only available when the CSIServiceAccountToken feature is enabled.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='tokenRequests', type=d.T.array)]), - withTokenRequestsMixin(tokenRequests): { tokenRequests+: if std.isArray(v=tokenRequests) then tokenRequests else [tokenRequests] }, - '#withVolumeLifecycleModes':: d.fn(help='VolumeLifecycleModes defines what kind of volumes this CSI volume driver supports. The default if the list is empty is "Persistent", which is the usage defined by the CSI specification and implemented in Kubernetes via the usual PV/PVC mechanism. The other mode is "Ephemeral". In this mode, volumes are defined inline inside the pod spec with CSIVolumeSource and their lifecycle is tied to the lifecycle of that pod. A driver has to be aware of this because it is only going to get a NodePublishVolume call for such a volume. For more information about implementing this mode, see https://kubernetes-csi.github.io/docs/ephemeral-local-volumes.html A driver can support one or more of these modes and more modes may be added in the future.\n\nThis field is immutable.', args=[d.arg(name='volumeLifecycleModes', type=d.T.array)]), - withVolumeLifecycleModes(volumeLifecycleModes): { volumeLifecycleModes: if std.isArray(v=volumeLifecycleModes) then volumeLifecycleModes else [volumeLifecycleModes] }, - '#withVolumeLifecycleModesMixin':: d.fn(help='VolumeLifecycleModes defines what kind of volumes this CSI volume driver supports. The default if the list is empty is "Persistent", which is the usage defined by the CSI specification and implemented in Kubernetes via the usual PV/PVC mechanism. The other mode is "Ephemeral". In this mode, volumes are defined inline inside the pod spec with CSIVolumeSource and their lifecycle is tied to the lifecycle of that pod. A driver has to be aware of this because it is only going to get a NodePublishVolume call for such a volume. For more information about implementing this mode, see https://kubernetes-csi.github.io/docs/ephemeral-local-volumes.html A driver can support one or more of these modes and more modes may be added in the future.\n\nThis field is immutable.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumeLifecycleModes', type=d.T.array)]), - withVolumeLifecycleModesMixin(volumeLifecycleModes): { volumeLifecycleModes+: if std.isArray(v=volumeLifecycleModes) then volumeLifecycleModes else [volumeLifecycleModes] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/csiNode.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/csiNode.libsonnet deleted file mode 100644 index e14e33ee2864..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/csiNode.libsonnet +++ /dev/null @@ -1,63 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='csiNode', url='', help="DEPRECATED - This group version of CSINode is deprecated by storage/v1/CSINode. See the release notes for more information. CSINode holds information about all CSI drivers installed on a node. CSI drivers do not need to create the CSINode object directly. As long as they use the node-driver-registrar sidecar container, the kubelet will automatically populate the CSINode object for the CSI driver as part of kubelet plugin registration. CSINode has the same name as a node. If the object is missing, it means either there are no CSI Drivers available on the node, or the Kubelet version is low enough that it doesn't create this object. CSINode has an OwnerReference that points to the corresponding node object."), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Csinode', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'storage.k8s.io/v1beta1', - kind: 'CsiNode', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='CSINodeSpec holds information about the specification of all CSI drivers installed on a node'), - spec: { - '#withDrivers':: d.fn(help='drivers is a list of information of all CSI Drivers existing on a node. If all drivers in the list are uninstalled, this can become empty.', args=[d.arg(name='drivers', type=d.T.array)]), - withDrivers(drivers): { spec+: { drivers: if std.isArray(v=drivers) then drivers else [drivers] } }, - '#withDriversMixin':: d.fn(help='drivers is a list of information of all CSI Drivers existing on a node. If all drivers in the list are uninstalled, this can become empty.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='drivers', type=d.T.array)]), - withDriversMixin(drivers): { spec+: { drivers+: if std.isArray(v=drivers) then drivers else [drivers] } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/csiNodeDriver.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/csiNodeDriver.libsonnet deleted file mode 100644 index b5ed57433606..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/csiNodeDriver.libsonnet +++ /dev/null @@ -1,19 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='csiNodeDriver', url='', help='CSINodeDriver holds information about the specification of one CSI driver installed on a node'), - '#allocatable':: d.obj(help='VolumeNodeResources is a set of resource limits for scheduling of volumes.'), - allocatable: { - '#withCount':: d.fn(help='Maximum number of unique volumes managed by the CSI driver that can be used on a node. A volume that is both attached and mounted on a node is considered to be used once, not twice. The same rule applies for a unique volume that is shared among multiple pods on the same node. If this field is nil, then the supported number of volumes on this node is unbounded.', args=[d.arg(name='count', type=d.T.integer)]), - withCount(count): { allocatable+: { count: count } }, - }, - '#withName':: d.fn(help='This is the name of the CSI driver that this object refers to. This MUST be the same name returned by the CSI GetPluginName() call for that driver.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { name: name }, - '#withNodeID':: d.fn(help='nodeID of the node from the driver point of view. This field enables Kubernetes to communicate with storage systems that do not share the same nomenclature for nodes. For example, Kubernetes may refer to a given node as "node1", but the storage system may refer to the same node as "nodeA". When Kubernetes issues a command to the storage system to attach a volume to a specific node, it can use this field to refer to the node name using the ID that the storage system will understand, e.g. "nodeA" instead of "node1". This field is required.', args=[d.arg(name='nodeID', type=d.T.string)]), - withNodeID(nodeID): { nodeID: nodeID }, - '#withTopologyKeys':: d.fn(help='topologyKeys is the list of keys supported by the driver. When a driver is initialized on a cluster, it provides a set of topology keys that it understands (e.g. "company.com/zone", "company.com/region"). When a driver is initialized on a node, it provides the same topology keys along with values. Kubelet will expose these topology keys as labels on its own node object. When Kubernetes does topology aware provisioning, it can use this list to determine which labels it should retrieve from the node object and pass back to the driver. It is possible for different nodes to use different topology keys. This can be empty if driver does not support topology.', args=[d.arg(name='topologyKeys', type=d.T.array)]), - withTopologyKeys(topologyKeys): { topologyKeys: if std.isArray(v=topologyKeys) then topologyKeys else [topologyKeys] }, - '#withTopologyKeysMixin':: d.fn(help='topologyKeys is the list of keys supported by the driver. When a driver is initialized on a cluster, it provides a set of topology keys that it understands (e.g. "company.com/zone", "company.com/region"). When a driver is initialized on a node, it provides the same topology keys along with values. Kubelet will expose these topology keys as labels on its own node object. When Kubernetes does topology aware provisioning, it can use this list to determine which labels it should retrieve from the node object and pass back to the driver. It is possible for different nodes to use different topology keys. This can be empty if driver does not support topology.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='topologyKeys', type=d.T.array)]), - withTopologyKeysMixin(topologyKeys): { topologyKeys+: if std.isArray(v=topologyKeys) then topologyKeys else [topologyKeys] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/csiNodeSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/csiNodeSpec.libsonnet deleted file mode 100644 index c38b1d791696..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/csiNodeSpec.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='csiNodeSpec', url='', help='CSINodeSpec holds information about the specification of all CSI drivers installed on a node'), - '#withDrivers':: d.fn(help='drivers is a list of information of all CSI Drivers existing on a node. If all drivers in the list are uninstalled, this can become empty.', args=[d.arg(name='drivers', type=d.T.array)]), - withDrivers(drivers): { drivers: if std.isArray(v=drivers) then drivers else [drivers] }, - '#withDriversMixin':: d.fn(help='drivers is a list of information of all CSI Drivers existing on a node. If all drivers in the list are uninstalled, this can become empty.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='drivers', type=d.T.array)]), - withDriversMixin(drivers): { drivers+: if std.isArray(v=drivers) then drivers else [drivers] }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/csiStorageCapacity.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/csiStorageCapacity.libsonnet deleted file mode 100644 index 18c5456b7a61..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/csiStorageCapacity.libsonnet +++ /dev/null @@ -1,73 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='csiStorageCapacity', url='', help='CSIStorageCapacity stores the result of one CSI GetCapacity call. For a given StorageClass, this describes the available capacity in a particular topology segment. This can be used when considering where to instantiate new PersistentVolumes.\n\nFor example this can express things like: - StorageClass "standard" has "1234 GiB" available in "topology.kubernetes.io/zone=us-east1" - StorageClass "localssd" has "10 GiB" available in "kubernetes.io/hostname=knode-abc123"\n\nThe following three cases all imply that no capacity is available for a certain combination: - no object exists with suitable topology and storage class name - such an object exists, but the capacity is unset - such an object exists, but the capacity is zero\n\nThe producer of these objects can decide which approach is more suitable.\n\nThey are consumed by the kube-scheduler if the CSIStorageCapacity beta feature gate is enabled there and a CSI driver opts into capacity-aware scheduling with CSIDriver.StorageCapacity.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Csistoragecapacity', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'storage.k8s.io/v1beta1', - kind: 'CsiStorageCapacity', - } + self.metadata.withName(name=name), - '#nodeTopology':: d.obj(help='A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.'), - nodeTopology: { - '#withMatchExpressions':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressions(matchExpressions): { nodeTopology+: { matchExpressions: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchExpressionsMixin':: d.fn(help='matchExpressions is a list of label selector requirements. The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchExpressions', type=d.T.array)]), - withMatchExpressionsMixin(matchExpressions): { nodeTopology+: { matchExpressions+: if std.isArray(v=matchExpressions) then matchExpressions else [matchExpressions] } }, - '#withMatchLabels':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabels(matchLabels): { nodeTopology+: { matchLabels: matchLabels } }, - '#withMatchLabelsMixin':: d.fn(help='matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='matchLabels', type=d.T.object)]), - withMatchLabelsMixin(matchLabels): { nodeTopology+: { matchLabels+: matchLabels } }, - }, - '#withCapacity':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='capacity', type=d.T.string)]), - withCapacity(capacity): { capacity: capacity }, - '#withMaximumVolumeSize':: d.fn(help="Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the '' case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= '+' | '-' ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | '' | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= 'e' | 'E' \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in 'canonical form'. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as '1500m'\n 1.5Gi will be serialized as '1536Mi'\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", args=[d.arg(name='maximumVolumeSize', type=d.T.string)]), - withMaximumVolumeSize(maximumVolumeSize): { maximumVolumeSize: maximumVolumeSize }, - '#withStorageClassName':: d.fn(help='The name of the StorageClass that the reported capacity applies to. It must meet the same requirements as the name of a StorageClass object (non-empty, DNS subdomain). If that object no longer exists, the CSIStorageCapacity object is obsolete and should be removed by its creator. This field is immutable.', args=[d.arg(name='storageClassName', type=d.T.string)]), - withStorageClassName(storageClassName): { storageClassName: storageClassName }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/main.libsonnet deleted file mode 100644 index 9413b0101214..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/main.libsonnet +++ /dev/null @@ -1,18 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='v1beta1', url='', help=''), - csiDriver: (import 'csiDriver.libsonnet'), - csiDriverSpec: (import 'csiDriverSpec.libsonnet'), - csiNode: (import 'csiNode.libsonnet'), - csiNodeDriver: (import 'csiNodeDriver.libsonnet'), - csiNodeSpec: (import 'csiNodeSpec.libsonnet'), - csiStorageCapacity: (import 'csiStorageCapacity.libsonnet'), - storageClass: (import 'storageClass.libsonnet'), - tokenRequest: (import 'tokenRequest.libsonnet'), - volumeAttachment: (import 'volumeAttachment.libsonnet'), - volumeAttachmentSource: (import 'volumeAttachmentSource.libsonnet'), - volumeAttachmentSpec: (import 'volumeAttachmentSpec.libsonnet'), - volumeAttachmentStatus: (import 'volumeAttachmentStatus.libsonnet'), - volumeError: (import 'volumeError.libsonnet'), - volumeNodeResources: (import 'volumeNodeResources.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/storageClass.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/storageClass.libsonnet deleted file mode 100644 index 2e74cab55054..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/storageClass.libsonnet +++ /dev/null @@ -1,76 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='storageClass', url='', help='StorageClass describes the parameters for a class of storage for which PersistentVolumes can be dynamically provisioned.\n\nStorageClasses are non-namespaced; the name of the storage class according to etcd is in ObjectMeta.Name.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Storageclass', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'storage.k8s.io/v1beta1', - kind: 'StorageClass', - } + self.metadata.withName(name=name), - '#withAllowVolumeExpansion':: d.fn(help='AllowVolumeExpansion shows whether the storage class allow volume expand', args=[d.arg(name='allowVolumeExpansion', type=d.T.boolean)]), - withAllowVolumeExpansion(allowVolumeExpansion): { allowVolumeExpansion: allowVolumeExpansion }, - '#withAllowedTopologies':: d.fn(help='Restrict the node topologies where volumes can be dynamically provisioned. Each volume plugin defines its own supported topology specifications. An empty TopologySelectorTerm list means there is no topology restriction. This field is only honored by servers that enable the VolumeScheduling feature.', args=[d.arg(name='allowedTopologies', type=d.T.array)]), - withAllowedTopologies(allowedTopologies): { allowedTopologies: if std.isArray(v=allowedTopologies) then allowedTopologies else [allowedTopologies] }, - '#withAllowedTopologiesMixin':: d.fn(help='Restrict the node topologies where volumes can be dynamically provisioned. Each volume plugin defines its own supported topology specifications. An empty TopologySelectorTerm list means there is no topology restriction. This field is only honored by servers that enable the VolumeScheduling feature.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='allowedTopologies', type=d.T.array)]), - withAllowedTopologiesMixin(allowedTopologies): { allowedTopologies+: if std.isArray(v=allowedTopologies) then allowedTopologies else [allowedTopologies] }, - '#withMountOptions':: d.fn(help='Dynamically provisioned PersistentVolumes of this storage class are created with these mountOptions, e.g. ["ro", "soft"]. Not validated - mount of the PVs will simply fail if one is invalid.', args=[d.arg(name='mountOptions', type=d.T.array)]), - withMountOptions(mountOptions): { mountOptions: if std.isArray(v=mountOptions) then mountOptions else [mountOptions] }, - '#withMountOptionsMixin':: d.fn(help='Dynamically provisioned PersistentVolumes of this storage class are created with these mountOptions, e.g. ["ro", "soft"]. Not validated - mount of the PVs will simply fail if one is invalid.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='mountOptions', type=d.T.array)]), - withMountOptionsMixin(mountOptions): { mountOptions+: if std.isArray(v=mountOptions) then mountOptions else [mountOptions] }, - '#withParameters':: d.fn(help='Parameters holds the parameters for the provisioner that should create volumes of this storage class.', args=[d.arg(name='parameters', type=d.T.object)]), - withParameters(parameters): { parameters: parameters }, - '#withParametersMixin':: d.fn(help='Parameters holds the parameters for the provisioner that should create volumes of this storage class.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='parameters', type=d.T.object)]), - withParametersMixin(parameters): { parameters+: parameters }, - '#withProvisioner':: d.fn(help='Provisioner indicates the type of the provisioner.', args=[d.arg(name='provisioner', type=d.T.string)]), - withProvisioner(provisioner): { provisioner: provisioner }, - '#withReclaimPolicy':: d.fn(help='Dynamically provisioned PersistentVolumes of this storage class are created with this reclaimPolicy. Defaults to Delete.', args=[d.arg(name='reclaimPolicy', type=d.T.string)]), - withReclaimPolicy(reclaimPolicy): { reclaimPolicy: reclaimPolicy }, - '#withVolumeBindingMode':: d.fn(help='VolumeBindingMode indicates how PersistentVolumeClaims should be provisioned and bound. When unset, VolumeBindingImmediate is used. This field is only honored by servers that enable the VolumeScheduling feature.', args=[d.arg(name='volumeBindingMode', type=d.T.string)]), - withVolumeBindingMode(volumeBindingMode): { volumeBindingMode: volumeBindingMode }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/tokenRequest.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/tokenRequest.libsonnet deleted file mode 100644 index e75005013ebc..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/tokenRequest.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='tokenRequest', url='', help='TokenRequest contains parameters of a service account token.'), - '#withAudience':: d.fn(help='Audience is the intended audience of the token in "TokenRequestSpec". It will default to the audiences of kube apiserver.', args=[d.arg(name='audience', type=d.T.string)]), - withAudience(audience): { audience: audience }, - '#withExpirationSeconds':: d.fn(help='ExpirationSeconds is the duration of validity of the token in "TokenRequestSpec". It has the same default value of "ExpirationSeconds" in "TokenRequestSpec"', args=[d.arg(name='expirationSeconds', type=d.T.integer)]), - withExpirationSeconds(expirationSeconds): { expirationSeconds: expirationSeconds }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/volumeAttachment.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/volumeAttachment.libsonnet deleted file mode 100644 index 6e35fb1fd4a7..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/volumeAttachment.libsonnet +++ /dev/null @@ -1,479 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='volumeAttachment', url='', help='VolumeAttachment captures the intent to attach or detach the specified volume to/from the specified node.\n\nVolumeAttachment objects are non-namespaced.'), - '#metadata':: d.obj(help='ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.'), - metadata: { - '#withAnnotations':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotations(annotations): { metadata+: { annotations: annotations } }, - '#withAnnotationsMixin':: d.fn(help='Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='annotations', type=d.T.object)]), - withAnnotationsMixin(annotations): { metadata+: { annotations+: annotations } }, - '#withClusterName':: d.fn(help='The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.', args=[d.arg(name='clusterName', type=d.T.string)]), - withClusterName(clusterName): { metadata+: { clusterName: clusterName } }, - '#withCreationTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='creationTimestamp', type=d.T.string)]), - withCreationTimestamp(creationTimestamp): { metadata+: { creationTimestamp: creationTimestamp } }, - '#withDeletionGracePeriodSeconds':: d.fn(help='Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.', args=[d.arg(name='deletionGracePeriodSeconds', type=d.T.integer)]), - withDeletionGracePeriodSeconds(deletionGracePeriodSeconds): { metadata+: { deletionGracePeriodSeconds: deletionGracePeriodSeconds } }, - '#withDeletionTimestamp':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='deletionTimestamp', type=d.T.string)]), - withDeletionTimestamp(deletionTimestamp): { metadata+: { deletionTimestamp: deletionTimestamp } }, - '#withFinalizers':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizers(finalizers): { metadata+: { finalizers: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withFinalizersMixin':: d.fn(help='Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='finalizers', type=d.T.array)]), - withFinalizersMixin(finalizers): { metadata+: { finalizers+: if std.isArray(v=finalizers) then finalizers else [finalizers] } }, - '#withGenerateName':: d.fn(help='GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency', args=[d.arg(name='generateName', type=d.T.string)]), - withGenerateName(generateName): { metadata+: { generateName: generateName } }, - '#withGeneration':: d.fn(help='A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.', args=[d.arg(name='generation', type=d.T.integer)]), - withGeneration(generation): { metadata+: { generation: generation } }, - '#withLabels':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels', args=[d.arg(name='labels', type=d.T.object)]), - withLabels(labels): { metadata+: { labels: labels } }, - '#withLabelsMixin':: d.fn(help='Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='labels', type=d.T.object)]), - withLabelsMixin(labels): { metadata+: { labels+: labels } }, - '#withManagedFields':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFields(managedFields): { metadata+: { managedFields: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withManagedFieldsMixin':: d.fn(help="ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like 'ci-cd'. The set of fields is always in the version that the workflow used when modifying the object.\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='managedFields', type=d.T.array)]), - withManagedFieldsMixin(managedFields): { metadata+: { managedFields+: if std.isArray(v=managedFields) then managedFields else [managedFields] } }, - '#withName':: d.fn(help='Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { metadata+: { name: name } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { metadata+: { namespace: namespace } }, - '#withOwnerReferences':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferences(ownerReferences): { metadata+: { ownerReferences: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withOwnerReferencesMixin':: d.fn(help='List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='ownerReferences', type=d.T.array)]), - withOwnerReferencesMixin(ownerReferences): { metadata+: { ownerReferences+: if std.isArray(v=ownerReferences) then ownerReferences else [ownerReferences] } }, - '#withResourceVersion':: d.fn(help='An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { metadata+: { resourceVersion: resourceVersion } }, - '#withSelfLink':: d.fn(help='SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.', args=[d.arg(name='selfLink', type=d.T.string)]), - withSelfLink(selfLink): { metadata+: { selfLink: selfLink } }, - '#withUid':: d.fn(help='UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { metadata+: { uid: uid } }, - }, - '#new':: d.fn(help='new returns an instance of Volumeattachment', args=[d.arg(name='name', type=d.T.string)]), - new(name): { - apiVersion: 'storage.k8s.io/v1beta1', - kind: 'VolumeAttachment', - } + self.metadata.withName(name=name), - '#spec':: d.obj(help='VolumeAttachmentSpec is the specification of a VolumeAttachment request.'), - spec: { - '#source':: d.obj(help='VolumeAttachmentSource represents a volume that should be attached. Right now only PersistenVolumes can be attached via external attacher, in future we may allow also inline volumes in pods. Exactly one member can be set.'), - source: { - '#inlineVolumeSpec':: d.obj(help='PersistentVolumeSpec is the specification of a persistent volume.'), - inlineVolumeSpec: { - '#awsElasticBlockStore':: d.obj(help='Represents a Persistent Disk resource in AWS.\n\nAn AWS EBS disk must exist before mounting to a container. The disk must also be in the same AWS zone as the kubelet. An AWS EBS disk can only be mounted as read/write once. AWS EBS volumes support ownership management and SELinux relabeling.'), - awsElasticBlockStore: { - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { source+: { inlineVolumeSpec+: { awsElasticBlockStore+: { fsType: fsType } } } } }, - '#withPartition':: d.fn(help='The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).', args=[d.arg(name='partition', type=d.T.integer)]), - withPartition(partition): { spec+: { source+: { inlineVolumeSpec+: { awsElasticBlockStore+: { partition: partition } } } } }, - '#withReadOnly':: d.fn(help='Specify "true" to force and set the ReadOnly property in VolumeMounts to "true". If omitted, the default is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { source+: { inlineVolumeSpec+: { awsElasticBlockStore+: { readOnly: readOnly } } } } }, - '#withVolumeID':: d.fn(help='Unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore', args=[d.arg(name='volumeID', type=d.T.string)]), - withVolumeID(volumeID): { spec+: { source+: { inlineVolumeSpec+: { awsElasticBlockStore+: { volumeID: volumeID } } } } }, - }, - '#azureDisk':: d.obj(help='AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.'), - azureDisk: { - '#withCachingMode':: d.fn(help='Host Caching mode: None, Read Only, Read Write.', args=[d.arg(name='cachingMode', type=d.T.string)]), - withCachingMode(cachingMode): { spec+: { source+: { inlineVolumeSpec+: { azureDisk+: { cachingMode: cachingMode } } } } }, - '#withDiskName':: d.fn(help='The Name of the data disk in the blob storage', args=[d.arg(name='diskName', type=d.T.string)]), - withDiskName(diskName): { spec+: { source+: { inlineVolumeSpec+: { azureDisk+: { diskName: diskName } } } } }, - '#withDiskURI':: d.fn(help='The URI the data disk in the blob storage', args=[d.arg(name='diskURI', type=d.T.string)]), - withDiskURI(diskURI): { spec+: { source+: { inlineVolumeSpec+: { azureDisk+: { diskURI: diskURI } } } } }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { source+: { inlineVolumeSpec+: { azureDisk+: { fsType: fsType } } } } }, - '#withKind':: d.fn(help='Expected values Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { source+: { inlineVolumeSpec+: { azureDisk+: { kind: kind } } } } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { source+: { inlineVolumeSpec+: { azureDisk+: { readOnly: readOnly } } } } }, - }, - '#azureFile':: d.obj(help='AzureFile represents an Azure File Service mount on the host and bind mount to the pod.'), - azureFile: { - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { source+: { inlineVolumeSpec+: { azureFile+: { readOnly: readOnly } } } } }, - '#withSecretName':: d.fn(help='the name of secret that contains Azure Storage Account Name and Key', args=[d.arg(name='secretName', type=d.T.string)]), - withSecretName(secretName): { spec+: { source+: { inlineVolumeSpec+: { azureFile+: { secretName: secretName } } } } }, - '#withSecretNamespace':: d.fn(help='the namespace of the secret that contains Azure Storage Account Name and Key default is the same as the Pod', args=[d.arg(name='secretNamespace', type=d.T.string)]), - withSecretNamespace(secretNamespace): { spec+: { source+: { inlineVolumeSpec+: { azureFile+: { secretNamespace: secretNamespace } } } } }, - '#withShareName':: d.fn(help='Share Name', args=[d.arg(name='shareName', type=d.T.string)]), - withShareName(shareName): { spec+: { source+: { inlineVolumeSpec+: { azureFile+: { shareName: shareName } } } } }, - }, - '#cephfs':: d.obj(help='Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling.'), - cephfs: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { source+: { inlineVolumeSpec+: { cephfs+: { secretRef+: { name: name } } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { source+: { inlineVolumeSpec+: { cephfs+: { secretRef+: { namespace: namespace } } } } } }, - }, - '#withMonitors':: d.fn(help='Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitors(monitors): { spec+: { source+: { inlineVolumeSpec+: { cephfs+: { monitors: if std.isArray(v=monitors) then monitors else [monitors] } } } } }, - '#withMonitorsMixin':: d.fn(help='Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitorsMixin(monitors): { spec+: { source+: { inlineVolumeSpec+: { cephfs+: { monitors+: if std.isArray(v=monitors) then monitors else [monitors] } } } } }, - '#withPath':: d.fn(help='Optional: Used as the mounted root, rather than the full Ceph tree, default is /', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { spec+: { source+: { inlineVolumeSpec+: { cephfs+: { path: path } } } } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { source+: { inlineVolumeSpec+: { cephfs+: { readOnly: readOnly } } } } }, - '#withSecretFile':: d.fn(help='Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='secretFile', type=d.T.string)]), - withSecretFile(secretFile): { spec+: { source+: { inlineVolumeSpec+: { cephfs+: { secretFile: secretFile } } } } }, - '#withUser':: d.fn(help='Optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { source+: { inlineVolumeSpec+: { cephfs+: { user: user } } } } }, - }, - '#cinder':: d.obj(help='Represents a cinder volume resource in Openstack. A Cinder volume must exist before mounting to a container. The volume must also be in the same region as the kubelet. Cinder volumes support ownership management and SELinux relabeling.'), - cinder: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { source+: { inlineVolumeSpec+: { cinder+: { secretRef+: { name: name } } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { source+: { inlineVolumeSpec+: { cinder+: { secretRef+: { namespace: namespace } } } } } }, - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { source+: { inlineVolumeSpec+: { cinder+: { fsType: fsType } } } } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { source+: { inlineVolumeSpec+: { cinder+: { readOnly: readOnly } } } } }, - '#withVolumeID':: d.fn(help='volume id used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md', args=[d.arg(name='volumeID', type=d.T.string)]), - withVolumeID(volumeID): { spec+: { source+: { inlineVolumeSpec+: { cinder+: { volumeID: volumeID } } } } }, - }, - '#claimRef':: d.obj(help='ObjectReference contains enough information to let you inspect or modify the referred object.'), - claimRef: { - '#withApiVersion':: d.fn(help='API version of the referent.', args=[d.arg(name='apiVersion', type=d.T.string)]), - withApiVersion(apiVersion): { spec+: { source+: { inlineVolumeSpec+: { claimRef+: { apiVersion: apiVersion } } } } }, - '#withFieldPath':: d.fn(help='If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { spec+: { source+: { inlineVolumeSpec+: { claimRef+: { fieldPath: fieldPath } } } } }, - '#withKind':: d.fn(help='Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { source+: { inlineVolumeSpec+: { claimRef+: { kind: kind } } } } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { source+: { inlineVolumeSpec+: { claimRef+: { name: name } } } } }, - '#withNamespace':: d.fn(help='Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { source+: { inlineVolumeSpec+: { claimRef+: { namespace: namespace } } } } }, - '#withResourceVersion':: d.fn(help='Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { spec+: { source+: { inlineVolumeSpec+: { claimRef+: { resourceVersion: resourceVersion } } } } }, - '#withUid':: d.fn(help='UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { source+: { inlineVolumeSpec+: { claimRef+: { uid: uid } } } } }, - }, - '#csi':: d.obj(help='Represents storage that is managed by an external CSI volume driver (Beta feature)'), - csi: { - '#controllerExpandSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - controllerExpandSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { source+: { inlineVolumeSpec+: { csi+: { controllerExpandSecretRef+: { name: name } } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { source+: { inlineVolumeSpec+: { csi+: { controllerExpandSecretRef+: { namespace: namespace } } } } } }, - }, - '#controllerPublishSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - controllerPublishSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { source+: { inlineVolumeSpec+: { csi+: { controllerPublishSecretRef+: { name: name } } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { source+: { inlineVolumeSpec+: { csi+: { controllerPublishSecretRef+: { namespace: namespace } } } } } }, - }, - '#nodePublishSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - nodePublishSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { source+: { inlineVolumeSpec+: { csi+: { nodePublishSecretRef+: { name: name } } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { source+: { inlineVolumeSpec+: { csi+: { nodePublishSecretRef+: { namespace: namespace } } } } } }, - }, - '#nodeStageSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - nodeStageSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { source+: { inlineVolumeSpec+: { csi+: { nodeStageSecretRef+: { name: name } } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { source+: { inlineVolumeSpec+: { csi+: { nodeStageSecretRef+: { namespace: namespace } } } } } }, - }, - '#withDriver':: d.fn(help='Driver is the name of the driver to use for this volume. Required.', args=[d.arg(name='driver', type=d.T.string)]), - withDriver(driver): { spec+: { source+: { inlineVolumeSpec+: { csi+: { driver: driver } } } } }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs".', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { source+: { inlineVolumeSpec+: { csi+: { fsType: fsType } } } } }, - '#withReadOnly':: d.fn(help='Optional: The value to pass to ControllerPublishVolumeRequest. Defaults to false (read/write).', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { source+: { inlineVolumeSpec+: { csi+: { readOnly: readOnly } } } } }, - '#withVolumeAttributes':: d.fn(help='Attributes of the volume to publish.', args=[d.arg(name='volumeAttributes', type=d.T.object)]), - withVolumeAttributes(volumeAttributes): { spec+: { source+: { inlineVolumeSpec+: { csi+: { volumeAttributes: volumeAttributes } } } } }, - '#withVolumeAttributesMixin':: d.fn(help='Attributes of the volume to publish.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumeAttributes', type=d.T.object)]), - withVolumeAttributesMixin(volumeAttributes): { spec+: { source+: { inlineVolumeSpec+: { csi+: { volumeAttributes+: volumeAttributes } } } } }, - '#withVolumeHandle':: d.fn(help='VolumeHandle is the unique volume name returned by the CSI volume plugin’s CreateVolume to refer to the volume on all subsequent calls. Required.', args=[d.arg(name='volumeHandle', type=d.T.string)]), - withVolumeHandle(volumeHandle): { spec+: { source+: { inlineVolumeSpec+: { csi+: { volumeHandle: volumeHandle } } } } }, - }, - '#fc':: d.obj(help='Represents a Fibre Channel volume. Fibre Channel volumes can only be mounted as read/write once. Fibre Channel volumes support ownership management and SELinux relabeling.'), - fc: { - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { source+: { inlineVolumeSpec+: { fc+: { fsType: fsType } } } } }, - '#withLun':: d.fn(help='Optional: FC target lun number', args=[d.arg(name='lun', type=d.T.integer)]), - withLun(lun): { spec+: { source+: { inlineVolumeSpec+: { fc+: { lun: lun } } } } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { source+: { inlineVolumeSpec+: { fc+: { readOnly: readOnly } } } } }, - '#withTargetWWNs':: d.fn(help='Optional: FC target worldwide names (WWNs)', args=[d.arg(name='targetWWNs', type=d.T.array)]), - withTargetWWNs(targetWWNs): { spec+: { source+: { inlineVolumeSpec+: { fc+: { targetWWNs: if std.isArray(v=targetWWNs) then targetWWNs else [targetWWNs] } } } } }, - '#withTargetWWNsMixin':: d.fn(help='Optional: FC target worldwide names (WWNs)\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='targetWWNs', type=d.T.array)]), - withTargetWWNsMixin(targetWWNs): { spec+: { source+: { inlineVolumeSpec+: { fc+: { targetWWNs+: if std.isArray(v=targetWWNs) then targetWWNs else [targetWWNs] } } } } }, - '#withWwids':: d.fn(help='Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.', args=[d.arg(name='wwids', type=d.T.array)]), - withWwids(wwids): { spec+: { source+: { inlineVolumeSpec+: { fc+: { wwids: if std.isArray(v=wwids) then wwids else [wwids] } } } } }, - '#withWwidsMixin':: d.fn(help='Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='wwids', type=d.T.array)]), - withWwidsMixin(wwids): { spec+: { source+: { inlineVolumeSpec+: { fc+: { wwids+: if std.isArray(v=wwids) then wwids else [wwids] } } } } }, - }, - '#flexVolume':: d.obj(help='FlexPersistentVolumeSource represents a generic persistent volume resource that is provisioned/attached using an exec based plugin.'), - flexVolume: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { source+: { inlineVolumeSpec+: { flexVolume+: { secretRef+: { name: name } } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { source+: { inlineVolumeSpec+: { flexVolume+: { secretRef+: { namespace: namespace } } } } } }, - }, - '#withDriver':: d.fn(help='Driver is the name of the driver to use for this volume.', args=[d.arg(name='driver', type=d.T.string)]), - withDriver(driver): { spec+: { source+: { inlineVolumeSpec+: { flexVolume+: { driver: driver } } } } }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { source+: { inlineVolumeSpec+: { flexVolume+: { fsType: fsType } } } } }, - '#withOptions':: d.fn(help='Optional: Extra command options if any.', args=[d.arg(name='options', type=d.T.object)]), - withOptions(options): { spec+: { source+: { inlineVolumeSpec+: { flexVolume+: { options: options } } } } }, - '#withOptionsMixin':: d.fn(help='Optional: Extra command options if any.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.object)]), - withOptionsMixin(options): { spec+: { source+: { inlineVolumeSpec+: { flexVolume+: { options+: options } } } } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { source+: { inlineVolumeSpec+: { flexVolume+: { readOnly: readOnly } } } } }, - }, - '#flocker':: d.obj(help='Represents a Flocker volume mounted by the Flocker agent. One and only one of datasetName and datasetUUID should be set. Flocker volumes do not support ownership management or SELinux relabeling.'), - flocker: { - '#withDatasetName':: d.fn(help='Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated', args=[d.arg(name='datasetName', type=d.T.string)]), - withDatasetName(datasetName): { spec+: { source+: { inlineVolumeSpec+: { flocker+: { datasetName: datasetName } } } } }, - '#withDatasetUUID':: d.fn(help='UUID of the dataset. This is unique identifier of a Flocker dataset', args=[d.arg(name='datasetUUID', type=d.T.string)]), - withDatasetUUID(datasetUUID): { spec+: { source+: { inlineVolumeSpec+: { flocker+: { datasetUUID: datasetUUID } } } } }, - }, - '#gcePersistentDisk':: d.obj(help='Represents a Persistent Disk resource in Google Compute Engine.\n\nA GCE PD must exist before mounting to a container. The disk must also be in the same GCE project and zone as the kubelet. A GCE PD can only be mounted as read/write once or read-only many times. GCE PDs support ownership management and SELinux relabeling.'), - gcePersistentDisk: { - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { source+: { inlineVolumeSpec+: { gcePersistentDisk+: { fsType: fsType } } } } }, - '#withPartition':: d.fn(help='The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='partition', type=d.T.integer)]), - withPartition(partition): { spec+: { source+: { inlineVolumeSpec+: { gcePersistentDisk+: { partition: partition } } } } }, - '#withPdName':: d.fn(help='Unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='pdName', type=d.T.string)]), - withPdName(pdName): { spec+: { source+: { inlineVolumeSpec+: { gcePersistentDisk+: { pdName: pdName } } } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { source+: { inlineVolumeSpec+: { gcePersistentDisk+: { readOnly: readOnly } } } } }, - }, - '#glusterfs':: d.obj(help='Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling.'), - glusterfs: { - '#withEndpoints':: d.fn(help='EndpointsName is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='endpoints', type=d.T.string)]), - withEndpoints(endpoints): { spec+: { source+: { inlineVolumeSpec+: { glusterfs+: { endpoints: endpoints } } } } }, - '#withEndpointsNamespace':: d.fn(help='EndpointsNamespace is the namespace that contains Glusterfs endpoint. If this field is empty, the EndpointNamespace defaults to the same namespace as the bound PVC. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='endpointsNamespace', type=d.T.string)]), - withEndpointsNamespace(endpointsNamespace): { spec+: { source+: { inlineVolumeSpec+: { glusterfs+: { endpointsNamespace: endpointsNamespace } } } } }, - '#withPath':: d.fn(help='Path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { spec+: { source+: { inlineVolumeSpec+: { glusterfs+: { path: path } } } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { source+: { inlineVolumeSpec+: { glusterfs+: { readOnly: readOnly } } } } }, - }, - '#hostPath':: d.obj(help='Represents a host path mapped into a pod. Host path volumes do not support ownership management or SELinux relabeling.'), - hostPath: { - '#withPath':: d.fn(help='Path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { spec+: { source+: { inlineVolumeSpec+: { hostPath+: { path: path } } } } }, - '#withType':: d.fn(help='Type for HostPath Volume Defaults to "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { spec+: { source+: { inlineVolumeSpec+: { hostPath+: { type: type } } } } }, - }, - '#iscsi':: d.obj(help='ISCSIPersistentVolumeSource represents an ISCSI disk. ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling.'), - iscsi: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { source+: { inlineVolumeSpec+: { iscsi+: { secretRef+: { name: name } } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { source+: { inlineVolumeSpec+: { iscsi+: { secretRef+: { namespace: namespace } } } } } }, - }, - '#withChapAuthDiscovery':: d.fn(help='whether support iSCSI Discovery CHAP authentication', args=[d.arg(name='chapAuthDiscovery', type=d.T.boolean)]), - withChapAuthDiscovery(chapAuthDiscovery): { spec+: { source+: { inlineVolumeSpec+: { iscsi+: { chapAuthDiscovery: chapAuthDiscovery } } } } }, - '#withChapAuthSession':: d.fn(help='whether support iSCSI Session CHAP authentication', args=[d.arg(name='chapAuthSession', type=d.T.boolean)]), - withChapAuthSession(chapAuthSession): { spec+: { source+: { inlineVolumeSpec+: { iscsi+: { chapAuthSession: chapAuthSession } } } } }, - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { source+: { inlineVolumeSpec+: { iscsi+: { fsType: fsType } } } } }, - '#withInitiatorName':: d.fn(help='Custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface : will be created for the connection.', args=[d.arg(name='initiatorName', type=d.T.string)]), - withInitiatorName(initiatorName): { spec+: { source+: { inlineVolumeSpec+: { iscsi+: { initiatorName: initiatorName } } } } }, - '#withIqn':: d.fn(help='Target iSCSI Qualified Name.', args=[d.arg(name='iqn', type=d.T.string)]), - withIqn(iqn): { spec+: { source+: { inlineVolumeSpec+: { iscsi+: { iqn: iqn } } } } }, - '#withIscsiInterface':: d.fn(help="iSCSI Interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).", args=[d.arg(name='iscsiInterface', type=d.T.string)]), - withIscsiInterface(iscsiInterface): { spec+: { source+: { inlineVolumeSpec+: { iscsi+: { iscsiInterface: iscsiInterface } } } } }, - '#withLun':: d.fn(help='iSCSI Target Lun number.', args=[d.arg(name='lun', type=d.T.integer)]), - withLun(lun): { spec+: { source+: { inlineVolumeSpec+: { iscsi+: { lun: lun } } } } }, - '#withPortals':: d.fn(help='iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).', args=[d.arg(name='portals', type=d.T.array)]), - withPortals(portals): { spec+: { source+: { inlineVolumeSpec+: { iscsi+: { portals: if std.isArray(v=portals) then portals else [portals] } } } } }, - '#withPortalsMixin':: d.fn(help='iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='portals', type=d.T.array)]), - withPortalsMixin(portals): { spec+: { source+: { inlineVolumeSpec+: { iscsi+: { portals+: if std.isArray(v=portals) then portals else [portals] } } } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { source+: { inlineVolumeSpec+: { iscsi+: { readOnly: readOnly } } } } }, - '#withTargetPortal':: d.fn(help='iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).', args=[d.arg(name='targetPortal', type=d.T.string)]), - withTargetPortal(targetPortal): { spec+: { source+: { inlineVolumeSpec+: { iscsi+: { targetPortal: targetPortal } } } } }, - }, - '#local':: d.obj(help='Local represents directly-attached storage with node affinity (Beta feature)'), - 'local': { - '#withFsType':: d.fn(help='Filesystem type to mount. It applies only when the Path is a block device. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default value is to auto-select a fileystem if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { source+: { inlineVolumeSpec+: { 'local'+: { fsType: fsType } } } } }, - '#withPath':: d.fn(help='The full path to the volume on the node. It can be either a directory or block device (disk, partition, ...).', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { spec+: { source+: { inlineVolumeSpec+: { 'local'+: { path: path } } } } }, - }, - '#nfs':: d.obj(help='Represents an NFS mount that lasts the lifetime of a pod. NFS volumes do not support ownership management or SELinux relabeling.'), - nfs: { - '#withPath':: d.fn(help='Path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { spec+: { source+: { inlineVolumeSpec+: { nfs+: { path: path } } } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { source+: { inlineVolumeSpec+: { nfs+: { readOnly: readOnly } } } } }, - '#withServer':: d.fn(help='Server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs', args=[d.arg(name='server', type=d.T.string)]), - withServer(server): { spec+: { source+: { inlineVolumeSpec+: { nfs+: { server: server } } } } }, - }, - '#nodeAffinity':: d.obj(help='VolumeNodeAffinity defines constraints that limit what nodes this volume can be accessed from.'), - nodeAffinity: { - '#required':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - required: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { spec+: { source+: { inlineVolumeSpec+: { nodeAffinity+: { required+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { spec+: { source+: { inlineVolumeSpec+: { nodeAffinity+: { required+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } } }, - }, - }, - '#photonPersistentDisk':: d.obj(help='Represents a Photon Controller persistent disk resource.'), - photonPersistentDisk: { - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { source+: { inlineVolumeSpec+: { photonPersistentDisk+: { fsType: fsType } } } } }, - '#withPdID':: d.fn(help='ID that identifies Photon Controller persistent disk', args=[d.arg(name='pdID', type=d.T.string)]), - withPdID(pdID): { spec+: { source+: { inlineVolumeSpec+: { photonPersistentDisk+: { pdID: pdID } } } } }, - }, - '#portworxVolume':: d.obj(help='PortworxVolumeSource represents a Portworx volume resource.'), - portworxVolume: { - '#withFsType':: d.fn(help='FSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { source+: { inlineVolumeSpec+: { portworxVolume+: { fsType: fsType } } } } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { source+: { inlineVolumeSpec+: { portworxVolume+: { readOnly: readOnly } } } } }, - '#withVolumeID':: d.fn(help='VolumeID uniquely identifies a Portworx volume', args=[d.arg(name='volumeID', type=d.T.string)]), - withVolumeID(volumeID): { spec+: { source+: { inlineVolumeSpec+: { portworxVolume+: { volumeID: volumeID } } } } }, - }, - '#quobyte':: d.obj(help='Represents a Quobyte mount that lasts the lifetime of a pod. Quobyte volumes do not support ownership management or SELinux relabeling.'), - quobyte: { - '#withGroup':: d.fn(help='Group to map volume access to Default is no group', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { spec+: { source+: { inlineVolumeSpec+: { quobyte+: { group: group } } } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { source+: { inlineVolumeSpec+: { quobyte+: { readOnly: readOnly } } } } }, - '#withRegistry':: d.fn(help='Registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes', args=[d.arg(name='registry', type=d.T.string)]), - withRegistry(registry): { spec+: { source+: { inlineVolumeSpec+: { quobyte+: { registry: registry } } } } }, - '#withTenant':: d.fn(help='Tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin', args=[d.arg(name='tenant', type=d.T.string)]), - withTenant(tenant): { spec+: { source+: { inlineVolumeSpec+: { quobyte+: { tenant: tenant } } } } }, - '#withUser':: d.fn(help='User to map volume access to Defaults to serivceaccount user', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { source+: { inlineVolumeSpec+: { quobyte+: { user: user } } } } }, - '#withVolume':: d.fn(help='Volume is a string that references an already created Quobyte volume by name.', args=[d.arg(name='volume', type=d.T.string)]), - withVolume(volume): { spec+: { source+: { inlineVolumeSpec+: { quobyte+: { volume: volume } } } } }, - }, - '#rbd':: d.obj(help='Represents a Rados Block Device mount that lasts the lifetime of a pod. RBD volumes support ownership management and SELinux relabeling.'), - rbd: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { source+: { inlineVolumeSpec+: { rbd+: { secretRef+: { name: name } } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { source+: { inlineVolumeSpec+: { rbd+: { secretRef+: { namespace: namespace } } } } } }, - }, - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { source+: { inlineVolumeSpec+: { rbd+: { fsType: fsType } } } } }, - '#withImage':: d.fn(help='The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='image', type=d.T.string)]), - withImage(image): { spec+: { source+: { inlineVolumeSpec+: { rbd+: { image: image } } } } }, - '#withKeyring':: d.fn(help='Keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='keyring', type=d.T.string)]), - withKeyring(keyring): { spec+: { source+: { inlineVolumeSpec+: { rbd+: { keyring: keyring } } } } }, - '#withMonitors':: d.fn(help='A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitors(monitors): { spec+: { source+: { inlineVolumeSpec+: { rbd+: { monitors: if std.isArray(v=monitors) then monitors else [monitors] } } } } }, - '#withMonitorsMixin':: d.fn(help='A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitorsMixin(monitors): { spec+: { source+: { inlineVolumeSpec+: { rbd+: { monitors+: if std.isArray(v=monitors) then monitors else [monitors] } } } } }, - '#withPool':: d.fn(help='The rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='pool', type=d.T.string)]), - withPool(pool): { spec+: { source+: { inlineVolumeSpec+: { rbd+: { pool: pool } } } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { source+: { inlineVolumeSpec+: { rbd+: { readOnly: readOnly } } } } }, - '#withUser':: d.fn(help='The rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { spec+: { source+: { inlineVolumeSpec+: { rbd+: { user: user } } } } }, - }, - '#scaleIO':: d.obj(help='ScaleIOPersistentVolumeSource represents a persistent ScaleIO volume'), - scaleIO: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { source+: { inlineVolumeSpec+: { scaleIO+: { secretRef+: { name: name } } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { source+: { inlineVolumeSpec+: { scaleIO+: { secretRef+: { namespace: namespace } } } } } }, - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Default is "xfs"', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { source+: { inlineVolumeSpec+: { scaleIO+: { fsType: fsType } } } } }, - '#withGateway':: d.fn(help='The host address of the ScaleIO API Gateway.', args=[d.arg(name='gateway', type=d.T.string)]), - withGateway(gateway): { spec+: { source+: { inlineVolumeSpec+: { scaleIO+: { gateway: gateway } } } } }, - '#withProtectionDomain':: d.fn(help='The name of the ScaleIO Protection Domain for the configured storage.', args=[d.arg(name='protectionDomain', type=d.T.string)]), - withProtectionDomain(protectionDomain): { spec+: { source+: { inlineVolumeSpec+: { scaleIO+: { protectionDomain: protectionDomain } } } } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { source+: { inlineVolumeSpec+: { scaleIO+: { readOnly: readOnly } } } } }, - '#withSslEnabled':: d.fn(help='Flag to enable/disable SSL communication with Gateway, default false', args=[d.arg(name='sslEnabled', type=d.T.boolean)]), - withSslEnabled(sslEnabled): { spec+: { source+: { inlineVolumeSpec+: { scaleIO+: { sslEnabled: sslEnabled } } } } }, - '#withStorageMode':: d.fn(help='Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.', args=[d.arg(name='storageMode', type=d.T.string)]), - withStorageMode(storageMode): { spec+: { source+: { inlineVolumeSpec+: { scaleIO+: { storageMode: storageMode } } } } }, - '#withStoragePool':: d.fn(help='The ScaleIO Storage Pool associated with the protection domain.', args=[d.arg(name='storagePool', type=d.T.string)]), - withStoragePool(storagePool): { spec+: { source+: { inlineVolumeSpec+: { scaleIO+: { storagePool: storagePool } } } } }, - '#withSystem':: d.fn(help='The name of the storage system as configured in ScaleIO.', args=[d.arg(name='system', type=d.T.string)]), - withSystem(system): { spec+: { source+: { inlineVolumeSpec+: { scaleIO+: { system: system } } } } }, - '#withVolumeName':: d.fn(help='The name of a volume already created in the ScaleIO system that is associated with this volume source.', args=[d.arg(name='volumeName', type=d.T.string)]), - withVolumeName(volumeName): { spec+: { source+: { inlineVolumeSpec+: { scaleIO+: { volumeName: volumeName } } } } }, - }, - '#storageos':: d.obj(help='Represents a StorageOS persistent volume resource.'), - storageos: { - '#secretRef':: d.obj(help='ObjectReference contains enough information to let you inspect or modify the referred object.'), - secretRef: { - '#withApiVersion':: d.fn(help='API version of the referent.', args=[d.arg(name='apiVersion', type=d.T.string)]), - withApiVersion(apiVersion): { spec+: { source+: { inlineVolumeSpec+: { storageos+: { secretRef+: { apiVersion: apiVersion } } } } } }, - '#withFieldPath':: d.fn(help='If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { spec+: { source+: { inlineVolumeSpec+: { storageos+: { secretRef+: { fieldPath: fieldPath } } } } } }, - '#withKind':: d.fn(help='Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { spec+: { source+: { inlineVolumeSpec+: { storageos+: { secretRef+: { kind: kind } } } } } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { spec+: { source+: { inlineVolumeSpec+: { storageos+: { secretRef+: { name: name } } } } } }, - '#withNamespace':: d.fn(help='Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { spec+: { source+: { inlineVolumeSpec+: { storageos+: { secretRef+: { namespace: namespace } } } } } }, - '#withResourceVersion':: d.fn(help='Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { spec+: { source+: { inlineVolumeSpec+: { storageos+: { secretRef+: { resourceVersion: resourceVersion } } } } } }, - '#withUid':: d.fn(help='UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { spec+: { source+: { inlineVolumeSpec+: { storageos+: { secretRef+: { uid: uid } } } } } }, - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { source+: { inlineVolumeSpec+: { storageos+: { fsType: fsType } } } } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { spec+: { source+: { inlineVolumeSpec+: { storageos+: { readOnly: readOnly } } } } }, - '#withVolumeName':: d.fn(help='VolumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.', args=[d.arg(name='volumeName', type=d.T.string)]), - withVolumeName(volumeName): { spec+: { source+: { inlineVolumeSpec+: { storageos+: { volumeName: volumeName } } } } }, - '#withVolumeNamespace':: d.fn(help="VolumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod's namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to 'default' if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created.", args=[d.arg(name='volumeNamespace', type=d.T.string)]), - withVolumeNamespace(volumeNamespace): { spec+: { source+: { inlineVolumeSpec+: { storageos+: { volumeNamespace: volumeNamespace } } } } }, - }, - '#vsphereVolume':: d.obj(help='Represents a vSphere volume resource.'), - vsphereVolume: { - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { spec+: { source+: { inlineVolumeSpec+: { vsphereVolume+: { fsType: fsType } } } } }, - '#withStoragePolicyID':: d.fn(help='Storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.', args=[d.arg(name='storagePolicyID', type=d.T.string)]), - withStoragePolicyID(storagePolicyID): { spec+: { source+: { inlineVolumeSpec+: { vsphereVolume+: { storagePolicyID: storagePolicyID } } } } }, - '#withStoragePolicyName':: d.fn(help='Storage Policy Based Management (SPBM) profile name.', args=[d.arg(name='storagePolicyName', type=d.T.string)]), - withStoragePolicyName(storagePolicyName): { spec+: { source+: { inlineVolumeSpec+: { vsphereVolume+: { storagePolicyName: storagePolicyName } } } } }, - '#withVolumePath':: d.fn(help='Path that identifies vSphere volume vmdk', args=[d.arg(name='volumePath', type=d.T.string)]), - withVolumePath(volumePath): { spec+: { source+: { inlineVolumeSpec+: { vsphereVolume+: { volumePath: volumePath } } } } }, - }, - '#withAccessModes':: d.fn(help='AccessModes contains all ways the volume can be mounted. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes', args=[d.arg(name='accessModes', type=d.T.array)]), - withAccessModes(accessModes): { spec+: { source+: { inlineVolumeSpec+: { accessModes: if std.isArray(v=accessModes) then accessModes else [accessModes] } } } }, - '#withAccessModesMixin':: d.fn(help='AccessModes contains all ways the volume can be mounted. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='accessModes', type=d.T.array)]), - withAccessModesMixin(accessModes): { spec+: { source+: { inlineVolumeSpec+: { accessModes+: if std.isArray(v=accessModes) then accessModes else [accessModes] } } } }, - '#withCapacity':: d.fn(help="A description of the persistent volume's resources and capacity. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity", args=[d.arg(name='capacity', type=d.T.object)]), - withCapacity(capacity): { spec+: { source+: { inlineVolumeSpec+: { capacity: capacity } } } }, - '#withCapacityMixin':: d.fn(help="A description of the persistent volume's resources and capacity. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='capacity', type=d.T.object)]), - withCapacityMixin(capacity): { spec+: { source+: { inlineVolumeSpec+: { capacity+: capacity } } } }, - '#withMountOptions':: d.fn(help='A list of mount options, e.g. ["ro", "soft"]. Not validated - mount will simply fail if one is invalid. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options', args=[d.arg(name='mountOptions', type=d.T.array)]), - withMountOptions(mountOptions): { spec+: { source+: { inlineVolumeSpec+: { mountOptions: if std.isArray(v=mountOptions) then mountOptions else [mountOptions] } } } }, - '#withMountOptionsMixin':: d.fn(help='A list of mount options, e.g. ["ro", "soft"]. Not validated - mount will simply fail if one is invalid. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='mountOptions', type=d.T.array)]), - withMountOptionsMixin(mountOptions): { spec+: { source+: { inlineVolumeSpec+: { mountOptions+: if std.isArray(v=mountOptions) then mountOptions else [mountOptions] } } } }, - '#withPersistentVolumeReclaimPolicy':: d.fn(help='What happens to a persistent volume when released from its claim. Valid options are Retain (default for manually created PersistentVolumes), Delete (default for dynamically provisioned PersistentVolumes), and Recycle (deprecated). Recycle must be supported by the volume plugin underlying this PersistentVolume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#reclaiming', args=[d.arg(name='persistentVolumeReclaimPolicy', type=d.T.string)]), - withPersistentVolumeReclaimPolicy(persistentVolumeReclaimPolicy): { spec+: { source+: { inlineVolumeSpec+: { persistentVolumeReclaimPolicy: persistentVolumeReclaimPolicy } } } }, - '#withStorageClassName':: d.fn(help='Name of StorageClass to which this persistent volume belongs. Empty value means that this volume does not belong to any StorageClass.', args=[d.arg(name='storageClassName', type=d.T.string)]), - withStorageClassName(storageClassName): { spec+: { source+: { inlineVolumeSpec+: { storageClassName: storageClassName } } } }, - '#withVolumeMode':: d.fn(help='volumeMode defines if a volume is intended to be used with a formatted filesystem or to remain in raw block state. Value of Filesystem is implied when not included in spec.', args=[d.arg(name='volumeMode', type=d.T.string)]), - withVolumeMode(volumeMode): { spec+: { source+: { inlineVolumeSpec+: { volumeMode: volumeMode } } } }, - }, - '#withPersistentVolumeName':: d.fn(help='Name of the persistent volume to attach.', args=[d.arg(name='persistentVolumeName', type=d.T.string)]), - withPersistentVolumeName(persistentVolumeName): { spec+: { source+: { persistentVolumeName: persistentVolumeName } } }, - }, - '#withAttacher':: d.fn(help='Attacher indicates the name of the volume driver that MUST handle this request. This is the name returned by GetPluginName().', args=[d.arg(name='attacher', type=d.T.string)]), - withAttacher(attacher): { spec+: { attacher: attacher } }, - '#withNodeName':: d.fn(help='The node that the volume should be attached to.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { spec+: { nodeName: nodeName } }, - }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/volumeAttachmentSource.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/volumeAttachmentSource.libsonnet deleted file mode 100644 index 65b29e14e100..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/volumeAttachmentSource.libsonnet +++ /dev/null @@ -1,419 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='volumeAttachmentSource', url='', help='VolumeAttachmentSource represents a volume that should be attached. Right now only PersistenVolumes can be attached via external attacher, in future we may allow also inline volumes in pods. Exactly one member can be set.'), - '#inlineVolumeSpec':: d.obj(help='PersistentVolumeSpec is the specification of a persistent volume.'), - inlineVolumeSpec: { - '#awsElasticBlockStore':: d.obj(help='Represents a Persistent Disk resource in AWS.\n\nAn AWS EBS disk must exist before mounting to a container. The disk must also be in the same AWS zone as the kubelet. An AWS EBS disk can only be mounted as read/write once. AWS EBS volumes support ownership management and SELinux relabeling.'), - awsElasticBlockStore: { - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { inlineVolumeSpec+: { awsElasticBlockStore+: { fsType: fsType } } }, - '#withPartition':: d.fn(help='The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).', args=[d.arg(name='partition', type=d.T.integer)]), - withPartition(partition): { inlineVolumeSpec+: { awsElasticBlockStore+: { partition: partition } } }, - '#withReadOnly':: d.fn(help='Specify "true" to force and set the ReadOnly property in VolumeMounts to "true". If omitted, the default is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { inlineVolumeSpec+: { awsElasticBlockStore+: { readOnly: readOnly } } }, - '#withVolumeID':: d.fn(help='Unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore', args=[d.arg(name='volumeID', type=d.T.string)]), - withVolumeID(volumeID): { inlineVolumeSpec+: { awsElasticBlockStore+: { volumeID: volumeID } } }, - }, - '#azureDisk':: d.obj(help='AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.'), - azureDisk: { - '#withCachingMode':: d.fn(help='Host Caching mode: None, Read Only, Read Write.', args=[d.arg(name='cachingMode', type=d.T.string)]), - withCachingMode(cachingMode): { inlineVolumeSpec+: { azureDisk+: { cachingMode: cachingMode } } }, - '#withDiskName':: d.fn(help='The Name of the data disk in the blob storage', args=[d.arg(name='diskName', type=d.T.string)]), - withDiskName(diskName): { inlineVolumeSpec+: { azureDisk+: { diskName: diskName } } }, - '#withDiskURI':: d.fn(help='The URI the data disk in the blob storage', args=[d.arg(name='diskURI', type=d.T.string)]), - withDiskURI(diskURI): { inlineVolumeSpec+: { azureDisk+: { diskURI: diskURI } } }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { inlineVolumeSpec+: { azureDisk+: { fsType: fsType } } }, - '#withKind':: d.fn(help='Expected values Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { inlineVolumeSpec+: { azureDisk+: { kind: kind } } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { inlineVolumeSpec+: { azureDisk+: { readOnly: readOnly } } }, - }, - '#azureFile':: d.obj(help='AzureFile represents an Azure File Service mount on the host and bind mount to the pod.'), - azureFile: { - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { inlineVolumeSpec+: { azureFile+: { readOnly: readOnly } } }, - '#withSecretName':: d.fn(help='the name of secret that contains Azure Storage Account Name and Key', args=[d.arg(name='secretName', type=d.T.string)]), - withSecretName(secretName): { inlineVolumeSpec+: { azureFile+: { secretName: secretName } } }, - '#withSecretNamespace':: d.fn(help='the namespace of the secret that contains Azure Storage Account Name and Key default is the same as the Pod', args=[d.arg(name='secretNamespace', type=d.T.string)]), - withSecretNamespace(secretNamespace): { inlineVolumeSpec+: { azureFile+: { secretNamespace: secretNamespace } } }, - '#withShareName':: d.fn(help='Share Name', args=[d.arg(name='shareName', type=d.T.string)]), - withShareName(shareName): { inlineVolumeSpec+: { azureFile+: { shareName: shareName } } }, - }, - '#cephfs':: d.obj(help='Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling.'), - cephfs: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { inlineVolumeSpec+: { cephfs+: { secretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { inlineVolumeSpec+: { cephfs+: { secretRef+: { namespace: namespace } } } }, - }, - '#withMonitors':: d.fn(help='Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitors(monitors): { inlineVolumeSpec+: { cephfs+: { monitors: if std.isArray(v=monitors) then monitors else [monitors] } } }, - '#withMonitorsMixin':: d.fn(help='Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitorsMixin(monitors): { inlineVolumeSpec+: { cephfs+: { monitors+: if std.isArray(v=monitors) then monitors else [monitors] } } }, - '#withPath':: d.fn(help='Optional: Used as the mounted root, rather than the full Ceph tree, default is /', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { inlineVolumeSpec+: { cephfs+: { path: path } } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { inlineVolumeSpec+: { cephfs+: { readOnly: readOnly } } }, - '#withSecretFile':: d.fn(help='Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='secretFile', type=d.T.string)]), - withSecretFile(secretFile): { inlineVolumeSpec+: { cephfs+: { secretFile: secretFile } } }, - '#withUser':: d.fn(help='Optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { inlineVolumeSpec+: { cephfs+: { user: user } } }, - }, - '#cinder':: d.obj(help='Represents a cinder volume resource in Openstack. A Cinder volume must exist before mounting to a container. The volume must also be in the same region as the kubelet. Cinder volumes support ownership management and SELinux relabeling.'), - cinder: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { inlineVolumeSpec+: { cinder+: { secretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { inlineVolumeSpec+: { cinder+: { secretRef+: { namespace: namespace } } } }, - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { inlineVolumeSpec+: { cinder+: { fsType: fsType } } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { inlineVolumeSpec+: { cinder+: { readOnly: readOnly } } }, - '#withVolumeID':: d.fn(help='volume id used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md', args=[d.arg(name='volumeID', type=d.T.string)]), - withVolumeID(volumeID): { inlineVolumeSpec+: { cinder+: { volumeID: volumeID } } }, - }, - '#claimRef':: d.obj(help='ObjectReference contains enough information to let you inspect or modify the referred object.'), - claimRef: { - '#withApiVersion':: d.fn(help='API version of the referent.', args=[d.arg(name='apiVersion', type=d.T.string)]), - withApiVersion(apiVersion): { inlineVolumeSpec+: { claimRef+: { apiVersion: apiVersion } } }, - '#withFieldPath':: d.fn(help='If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { inlineVolumeSpec+: { claimRef+: { fieldPath: fieldPath } } }, - '#withKind':: d.fn(help='Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { inlineVolumeSpec+: { claimRef+: { kind: kind } } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { inlineVolumeSpec+: { claimRef+: { name: name } } }, - '#withNamespace':: d.fn(help='Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { inlineVolumeSpec+: { claimRef+: { namespace: namespace } } }, - '#withResourceVersion':: d.fn(help='Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { inlineVolumeSpec+: { claimRef+: { resourceVersion: resourceVersion } } }, - '#withUid':: d.fn(help='UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { inlineVolumeSpec+: { claimRef+: { uid: uid } } }, - }, - '#csi':: d.obj(help='Represents storage that is managed by an external CSI volume driver (Beta feature)'), - csi: { - '#controllerExpandSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - controllerExpandSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { inlineVolumeSpec+: { csi+: { controllerExpandSecretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { inlineVolumeSpec+: { csi+: { controllerExpandSecretRef+: { namespace: namespace } } } }, - }, - '#controllerPublishSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - controllerPublishSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { inlineVolumeSpec+: { csi+: { controllerPublishSecretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { inlineVolumeSpec+: { csi+: { controllerPublishSecretRef+: { namespace: namespace } } } }, - }, - '#nodePublishSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - nodePublishSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { inlineVolumeSpec+: { csi+: { nodePublishSecretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { inlineVolumeSpec+: { csi+: { nodePublishSecretRef+: { namespace: namespace } } } }, - }, - '#nodeStageSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - nodeStageSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { inlineVolumeSpec+: { csi+: { nodeStageSecretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { inlineVolumeSpec+: { csi+: { nodeStageSecretRef+: { namespace: namespace } } } }, - }, - '#withDriver':: d.fn(help='Driver is the name of the driver to use for this volume. Required.', args=[d.arg(name='driver', type=d.T.string)]), - withDriver(driver): { inlineVolumeSpec+: { csi+: { driver: driver } } }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs".', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { inlineVolumeSpec+: { csi+: { fsType: fsType } } }, - '#withReadOnly':: d.fn(help='Optional: The value to pass to ControllerPublishVolumeRequest. Defaults to false (read/write).', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { inlineVolumeSpec+: { csi+: { readOnly: readOnly } } }, - '#withVolumeAttributes':: d.fn(help='Attributes of the volume to publish.', args=[d.arg(name='volumeAttributes', type=d.T.object)]), - withVolumeAttributes(volumeAttributes): { inlineVolumeSpec+: { csi+: { volumeAttributes: volumeAttributes } } }, - '#withVolumeAttributesMixin':: d.fn(help='Attributes of the volume to publish.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumeAttributes', type=d.T.object)]), - withVolumeAttributesMixin(volumeAttributes): { inlineVolumeSpec+: { csi+: { volumeAttributes+: volumeAttributes } } }, - '#withVolumeHandle':: d.fn(help='VolumeHandle is the unique volume name returned by the CSI volume plugin’s CreateVolume to refer to the volume on all subsequent calls. Required.', args=[d.arg(name='volumeHandle', type=d.T.string)]), - withVolumeHandle(volumeHandle): { inlineVolumeSpec+: { csi+: { volumeHandle: volumeHandle } } }, - }, - '#fc':: d.obj(help='Represents a Fibre Channel volume. Fibre Channel volumes can only be mounted as read/write once. Fibre Channel volumes support ownership management and SELinux relabeling.'), - fc: { - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { inlineVolumeSpec+: { fc+: { fsType: fsType } } }, - '#withLun':: d.fn(help='Optional: FC target lun number', args=[d.arg(name='lun', type=d.T.integer)]), - withLun(lun): { inlineVolumeSpec+: { fc+: { lun: lun } } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { inlineVolumeSpec+: { fc+: { readOnly: readOnly } } }, - '#withTargetWWNs':: d.fn(help='Optional: FC target worldwide names (WWNs)', args=[d.arg(name='targetWWNs', type=d.T.array)]), - withTargetWWNs(targetWWNs): { inlineVolumeSpec+: { fc+: { targetWWNs: if std.isArray(v=targetWWNs) then targetWWNs else [targetWWNs] } } }, - '#withTargetWWNsMixin':: d.fn(help='Optional: FC target worldwide names (WWNs)\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='targetWWNs', type=d.T.array)]), - withTargetWWNsMixin(targetWWNs): { inlineVolumeSpec+: { fc+: { targetWWNs+: if std.isArray(v=targetWWNs) then targetWWNs else [targetWWNs] } } }, - '#withWwids':: d.fn(help='Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.', args=[d.arg(name='wwids', type=d.T.array)]), - withWwids(wwids): { inlineVolumeSpec+: { fc+: { wwids: if std.isArray(v=wwids) then wwids else [wwids] } } }, - '#withWwidsMixin':: d.fn(help='Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='wwids', type=d.T.array)]), - withWwidsMixin(wwids): { inlineVolumeSpec+: { fc+: { wwids+: if std.isArray(v=wwids) then wwids else [wwids] } } }, - }, - '#flexVolume':: d.obj(help='FlexPersistentVolumeSource represents a generic persistent volume resource that is provisioned/attached using an exec based plugin.'), - flexVolume: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { inlineVolumeSpec+: { flexVolume+: { secretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { inlineVolumeSpec+: { flexVolume+: { secretRef+: { namespace: namespace } } } }, - }, - '#withDriver':: d.fn(help='Driver is the name of the driver to use for this volume.', args=[d.arg(name='driver', type=d.T.string)]), - withDriver(driver): { inlineVolumeSpec+: { flexVolume+: { driver: driver } } }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { inlineVolumeSpec+: { flexVolume+: { fsType: fsType } } }, - '#withOptions':: d.fn(help='Optional: Extra command options if any.', args=[d.arg(name='options', type=d.T.object)]), - withOptions(options): { inlineVolumeSpec+: { flexVolume+: { options: options } } }, - '#withOptionsMixin':: d.fn(help='Optional: Extra command options if any.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.object)]), - withOptionsMixin(options): { inlineVolumeSpec+: { flexVolume+: { options+: options } } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { inlineVolumeSpec+: { flexVolume+: { readOnly: readOnly } } }, - }, - '#flocker':: d.obj(help='Represents a Flocker volume mounted by the Flocker agent. One and only one of datasetName and datasetUUID should be set. Flocker volumes do not support ownership management or SELinux relabeling.'), - flocker: { - '#withDatasetName':: d.fn(help='Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated', args=[d.arg(name='datasetName', type=d.T.string)]), - withDatasetName(datasetName): { inlineVolumeSpec+: { flocker+: { datasetName: datasetName } } }, - '#withDatasetUUID':: d.fn(help='UUID of the dataset. This is unique identifier of a Flocker dataset', args=[d.arg(name='datasetUUID', type=d.T.string)]), - withDatasetUUID(datasetUUID): { inlineVolumeSpec+: { flocker+: { datasetUUID: datasetUUID } } }, - }, - '#gcePersistentDisk':: d.obj(help='Represents a Persistent Disk resource in Google Compute Engine.\n\nA GCE PD must exist before mounting to a container. The disk must also be in the same GCE project and zone as the kubelet. A GCE PD can only be mounted as read/write once or read-only many times. GCE PDs support ownership management and SELinux relabeling.'), - gcePersistentDisk: { - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { inlineVolumeSpec+: { gcePersistentDisk+: { fsType: fsType } } }, - '#withPartition':: d.fn(help='The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='partition', type=d.T.integer)]), - withPartition(partition): { inlineVolumeSpec+: { gcePersistentDisk+: { partition: partition } } }, - '#withPdName':: d.fn(help='Unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='pdName', type=d.T.string)]), - withPdName(pdName): { inlineVolumeSpec+: { gcePersistentDisk+: { pdName: pdName } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { inlineVolumeSpec+: { gcePersistentDisk+: { readOnly: readOnly } } }, - }, - '#glusterfs':: d.obj(help='Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling.'), - glusterfs: { - '#withEndpoints':: d.fn(help='EndpointsName is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='endpoints', type=d.T.string)]), - withEndpoints(endpoints): { inlineVolumeSpec+: { glusterfs+: { endpoints: endpoints } } }, - '#withEndpointsNamespace':: d.fn(help='EndpointsNamespace is the namespace that contains Glusterfs endpoint. If this field is empty, the EndpointNamespace defaults to the same namespace as the bound PVC. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='endpointsNamespace', type=d.T.string)]), - withEndpointsNamespace(endpointsNamespace): { inlineVolumeSpec+: { glusterfs+: { endpointsNamespace: endpointsNamespace } } }, - '#withPath':: d.fn(help='Path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { inlineVolumeSpec+: { glusterfs+: { path: path } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { inlineVolumeSpec+: { glusterfs+: { readOnly: readOnly } } }, - }, - '#hostPath':: d.obj(help='Represents a host path mapped into a pod. Host path volumes do not support ownership management or SELinux relabeling.'), - hostPath: { - '#withPath':: d.fn(help='Path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { inlineVolumeSpec+: { hostPath+: { path: path } } }, - '#withType':: d.fn(help='Type for HostPath Volume Defaults to "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { inlineVolumeSpec+: { hostPath+: { type: type } } }, - }, - '#iscsi':: d.obj(help='ISCSIPersistentVolumeSource represents an ISCSI disk. ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling.'), - iscsi: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { inlineVolumeSpec+: { iscsi+: { secretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { inlineVolumeSpec+: { iscsi+: { secretRef+: { namespace: namespace } } } }, - }, - '#withChapAuthDiscovery':: d.fn(help='whether support iSCSI Discovery CHAP authentication', args=[d.arg(name='chapAuthDiscovery', type=d.T.boolean)]), - withChapAuthDiscovery(chapAuthDiscovery): { inlineVolumeSpec+: { iscsi+: { chapAuthDiscovery: chapAuthDiscovery } } }, - '#withChapAuthSession':: d.fn(help='whether support iSCSI Session CHAP authentication', args=[d.arg(name='chapAuthSession', type=d.T.boolean)]), - withChapAuthSession(chapAuthSession): { inlineVolumeSpec+: { iscsi+: { chapAuthSession: chapAuthSession } } }, - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { inlineVolumeSpec+: { iscsi+: { fsType: fsType } } }, - '#withInitiatorName':: d.fn(help='Custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface : will be created for the connection.', args=[d.arg(name='initiatorName', type=d.T.string)]), - withInitiatorName(initiatorName): { inlineVolumeSpec+: { iscsi+: { initiatorName: initiatorName } } }, - '#withIqn':: d.fn(help='Target iSCSI Qualified Name.', args=[d.arg(name='iqn', type=d.T.string)]), - withIqn(iqn): { inlineVolumeSpec+: { iscsi+: { iqn: iqn } } }, - '#withIscsiInterface':: d.fn(help="iSCSI Interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).", args=[d.arg(name='iscsiInterface', type=d.T.string)]), - withIscsiInterface(iscsiInterface): { inlineVolumeSpec+: { iscsi+: { iscsiInterface: iscsiInterface } } }, - '#withLun':: d.fn(help='iSCSI Target Lun number.', args=[d.arg(name='lun', type=d.T.integer)]), - withLun(lun): { inlineVolumeSpec+: { iscsi+: { lun: lun } } }, - '#withPortals':: d.fn(help='iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).', args=[d.arg(name='portals', type=d.T.array)]), - withPortals(portals): { inlineVolumeSpec+: { iscsi+: { portals: if std.isArray(v=portals) then portals else [portals] } } }, - '#withPortalsMixin':: d.fn(help='iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='portals', type=d.T.array)]), - withPortalsMixin(portals): { inlineVolumeSpec+: { iscsi+: { portals+: if std.isArray(v=portals) then portals else [portals] } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { inlineVolumeSpec+: { iscsi+: { readOnly: readOnly } } }, - '#withTargetPortal':: d.fn(help='iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).', args=[d.arg(name='targetPortal', type=d.T.string)]), - withTargetPortal(targetPortal): { inlineVolumeSpec+: { iscsi+: { targetPortal: targetPortal } } }, - }, - '#local':: d.obj(help='Local represents directly-attached storage with node affinity (Beta feature)'), - 'local': { - '#withFsType':: d.fn(help='Filesystem type to mount. It applies only when the Path is a block device. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default value is to auto-select a fileystem if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { inlineVolumeSpec+: { 'local'+: { fsType: fsType } } }, - '#withPath':: d.fn(help='The full path to the volume on the node. It can be either a directory or block device (disk, partition, ...).', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { inlineVolumeSpec+: { 'local'+: { path: path } } }, - }, - '#nfs':: d.obj(help='Represents an NFS mount that lasts the lifetime of a pod. NFS volumes do not support ownership management or SELinux relabeling.'), - nfs: { - '#withPath':: d.fn(help='Path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { inlineVolumeSpec+: { nfs+: { path: path } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { inlineVolumeSpec+: { nfs+: { readOnly: readOnly } } }, - '#withServer':: d.fn(help='Server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs', args=[d.arg(name='server', type=d.T.string)]), - withServer(server): { inlineVolumeSpec+: { nfs+: { server: server } } }, - }, - '#nodeAffinity':: d.obj(help='VolumeNodeAffinity defines constraints that limit what nodes this volume can be accessed from.'), - nodeAffinity: { - '#required':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - required: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { inlineVolumeSpec+: { nodeAffinity+: { required+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { inlineVolumeSpec+: { nodeAffinity+: { required+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } }, - }, - }, - '#photonPersistentDisk':: d.obj(help='Represents a Photon Controller persistent disk resource.'), - photonPersistentDisk: { - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { inlineVolumeSpec+: { photonPersistentDisk+: { fsType: fsType } } }, - '#withPdID':: d.fn(help='ID that identifies Photon Controller persistent disk', args=[d.arg(name='pdID', type=d.T.string)]), - withPdID(pdID): { inlineVolumeSpec+: { photonPersistentDisk+: { pdID: pdID } } }, - }, - '#portworxVolume':: d.obj(help='PortworxVolumeSource represents a Portworx volume resource.'), - portworxVolume: { - '#withFsType':: d.fn(help='FSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { inlineVolumeSpec+: { portworxVolume+: { fsType: fsType } } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { inlineVolumeSpec+: { portworxVolume+: { readOnly: readOnly } } }, - '#withVolumeID':: d.fn(help='VolumeID uniquely identifies a Portworx volume', args=[d.arg(name='volumeID', type=d.T.string)]), - withVolumeID(volumeID): { inlineVolumeSpec+: { portworxVolume+: { volumeID: volumeID } } }, - }, - '#quobyte':: d.obj(help='Represents a Quobyte mount that lasts the lifetime of a pod. Quobyte volumes do not support ownership management or SELinux relabeling.'), - quobyte: { - '#withGroup':: d.fn(help='Group to map volume access to Default is no group', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { inlineVolumeSpec+: { quobyte+: { group: group } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { inlineVolumeSpec+: { quobyte+: { readOnly: readOnly } } }, - '#withRegistry':: d.fn(help='Registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes', args=[d.arg(name='registry', type=d.T.string)]), - withRegistry(registry): { inlineVolumeSpec+: { quobyte+: { registry: registry } } }, - '#withTenant':: d.fn(help='Tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin', args=[d.arg(name='tenant', type=d.T.string)]), - withTenant(tenant): { inlineVolumeSpec+: { quobyte+: { tenant: tenant } } }, - '#withUser':: d.fn(help='User to map volume access to Defaults to serivceaccount user', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { inlineVolumeSpec+: { quobyte+: { user: user } } }, - '#withVolume':: d.fn(help='Volume is a string that references an already created Quobyte volume by name.', args=[d.arg(name='volume', type=d.T.string)]), - withVolume(volume): { inlineVolumeSpec+: { quobyte+: { volume: volume } } }, - }, - '#rbd':: d.obj(help='Represents a Rados Block Device mount that lasts the lifetime of a pod. RBD volumes support ownership management and SELinux relabeling.'), - rbd: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { inlineVolumeSpec+: { rbd+: { secretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { inlineVolumeSpec+: { rbd+: { secretRef+: { namespace: namespace } } } }, - }, - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { inlineVolumeSpec+: { rbd+: { fsType: fsType } } }, - '#withImage':: d.fn(help='The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='image', type=d.T.string)]), - withImage(image): { inlineVolumeSpec+: { rbd+: { image: image } } }, - '#withKeyring':: d.fn(help='Keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='keyring', type=d.T.string)]), - withKeyring(keyring): { inlineVolumeSpec+: { rbd+: { keyring: keyring } } }, - '#withMonitors':: d.fn(help='A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitors(monitors): { inlineVolumeSpec+: { rbd+: { monitors: if std.isArray(v=monitors) then monitors else [monitors] } } }, - '#withMonitorsMixin':: d.fn(help='A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitorsMixin(monitors): { inlineVolumeSpec+: { rbd+: { monitors+: if std.isArray(v=monitors) then monitors else [monitors] } } }, - '#withPool':: d.fn(help='The rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='pool', type=d.T.string)]), - withPool(pool): { inlineVolumeSpec+: { rbd+: { pool: pool } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { inlineVolumeSpec+: { rbd+: { readOnly: readOnly } } }, - '#withUser':: d.fn(help='The rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { inlineVolumeSpec+: { rbd+: { user: user } } }, - }, - '#scaleIO':: d.obj(help='ScaleIOPersistentVolumeSource represents a persistent ScaleIO volume'), - scaleIO: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { inlineVolumeSpec+: { scaleIO+: { secretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { inlineVolumeSpec+: { scaleIO+: { secretRef+: { namespace: namespace } } } }, - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Default is "xfs"', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { inlineVolumeSpec+: { scaleIO+: { fsType: fsType } } }, - '#withGateway':: d.fn(help='The host address of the ScaleIO API Gateway.', args=[d.arg(name='gateway', type=d.T.string)]), - withGateway(gateway): { inlineVolumeSpec+: { scaleIO+: { gateway: gateway } } }, - '#withProtectionDomain':: d.fn(help='The name of the ScaleIO Protection Domain for the configured storage.', args=[d.arg(name='protectionDomain', type=d.T.string)]), - withProtectionDomain(protectionDomain): { inlineVolumeSpec+: { scaleIO+: { protectionDomain: protectionDomain } } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { inlineVolumeSpec+: { scaleIO+: { readOnly: readOnly } } }, - '#withSslEnabled':: d.fn(help='Flag to enable/disable SSL communication with Gateway, default false', args=[d.arg(name='sslEnabled', type=d.T.boolean)]), - withSslEnabled(sslEnabled): { inlineVolumeSpec+: { scaleIO+: { sslEnabled: sslEnabled } } }, - '#withStorageMode':: d.fn(help='Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.', args=[d.arg(name='storageMode', type=d.T.string)]), - withStorageMode(storageMode): { inlineVolumeSpec+: { scaleIO+: { storageMode: storageMode } } }, - '#withStoragePool':: d.fn(help='The ScaleIO Storage Pool associated with the protection domain.', args=[d.arg(name='storagePool', type=d.T.string)]), - withStoragePool(storagePool): { inlineVolumeSpec+: { scaleIO+: { storagePool: storagePool } } }, - '#withSystem':: d.fn(help='The name of the storage system as configured in ScaleIO.', args=[d.arg(name='system', type=d.T.string)]), - withSystem(system): { inlineVolumeSpec+: { scaleIO+: { system: system } } }, - '#withVolumeName':: d.fn(help='The name of a volume already created in the ScaleIO system that is associated with this volume source.', args=[d.arg(name='volumeName', type=d.T.string)]), - withVolumeName(volumeName): { inlineVolumeSpec+: { scaleIO+: { volumeName: volumeName } } }, - }, - '#storageos':: d.obj(help='Represents a StorageOS persistent volume resource.'), - storageos: { - '#secretRef':: d.obj(help='ObjectReference contains enough information to let you inspect or modify the referred object.'), - secretRef: { - '#withApiVersion':: d.fn(help='API version of the referent.', args=[d.arg(name='apiVersion', type=d.T.string)]), - withApiVersion(apiVersion): { inlineVolumeSpec+: { storageos+: { secretRef+: { apiVersion: apiVersion } } } }, - '#withFieldPath':: d.fn(help='If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { inlineVolumeSpec+: { storageos+: { secretRef+: { fieldPath: fieldPath } } } }, - '#withKind':: d.fn(help='Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { inlineVolumeSpec+: { storageos+: { secretRef+: { kind: kind } } } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { inlineVolumeSpec+: { storageos+: { secretRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { inlineVolumeSpec+: { storageos+: { secretRef+: { namespace: namespace } } } }, - '#withResourceVersion':: d.fn(help='Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { inlineVolumeSpec+: { storageos+: { secretRef+: { resourceVersion: resourceVersion } } } }, - '#withUid':: d.fn(help='UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { inlineVolumeSpec+: { storageos+: { secretRef+: { uid: uid } } } }, - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { inlineVolumeSpec+: { storageos+: { fsType: fsType } } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { inlineVolumeSpec+: { storageos+: { readOnly: readOnly } } }, - '#withVolumeName':: d.fn(help='VolumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.', args=[d.arg(name='volumeName', type=d.T.string)]), - withVolumeName(volumeName): { inlineVolumeSpec+: { storageos+: { volumeName: volumeName } } }, - '#withVolumeNamespace':: d.fn(help="VolumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod's namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to 'default' if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created.", args=[d.arg(name='volumeNamespace', type=d.T.string)]), - withVolumeNamespace(volumeNamespace): { inlineVolumeSpec+: { storageos+: { volumeNamespace: volumeNamespace } } }, - }, - '#vsphereVolume':: d.obj(help='Represents a vSphere volume resource.'), - vsphereVolume: { - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { inlineVolumeSpec+: { vsphereVolume+: { fsType: fsType } } }, - '#withStoragePolicyID':: d.fn(help='Storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.', args=[d.arg(name='storagePolicyID', type=d.T.string)]), - withStoragePolicyID(storagePolicyID): { inlineVolumeSpec+: { vsphereVolume+: { storagePolicyID: storagePolicyID } } }, - '#withStoragePolicyName':: d.fn(help='Storage Policy Based Management (SPBM) profile name.', args=[d.arg(name='storagePolicyName', type=d.T.string)]), - withStoragePolicyName(storagePolicyName): { inlineVolumeSpec+: { vsphereVolume+: { storagePolicyName: storagePolicyName } } }, - '#withVolumePath':: d.fn(help='Path that identifies vSphere volume vmdk', args=[d.arg(name='volumePath', type=d.T.string)]), - withVolumePath(volumePath): { inlineVolumeSpec+: { vsphereVolume+: { volumePath: volumePath } } }, - }, - '#withAccessModes':: d.fn(help='AccessModes contains all ways the volume can be mounted. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes', args=[d.arg(name='accessModes', type=d.T.array)]), - withAccessModes(accessModes): { inlineVolumeSpec+: { accessModes: if std.isArray(v=accessModes) then accessModes else [accessModes] } }, - '#withAccessModesMixin':: d.fn(help='AccessModes contains all ways the volume can be mounted. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='accessModes', type=d.T.array)]), - withAccessModesMixin(accessModes): { inlineVolumeSpec+: { accessModes+: if std.isArray(v=accessModes) then accessModes else [accessModes] } }, - '#withCapacity':: d.fn(help="A description of the persistent volume's resources and capacity. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity", args=[d.arg(name='capacity', type=d.T.object)]), - withCapacity(capacity): { inlineVolumeSpec+: { capacity: capacity } }, - '#withCapacityMixin':: d.fn(help="A description of the persistent volume's resources and capacity. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='capacity', type=d.T.object)]), - withCapacityMixin(capacity): { inlineVolumeSpec+: { capacity+: capacity } }, - '#withMountOptions':: d.fn(help='A list of mount options, e.g. ["ro", "soft"]. Not validated - mount will simply fail if one is invalid. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options', args=[d.arg(name='mountOptions', type=d.T.array)]), - withMountOptions(mountOptions): { inlineVolumeSpec+: { mountOptions: if std.isArray(v=mountOptions) then mountOptions else [mountOptions] } }, - '#withMountOptionsMixin':: d.fn(help='A list of mount options, e.g. ["ro", "soft"]. Not validated - mount will simply fail if one is invalid. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='mountOptions', type=d.T.array)]), - withMountOptionsMixin(mountOptions): { inlineVolumeSpec+: { mountOptions+: if std.isArray(v=mountOptions) then mountOptions else [mountOptions] } }, - '#withPersistentVolumeReclaimPolicy':: d.fn(help='What happens to a persistent volume when released from its claim. Valid options are Retain (default for manually created PersistentVolumes), Delete (default for dynamically provisioned PersistentVolumes), and Recycle (deprecated). Recycle must be supported by the volume plugin underlying this PersistentVolume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#reclaiming', args=[d.arg(name='persistentVolumeReclaimPolicy', type=d.T.string)]), - withPersistentVolumeReclaimPolicy(persistentVolumeReclaimPolicy): { inlineVolumeSpec+: { persistentVolumeReclaimPolicy: persistentVolumeReclaimPolicy } }, - '#withStorageClassName':: d.fn(help='Name of StorageClass to which this persistent volume belongs. Empty value means that this volume does not belong to any StorageClass.', args=[d.arg(name='storageClassName', type=d.T.string)]), - withStorageClassName(storageClassName): { inlineVolumeSpec+: { storageClassName: storageClassName } }, - '#withVolumeMode':: d.fn(help='volumeMode defines if a volume is intended to be used with a formatted filesystem or to remain in raw block state. Value of Filesystem is implied when not included in spec.', args=[d.arg(name='volumeMode', type=d.T.string)]), - withVolumeMode(volumeMode): { inlineVolumeSpec+: { volumeMode: volumeMode } }, - }, - '#withPersistentVolumeName':: d.fn(help='Name of the persistent volume to attach.', args=[d.arg(name='persistentVolumeName', type=d.T.string)]), - withPersistentVolumeName(persistentVolumeName): { persistentVolumeName: persistentVolumeName }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/volumeAttachmentSpec.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/volumeAttachmentSpec.libsonnet deleted file mode 100644 index 29f116537cf4..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/volumeAttachmentSpec.libsonnet +++ /dev/null @@ -1,426 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='volumeAttachmentSpec', url='', help='VolumeAttachmentSpec is the specification of a VolumeAttachment request.'), - '#source':: d.obj(help='VolumeAttachmentSource represents a volume that should be attached. Right now only PersistenVolumes can be attached via external attacher, in future we may allow also inline volumes in pods. Exactly one member can be set.'), - source: { - '#inlineVolumeSpec':: d.obj(help='PersistentVolumeSpec is the specification of a persistent volume.'), - inlineVolumeSpec: { - '#awsElasticBlockStore':: d.obj(help='Represents a Persistent Disk resource in AWS.\n\nAn AWS EBS disk must exist before mounting to a container. The disk must also be in the same AWS zone as the kubelet. An AWS EBS disk can only be mounted as read/write once. AWS EBS volumes support ownership management and SELinux relabeling.'), - awsElasticBlockStore: { - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { source+: { inlineVolumeSpec+: { awsElasticBlockStore+: { fsType: fsType } } } }, - '#withPartition':: d.fn(help='The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).', args=[d.arg(name='partition', type=d.T.integer)]), - withPartition(partition): { source+: { inlineVolumeSpec+: { awsElasticBlockStore+: { partition: partition } } } }, - '#withReadOnly':: d.fn(help='Specify "true" to force and set the ReadOnly property in VolumeMounts to "true". If omitted, the default is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { source+: { inlineVolumeSpec+: { awsElasticBlockStore+: { readOnly: readOnly } } } }, - '#withVolumeID':: d.fn(help='Unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore', args=[d.arg(name='volumeID', type=d.T.string)]), - withVolumeID(volumeID): { source+: { inlineVolumeSpec+: { awsElasticBlockStore+: { volumeID: volumeID } } } }, - }, - '#azureDisk':: d.obj(help='AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.'), - azureDisk: { - '#withCachingMode':: d.fn(help='Host Caching mode: None, Read Only, Read Write.', args=[d.arg(name='cachingMode', type=d.T.string)]), - withCachingMode(cachingMode): { source+: { inlineVolumeSpec+: { azureDisk+: { cachingMode: cachingMode } } } }, - '#withDiskName':: d.fn(help='The Name of the data disk in the blob storage', args=[d.arg(name='diskName', type=d.T.string)]), - withDiskName(diskName): { source+: { inlineVolumeSpec+: { azureDisk+: { diskName: diskName } } } }, - '#withDiskURI':: d.fn(help='The URI the data disk in the blob storage', args=[d.arg(name='diskURI', type=d.T.string)]), - withDiskURI(diskURI): { source+: { inlineVolumeSpec+: { azureDisk+: { diskURI: diskURI } } } }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { source+: { inlineVolumeSpec+: { azureDisk+: { fsType: fsType } } } }, - '#withKind':: d.fn(help='Expected values Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { source+: { inlineVolumeSpec+: { azureDisk+: { kind: kind } } } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { source+: { inlineVolumeSpec+: { azureDisk+: { readOnly: readOnly } } } }, - }, - '#azureFile':: d.obj(help='AzureFile represents an Azure File Service mount on the host and bind mount to the pod.'), - azureFile: { - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { source+: { inlineVolumeSpec+: { azureFile+: { readOnly: readOnly } } } }, - '#withSecretName':: d.fn(help='the name of secret that contains Azure Storage Account Name and Key', args=[d.arg(name='secretName', type=d.T.string)]), - withSecretName(secretName): { source+: { inlineVolumeSpec+: { azureFile+: { secretName: secretName } } } }, - '#withSecretNamespace':: d.fn(help='the namespace of the secret that contains Azure Storage Account Name and Key default is the same as the Pod', args=[d.arg(name='secretNamespace', type=d.T.string)]), - withSecretNamespace(secretNamespace): { source+: { inlineVolumeSpec+: { azureFile+: { secretNamespace: secretNamespace } } } }, - '#withShareName':: d.fn(help='Share Name', args=[d.arg(name='shareName', type=d.T.string)]), - withShareName(shareName): { source+: { inlineVolumeSpec+: { azureFile+: { shareName: shareName } } } }, - }, - '#cephfs':: d.obj(help='Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling.'), - cephfs: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { source+: { inlineVolumeSpec+: { cephfs+: { secretRef+: { name: name } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { source+: { inlineVolumeSpec+: { cephfs+: { secretRef+: { namespace: namespace } } } } }, - }, - '#withMonitors':: d.fn(help='Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitors(monitors): { source+: { inlineVolumeSpec+: { cephfs+: { monitors: if std.isArray(v=monitors) then monitors else [monitors] } } } }, - '#withMonitorsMixin':: d.fn(help='Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitorsMixin(monitors): { source+: { inlineVolumeSpec+: { cephfs+: { monitors+: if std.isArray(v=monitors) then monitors else [monitors] } } } }, - '#withPath':: d.fn(help='Optional: Used as the mounted root, rather than the full Ceph tree, default is /', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { source+: { inlineVolumeSpec+: { cephfs+: { path: path } } } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { source+: { inlineVolumeSpec+: { cephfs+: { readOnly: readOnly } } } }, - '#withSecretFile':: d.fn(help='Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='secretFile', type=d.T.string)]), - withSecretFile(secretFile): { source+: { inlineVolumeSpec+: { cephfs+: { secretFile: secretFile } } } }, - '#withUser':: d.fn(help='Optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { source+: { inlineVolumeSpec+: { cephfs+: { user: user } } } }, - }, - '#cinder':: d.obj(help='Represents a cinder volume resource in Openstack. A Cinder volume must exist before mounting to a container. The volume must also be in the same region as the kubelet. Cinder volumes support ownership management and SELinux relabeling.'), - cinder: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { source+: { inlineVolumeSpec+: { cinder+: { secretRef+: { name: name } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { source+: { inlineVolumeSpec+: { cinder+: { secretRef+: { namespace: namespace } } } } }, - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { source+: { inlineVolumeSpec+: { cinder+: { fsType: fsType } } } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { source+: { inlineVolumeSpec+: { cinder+: { readOnly: readOnly } } } }, - '#withVolumeID':: d.fn(help='volume id used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md', args=[d.arg(name='volumeID', type=d.T.string)]), - withVolumeID(volumeID): { source+: { inlineVolumeSpec+: { cinder+: { volumeID: volumeID } } } }, - }, - '#claimRef':: d.obj(help='ObjectReference contains enough information to let you inspect or modify the referred object.'), - claimRef: { - '#withApiVersion':: d.fn(help='API version of the referent.', args=[d.arg(name='apiVersion', type=d.T.string)]), - withApiVersion(apiVersion): { source+: { inlineVolumeSpec+: { claimRef+: { apiVersion: apiVersion } } } }, - '#withFieldPath':: d.fn(help='If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { source+: { inlineVolumeSpec+: { claimRef+: { fieldPath: fieldPath } } } }, - '#withKind':: d.fn(help='Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { source+: { inlineVolumeSpec+: { claimRef+: { kind: kind } } } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { source+: { inlineVolumeSpec+: { claimRef+: { name: name } } } }, - '#withNamespace':: d.fn(help='Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { source+: { inlineVolumeSpec+: { claimRef+: { namespace: namespace } } } }, - '#withResourceVersion':: d.fn(help='Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { source+: { inlineVolumeSpec+: { claimRef+: { resourceVersion: resourceVersion } } } }, - '#withUid':: d.fn(help='UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { source+: { inlineVolumeSpec+: { claimRef+: { uid: uid } } } }, - }, - '#csi':: d.obj(help='Represents storage that is managed by an external CSI volume driver (Beta feature)'), - csi: { - '#controllerExpandSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - controllerExpandSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { source+: { inlineVolumeSpec+: { csi+: { controllerExpandSecretRef+: { name: name } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { source+: { inlineVolumeSpec+: { csi+: { controllerExpandSecretRef+: { namespace: namespace } } } } }, - }, - '#controllerPublishSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - controllerPublishSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { source+: { inlineVolumeSpec+: { csi+: { controllerPublishSecretRef+: { name: name } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { source+: { inlineVolumeSpec+: { csi+: { controllerPublishSecretRef+: { namespace: namespace } } } } }, - }, - '#nodePublishSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - nodePublishSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { source+: { inlineVolumeSpec+: { csi+: { nodePublishSecretRef+: { name: name } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { source+: { inlineVolumeSpec+: { csi+: { nodePublishSecretRef+: { namespace: namespace } } } } }, - }, - '#nodeStageSecretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - nodeStageSecretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { source+: { inlineVolumeSpec+: { csi+: { nodeStageSecretRef+: { name: name } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { source+: { inlineVolumeSpec+: { csi+: { nodeStageSecretRef+: { namespace: namespace } } } } }, - }, - '#withDriver':: d.fn(help='Driver is the name of the driver to use for this volume. Required.', args=[d.arg(name='driver', type=d.T.string)]), - withDriver(driver): { source+: { inlineVolumeSpec+: { csi+: { driver: driver } } } }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs".', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { source+: { inlineVolumeSpec+: { csi+: { fsType: fsType } } } }, - '#withReadOnly':: d.fn(help='Optional: The value to pass to ControllerPublishVolumeRequest. Defaults to false (read/write).', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { source+: { inlineVolumeSpec+: { csi+: { readOnly: readOnly } } } }, - '#withVolumeAttributes':: d.fn(help='Attributes of the volume to publish.', args=[d.arg(name='volumeAttributes', type=d.T.object)]), - withVolumeAttributes(volumeAttributes): { source+: { inlineVolumeSpec+: { csi+: { volumeAttributes: volumeAttributes } } } }, - '#withVolumeAttributesMixin':: d.fn(help='Attributes of the volume to publish.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='volumeAttributes', type=d.T.object)]), - withVolumeAttributesMixin(volumeAttributes): { source+: { inlineVolumeSpec+: { csi+: { volumeAttributes+: volumeAttributes } } } }, - '#withVolumeHandle':: d.fn(help='VolumeHandle is the unique volume name returned by the CSI volume plugin’s CreateVolume to refer to the volume on all subsequent calls. Required.', args=[d.arg(name='volumeHandle', type=d.T.string)]), - withVolumeHandle(volumeHandle): { source+: { inlineVolumeSpec+: { csi+: { volumeHandle: volumeHandle } } } }, - }, - '#fc':: d.obj(help='Represents a Fibre Channel volume. Fibre Channel volumes can only be mounted as read/write once. Fibre Channel volumes support ownership management and SELinux relabeling.'), - fc: { - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { source+: { inlineVolumeSpec+: { fc+: { fsType: fsType } } } }, - '#withLun':: d.fn(help='Optional: FC target lun number', args=[d.arg(name='lun', type=d.T.integer)]), - withLun(lun): { source+: { inlineVolumeSpec+: { fc+: { lun: lun } } } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { source+: { inlineVolumeSpec+: { fc+: { readOnly: readOnly } } } }, - '#withTargetWWNs':: d.fn(help='Optional: FC target worldwide names (WWNs)', args=[d.arg(name='targetWWNs', type=d.T.array)]), - withTargetWWNs(targetWWNs): { source+: { inlineVolumeSpec+: { fc+: { targetWWNs: if std.isArray(v=targetWWNs) then targetWWNs else [targetWWNs] } } } }, - '#withTargetWWNsMixin':: d.fn(help='Optional: FC target worldwide names (WWNs)\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='targetWWNs', type=d.T.array)]), - withTargetWWNsMixin(targetWWNs): { source+: { inlineVolumeSpec+: { fc+: { targetWWNs+: if std.isArray(v=targetWWNs) then targetWWNs else [targetWWNs] } } } }, - '#withWwids':: d.fn(help='Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.', args=[d.arg(name='wwids', type=d.T.array)]), - withWwids(wwids): { source+: { inlineVolumeSpec+: { fc+: { wwids: if std.isArray(v=wwids) then wwids else [wwids] } } } }, - '#withWwidsMixin':: d.fn(help='Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='wwids', type=d.T.array)]), - withWwidsMixin(wwids): { source+: { inlineVolumeSpec+: { fc+: { wwids+: if std.isArray(v=wwids) then wwids else [wwids] } } } }, - }, - '#flexVolume':: d.obj(help='FlexPersistentVolumeSource represents a generic persistent volume resource that is provisioned/attached using an exec based plugin.'), - flexVolume: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { source+: { inlineVolumeSpec+: { flexVolume+: { secretRef+: { name: name } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { source+: { inlineVolumeSpec+: { flexVolume+: { secretRef+: { namespace: namespace } } } } }, - }, - '#withDriver':: d.fn(help='Driver is the name of the driver to use for this volume.', args=[d.arg(name='driver', type=d.T.string)]), - withDriver(driver): { source+: { inlineVolumeSpec+: { flexVolume+: { driver: driver } } } }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { source+: { inlineVolumeSpec+: { flexVolume+: { fsType: fsType } } } }, - '#withOptions':: d.fn(help='Optional: Extra command options if any.', args=[d.arg(name='options', type=d.T.object)]), - withOptions(options): { source+: { inlineVolumeSpec+: { flexVolume+: { options: options } } } }, - '#withOptionsMixin':: d.fn(help='Optional: Extra command options if any.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='options', type=d.T.object)]), - withOptionsMixin(options): { source+: { inlineVolumeSpec+: { flexVolume+: { options+: options } } } }, - '#withReadOnly':: d.fn(help='Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { source+: { inlineVolumeSpec+: { flexVolume+: { readOnly: readOnly } } } }, - }, - '#flocker':: d.obj(help='Represents a Flocker volume mounted by the Flocker agent. One and only one of datasetName and datasetUUID should be set. Flocker volumes do not support ownership management or SELinux relabeling.'), - flocker: { - '#withDatasetName':: d.fn(help='Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated', args=[d.arg(name='datasetName', type=d.T.string)]), - withDatasetName(datasetName): { source+: { inlineVolumeSpec+: { flocker+: { datasetName: datasetName } } } }, - '#withDatasetUUID':: d.fn(help='UUID of the dataset. This is unique identifier of a Flocker dataset', args=[d.arg(name='datasetUUID', type=d.T.string)]), - withDatasetUUID(datasetUUID): { source+: { inlineVolumeSpec+: { flocker+: { datasetUUID: datasetUUID } } } }, - }, - '#gcePersistentDisk':: d.obj(help='Represents a Persistent Disk resource in Google Compute Engine.\n\nA GCE PD must exist before mounting to a container. The disk must also be in the same GCE project and zone as the kubelet. A GCE PD can only be mounted as read/write once or read-only many times. GCE PDs support ownership management and SELinux relabeling.'), - gcePersistentDisk: { - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { source+: { inlineVolumeSpec+: { gcePersistentDisk+: { fsType: fsType } } } }, - '#withPartition':: d.fn(help='The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='partition', type=d.T.integer)]), - withPartition(partition): { source+: { inlineVolumeSpec+: { gcePersistentDisk+: { partition: partition } } } }, - '#withPdName':: d.fn(help='Unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='pdName', type=d.T.string)]), - withPdName(pdName): { source+: { inlineVolumeSpec+: { gcePersistentDisk+: { pdName: pdName } } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { source+: { inlineVolumeSpec+: { gcePersistentDisk+: { readOnly: readOnly } } } }, - }, - '#glusterfs':: d.obj(help='Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling.'), - glusterfs: { - '#withEndpoints':: d.fn(help='EndpointsName is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='endpoints', type=d.T.string)]), - withEndpoints(endpoints): { source+: { inlineVolumeSpec+: { glusterfs+: { endpoints: endpoints } } } }, - '#withEndpointsNamespace':: d.fn(help='EndpointsNamespace is the namespace that contains Glusterfs endpoint. If this field is empty, the EndpointNamespace defaults to the same namespace as the bound PVC. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='endpointsNamespace', type=d.T.string)]), - withEndpointsNamespace(endpointsNamespace): { source+: { inlineVolumeSpec+: { glusterfs+: { endpointsNamespace: endpointsNamespace } } } }, - '#withPath':: d.fn(help='Path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { source+: { inlineVolumeSpec+: { glusterfs+: { path: path } } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { source+: { inlineVolumeSpec+: { glusterfs+: { readOnly: readOnly } } } }, - }, - '#hostPath':: d.obj(help='Represents a host path mapped into a pod. Host path volumes do not support ownership management or SELinux relabeling.'), - hostPath: { - '#withPath':: d.fn(help='Path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { source+: { inlineVolumeSpec+: { hostPath+: { path: path } } } }, - '#withType':: d.fn(help='Type for HostPath Volume Defaults to "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath', args=[d.arg(name='type', type=d.T.string)]), - withType(type): { source+: { inlineVolumeSpec+: { hostPath+: { type: type } } } }, - }, - '#iscsi':: d.obj(help='ISCSIPersistentVolumeSource represents an ISCSI disk. ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling.'), - iscsi: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { source+: { inlineVolumeSpec+: { iscsi+: { secretRef+: { name: name } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { source+: { inlineVolumeSpec+: { iscsi+: { secretRef+: { namespace: namespace } } } } }, - }, - '#withChapAuthDiscovery':: d.fn(help='whether support iSCSI Discovery CHAP authentication', args=[d.arg(name='chapAuthDiscovery', type=d.T.boolean)]), - withChapAuthDiscovery(chapAuthDiscovery): { source+: { inlineVolumeSpec+: { iscsi+: { chapAuthDiscovery: chapAuthDiscovery } } } }, - '#withChapAuthSession':: d.fn(help='whether support iSCSI Session CHAP authentication', args=[d.arg(name='chapAuthSession', type=d.T.boolean)]), - withChapAuthSession(chapAuthSession): { source+: { inlineVolumeSpec+: { iscsi+: { chapAuthSession: chapAuthSession } } } }, - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { source+: { inlineVolumeSpec+: { iscsi+: { fsType: fsType } } } }, - '#withInitiatorName':: d.fn(help='Custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface : will be created for the connection.', args=[d.arg(name='initiatorName', type=d.T.string)]), - withInitiatorName(initiatorName): { source+: { inlineVolumeSpec+: { iscsi+: { initiatorName: initiatorName } } } }, - '#withIqn':: d.fn(help='Target iSCSI Qualified Name.', args=[d.arg(name='iqn', type=d.T.string)]), - withIqn(iqn): { source+: { inlineVolumeSpec+: { iscsi+: { iqn: iqn } } } }, - '#withIscsiInterface':: d.fn(help="iSCSI Interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).", args=[d.arg(name='iscsiInterface', type=d.T.string)]), - withIscsiInterface(iscsiInterface): { source+: { inlineVolumeSpec+: { iscsi+: { iscsiInterface: iscsiInterface } } } }, - '#withLun':: d.fn(help='iSCSI Target Lun number.', args=[d.arg(name='lun', type=d.T.integer)]), - withLun(lun): { source+: { inlineVolumeSpec+: { iscsi+: { lun: lun } } } }, - '#withPortals':: d.fn(help='iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).', args=[d.arg(name='portals', type=d.T.array)]), - withPortals(portals): { source+: { inlineVolumeSpec+: { iscsi+: { portals: if std.isArray(v=portals) then portals else [portals] } } } }, - '#withPortalsMixin':: d.fn(help='iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='portals', type=d.T.array)]), - withPortalsMixin(portals): { source+: { inlineVolumeSpec+: { iscsi+: { portals+: if std.isArray(v=portals) then portals else [portals] } } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { source+: { inlineVolumeSpec+: { iscsi+: { readOnly: readOnly } } } }, - '#withTargetPortal':: d.fn(help='iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).', args=[d.arg(name='targetPortal', type=d.T.string)]), - withTargetPortal(targetPortal): { source+: { inlineVolumeSpec+: { iscsi+: { targetPortal: targetPortal } } } }, - }, - '#local':: d.obj(help='Local represents directly-attached storage with node affinity (Beta feature)'), - 'local': { - '#withFsType':: d.fn(help='Filesystem type to mount. It applies only when the Path is a block device. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default value is to auto-select a fileystem if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { source+: { inlineVolumeSpec+: { 'local'+: { fsType: fsType } } } }, - '#withPath':: d.fn(help='The full path to the volume on the node. It can be either a directory or block device (disk, partition, ...).', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { source+: { inlineVolumeSpec+: { 'local'+: { path: path } } } }, - }, - '#nfs':: d.obj(help='Represents an NFS mount that lasts the lifetime of a pod. NFS volumes do not support ownership management or SELinux relabeling.'), - nfs: { - '#withPath':: d.fn(help='Path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs', args=[d.arg(name='path', type=d.T.string)]), - withPath(path): { source+: { inlineVolumeSpec+: { nfs+: { path: path } } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { source+: { inlineVolumeSpec+: { nfs+: { readOnly: readOnly } } } }, - '#withServer':: d.fn(help='Server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs', args=[d.arg(name='server', type=d.T.string)]), - withServer(server): { source+: { inlineVolumeSpec+: { nfs+: { server: server } } } }, - }, - '#nodeAffinity':: d.obj(help='VolumeNodeAffinity defines constraints that limit what nodes this volume can be accessed from.'), - nodeAffinity: { - '#required':: d.obj(help='A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.'), - required: { - '#withNodeSelectorTerms':: d.fn(help='Required. A list of node selector terms. The terms are ORed.', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTerms(nodeSelectorTerms): { source+: { inlineVolumeSpec+: { nodeAffinity+: { required+: { nodeSelectorTerms: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } }, - '#withNodeSelectorTermsMixin':: d.fn(help='Required. A list of node selector terms. The terms are ORed.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='nodeSelectorTerms', type=d.T.array)]), - withNodeSelectorTermsMixin(nodeSelectorTerms): { source+: { inlineVolumeSpec+: { nodeAffinity+: { required+: { nodeSelectorTerms+: if std.isArray(v=nodeSelectorTerms) then nodeSelectorTerms else [nodeSelectorTerms] } } } } }, - }, - }, - '#photonPersistentDisk':: d.obj(help='Represents a Photon Controller persistent disk resource.'), - photonPersistentDisk: { - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { source+: { inlineVolumeSpec+: { photonPersistentDisk+: { fsType: fsType } } } }, - '#withPdID':: d.fn(help='ID that identifies Photon Controller persistent disk', args=[d.arg(name='pdID', type=d.T.string)]), - withPdID(pdID): { source+: { inlineVolumeSpec+: { photonPersistentDisk+: { pdID: pdID } } } }, - }, - '#portworxVolume':: d.obj(help='PortworxVolumeSource represents a Portworx volume resource.'), - portworxVolume: { - '#withFsType':: d.fn(help='FSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { source+: { inlineVolumeSpec+: { portworxVolume+: { fsType: fsType } } } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { source+: { inlineVolumeSpec+: { portworxVolume+: { readOnly: readOnly } } } }, - '#withVolumeID':: d.fn(help='VolumeID uniquely identifies a Portworx volume', args=[d.arg(name='volumeID', type=d.T.string)]), - withVolumeID(volumeID): { source+: { inlineVolumeSpec+: { portworxVolume+: { volumeID: volumeID } } } }, - }, - '#quobyte':: d.obj(help='Represents a Quobyte mount that lasts the lifetime of a pod. Quobyte volumes do not support ownership management or SELinux relabeling.'), - quobyte: { - '#withGroup':: d.fn(help='Group to map volume access to Default is no group', args=[d.arg(name='group', type=d.T.string)]), - withGroup(group): { source+: { inlineVolumeSpec+: { quobyte+: { group: group } } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { source+: { inlineVolumeSpec+: { quobyte+: { readOnly: readOnly } } } }, - '#withRegistry':: d.fn(help='Registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes', args=[d.arg(name='registry', type=d.T.string)]), - withRegistry(registry): { source+: { inlineVolumeSpec+: { quobyte+: { registry: registry } } } }, - '#withTenant':: d.fn(help='Tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin', args=[d.arg(name='tenant', type=d.T.string)]), - withTenant(tenant): { source+: { inlineVolumeSpec+: { quobyte+: { tenant: tenant } } } }, - '#withUser':: d.fn(help='User to map volume access to Defaults to serivceaccount user', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { source+: { inlineVolumeSpec+: { quobyte+: { user: user } } } }, - '#withVolume':: d.fn(help='Volume is a string that references an already created Quobyte volume by name.', args=[d.arg(name='volume', type=d.T.string)]), - withVolume(volume): { source+: { inlineVolumeSpec+: { quobyte+: { volume: volume } } } }, - }, - '#rbd':: d.obj(help='Represents a Rados Block Device mount that lasts the lifetime of a pod. RBD volumes support ownership management and SELinux relabeling.'), - rbd: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { source+: { inlineVolumeSpec+: { rbd+: { secretRef+: { name: name } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { source+: { inlineVolumeSpec+: { rbd+: { secretRef+: { namespace: namespace } } } } }, - }, - '#withFsType':: d.fn(help='Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { source+: { inlineVolumeSpec+: { rbd+: { fsType: fsType } } } }, - '#withImage':: d.fn(help='The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='image', type=d.T.string)]), - withImage(image): { source+: { inlineVolumeSpec+: { rbd+: { image: image } } } }, - '#withKeyring':: d.fn(help='Keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='keyring', type=d.T.string)]), - withKeyring(keyring): { source+: { inlineVolumeSpec+: { rbd+: { keyring: keyring } } } }, - '#withMonitors':: d.fn(help='A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitors(monitors): { source+: { inlineVolumeSpec+: { rbd+: { monitors: if std.isArray(v=monitors) then monitors else [monitors] } } } }, - '#withMonitorsMixin':: d.fn(help='A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='monitors', type=d.T.array)]), - withMonitorsMixin(monitors): { source+: { inlineVolumeSpec+: { rbd+: { monitors+: if std.isArray(v=monitors) then monitors else [monitors] } } } }, - '#withPool':: d.fn(help='The rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='pool', type=d.T.string)]), - withPool(pool): { source+: { inlineVolumeSpec+: { rbd+: { pool: pool } } } }, - '#withReadOnly':: d.fn(help='ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { source+: { inlineVolumeSpec+: { rbd+: { readOnly: readOnly } } } }, - '#withUser':: d.fn(help='The rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it', args=[d.arg(name='user', type=d.T.string)]), - withUser(user): { source+: { inlineVolumeSpec+: { rbd+: { user: user } } } }, - }, - '#scaleIO':: d.obj(help='ScaleIOPersistentVolumeSource represents a persistent ScaleIO volume'), - scaleIO: { - '#secretRef':: d.obj(help='SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace'), - secretRef: { - '#withName':: d.fn(help='Name is unique within a namespace to reference a secret resource.', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { source+: { inlineVolumeSpec+: { scaleIO+: { secretRef+: { name: name } } } } }, - '#withNamespace':: d.fn(help='Namespace defines the space within which the secret name must be unique.', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { source+: { inlineVolumeSpec+: { scaleIO+: { secretRef+: { namespace: namespace } } } } }, - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Default is "xfs"', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { source+: { inlineVolumeSpec+: { scaleIO+: { fsType: fsType } } } }, - '#withGateway':: d.fn(help='The host address of the ScaleIO API Gateway.', args=[d.arg(name='gateway', type=d.T.string)]), - withGateway(gateway): { source+: { inlineVolumeSpec+: { scaleIO+: { gateway: gateway } } } }, - '#withProtectionDomain':: d.fn(help='The name of the ScaleIO Protection Domain for the configured storage.', args=[d.arg(name='protectionDomain', type=d.T.string)]), - withProtectionDomain(protectionDomain): { source+: { inlineVolumeSpec+: { scaleIO+: { protectionDomain: protectionDomain } } } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { source+: { inlineVolumeSpec+: { scaleIO+: { readOnly: readOnly } } } }, - '#withSslEnabled':: d.fn(help='Flag to enable/disable SSL communication with Gateway, default false', args=[d.arg(name='sslEnabled', type=d.T.boolean)]), - withSslEnabled(sslEnabled): { source+: { inlineVolumeSpec+: { scaleIO+: { sslEnabled: sslEnabled } } } }, - '#withStorageMode':: d.fn(help='Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.', args=[d.arg(name='storageMode', type=d.T.string)]), - withStorageMode(storageMode): { source+: { inlineVolumeSpec+: { scaleIO+: { storageMode: storageMode } } } }, - '#withStoragePool':: d.fn(help='The ScaleIO Storage Pool associated with the protection domain.', args=[d.arg(name='storagePool', type=d.T.string)]), - withStoragePool(storagePool): { source+: { inlineVolumeSpec+: { scaleIO+: { storagePool: storagePool } } } }, - '#withSystem':: d.fn(help='The name of the storage system as configured in ScaleIO.', args=[d.arg(name='system', type=d.T.string)]), - withSystem(system): { source+: { inlineVolumeSpec+: { scaleIO+: { system: system } } } }, - '#withVolumeName':: d.fn(help='The name of a volume already created in the ScaleIO system that is associated with this volume source.', args=[d.arg(name='volumeName', type=d.T.string)]), - withVolumeName(volumeName): { source+: { inlineVolumeSpec+: { scaleIO+: { volumeName: volumeName } } } }, - }, - '#storageos':: d.obj(help='Represents a StorageOS persistent volume resource.'), - storageos: { - '#secretRef':: d.obj(help='ObjectReference contains enough information to let you inspect or modify the referred object.'), - secretRef: { - '#withApiVersion':: d.fn(help='API version of the referent.', args=[d.arg(name='apiVersion', type=d.T.string)]), - withApiVersion(apiVersion): { source+: { inlineVolumeSpec+: { storageos+: { secretRef+: { apiVersion: apiVersion } } } } }, - '#withFieldPath':: d.fn(help='If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.', args=[d.arg(name='fieldPath', type=d.T.string)]), - withFieldPath(fieldPath): { source+: { inlineVolumeSpec+: { storageos+: { secretRef+: { fieldPath: fieldPath } } } } }, - '#withKind':: d.fn(help='Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds', args=[d.arg(name='kind', type=d.T.string)]), - withKind(kind): { source+: { inlineVolumeSpec+: { storageos+: { secretRef+: { kind: kind } } } } }, - '#withName':: d.fn(help='Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names', args=[d.arg(name='name', type=d.T.string)]), - withName(name): { source+: { inlineVolumeSpec+: { storageos+: { secretRef+: { name: name } } } } }, - '#withNamespace':: d.fn(help='Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/', args=[d.arg(name='namespace', type=d.T.string)]), - withNamespace(namespace): { source+: { inlineVolumeSpec+: { storageos+: { secretRef+: { namespace: namespace } } } } }, - '#withResourceVersion':: d.fn(help='Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency', args=[d.arg(name='resourceVersion', type=d.T.string)]), - withResourceVersion(resourceVersion): { source+: { inlineVolumeSpec+: { storageos+: { secretRef+: { resourceVersion: resourceVersion } } } } }, - '#withUid':: d.fn(help='UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids', args=[d.arg(name='uid', type=d.T.string)]), - withUid(uid): { source+: { inlineVolumeSpec+: { storageos+: { secretRef+: { uid: uid } } } } }, - }, - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { source+: { inlineVolumeSpec+: { storageos+: { fsType: fsType } } } }, - '#withReadOnly':: d.fn(help='Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.', args=[d.arg(name='readOnly', type=d.T.boolean)]), - withReadOnly(readOnly): { source+: { inlineVolumeSpec+: { storageos+: { readOnly: readOnly } } } }, - '#withVolumeName':: d.fn(help='VolumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.', args=[d.arg(name='volumeName', type=d.T.string)]), - withVolumeName(volumeName): { source+: { inlineVolumeSpec+: { storageos+: { volumeName: volumeName } } } }, - '#withVolumeNamespace':: d.fn(help="VolumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod's namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to 'default' if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created.", args=[d.arg(name='volumeNamespace', type=d.T.string)]), - withVolumeNamespace(volumeNamespace): { source+: { inlineVolumeSpec+: { storageos+: { volumeNamespace: volumeNamespace } } } }, - }, - '#vsphereVolume':: d.obj(help='Represents a vSphere volume resource.'), - vsphereVolume: { - '#withFsType':: d.fn(help='Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.', args=[d.arg(name='fsType', type=d.T.string)]), - withFsType(fsType): { source+: { inlineVolumeSpec+: { vsphereVolume+: { fsType: fsType } } } }, - '#withStoragePolicyID':: d.fn(help='Storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.', args=[d.arg(name='storagePolicyID', type=d.T.string)]), - withStoragePolicyID(storagePolicyID): { source+: { inlineVolumeSpec+: { vsphereVolume+: { storagePolicyID: storagePolicyID } } } }, - '#withStoragePolicyName':: d.fn(help='Storage Policy Based Management (SPBM) profile name.', args=[d.arg(name='storagePolicyName', type=d.T.string)]), - withStoragePolicyName(storagePolicyName): { source+: { inlineVolumeSpec+: { vsphereVolume+: { storagePolicyName: storagePolicyName } } } }, - '#withVolumePath':: d.fn(help='Path that identifies vSphere volume vmdk', args=[d.arg(name='volumePath', type=d.T.string)]), - withVolumePath(volumePath): { source+: { inlineVolumeSpec+: { vsphereVolume+: { volumePath: volumePath } } } }, - }, - '#withAccessModes':: d.fn(help='AccessModes contains all ways the volume can be mounted. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes', args=[d.arg(name='accessModes', type=d.T.array)]), - withAccessModes(accessModes): { source+: { inlineVolumeSpec+: { accessModes: if std.isArray(v=accessModes) then accessModes else [accessModes] } } }, - '#withAccessModesMixin':: d.fn(help='AccessModes contains all ways the volume can be mounted. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='accessModes', type=d.T.array)]), - withAccessModesMixin(accessModes): { source+: { inlineVolumeSpec+: { accessModes+: if std.isArray(v=accessModes) then accessModes else [accessModes] } } }, - '#withCapacity':: d.fn(help="A description of the persistent volume's resources and capacity. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity", args=[d.arg(name='capacity', type=d.T.object)]), - withCapacity(capacity): { source+: { inlineVolumeSpec+: { capacity: capacity } } }, - '#withCapacityMixin':: d.fn(help="A description of the persistent volume's resources and capacity. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity\n\n**Note:** This function appends passed data to existing values", args=[d.arg(name='capacity', type=d.T.object)]), - withCapacityMixin(capacity): { source+: { inlineVolumeSpec+: { capacity+: capacity } } }, - '#withMountOptions':: d.fn(help='A list of mount options, e.g. ["ro", "soft"]. Not validated - mount will simply fail if one is invalid. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options', args=[d.arg(name='mountOptions', type=d.T.array)]), - withMountOptions(mountOptions): { source+: { inlineVolumeSpec+: { mountOptions: if std.isArray(v=mountOptions) then mountOptions else [mountOptions] } } }, - '#withMountOptionsMixin':: d.fn(help='A list of mount options, e.g. ["ro", "soft"]. Not validated - mount will simply fail if one is invalid. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='mountOptions', type=d.T.array)]), - withMountOptionsMixin(mountOptions): { source+: { inlineVolumeSpec+: { mountOptions+: if std.isArray(v=mountOptions) then mountOptions else [mountOptions] } } }, - '#withPersistentVolumeReclaimPolicy':: d.fn(help='What happens to a persistent volume when released from its claim. Valid options are Retain (default for manually created PersistentVolumes), Delete (default for dynamically provisioned PersistentVolumes), and Recycle (deprecated). Recycle must be supported by the volume plugin underlying this PersistentVolume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#reclaiming', args=[d.arg(name='persistentVolumeReclaimPolicy', type=d.T.string)]), - withPersistentVolumeReclaimPolicy(persistentVolumeReclaimPolicy): { source+: { inlineVolumeSpec+: { persistentVolumeReclaimPolicy: persistentVolumeReclaimPolicy } } }, - '#withStorageClassName':: d.fn(help='Name of StorageClass to which this persistent volume belongs. Empty value means that this volume does not belong to any StorageClass.', args=[d.arg(name='storageClassName', type=d.T.string)]), - withStorageClassName(storageClassName): { source+: { inlineVolumeSpec+: { storageClassName: storageClassName } } }, - '#withVolumeMode':: d.fn(help='volumeMode defines if a volume is intended to be used with a formatted filesystem or to remain in raw block state. Value of Filesystem is implied when not included in spec.', args=[d.arg(name='volumeMode', type=d.T.string)]), - withVolumeMode(volumeMode): { source+: { inlineVolumeSpec+: { volumeMode: volumeMode } } }, - }, - '#withPersistentVolumeName':: d.fn(help='Name of the persistent volume to attach.', args=[d.arg(name='persistentVolumeName', type=d.T.string)]), - withPersistentVolumeName(persistentVolumeName): { source+: { persistentVolumeName: persistentVolumeName } }, - }, - '#withAttacher':: d.fn(help='Attacher indicates the name of the volume driver that MUST handle this request. This is the name returned by GetPluginName().', args=[d.arg(name='attacher', type=d.T.string)]), - withAttacher(attacher): { attacher: attacher }, - '#withNodeName':: d.fn(help='The node that the volume should be attached to.', args=[d.arg(name='nodeName', type=d.T.string)]), - withNodeName(nodeName): { nodeName: nodeName }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/volumeAttachmentStatus.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/volumeAttachmentStatus.libsonnet deleted file mode 100644 index 7d14c51ec30d..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/volumeAttachmentStatus.libsonnet +++ /dev/null @@ -1,26 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='volumeAttachmentStatus', url='', help='VolumeAttachmentStatus is the status of a VolumeAttachment request.'), - '#attachError':: d.obj(help='VolumeError captures an error encountered during a volume operation.'), - attachError: { - '#withMessage':: d.fn(help='String detailing the error encountered during Attach or Detach operation. This string may be logged, so it should not contain sensitive information.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { attachError+: { message: message } }, - '#withTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='time', type=d.T.string)]), - withTime(time): { attachError+: { time: time } }, - }, - '#detachError':: d.obj(help='VolumeError captures an error encountered during a volume operation.'), - detachError: { - '#withMessage':: d.fn(help='String detailing the error encountered during Attach or Detach operation. This string may be logged, so it should not contain sensitive information.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { detachError+: { message: message } }, - '#withTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='time', type=d.T.string)]), - withTime(time): { detachError+: { time: time } }, - }, - '#withAttached':: d.fn(help='Indicates the volume is successfully attached. This field must only be set by the entity completing the attach operation, i.e. the external-attacher.', args=[d.arg(name='attached', type=d.T.boolean)]), - withAttached(attached): { attached: attached }, - '#withAttachmentMetadata':: d.fn(help='Upon successful attach, this field is populated with any information returned by the attach operation that must be passed into subsequent WaitForAttach or Mount calls. This field must only be set by the entity completing the attach operation, i.e. the external-attacher.', args=[d.arg(name='attachmentMetadata', type=d.T.object)]), - withAttachmentMetadata(attachmentMetadata): { attachmentMetadata: attachmentMetadata }, - '#withAttachmentMetadataMixin':: d.fn(help='Upon successful attach, this field is populated with any information returned by the attach operation that must be passed into subsequent WaitForAttach or Mount calls. This field must only be set by the entity completing the attach operation, i.e. the external-attacher.\n\n**Note:** This function appends passed data to existing values', args=[d.arg(name='attachmentMetadata', type=d.T.object)]), - withAttachmentMetadataMixin(attachmentMetadata): { attachmentMetadata+: attachmentMetadata }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/volumeError.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/volumeError.libsonnet deleted file mode 100644 index aea460dc2e1d..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/volumeError.libsonnet +++ /dev/null @@ -1,10 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='volumeError', url='', help='VolumeError captures an error encountered during a volume operation.'), - '#withMessage':: d.fn(help='String detailing the error encountered during Attach or Detach operation. This string may be logged, so it should not contain sensitive information.', args=[d.arg(name='message', type=d.T.string)]), - withMessage(message): { message: message }, - '#withTime':: d.fn(help='Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.', args=[d.arg(name='time', type=d.T.string)]), - withTime(time): { time: time }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/volumeNodeResources.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/volumeNodeResources.libsonnet deleted file mode 100644 index 6fe6f33a0f51..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/_gen/storage/v1beta1/volumeNodeResources.libsonnet +++ /dev/null @@ -1,8 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='volumeNodeResources', url='', help='VolumeNodeResources is a set of resource limits for scheduling of volumes.'), - '#withCount':: d.fn(help='Maximum number of unique volumes managed by the CSI driver that can be used on a node. A volume that is both attached and mounted on a node is considered to be used once, not twice. The same rule applies for a unique volume that is shared among multiple pods on the same node. If this field is nil, then the supported number of volumes on this node is unbounded.', args=[d.arg(name='count', type=d.T.integer)]), - withCount(count): { count: count }, - '#mixin': 'ignore', - mixin: self, -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/gen.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/gen.libsonnet deleted file mode 100644 index 1dc7b027466f..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/gen.libsonnet +++ /dev/null @@ -1,25 +0,0 @@ -{ - local d = (import 'doc-util/main.libsonnet'), - '#':: d.pkg(name='k', url='github.com/jsonnet-libs/k8s-libsonnet/1.21/main.libsonnet', help='Generated Jsonnet library for Kubernetes v1.21'), - admissionregistration:: (import '_gen/admissionregistration/main.libsonnet'), - apiregistration:: (import '_gen/apiregistration/main.libsonnet'), - apiserverinternal:: (import '_gen/apiserverinternal/main.libsonnet'), - apps:: (import '_gen/apps/main.libsonnet'), - authentication:: (import '_gen/authentication/main.libsonnet'), - authorization:: (import '_gen/authorization/main.libsonnet'), - autoscaling:: (import '_gen/autoscaling/main.libsonnet'), - batch:: (import '_gen/batch/main.libsonnet'), - certificates:: (import '_gen/certificates/main.libsonnet'), - coordination:: (import '_gen/coordination/main.libsonnet'), - core:: (import '_gen/core/main.libsonnet'), - discovery:: (import '_gen/discovery/main.libsonnet'), - events:: (import '_gen/events/main.libsonnet'), - extensions:: (import '_gen/extensions/main.libsonnet'), - flowcontrol:: (import '_gen/flowcontrol/main.libsonnet'), - networking:: (import '_gen/networking/main.libsonnet'), - node:: (import '_gen/node/main.libsonnet'), - policy:: (import '_gen/policy/main.libsonnet'), - rbac:: (import '_gen/rbac/main.libsonnet'), - scheduling:: (import '_gen/scheduling/main.libsonnet'), - storage:: (import '_gen/storage/main.libsonnet'), -} diff --git a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/main.libsonnet b/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/main.libsonnet deleted file mode 100644 index 2404d5241a98..000000000000 --- a/production/kubernetes/build/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/main.libsonnet +++ /dev/null @@ -1 +0,0 @@ -(import 'gen.libsonnet') + (import '_custom/apps.libsonnet') + (import '_custom/batch.libsonnet') + (import '_custom/core.libsonnet') + (import '_custom/list.libsonnet') + (import '_custom/mapContainers.libsonnet') + (import '_custom/rbac.libsonnet') + (import '_custom/volumeMounts.libsonnet') diff --git a/production/kubernetes/build/vendor/grafana-agent b/production/kubernetes/build/vendor/grafana-agent deleted file mode 120000 index f2a19f1bef79..000000000000 --- a/production/kubernetes/build/vendor/grafana-agent +++ /dev/null @@ -1 +0,0 @@ -../../../tanka/grafana-agent \ No newline at end of file diff --git a/production/kubernetes/build/vendor/ksonnet-util b/production/kubernetes/build/vendor/ksonnet-util deleted file mode 120000 index 39633cc359f0..000000000000 --- a/production/kubernetes/build/vendor/ksonnet-util +++ /dev/null @@ -1 +0,0 @@ -github.com/grafana/jsonnet-libs/ksonnet-util \ No newline at end of file diff --git a/production/kubernetes/install-bare.sh b/production/kubernetes/install-bare.sh index cfcef950a1ce..e113a84dfbc1 100644 --- a/production/kubernetes/install-bare.sh +++ b/production/kubernetes/install-bare.sh @@ -25,7 +25,7 @@ check_installed() { check_installed curl check_installed envsubst -MANIFEST_BRANCH=v0.21.2 +MANIFEST_BRANCH=v0.22.0 MANIFEST_URL=${MANIFEST_URL:-https://raw.githubusercontent.com/grafana/agent/${MANIFEST_BRANCH}/production/kubernetes/agent-bare.yaml} NAMESPACE=${NAMESPACE:-default} diff --git a/production/tanka/grafana-agent/config.libsonnet b/production/tanka/grafana-agent/config.libsonnet index 9e565ec7869f..7c1e7a2c8c80 100644 --- a/production/tanka/grafana-agent/config.libsonnet +++ b/production/tanka/grafana-agent/config.libsonnet @@ -58,7 +58,7 @@ local k8s_v2 = import './v2/internal/helpers/k8s.libsonnet'; log_level: 'info', }, - prometheus: { + metrics: { global: { scrape_interval: '1m', }, diff --git a/production/tanka/grafana-agent/scraping-svc/main.libsonnet b/production/tanka/grafana-agent/scraping-svc/main.libsonnet index df49fb7b6e2d..3851de0fc460 100644 --- a/production/tanka/grafana-agent/scraping-svc/main.libsonnet +++ b/production/tanka/grafana-agent/scraping-svc/main.libsonnet @@ -33,7 +33,7 @@ local policyRule = k.rbac.v1.policyRule; agent_ring_kvstore: error 'must configure ring kvstore', agent_config+: { - prometheus+: { + metrics+: { // No configs are used in the scraping service mode. configs:: [], diff --git a/production/tanka/grafana-agent/v1/main.libsonnet b/production/tanka/grafana-agent/v1/main.libsonnet index cda3bffd1942..088e09ba87ca 100644 --- a/production/tanka/grafana-agent/v1/main.libsonnet +++ b/production/tanka/grafana-agent/v1/main.libsonnet @@ -15,8 +15,8 @@ local service = k.core.v1.service; (import './lib/traces.libsonnet') + { _images:: { - agent: 'grafana/agent:v0.21.2', - agentctl: 'grafana/agentctl:v0.21.2', + agent: 'grafana/agent:v0.22.0', + agentctl: 'grafana/agentctl:v0.22.0', }, // new creates a new DaemonSet deployment of the grafana-agent. By default, diff --git a/production/tanka/grafana-agent/v2/internal/base.libsonnet b/production/tanka/grafana-agent/v2/internal/base.libsonnet index c07b012d978d..48845de718a0 100644 --- a/production/tanka/grafana-agent/v2/internal/base.libsonnet +++ b/production/tanka/grafana-agent/v2/internal/base.libsonnet @@ -10,8 +10,8 @@ function(name='grafana-agent', namespace='') { local this = self, _images:: { - agent: 'grafana/agent:v0.21.2', - agentctl: 'grafana/agentctl:v0.21.2', + agent: 'grafana/agent:v0.22.0', + agentctl: 'grafana/agentctl:v0.22.0', }, _config:: { name: name, diff --git a/production/tanka/grafana-agent/v2/internal/syncer.libsonnet b/production/tanka/grafana-agent/v2/internal/syncer.libsonnet index a90672591d68..15c4fc8bf4b8 100644 --- a/production/tanka/grafana-agent/v2/internal/syncer.libsonnet +++ b/production/tanka/grafana-agent/v2/internal/syncer.libsonnet @@ -14,7 +14,7 @@ function( ) { local _config = { api: error 'api must be set', - image: 'grafana/agentctl:v0.21.2', + image: 'grafana/agentctl:v0.22.0', schedule: '*/5 * * * *', configs: [], } + config, From cc2350e72b856aeddfa07a34ab51fb026a86785c Mon Sep 17 00:00:00 2001 From: mattdurham Date: Mon, 24 Jan 2022 15:23:10 -0500 Subject: [PATCH 02/19] Main merge dynamic (#1305) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update node_exporter dependency to v1.3.1 (#1228) * Add node_exporter to depcheck * update weaveworks/common dependency * map current release flags and changed defaults * documentation * revert accidental checkin * print out flags when node_exporter test fails to assist debugging * oops, i introduced some flags from master by mistake * Introduce experimental integrations revamp (#1198) * [dev.multiple-integrations] Enable present integrations by default, deprecate enabled field (#1062) * integrations: default to enabled by default * document deprecation of enabled * pkg/integrations: support *_configs field for integrations (#1130) Creates the basic code to unmarshal integrations from a YAML field called _configs, which is a slice of that integration. Note that this is NOT wired up to the integrations manager yet, and trying to run the agent with more than one integration of the same type will likely cause problems. * [dev.multiple-integrations] Prototype new integrations subsystem (#1142) * wip: prototype new integrations subsystem * implement Controller with basic logic for Integration and UpdateIntegration * Implement HTTPIntegration for Controller * decouple controller and subsystem * don't have controller implement integration slightly less smelly now * multiplexer integration * rely on boilerplate for multiplexing for now generics would be nice here * remove multiplex_integration.go Also a little code smelly. Instead of having integrations that run other integrations, I'm going to fall back to having only one controller. * introduce Subsystem, unexport Controller start wiring up things to Subsystem * introduce v2 agent integration to use for testing * start wiring metrics integrations * rename Options to Globals call a spade a spade * add subsystem options to globals * remove dead code * metricsutils: calculate self-scraping based on globals * complete HTTP target API * working example with agent integration * appease the linter * don't return an error when context to cancel an integration is closed * once again i am asking the linter to forgive my typos * fix bug where labels from individual targets were getting dropped at the API endpoint * pkg/config: fix broken test * finish unit tests for integrations v2 controller * metricsutil/metricshandler_integration: make job name unique Before this change, the job name would have collided when using multiple instances of the same integration. * ensure that global subsystem labels are injected into targets * integrations/v2: Infer target hostname from SD API host (#1175) * [dev.multiple-integrations] integrations/v2: allow shimming between v1 and v2 integrations. (#1179) * integrations/v2: allow shimming between v1 and v2 integrations. Shimming is done by changing how the integration registration works; a new RegisterDynamic was added that allows for creating Configs at runtime. Here be dragons; this should be removed whenever we no longer have a need for it. * fix lint * pkg/integrations/v2: use "RegisterLegacy" instead of a generic mechanism * fine, I won't add the deprecation notice if it will make the linter sad * pkg/integrations: re-align (#1181) This commit reverts 69ba2ddfa9483cc8ac6e010dd7abccd319580c80 in favor of allowing the new subsystem to handle multiple instances of integrations. This commit also removes the wal_truncate_frequency field from integrations as it is the only field from old integrations that does not have a current counterpart. * [dev.multiple-integrations] Hide integrations/v2 behind a feature flag (#1185) * feature flag wip * dynamically switch between integrations v1 and v2 default to v1. * pkg/integrations/versionselector to file in pkg/config * pkg/config: fix defaults for Integrations * pkg/config: use more generic way to unmarshal differently based on flag * add missing godoc comment * more comments * switch to deferred unmarshaling * remove unused Config field * simplify completeUnmarshal * do not perform lazy deferred unmarshaling * enable cadvisor by default * switch to using real feature flag * fix postgres_exporter * Merge main into dev.multiple-integrations (#1184) * Fix typo (#1141) * Traces: Improved pod association in PromSD processor (#1137) * Improve k8s pod association * Add tests * Changelog * typo * Add prom_sd_pod_association * Extend tests for pod associations * Docs for pod association config * Lint fixes * Move to unreleased * Add instrumentation recommendations * Remove uncessary constants * Improve tests * remote config with http(s) provider (#1143) * sample remote config code with http provider * use t.TempDir() in unit test * no need to clean up after T.TempDir() * use NewClientFromConfig and make caller responsible for calling SetDirectory * handle nil HTTPClientConfig * remove blank identifier assignment * pass basic auth command line flags for remote config * address pr nits * add expiremental flag * set loader inline * update changelog * add remote config section in docs * pr comment updates * announce patch releases for cve-2021-41090 (#1152) * Merge patch release to main (#1153) * Add secret type to sensitive values * Break out config tests to their own implementation. Also remove username has a sensitive value. * Update changelog * Fix failing test * Scrub secrets when marshaling instance configs * update for v0.21 * Updated changes from the merge. * Remove changelog * Scrub out receivers has ***receivers_scrubber***:null * obscure etcd/consul credentials * Update pkg/traces/config_test.go Co-authored-by: Robert Fratto * Update pkg/config/config.go * go fmt * Change to using custom object and return * Fix bad merge * [v0.21.2] toggle config endpoint (#19) * disable /-/config endpoint by default * disable scraping api get endpoint as well * fix new test * add test and rename flag Co-authored-by: Robert Fratto * Update version to v0.21.2 * Update defaults.go * fix /-/config endpoint * also fix non-pointer config bug * temporarily disable linting for release * fix lint errors Co-authored-by: Matt Durham Co-authored-by: Robert Lankford * Fix POSTGRES_EXPORTER_DATA_SOURCE_NAME usage for postgres_exporter (#1162) * Fix POSTGRES_EXPORTER_DATA_SOURCE_NAME usage for postgres_exporter A recent change broke the usage of POSTGRES_EXPORTER_DATA_SOURCE_NAME for the postgres_exporter. As the incorrect variable was checked in the if clause, it always raises an error. * changelog: keep feature -> enhancement -> bugfix order * postgres_exporter: add regression test Co-authored-by: f11r Co-authored-by: Robert Fratto * Fix syntax error in Jsonnet logs helper method (#1174) Signed-off-by: Nick Pillitteri * cAdvisor Integration (#1081) * Add cadvisor module * Begin creating common config for cadvisor * Don't export internal state * Finish config options for cadvisor * Set config options, and implement cAdvisor collectors * Linting * Buildflags for cadvisor only in linux * I R LEArN Build Tags * Don't zero value the zero value * Offload sketchy global var manipulation to the integrations Run func * Remove unused collectors * Lint * Create generic stub integration and use it for cadvisor * Lint * Final refactor of cAdvisor config for unsupported platforms. Pared down stub integrations. * Lint * Docs for cadvisor config * Update changelog * Update pkg/integrations/stub_integration.go Co-authored-by: Robert Fratto * Reorder changelog * Instance key clarity * Inclusive naming * Finish name changes Keep default disable metric list in sync with upstream Idiomatic golang * Hardcode disabled metrics for cadvisor Co-authored-by: Robert Fratto * Remove log-level flag from systemd unit file (#1177) * Upgrade to OTel v0.40.0 (#1176) * Upgrade to OTel v0.40.0 * Changelog * Add factories check * go mod tidy * config/features: create package to standardize experimental features (#1170) * config/features: create package to standardize experiemental features This commit introduces a new package, pkg/config/features, which allows defining a set of features and validating whether flags associated with those features are allowed to be set. Closes #1163 * update documentation (also s/enabled-features/enable-features) * Fix typo * Update pkg/config/features/features.go Co-authored-by: Robert Lankford Co-authored-by: Robert Lankford * enable cadvisor by default * switch to using real feature flag * fix postgres_exporter Co-authored-by: Ursula Kallio <73951760+osg-grafana@users.noreply.github.com> Co-authored-by: Mario Co-authored-by: Robert Lankford Co-authored-by: Matt Durham Co-authored-by: f11r Co-authored-by: f11r Co-authored-by: Nick Pillitteri <56quarters@users.noreply.github.com> Co-authored-by: Ryan Geyer Co-authored-by: Juraci Paixão Kröhling Co-authored-by: Robert Lankford * Revert "Merge main into dev.multiple-integrations (#1184)" (#1189) This reverts commit ad76ec54f9a781fc83d3e7001808c887f37833ff. * [dev.multiple-integrations] Revert breaking changes to existing integrations (#1191) * revert breaking changes to integrations v1 This commit reverts #1062 in favor of making breaking changes directly in integrations-next instead. The part of #1181 to remove `wal_truncate_frequency` has also been reverted. As part of this change, the enabled field is removed from the v2 common metrics configs, and v2 integrations can no longer be disabled. v2 integrations can only be disabled by removing them from the YAML. * integrations/v2: remove stale reference to ErrDisabled (fix typo too) * integrations/v2: bring in common config decoupling * [dev.multiple-integrations] Introduce autoscraper (#1195) * pkg/integrations/v2: introduce self-scraping * linting * [dev.multiple-integrations] Multiple instances of integrations (#1196) * multiple instances of integrations opt in relevant v1 integrations into supporting multiple instances * shims should check for instance key override * Document integrations-next (#1197) * document integrations-next * remove json tags since they make markdown unhappy * changelog * s/Run/RunIntegration * remove stale comment about integrations.controller purpose * create dedicated run method for instanceScraper * s/expoter/exporter/g * Document why an autoscrape.Scraper manages a set of per-instance scrapers * spell out prerequisite instead of pre-req * use go.uber.org/atomic to make the code a little easier to follow * remove started callback for running integration * use smaller interface for autoscrape Co-authored-by: Ursula Kallio <73951760+osg-grafana@users.noreply.github.com> Co-authored-by: Mario Co-authored-by: Robert Lankford Co-authored-by: Matt Durham Co-authored-by: f11r Co-authored-by: f11r Co-authored-by: Nick Pillitteri <56quarters@users.noreply.github.com> Co-authored-by: Ryan Geyer Co-authored-by: Juraci Paixão Kröhling Co-authored-by: Robert Lankford * Fix panic when using 'stdout' in automatic logging (#1233) * integrations-next: fix bug where v2 integrations were not being strictly unmarshaled (#1235) * Remove jsonnet vendor folders (#1222) * remove jsonnet vendor This adds all vendor folders into .gitignore and removes cached vendor files from the repository. Closes #1221 * Update scripts and instructions for jsonnet vendor removal * `make example-dashboards` will now also run `jb install` * k3d environment instructions now include `jb install` * smoke-test.bash will now run `jb install` prior to `tk apply` * Fix link to k3d example in DEVELOPERS.md (#1242) Signed-off-by: Paschalis Tsilias * Fix node_exporter upgrade docs (#1239) * Fix panic in automatic logging with stdout backend (#1243) * pkg/util: support custom yaml.Unmarshaler implementations for util.UnmarshalYAMLMerged (#1244) It's common for config types to have implement yaml.Unmarshaler for: * Applying defaults * Applying extra logic post-unmarshal If these config types were unmarshaled through util.UnmarshalYAMLMerged, the yaml.Unmarshaler implementation would never complete successfully, preventing the post-unmarshal logic from running. This issue was introduced in #1192, but went unnoticed until #1228 implemented yaml.Unmarshaler to perform field migrations. #1240 reported the issue. This commit fixes the bug by performing a second non-strict unmarshal to ensure that all input values unmarshal successfully, with the exception of unmarshal errors unrelated to unrecognized field names. This is hacky, but it's worthwhile noting that util.UnmarshalYAMLMerged is a temporary workaround needed for the integrations-next migration, and will eventually be removed. * Update k3d example grafana/grafonnet-lib version (#1246) Signed-off-by: Paschalis Tsilias * Create an e2e framework with support for running tests against k8s (#1234) * e2e: create an e2e framework with support for running tests against a k3d cluster * add new E2E drone job * E2E tests should pass when doing a release * sign drone.yml again * move e2e lint to different step that has golangci-lint installed * upgrade golangci-lint and go for e2e test * e2e: add gcc * E2E: install build-essential to get a working full gcc env * :( * e2e: support running from inside of docker * fix lint error * address review feedback * Operator: fix bug where /-/ready and /-/healthy always returned 404 (#1252) * operator: fix bug where /-/ready and /-/healthy always returned 404 controller-runtime must have at least one ready/healthy check for the endpoints to exist * fix lint error, use healthz.Ping * Make scraping-svc use the new `metrics:` key (#1259) Signed-off-by: Paschalis Tsilias * update prometheus dependency (#1260) * corrected typo (#1265) * Use RELEASE_TAG to choose between `:main` and `:latest` docker tags (#1264) * Use RELEASE_TAG to choose between `:main` and `:latest` docker tags Signed-off-by: Paschalis Tsilias * Use :main tag for images in smoke test Signed-off-by: Paschalis Tsilias * Set IMAGE_BRANCH_TAG env var in drone and actions pipelines Signed-off-by: Paschalis Tsilias * Remove quotes from Makefile variable Signed-off-by: Paschalis Tsilias * Remove force_release action Signed-off-by: Paschalis Tsilias * prepare for v0.22.0 release (#1266) * prepare for v0.22.0 release * remove E2E pipeline * Add basic testing framework for operator (#1268) * remove dedicated go.mod for e2e/ * move e2e/k8s to pkg/util/k8s * Migrate operator tests to pkg/util/k8s * remove dedicated e2e tests * allow skipping TestCluster in pkg/util/k8s * remove e2e/ * fix bad merge * fix order of make env args for windows * actually declare referenced docker volume * introduce pkg/util/subset for asserting subset of objects * refactor operator so it's testable * define basic integration test for operator * fix lint errors * fix invalid address in operator test config * Update release-note.md (#1267) * Set scrape User-Agent header during init (#1274) Signed-off-by: Paschalis Tsilias * Upgrade to Go 1.17 (#1278) * Upgrade to 1.17.6 in go.mod and Dockerfiles * Update CHANGELOG.md to mention the update * Update Go version in drone/actions pipelines * Update go.mod, go.sum files via * Re-sign drone.yml * Remove leading newline causing drone build to fail * Bump golangci-lint image to a version using Go 1.17 * Re-attempt to solve linter issue with new golangci-lint image * Remove suffix of exclude rules * Clean previous Go version before unpacking Go 1.17 * Also clean up previous Go versions in other steps * fix typo (#1284) * Use custom Go version in agent-operator Dockerfile (#1286) Signed-off-by: Paschalis Tsilias * pkg/operator: refactor resource hierarchy discovery (#1271) * pkg/operator: refactor resource hierarchy discovery This commit moves common logic related to discovering the resource hierarchy to pkg/operator/hierarchy. This new package requires less boilerplate, which the reconciler is updated to take advantage of. * remove unused code * test construction of resource hierarchy * add missing build constraints * small extra cleanup to use pointer package * review feedback * update agent-build-image for go 1.17 (#1287) (also use a consistent base image tag instead of latest) * Skip non-ready entries when listing instances (#1289) * Skip non-ready instances in LoadInstances() Signed-off-by: Paschalis Tsilias * Add changelog entry Co-authored-by: Robert Fratto * Fix panic in prom_sd_processor when address is empty (#1279) * Fix panic in prom_sd_processor when address is empty * Fix panic in prom_sd_processor when address is empty * Fix docs * Add test case * Lint * Move to unreleased * Operator: generate proxy_url for remote_write (#1298) * operator: generate proxy_url for remote_write * fix weird indentation in test Co-authored-by: Robert Fratto Co-authored-by: Ursula Kallio <73951760+osg-grafana@users.noreply.github.com> Co-authored-by: Mario Co-authored-by: Robert Lankford Co-authored-by: f11r Co-authored-by: f11r Co-authored-by: Nick Pillitteri <56quarters@users.noreply.github.com> Co-authored-by: Ryan Geyer Co-authored-by: Juraci Paixão Kröhling Co-authored-by: Robert Lankford Co-authored-by: Paschalis Tsilias Co-authored-by: Patrick Koenig Co-authored-by: DataPoints Co-authored-by: Alex <52292902+alexrudd2@users.noreply.github.com> Co-authored-by: Robert Fratto --- .drone/drone.yml | 34 +- .github/workflows/test.yml | 8 +- CHANGELOG.md | 11 + Makefile | 23 +- build-image/Dockerfile | 7 +- cmd/agent-operator/Dockerfile | 2 +- cmd/agent-operator/Dockerfile.buildx | 10 + cmd/agent-operator/main.go | 17 +- cmd/agent/Dockerfile | 2 +- cmd/agent/Dockerfile.buildx | 4 +- cmd/agentctl/Dockerfile | 2 +- cmd/agentctl/Dockerfile.buildx | 4 +- cmd/grafana-agent-crow/Dockerfile | 2 +- cmd/grafana-agent-crow/Dockerfile.buildx | 4 +- docs/configuration/integrations/_index.md | 2 +- docs/configuration/traces-config.md | 2 +- e2e/Makefile | 6 - e2e/go.mod | 109 -- e2e/go.sum | 1619 ----------------- go.mod | 282 ++- go.sum | 284 ++- pkg/integrations/cadvisor/cadvisor.go | 2 +- pkg/metrics/instance/instance.go | 1 + pkg/metrics/instance/manager.go | 3 + .../apis/monitoring/v1alpha1/types.go | 4 + .../apis/monitoring/v1alpha1/types_logs.go | 5 +- .../apis/monitoring/v1alpha1/types_metrics.go | 3 + pkg/operator/build_hierarchy.go | 282 +++ pkg/operator/build_hierarchy_test.go | 166 ++ pkg/operator/config/config.go | 2 + pkg/operator/config/config_references.go | 7 +- pkg/operator/config/metrics_templates_test.go | 14 + .../component/metrics/remote_write.libsonnet | 1 + pkg/operator/deployment_builder.go | 290 --- pkg/operator/hierarchy/hierarchy.go | 149 ++ pkg/operator/hierarchy/hierarchy_test.go | 144 ++ pkg/operator/hierarchy/list.go | 50 + pkg/operator/hierarchy/selector.go | 88 + pkg/operator/kubelet_test.go | 19 +- pkg/operator/operator.go | 192 +- pkg/operator/operator_test.go | 159 ++ pkg/operator/reconciler.go | 115 +- pkg/operator/reconciler_logs.go | 15 +- pkg/operator/reconciler_metrics.go | 39 +- pkg/operator/resources_logs.go | 21 +- pkg/operator/resources_metrics.go | 39 +- pkg/operator/secondary_resource.go | 58 - pkg/operator/selector_eventhandler.go | 202 -- pkg/operator/selector_eventhandler_test.go | 184 -- .../testdata/test-metrics-instance.in.yaml | 84 + .../testdata/test-metrics-instance.out.yaml | 152 ++ .../testdata/test-resource-hierarchy.yaml | 165 ++ .../promsdprocessor/prom_sd_processor.go | 7 +- .../promsdprocessor/prom_sd_processor_test.go | 10 + {e2e => pkg/util}/k8s/k8s.go | 66 +- {e2e => pkg/util}/k8s/k8s_test.go | 5 +- pkg/util/k8s/objects.go | 191 ++ pkg/util/k8s/resources.go | 67 + pkg/util/subset/subset.go | 120 ++ pkg/util/subset/subset_test.go | 92 + pkg/util/trigger.go | 18 +- tools/release-note.md | 2 +- tools/seego/Dockerfile | 6 +- 63 files changed, 2700 insertions(+), 2973 deletions(-) delete mode 100644 e2e/Makefile delete mode 100644 e2e/go.mod delete mode 100644 e2e/go.sum create mode 100644 pkg/operator/build_hierarchy.go create mode 100644 pkg/operator/build_hierarchy_test.go delete mode 100644 pkg/operator/deployment_builder.go create mode 100644 pkg/operator/hierarchy/hierarchy.go create mode 100644 pkg/operator/hierarchy/hierarchy_test.go create mode 100644 pkg/operator/hierarchy/list.go create mode 100644 pkg/operator/hierarchy/selector.go create mode 100644 pkg/operator/operator_test.go delete mode 100644 pkg/operator/secondary_resource.go delete mode 100644 pkg/operator/selector_eventhandler.go delete mode 100644 pkg/operator/selector_eventhandler_test.go create mode 100644 pkg/operator/testdata/test-metrics-instance.in.yaml create mode 100644 pkg/operator/testdata/test-metrics-instance.out.yaml create mode 100644 pkg/operator/testdata/test-resource-hierarchy.yaml rename {e2e => pkg/util}/k8s/k8s.go (83%) rename {e2e => pkg/util}/k8s/k8s_test.go (81%) create mode 100644 pkg/util/k8s/objects.go create mode 100644 pkg/util/k8s/resources.go create mode 100644 pkg/util/subset/subset.go create mode 100644 pkg/util/subset/subset_test.go diff --git a/.drone/drone.yml b/.drone/drone.yml index 3b508a8869ec..f9c7a9f5d9c5 100644 --- a/.drone/drone.yml +++ b/.drone/drone.yml @@ -16,7 +16,7 @@ trigger: steps: - name: lint - image: golangci/golangci-lint:v1.37.1 + image: golangci/golangci-lint:v1.43 commands: - apt-get update -y && apt-get install -y libsystemd-dev - make lint @@ -41,19 +41,27 @@ trigger: steps: - name: test image: rfratto/seego + volumes: + - name: docker + path: /var/run/docker.sock commands: - apt-get update && apt-get install -y rubygems rpm nsis apt-transport-https ca-certificates curl gnupg lsb-release - gem install --no-document fpm + - rm -r /usr/local/go - mkdir -p /usr/local/go/bin - - wget -q https://golang.org/dl/go1.16.5.linux-amd64.tar.gz - - tar -C /usr/local -xzf go1.16.5.linux-amd64.tar.gz - - rm go1.16.5.linux-amd64.tar.gz + - wget -q https://golang.org/dl/go1.17.6.linux-amd64.tar.gz + - tar -C /usr/local -xzf go1.17.6.linux-amd64.tar.gz + - rm go1.17.6.linux-amd64.tar.gz - export PATH=$PATH:/usr/local/go/bin - make cmd/agent/agent cmd/agentctl/agentctl cmd/agent-operator/agent-operator cmd/grafana-agent-crow/grafana-agent-crow - - make DRONE=true BUILD_IN_CONTAINER=false test + - make K8S_USE_DOCKER_NETWORK=1 DRONE=true BUILD_IN_CONTAINER=false test depends_on: - Lint +volumes: + - name: docker + host: + path: /var/run/docker.sock --- kind: pipeline @@ -72,10 +80,11 @@ steps: commands: - apt-get update && apt-get install -y rubygems rpm nsis - gem install --no-document fpm + - rm -r /usr/local/go - mkdir -p /usr/local/go/bin - - wget -q https://golang.org/dl/go1.16.5.linux-amd64.tar.gz - - tar -C /usr/local -xzf go1.16.5.linux-amd64.tar.gz - - rm go1.16.5.linux-amd64.tar.gz + - wget -q https://golang.org/dl/go1.17.6.linux-amd64.tar.gz + - tar -C /usr/local -xzf go1.17.6.linux-amd64.tar.gz + - rm go1.17.6.linux-amd64.tar.gz - export PATH=$PATH:/usr/local/go/bin - make DRONE=true BUILD_IN_CONTAINER=false dist depends_on: @@ -209,10 +218,11 @@ steps: - apt-get update && apt-get install -y rubygems rpm nsis docker-ce docker-ce-cli containerd.io gettext - docker login -u $DOCKER_LOGIN -p $DOCKER_PASSWORD - gem install --no-document fpm + - rm -r /usr/local/go - mkdir -p /usr/local/go/bin - - wget -q https://golang.org/dl/go1.16.5.linux-amd64.tar.gz - - tar -C /usr/local -xzf go1.16.5.linux-amd64.tar.gz - - rm go1.16.5.linux-amd64.tar.gz + - wget -q https://golang.org/dl/go1.17.6.linux-amd64.tar.gz + - tar -C /usr/local -xzf go1.17.6.linux-amd64.tar.gz + - rm go1.17.6.linux-amd64.tar.gz - export PATH=$PATH:/usr/local/go/bin - GO111MODULE=on go get -u github.com/mitchellh/gox github.com/tcnksm/ghr - export PATH="$(go env GOPATH)/bin:$PATH" @@ -242,6 +252,6 @@ get: name: pat --- kind: signature -hmac: 11038ae4592a13955388dff643b35bb1f07e53a659cdca946e863c9f2ac77066 +hmac: 87a9a23731884dac8e0b5c3ee0fa2b5cef9d7fa490fcad649f7783f6ea9d2d32 ... diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 692c55d5ff88..f731115a9978 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -8,14 +8,14 @@ jobs: platform: [macos-latest, windows-latest] runs-on: ${{ matrix.platform }} steps: - - name: Set up Go 1.16 + - name: Set up Go 1.17 uses: actions/setup-go@v1 with: - go-version: 1.16 + go-version: 1.17.6 id: go - name: Checkout code uses: actions/checkout@v2 - name: Build - run: make BUILD_IN_CONTAINER=false cmd/agent/agent cmd/agentctl/agentctl cmd/agent-operator/agent-operator + run: make GOFLAGS="-tags=netgo,nodocker" BUILD_IN_CONTAINER=false cmd/agent/agent cmd/agentctl/agentctl cmd/agent-operator/agent-operator - name: Test - run: make BUILD_IN_CONTAINER=false test \ No newline at end of file + run: make GOFLAGS="-tags=netgo,nodocker" BUILD_IN_CONTAINER=false test diff --git a/CHANGELOG.md b/CHANGELOG.md index 38aee5d014e3..b198119135ca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,16 @@ # Main (unreleased) +- [ENHANCEMENT] Go 1.17 is now used for all builds of the Agent. (@tpaschalis) + +- [BUGFIX] Fixed issue where Grafana Agent may panic if there is a very large + WAL loading while old WALs are being deleted or the `/agent/api/v1/targets` + endpoint is called. (@tpaschalis) + +- [BUGFIX] Fix panic in prom_sd_processor when address is empty (@mapno) + +- [BUGFIX] Operator: Add missing proxy_url field from generated remote_write + configs. (@rfratto) + # v0.22.0 (2022-01-13) This release has deprecations. Please read [DEPRECATION] entries and consult diff --git a/Makefile b/Makefile index 0cb1265f704a..8454824a028b 100644 --- a/Makefile +++ b/Makefile @@ -51,7 +51,7 @@ CROSS_BUILD ?= false # run make BUILD_IN_CONTAINER=false , or you can set BUILD_IN_CONTAINER=true # as an environment variable. BUILD_IN_CONTAINER ?= true -BUILD_IMAGE_VERSION := 0.12.0 +BUILD_IMAGE_VERSION := 0.13.0 BUILD_IMAGE := $(IMAGE_PREFIX)/agent-build-image:$(BUILD_IMAGE_VERSION) # Enables the binary to be built with optimizations (i.e., doesn't strip the image of @@ -69,14 +69,14 @@ DONT_FIND := -name tools -prune -o -name vendor -prune -o -name .git -prune -o - # Build flags VPREFIX := github.com/grafana/agent/pkg/build GO_LDFLAGS := -X $(VPREFIX).Branch=$(GIT_BRANCH) -X $(VPREFIX).Version=$(IMAGE_TAG) -X $(VPREFIX).Revision=$(GIT_REVISION) -X $(VPREFIX).BuildUser=$(shell whoami)@$(shell hostname) -X $(VPREFIX).BuildDate=$(shell date -u +"%Y-%m-%dT%H:%M:%SZ") -GO_FLAGS := -ldflags "-extldflags \"-static\" -s -w $(GO_LDFLAGS)" -tags "netgo static_build" -DEBUG_GO_FLAGS := -gcflags "all=-N -l" -ldflags "-extldflags \"-static\" $(GO_LDFLAGS)" -tags "netgo static_build" +GO_FLAGS := -ldflags "-extldflags \"-static\" -s -w $(GO_LDFLAGS)" -tags "netgo static_build" $(GOFLAGS) +DEBUG_GO_FLAGS := -gcflags "all=-N -l" -ldflags "-extldflags \"-static\" $(GO_LDFLAGS)" -tags "netgo static_build" $(GOFLAGS) DOCKER_BUILD_FLAGS = --build-arg RELEASE_BUILD=$(RELEASE_BUILD) --build-arg IMAGE_TAG=$(IMAGE_TAG) --build-arg DRONE=$(DRONE) # We need a separate set of flags for CGO, where building with -static can # cause problems with some C libraries. -CGO_FLAGS := -ldflags "-s -w $(GO_LDFLAGS)" -tags "netgo" -DEBUG_CGO_FLAGS := -gcflags "all=-N -l" -ldflags "-s -w $(GO_LDFLAGS)" -tags "netgo" +CGO_FLAGS := -ldflags "-s -w $(GO_LDFLAGS)" -tags "netgo" $(GOFLAGS) +DEBUG_CGO_FLAGS := -gcflags "all=-N -l" -ldflags "-s -w $(GO_LDFLAGS)" -tags "netgo" $(GOFLAGS) # If we're not building the release, use the debug flags instead. ifeq ($(RELEASE_BUILD),false) GO_FLAGS = $(DEBUG_GO_FLAGS) @@ -224,18 +224,9 @@ lint: # We have to run test twice: once for all packages with -race and then once # more without -race for packages that have known race detection issues. -# -# Run tests with -tags=has_network to include tests that require network -# connectivity. test: - CGO_ENABLED=1 go test $(CGO_FLAGS) -tags=has_network -race -cover -coverprofile=cover.out -p=4 ./... - CGO_ENABLED=1 go test $(CGO_FLAGS) -tags=has_network -cover -coverprofile=cover-norace.out -p=4 ./pkg/integrations/node_exporter ./pkg/logs - -e2e/lint: - $(MAKE) -C e2e lint - -e2e/test: - $(MAKE) -C e2e test + CGO_ENABLED=1 go test $(CGO_FLAGS) -race -cover -coverprofile=cover.out -p=4 ./... + CGO_ENABLED=1 go test $(CGO_FLAGS) -cover -coverprofile=cover-norace.out -p=4 ./pkg/integrations/node_exporter ./pkg/logs ./pkg/operator ./pkg/util/k8s clean: rm -rf cmd/agent/agent diff --git a/build-image/Dockerfile b/build-image/Dockerfile index 70018a1aab31..d7e4d6115e6a 100644 --- a/build-image/Dockerfile +++ b/build-image/Dockerfile @@ -1,5 +1,6 @@ -# Use the loki-build-image as a base as it shares most of the common tooling. We just need some additional tooling for building packages. -FROM grafana/loki-build-image +# Use the loki-build-image as a base as it shares most of the common tooling. +# We just need some additional tooling for building packages. +FROM grafana/loki-build-image:0.18.0 RUN apt-get update && apt-get install -y \ build-essential \ @@ -12,7 +13,7 @@ RUN apt-get update && apt-get install -y \ # Install dependencies used for the operator # Keep versions in sync with cmd/agent-operator/DEVELOPERS.md -RUN go install sigs.k8s.io/controller-tools/cmd/controller-gen@v0.6.2 +RUN go install sigs.k8s.io/controller-tools/cmd/controller-gen@v0.8.0 # Fix permissions for /go/bin directory. RUN chmod 0755 /go/bin diff --git a/cmd/agent-operator/Dockerfile b/cmd/agent-operator/Dockerfile index 37045db5fb98..38699b462f8a 100644 --- a/cmd/agent-operator/Dockerfile +++ b/cmd/agent-operator/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.16-buster as build +FROM golang:1.17.6-buster as build COPY . /src/agent WORKDIR /src/agent ARG RELEASE_BUILD=false diff --git a/cmd/agent-operator/Dockerfile.buildx b/cmd/agent-operator/Dockerfile.buildx index a391c66c2888..d9948691ee10 100644 --- a/cmd/agent-operator/Dockerfile.buildx +++ b/cmd/agent-operator/Dockerfile.buildx @@ -2,6 +2,16 @@ FROM --platform=$BUILDPLATFORM rfratto/seego:latest as build ARG TARGETPLATFORM ARG BUILDPLATFORM +# Use custom Go version instead of one prepacked in seego +ENV GOLANG_VERSION 1.17.6 +ENV GOLANG_DOWNLOAD_URL https://golang.org/dl/go$GOLANG_VERSION.linux-amd64.tar.gz +ENV GOLANG_DOWNLOAD_SHA256 231654bbf2dab3d86c1619ce799e77b03d96f9b50770297c8f4dff8836fc8ca2 +RUN rm -rf /usr/local/go \ + && curl -fsSL "$GOLANG_DOWNLOAD_URL" -o golang.tar.gz \ + && echo "$GOLANG_DOWNLOAD_SHA256 golang.tar.gz" | sha256sum -c - \ + && tar -C /usr/local -xzf golang.tar.gz \ + && rm golang.tar.gz + COPY . /src/agent WORKDIR /src/agent ARG RELEASE_BUILD=true diff --git a/cmd/agent-operator/main.go b/cmd/agent-operator/main.go index 09d0d0f9bcc0..adb674457d61 100644 --- a/cmd/agent-operator/main.go +++ b/cmd/agent-operator/main.go @@ -12,7 +12,6 @@ import ( "github.com/grafana/agent/pkg/operator/logutil" "github.com/prometheus/common/version" controller "sigs.k8s.io/controller-runtime" - "sigs.k8s.io/controller-runtime/pkg/healthz" // Needed for clients. _ "k8s.io/client-go/plugin/pkg/client/auth" @@ -28,27 +27,15 @@ func main() { logger = setupLogger(logger, cfg) - m, err := cfg.Manager() + op, err := operator.New(logger, cfg) if err != nil { - level.Error(logger).Log("msg", "unable to create manager", "err", err) - os.Exit(1) - } - - if err := m.AddReadyzCheck("running", healthz.Ping); err != nil { - level.Warn(logger).Log("msg", "failed to set up 'running' readyz check", "err", err) - } - if err := m.AddHealthzCheck("running", healthz.Ping); err != nil { - level.Warn(logger).Log("msg", "failed to set up 'running' healthz check", "err", err) - } - - if err := operator.New(logger, cfg, m); err != nil { level.Error(logger).Log("msg", "unable to create operator", "err", err) os.Exit(1) } // Run the manager and wait for a signal to shut down. level.Info(logger).Log("msg", "starting manager") - if err := m.Start(controller.SetupSignalHandler()); err != nil { + if err := op.Start(controller.SetupSignalHandler()); err != nil { level.Error(logger).Log("msg", "problem running manager", "err", err) os.Exit(1) } diff --git a/cmd/agent/Dockerfile b/cmd/agent/Dockerfile index 20bc28923b40..41d783eec2d6 100644 --- a/cmd/agent/Dockerfile +++ b/cmd/agent/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.16-buster as build +FROM golang:1.17.6-buster as build COPY . /src/agent WORKDIR /src/agent ARG RELEASE_BUILD=true diff --git a/cmd/agent/Dockerfile.buildx b/cmd/agent/Dockerfile.buildx index c07f3a2e4a70..9fe609e1782e 100644 --- a/cmd/agent/Dockerfile.buildx +++ b/cmd/agent/Dockerfile.buildx @@ -3,9 +3,9 @@ ARG TARGETPLATFORM ARG BUILDPLATFORM # Use custom Go version instead of one prepacked in seego -ENV GOLANG_VERSION 1.16 +ENV GOLANG_VERSION 1.17.6 ENV GOLANG_DOWNLOAD_URL https://golang.org/dl/go$GOLANG_VERSION.linux-amd64.tar.gz -ENV GOLANG_DOWNLOAD_SHA256 013a489ebb3e24ef3d915abe5b94c3286c070dfe0818d5bca8108f1d6e8440d2 +ENV GOLANG_DOWNLOAD_SHA256 231654bbf2dab3d86c1619ce799e77b03d96f9b50770297c8f4dff8836fc8ca2 RUN rm -rf /usr/local/go \ && curl -fsSL "$GOLANG_DOWNLOAD_URL" -o golang.tar.gz \ && echo "$GOLANG_DOWNLOAD_SHA256 golang.tar.gz" | sha256sum -c - \ diff --git a/cmd/agentctl/Dockerfile b/cmd/agentctl/Dockerfile index f41c2c927727..cdbd717332d5 100644 --- a/cmd/agentctl/Dockerfile +++ b/cmd/agentctl/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.16-buster as build +FROM golang:1.17.6-buster as build COPY . /src/agent WORKDIR /src/agent ARG RELEASE_BUILD=false diff --git a/cmd/agentctl/Dockerfile.buildx b/cmd/agentctl/Dockerfile.buildx index af7c92c8fb73..5d778607ea6f 100644 --- a/cmd/agentctl/Dockerfile.buildx +++ b/cmd/agentctl/Dockerfile.buildx @@ -3,9 +3,9 @@ ARG TARGETPLATFORM ARG BUILDPLATFORM # Use custom Go version instead of one prepacked in seego -ENV GOLANG_VERSION 1.16 +ENV GOLANG_VERSION 1.17.6 ENV GOLANG_DOWNLOAD_URL https://golang.org/dl/go$GOLANG_VERSION.linux-amd64.tar.gz -ENV GOLANG_DOWNLOAD_SHA256 013a489ebb3e24ef3d915abe5b94c3286c070dfe0818d5bca8108f1d6e8440d2 +ENV GOLANG_DOWNLOAD_SHA256 231654bbf2dab3d86c1619ce799e77b03d96f9b50770297c8f4dff8836fc8ca2 RUN rm -rf /usr/local/go \ && curl -fsSL "$GOLANG_DOWNLOAD_URL" -o golang.tar.gz \ && echo "$GOLANG_DOWNLOAD_SHA256 golang.tar.gz" | sha256sum -c - \ diff --git a/cmd/grafana-agent-crow/Dockerfile b/cmd/grafana-agent-crow/Dockerfile index 37ae57265f8b..ed7e4ba31451 100644 --- a/cmd/grafana-agent-crow/Dockerfile +++ b/cmd/grafana-agent-crow/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.16-buster as build +FROM golang:1.17.6-buster as build COPY . /src/agent WORKDIR /src/agent ARG RELEASE_BUILD=true diff --git a/cmd/grafana-agent-crow/Dockerfile.buildx b/cmd/grafana-agent-crow/Dockerfile.buildx index 64df8875aebd..fa7bf16fc092 100644 --- a/cmd/grafana-agent-crow/Dockerfile.buildx +++ b/cmd/grafana-agent-crow/Dockerfile.buildx @@ -3,9 +3,9 @@ ARG TARGETPLATFORM ARG BUILDPLATFORM # Use custom Go version instead of one prepacked in seego -ENV GOLANG_VERSION 1.16 +ENV GOLANG_VERSION 1.17.6 ENV GOLANG_DOWNLOAD_URL https://golang.org/dl/go$GOLANG_VERSION.linux-amd64.tar.gz -ENV GOLANG_DOWNLOAD_SHA256 013a489ebb3e24ef3d915abe5b94c3286c070dfe0818d5bca8108f1d6e8440d2 +ENV GOLANG_DOWNLOAD_SHA256 231654bbf2dab3d86c1619ce799e77b03d96f9b50770297c8f4dff8836fc8ca2 RUN rm -rf /usr/local/go \ && curl -fsSL "$GOLANG_DOWNLOAD_URL" -o golang.tar.gz \ && echo "$GOLANG_DOWNLOAD_SHA256 golang.tar.gz" | sha256sum -c - \ diff --git a/docs/configuration/integrations/_index.md b/docs/configuration/integrations/_index.md index 8b94a8c72629..9db3a9c68d72 100644 --- a/docs/configuration/integrations/_index.md +++ b/docs/configuration/integrations/_index.md @@ -33,7 +33,7 @@ agent: # prometheus.global.scrape_interval. [scrape_interval: | default = ] - # The timtout before considering the scrape a failure. Defaults to + # The timeout before considering the scrape a failure. Defaults to # prometheus.global.scrape_timeout. [scrape_timeout: | default = ] diff --git a/docs/configuration/traces-config.md b/docs/configuration/traces-config.md index 2cf6cf1ffeb4..83557549a591 100644 --- a/docs/configuration/traces-config.md +++ b/docs/configuration/traces-config.md @@ -168,7 +168,7 @@ scrape_configs: # # By default, all methods are enabled, and evaluated in the order specified above. # Order of evaluation is honored when multiple methods are enabled. -prom_sd_pod_association: +prom_sd_pod_associations: - [ ... ] # spanmetrics supports aggregating Request, Error and Duration (R.E.D) metrics diff --git a/e2e/Makefile b/e2e/Makefile deleted file mode 100644 index d5426f9a341d..000000000000 --- a/e2e/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -# We don't use -race here because there's races in docker/cli :) -test: - go test -p=4 ./... - -lint: - GO111MODULE=on golangci-lint run -v --timeout=10m diff --git a/e2e/go.mod b/e2e/go.mod deleted file mode 100644 index 6311b503c6c2..000000000000 --- a/e2e/go.mod +++ /dev/null @@ -1,109 +0,0 @@ -module github.com/grafana/agent/e2e - -go 1.17 - -require ( - github.com/docker/docker v20.10.10+incompatible - github.com/docker/go-connections v0.4.0 - github.com/rancher/k3d/v5 v5.2.2 - github.com/stretchr/testify v1.7.0 - k8s.io/api v0.23.0 - k8s.io/apimachinery v0.23.0 - k8s.io/client-go v0.23.0 - sigs.k8s.io/controller-runtime v0.11.0 -) - -require ( - github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect - github.com/Microsoft/go-winio v0.5.1 // indirect - github.com/Microsoft/hcsshim v0.9.1 // indirect - github.com/beorn7/perks v1.0.1 // indirect - github.com/cespare/xxhash/v2 v2.1.1 // indirect - github.com/containerd/cgroups v1.0.2 // indirect - github.com/containerd/containerd v1.5.7 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect - github.com/docker/cli v20.10.10+incompatible // indirect - github.com/docker/distribution v2.7.1+incompatible // indirect - github.com/docker/docker-credential-helpers v0.6.4 // indirect - github.com/docker/go v1.5.1-1.0.20160303222718-d30aec9fd63c // indirect - github.com/docker/go-metrics v0.0.1 // indirect - github.com/docker/go-units v0.4.0 // indirect - github.com/evanphx/json-patch v4.12.0+incompatible // indirect - github.com/fsnotify/fsnotify v1.5.1 // indirect - github.com/fvbommel/sortorder v1.0.2 // indirect - github.com/go-logr/logr v1.2.0 // indirect - github.com/go-test/deep v1.0.8 // indirect - github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect - github.com/golang/protobuf v1.5.2 // indirect - github.com/google/go-cmp v0.5.6 // indirect - github.com/google/gofuzz v1.1.0 // indirect - github.com/googleapis/gnostic v0.5.5 // indirect - github.com/gorilla/mux v1.8.0 // indirect - github.com/hashicorp/hcl v1.0.0 // indirect - github.com/imdario/mergo v0.3.12 // indirect - github.com/inconshreveable/mousetrap v1.0.0 // indirect - github.com/json-iterator/go v1.1.12 // indirect - github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de // indirect - github.com/magiconair/properties v1.8.5 // indirect - github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect - github.com/miekg/pkcs11 v1.0.3 // indirect - github.com/mitchellh/copystructure v1.2.0 // indirect - github.com/mitchellh/go-homedir v1.1.0 // indirect - github.com/mitchellh/mapstructure v1.4.2 // indirect - github.com/mitchellh/reflectwalk v1.0.2 // indirect - github.com/moby/sys/mount v0.3.0 // indirect - github.com/moby/sys/mountinfo v0.5.0 // indirect - github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6 // indirect - github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect - github.com/modern-go/reflect2 v1.0.2 // indirect - github.com/morikuni/aec v1.0.0 // indirect - github.com/opencontainers/go-digest v1.0.0 // indirect - github.com/opencontainers/image-spec v1.0.1 // indirect - github.com/opencontainers/runc v1.0.2 // indirect - github.com/pelletier/go-toml v1.9.4 // indirect - github.com/pkg/errors v0.9.1 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/prometheus/client_golang v1.11.0 // indirect - github.com/prometheus/client_model v0.2.0 // indirect - github.com/prometheus/common v0.28.0 // indirect - github.com/prometheus/procfs v0.6.0 // indirect - github.com/sirupsen/logrus v1.8.1 // indirect - github.com/spf13/afero v1.6.0 // indirect - github.com/spf13/cast v1.4.1 // indirect - github.com/spf13/cobra v1.2.1 // indirect - github.com/spf13/jwalterweatherman v1.1.0 // indirect - github.com/spf13/pflag v1.0.5 // indirect - github.com/spf13/viper v1.9.0 // indirect - github.com/subosito/gotenv v1.2.0 // indirect - github.com/theupdateframework/notary v0.7.0 // indirect - github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect - github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect - github.com/xeipuuv/gojsonschema v1.2.0 // indirect - go.opencensus.io v0.23.0 // indirect - go4.org/intern v0.0.0-20210108033219-3eb7198706b2 // indirect - go4.org/unsafe/assume-no-moving-gc v0.0.0-20201222180813-1025295fd063 // indirect - golang.org/x/crypto v0.0.0-20210817164053-32db794688a5 // indirect - golang.org/x/net v0.0.0-20211111160137-58aab5ef257a // indirect - golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f // indirect - golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect - golang.org/x/sys v0.0.0-20211112143042-c6105e7cf70d // indirect - golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b // indirect - golang.org/x/text v0.3.7 // indirect - golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac // indirect - google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto v0.0.0-20211112145013-271947fe86fd // indirect - google.golang.org/grpc v1.42.0 // indirect - google.golang.org/protobuf v1.27.1 // indirect - gopkg.in/inf.v0 v0.9.1 // indirect - gopkg.in/ini.v1 v1.64.0 // indirect - gopkg.in/yaml.v2 v2.4.0 // indirect - gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect - inet.af/netaddr v0.0.0-20210903134321-85fa6c94624e // indirect - k8s.io/klog/v2 v2.30.0 // indirect - k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65 // indirect - k8s.io/utils v0.0.0-20210930125809-cb0fa318a74b // indirect - sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6 // indirect - sigs.k8s.io/structured-merge-diff/v4 v4.2.0 // indirect - sigs.k8s.io/yaml v1.3.0 // indirect -) diff --git a/e2e/go.sum b/e2e/go.sum deleted file mode 100644 index f85cd520b1ff..000000000000 --- a/e2e/go.sum +++ /dev/null @@ -1,1619 +0,0 @@ -bazil.org/fuse v0.0.0-20160811212531-371fbbdaa898/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= -bazil.org/fuse v0.0.0-20200407214033-5883e5a4b512/go.mod h1:FbcW6z/2VytnFDhZfumh8Ss8zxHE6qpMP5sHTRe0EaM= -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= -cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= -cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= -cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= -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.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= -cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= -cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= -cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= -cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= -cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= -cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= -cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= -cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= -cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= -cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= -cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= -cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= -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= -cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= -cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= -cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= -cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -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/firestore v1.6.0/go.mod h1:afJwI0vaXwAG54kI7A//lP/lSPDkQORQuMkv56TxEPU= -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= -cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= -cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= -cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= -cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/Azure/azure-sdk-for-go v16.2.1+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= -github.com/Azure/go-ansiterm v0.0.0-20210608223527-2377c96fe795/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= -github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= -github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= -github.com/Azure/go-autorest v10.8.1+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= -github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= -github.com/Azure/go-autorest/autorest v0.11.1/go.mod h1:JFgpikqFJ/MleTTxwepExTKnFUKKszPS8UavbQYUMuw= -github.com/Azure/go-autorest/autorest v0.11.18/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA= -github.com/Azure/go-autorest/autorest/adal v0.9.0/go.mod h1:/c022QCutn2P7uY+/oQWWNcK9YU+MH96NgK+jErpbcg= -github.com/Azure/go-autorest/autorest/adal v0.9.5/go.mod h1:B7KF7jKIeC9Mct5spmyCB/A8CG/sEz1vwIRGv/bbw7A= -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.0/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= -github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= -github.com/Azure/go-autorest/logger v0.2.0/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= -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/Microsoft/go-winio v0.4.11/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA= -github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= -github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= -github.com/Microsoft/go-winio v0.4.16-0.20201130162521-d1ffc52c7331/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= -github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= -github.com/Microsoft/go-winio v0.4.17-0.20210211115548-6eac466e5fa3/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= -github.com/Microsoft/go-winio v0.4.17-0.20210324224401-5516f17a5958/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= -github.com/Microsoft/go-winio v0.4.17/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= -github.com/Microsoft/go-winio v0.5.1 h1:aPJp2QD7OOrhO5tQXqQoGSJc+DjDtWTGLOmNyAm6FgY= -github.com/Microsoft/go-winio v0.5.1/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= -github.com/Microsoft/hcsshim v0.8.6/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= -github.com/Microsoft/hcsshim v0.8.7-0.20190325164909-8abdbb8205e4/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= -github.com/Microsoft/hcsshim v0.8.7/go.mod h1:OHd7sQqRFrYd3RmSgbgji+ctCwkbq2wbEYNSzOYtcBQ= -github.com/Microsoft/hcsshim v0.8.9/go.mod h1:5692vkUqntj1idxauYlpoINNKeqCiG6Sg38RRsjT5y8= -github.com/Microsoft/hcsshim v0.8.14/go.mod h1:NtVKoYxQuTLx6gEq0L96c9Ju4JbRJ4nY2ow3VK6a9Lg= -github.com/Microsoft/hcsshim v0.8.15/go.mod h1:x38A4YbHbdxJtc0sF6oIz+RG0npwSCAvn69iY6URG00= -github.com/Microsoft/hcsshim v0.8.16/go.mod h1:o5/SZqmR7x9JNKsW3pu+nqHm0MF8vbA+VxGOoXdC600= -github.com/Microsoft/hcsshim v0.8.21/go.mod h1:+w2gRZ5ReXQhFOrvSQeNfhrYB/dg3oDwTOcER2fw4I4= -github.com/Microsoft/hcsshim v0.9.1 h1:VfDCj+QnY19ktX5TsH22JHcjaZ05RWQiwDbOyEg5ziM= -github.com/Microsoft/hcsshim v0.9.1/go.mod h1:Y/0uV2jUab5kBI7SQgl62at0AVX7uaruzADAVmxm3eM= -github.com/Microsoft/hcsshim/test v0.0.0-20201218223536-d3e5debf77da/go.mod h1:5hlzMzRKMLyo42nCZ9oml8AdTlq/0cvIaBv6tK1RehU= -github.com/Microsoft/hcsshim/test v0.0.0-20210227013316-43a75bb4edd3/go.mod h1:mw7qgWloBUl75W/gVH3cQszUg1+gUITj7D6NY7ywVnY= -github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= -github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= -github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= -github.com/Shopify/logrus-bugsnag v0.0.0-20170309145241-6dbc35f2c30d/go.mod h1:HI8ITrYtUY+O+ZhtlqUnD8+KwNPOyugEhfP9fdUIaEQ= -github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d h1:UrqY+r/OJnIp5u0s1SbQ8dVfLCZJsnvazdBP5hS4iRs= -github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod h1:HI8ITrYtUY+O+ZhtlqUnD8+KwNPOyugEhfP9fdUIaEQ= -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/alexflint/go-filemutex v0.0.0-20171022225611-72bdc8eae2ae/go.mod h1:CgnQgUtFrFz9mxFNtED3jI5tLDjKlOM+oUF/sTk6ps0= -github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20210826220005-b48c857c3a0e/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY= -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/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= -github.com/aws/aws-sdk-go v1.15.11/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= -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/beorn7/perks v0.0.0-20150223135152-b965b613227f/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v0.0.0-20160804104726-4c0e84591b9a/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -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/bitly/go-hostpool v0.1.0/go.mod h1:4gOCgp6+NZnVqlKyZ/iBZFTAJKembaVENUpMkpg42fw= -github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngEKAMDJEczWVA= -github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= -github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= -github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= -github.com/blang/semver v3.1.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= -github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= -github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= -github.com/bshuster-repo/logrus-logstash-hook v0.4.1/go.mod h1:zsTqEiSzDgAa/8GZR7E1qaXrhYNDKBYy5/dWPTIflbk= -github.com/buger/jsonparser v0.0.0-20180808090653-f4dd9f5a6b44/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= -github.com/bugsnag/bugsnag-go v0.0.0-20141110184014-b1d153021fcd/go.mod h1:2oa8nejYd4cQ/b0hMIopN0lCRxU0bueqREvZLWFrtK8= -github.com/bugsnag/bugsnag-go v1.0.5-0.20150529004307-13fd6b8acda0 h1:s7+5BfS4WFJoVF9pnB8kBk03S7pZXRdKamnV0FOl5Sc= -github.com/bugsnag/bugsnag-go v1.0.5-0.20150529004307-13fd6b8acda0/go.mod h1:2oa8nejYd4cQ/b0hMIopN0lCRxU0bueqREvZLWFrtK8= -github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b h1:otBG+dV+YK+Soembjv71DPz3uX/V/6MMlSyD9JBQ6kQ= -github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b/go.mod h1:obH5gd0BsqsP2LwDJ9aOkm/6J86V6lyAXCoQWGw3K50= -github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0 h1:nvj0OLI3YqYXer/kZD8Ri1aaunCxIEsOst1BVJswV0o= -github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE= -github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/certifi/gocertifi v0.0.0-20191021191039-0944d244cd40/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= -github.com/certifi/gocertifi v0.0.0-20200922220541-2c3bb06c6054/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= -github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= -github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= -github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/checkpoint-restore/go-criu/v4 v4.1.0/go.mod h1:xUQBLp4RLc5zJtWY++yjOoMoB5lihDt7fai+75m+rGw= -github.com/checkpoint-restore/go-criu/v5 v5.0.0/go.mod h1:cfwC0EG7HMUenopBsUf9d89JlCLQIfgVcNsNN0t6T2M= -github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/cilium/ebpf v0.0.0-20200110133405-4032b1d8aae3/go.mod h1:MA5e5Lr8slmEg9bt0VpxxWqJlO4iwu3FBdHUzV7wQVg= -github.com/cilium/ebpf v0.0.0-20200702112145-1c8d4c9ef775/go.mod h1:7cR51M8ViRLIdUjrmSXlK9pkrsDlLHbO8jiB8X8JnOc= -github.com/cilium/ebpf v0.2.0/go.mod h1:To2CFviqOWL/M0gIMsvSMlqe7em/l1ALkX1PyjrX2Qs= -github.com/cilium/ebpf v0.4.0/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= -github.com/cilium/ebpf v0.6.2/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cloudflare/cfssl v0.0.0-20180223231731-4e2dcbde5004 h1:lkAMpLVBDaj17e85keuznYcH5rqI438v41pKcBl4ZxQ= -github.com/cloudflare/cfssl v0.0.0-20180223231731-4e2dcbde5004/go.mod h1:yMWuSON2oQp+43nFtAV/uvKQIFpSPerB57DCt9t8sSA= -github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= -github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= -github.com/cockroachdb/datadriven v0.0.0-20200714090401-bf6692d28da5/go.mod h1:h6jFvWxBdQXxjopDMZyH2UVceIRfR84bdzbkoKrsWNo= -github.com/cockroachdb/errors v1.2.4/go.mod h1:rQD95gz6FARkaKkQXUksEje/d9a6wBJoCr5oaCLELYA= -github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f/go.mod h1:i/u985jwjWRlyHXQbwatDASoW0RMlZ/3i9yJHE2xLkI= -github.com/containerd/aufs v0.0.0-20200908144142-dab0cbea06f4/go.mod h1:nukgQABAEopAHvB6j7cnP5zJ+/3aVcE7hCYqvIwAHyE= -github.com/containerd/aufs v0.0.0-20201003224125-76a6863f2989/go.mod h1:AkGGQs9NM2vtYHaUen+NljV0/baGCAPELGm2q9ZXpWU= -github.com/containerd/aufs v0.0.0-20210316121734-20793ff83c97/go.mod h1:kL5kd6KM5TzQjR79jljyi4olc1Vrx6XBlcyj3gNv2PU= -github.com/containerd/aufs v1.0.0/go.mod h1:kL5kd6KM5TzQjR79jljyi4olc1Vrx6XBlcyj3gNv2PU= -github.com/containerd/btrfs v0.0.0-20201111183144-404b9149801e/go.mod h1:jg2QkJcsabfHugurUvvPhS3E08Oxiuh5W/g1ybB4e0E= -github.com/containerd/btrfs v0.0.0-20210316141732-918d888fb676/go.mod h1:zMcX3qkXTAi9GI50+0HOeuV8LU2ryCE/V2vG/ZBiTss= -github.com/containerd/btrfs v1.0.0/go.mod h1:zMcX3qkXTAi9GI50+0HOeuV8LU2ryCE/V2vG/ZBiTss= -github.com/containerd/cgroups v0.0.0-20190717030353-c4b9ac5c7601/go.mod h1:X9rLEHIqSf/wfK8NsPqxJmeZgW4pcfzdXITDrUSJ6uI= -github.com/containerd/cgroups v0.0.0-20190919134610-bf292b21730f/go.mod h1:OApqhQ4XNSNC13gXIwDjhOQxjWa/NxkwZXJ1EvqT0ko= -github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59/go.mod h1:pA0z1pT8KYB3TCXK/ocprsh7MAkoW8bZVzPdih9snmM= -github.com/containerd/cgroups v0.0.0-20200710171044-318312a37340/go.mod h1:s5q4SojHctfxANBDvMeIaIovkq29IP48TKAxnhYRxvo= -github.com/containerd/cgroups v0.0.0-20200824123100-0b889c03f102/go.mod h1:s5q4SojHctfxANBDvMeIaIovkq29IP48TKAxnhYRxvo= -github.com/containerd/cgroups v0.0.0-20210114181951-8a68de567b68/go.mod h1:ZJeTFisyysqgcCdecO57Dj79RfL0LNeGiFUqLYQRYLE= -github.com/containerd/cgroups v1.0.1/go.mod h1:0SJrPIenamHDcZhEcJMNBB85rHcUsw4f25ZfBiPYRkU= -github.com/containerd/cgroups v1.0.2 h1:mZBclaSgNDfPWtfhj2xJY28LZ9nYIgzB0pwSURPl6JM= -github.com/containerd/cgroups v1.0.2/go.mod h1:qpbpJ1jmlqsR9f2IyaLPsdkCdnt0rbDVqIDlhuu5tRY= -github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= -github.com/containerd/console v0.0.0-20181022165439-0650fd9eeb50/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= -github.com/containerd/console v0.0.0-20191206165004-02ecf6a7291e/go.mod h1:8Pf4gM6VEbTNRIT26AyyU7hxdQU3MvAvxVI0sc00XBE= -github.com/containerd/console v1.0.1/go.mod h1:XUsP6YE/mKtz6bxc+I8UiKKTP04qjQL4qcS3XoQ5xkw= -github.com/containerd/console v1.0.2/go.mod h1:ytZPjGgY2oeTkAONYafi2kSj0aYggsf8acV1PGKCbzQ= -github.com/containerd/containerd v1.2.10/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.3.0-beta.2.0.20190828155532-0293cbd26c69/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.3.0/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.3.1-0.20191213020239-082f7e3aed57/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.3.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.4.0-beta.2.0.20200729163537-40b22ef07410/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.4.1/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.4.3/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.5.0-beta.1/go.mod h1:5HfvG1V2FsKesEGQ17k5/T7V960Tmcumvqn8Mc+pCYQ= -github.com/containerd/containerd v1.5.0-beta.3/go.mod h1:/wr9AVtEM7x9c+n0+stptlo/uBBoBORwEx6ardVcmKU= -github.com/containerd/containerd v1.5.0-beta.4/go.mod h1:GmdgZd2zA2GYIBZ0w09ZvgqEq8EfBp/m3lcVZIvPHhI= -github.com/containerd/containerd v1.5.0-rc.0/go.mod h1:V/IXoMqNGgBlabz3tHD2TWDoTJseu1FGOKuoA4nNb2s= -github.com/containerd/containerd v1.5.1/go.mod h1:0DOxVqwDy2iZvrZp2JUx/E+hS0UNTVn7dJnIOwtYR4g= -github.com/containerd/containerd v1.5.7 h1:rQyoYtj4KddB3bxG6SAqd4+08gePNyJjRqvOIfV3rkM= -github.com/containerd/containerd v1.5.7/go.mod h1:gyvv6+ugqY25TiXxcZC3L5yOeYgEw0QMhscqVp1AR9c= -github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= -github.com/containerd/continuity v0.0.0-20190815185530-f2a389ac0a02/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= -github.com/containerd/continuity v0.0.0-20191127005431-f65d91d395eb/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= -github.com/containerd/continuity v0.0.0-20200710164510-efbc4488d8fe/go.mod h1:cECdGN1O8G9bgKTlLhuPJimka6Xb/Gg7vYzCTNVxhvo= -github.com/containerd/continuity v0.0.0-20201208142359-180525291bb7/go.mod h1:kR3BEg7bDFaEddKm54WSmrol1fKWDU1nKYkgrcgZT7Y= -github.com/containerd/continuity v0.0.0-20210208174643-50096c924a4e/go.mod h1:EXlVlkqNba9rJe3j7w3Xa924itAMLgZH4UD/Q4PExuQ= -github.com/containerd/continuity v0.1.0/go.mod h1:ICJu0PwR54nI0yPEnJ6jcS+J7CZAUXrLh8lPo2knzsM= -github.com/containerd/continuity v0.2.1 h1:/EeEo2EtN3umhbbgCveyjifoMYg0pS+nMMEemaYw634= -github.com/containerd/continuity v0.2.1/go.mod h1:wCYX+dRqZdImhGucXOqTQn05AhX6EUDaGEMUzTFFpLg= -github.com/containerd/fifo v0.0.0-20180307165137-3d5202aec260/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= -github.com/containerd/fifo v0.0.0-20190226154929-a9fb20d87448/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= -github.com/containerd/fifo v0.0.0-20200410184934-f15a3290365b/go.mod h1:jPQ2IAeZRCYxpS/Cm1495vGFww6ecHmMk1YJH2Q5ln0= -github.com/containerd/fifo v0.0.0-20201026212402-0724c46b320c/go.mod h1:jPQ2IAeZRCYxpS/Cm1495vGFww6ecHmMk1YJH2Q5ln0= -github.com/containerd/fifo v0.0.0-20210316144830-115abcc95a1d/go.mod h1:ocF/ME1SX5b1AOlWi9r677YJmCPSwwWnQ9O123vzpE4= -github.com/containerd/fifo v1.0.0/go.mod h1:ocF/ME1SX5b1AOlWi9r677YJmCPSwwWnQ9O123vzpE4= -github.com/containerd/go-cni v1.0.1/go.mod h1:+vUpYxKvAF72G9i1WoDOiPGRtQpqsNW/ZHtSlv++smU= -github.com/containerd/go-cni v1.0.2/go.mod h1:nrNABBHzu0ZwCug9Ije8hL2xBCYh/pjfMb1aZGrrohk= -github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= -github.com/containerd/go-runc v0.0.0-20190911050354-e029b79d8cda/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= -github.com/containerd/go-runc v0.0.0-20200220073739-7016d3ce2328/go.mod h1:PpyHrqVs8FTi9vpyHwPwiNEGaACDxT/N/pLcvMSRA9g= -github.com/containerd/go-runc v0.0.0-20201020171139-16b287bc67d0/go.mod h1:cNU0ZbCgCQVZK4lgG3P+9tn9/PaJNmoDXPpoJhDR+Ok= -github.com/containerd/go-runc v1.0.0/go.mod h1:cNU0ZbCgCQVZK4lgG3P+9tn9/PaJNmoDXPpoJhDR+Ok= -github.com/containerd/imgcrypt v1.0.1/go.mod h1:mdd8cEPW7TPgNG4FpuP3sGBiQ7Yi/zak9TYCG3juvb0= -github.com/containerd/imgcrypt v1.0.4-0.20210301171431-0ae5c75f59ba/go.mod h1:6TNsg0ctmizkrOgXRNQjAPFWpMYRWuiB6dSF4Pfa5SA= -github.com/containerd/imgcrypt v1.1.1-0.20210312161619-7ed62a527887/go.mod h1:5AZJNI6sLHJljKuI9IHnw1pWqo/F0nGDOuR9zgTs7ow= -github.com/containerd/imgcrypt v1.1.1/go.mod h1:xpLnwiQmEUJPvQoAapeb2SNCxz7Xr6PJrXQb0Dpc4ms= -github.com/containerd/nri v0.0.0-20201007170849-eb1350a75164/go.mod h1:+2wGSDGFYfE5+So4M5syatU0N0f0LbWpuqyMi4/BE8c= -github.com/containerd/nri v0.0.0-20210316161719-dbaa18c31c14/go.mod h1:lmxnXF6oMkbqs39FiCt1s0R2HSMhcLel9vNL3m4AaeY= -github.com/containerd/nri v0.1.0/go.mod h1:lmxnXF6oMkbqs39FiCt1s0R2HSMhcLel9vNL3m4AaeY= -github.com/containerd/stargz-snapshotter/estargz v0.4.1/go.mod h1:x7Q9dg9QYb4+ELgxmo4gBUeJB0tl5dqH1Sdz0nJU1QM= -github.com/containerd/ttrpc v0.0.0-20190828154514-0e0f228740de/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= -github.com/containerd/ttrpc v0.0.0-20190828172938-92c8520ef9f8/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= -github.com/containerd/ttrpc v0.0.0-20191028202541-4f1b8fe65a5c/go.mod h1:LPm1u0xBw8r8NOKoOdNMeVHSawSsltak+Ihv+etqsE8= -github.com/containerd/ttrpc v1.0.1/go.mod h1:UAxOpgT9ziI0gJrmKvgcZivgxOp8iFPSk8httJEt98Y= -github.com/containerd/ttrpc v1.0.2/go.mod h1:UAxOpgT9ziI0gJrmKvgcZivgxOp8iFPSk8httJEt98Y= -github.com/containerd/ttrpc v1.1.0/go.mod h1:XX4ZTnoOId4HklF4edwc4DcqskFZuvXB1Evzy5KFQpQ= -github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= -github.com/containerd/typeurl v0.0.0-20190911142611-5eb25027c9fd/go.mod h1:GeKYzf2pQcqv7tJ0AoCuuhtnqhva5LNU3U+OyKxxJpk= -github.com/containerd/typeurl v1.0.1/go.mod h1:TB1hUtrpaiO88KEK56ijojHS1+NeF0izUACaJW2mdXg= -github.com/containerd/typeurl v1.0.2/go.mod h1:9trJWW2sRlGub4wZJRTW83VtbOLS6hwcDZXTn6oPz9s= -github.com/containerd/zfs v0.0.0-20200918131355-0a33824f23a2/go.mod h1:8IgZOBdv8fAgXddBT4dBXJPtxyRsejFIpXoklgxgEjw= -github.com/containerd/zfs v0.0.0-20210301145711-11e8f1707f62/go.mod h1:A9zfAbMlQwE+/is6hi0Xw8ktpL+6glmqZYtevJgaB8Y= -github.com/containerd/zfs v0.0.0-20210315114300-dde8f0fda960/go.mod h1:m+m51S1DvAP6r3FcmYCp54bQ34pyOwTieQDNRIRHsFY= -github.com/containerd/zfs v0.0.0-20210324211415-d5c4544f0433/go.mod h1:m+m51S1DvAP6r3FcmYCp54bQ34pyOwTieQDNRIRHsFY= -github.com/containerd/zfs v1.0.0/go.mod h1:m+m51S1DvAP6r3FcmYCp54bQ34pyOwTieQDNRIRHsFY= -github.com/containernetworking/cni v0.7.1/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= -github.com/containernetworking/cni v0.8.0/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= -github.com/containernetworking/cni v0.8.1/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= -github.com/containernetworking/plugins v0.8.6/go.mod h1:qnw5mN19D8fIwkqW7oHHYDHVlzhJpcY6TQxn/fUyDDM= -github.com/containernetworking/plugins v0.9.1/go.mod h1:xP/idU2ldlzN6m4p5LmGiwRDjeJr6FLK6vuiUwoH7P8= -github.com/containers/ocicrypt v1.0.1/go.mod h1:MeJDzk1RJHv89LjsH0Sp5KTY3ZYkjXO/C+bKAeWFIrc= -github.com/containers/ocicrypt v1.1.0/go.mod h1:b8AOe0YR67uU8OqfVNcznfFpAzu3rdgUV4GP9qXPfu4= -github.com/containers/ocicrypt v1.1.1/go.mod h1:Dm55fwWm1YZAjYRaJ94z2mfZikIyIN4B0oB3dj3jFxY= -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-iptables v0.4.5/go.mod h1:/mVI274lEDI2ns62jHCDnCyBF9Iwsmekav8Dbxlm1MU= -github.com/coreos/go-iptables v0.5.0/go.mod h1:/mVI274lEDI2ns62jHCDnCyBF9Iwsmekav8Dbxlm1MU= -github.com/coreos/go-oidc v2.1.0+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-20161114122254-48702e0da86b/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd/v22 v22.0.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= -github.com/coreos/go-systemd/v22 v22.1.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= -github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -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 h1:07n33Z8lZxZ2qwegKbObQohDhXDQxiMMz1NOUGYlesw= -github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4= -github.com/d2g/dhcp4 v0.0.0-20170904100407-a1d1b6c41b1c/go.mod h1:Ct2BUK8SB0YC1SMSibvLzxjeJLnrYEVLULFNiHY9YfQ= -github.com/d2g/dhcp4client v1.0.0/go.mod h1:j0hNfjhrt2SxUOw55nL0ATM/z4Yt3t2Kd1mW34z5W5s= -github.com/d2g/dhcp4server v0.0.0-20181031114812-7d4a0a7f59a5/go.mod h1:Eo87+Kg/IX2hfWJfwxMzLyuSZyxSoAug2nGa1G2QAi8= -github.com/d2g/hardwareaddr v0.0.0-20190221164911-e7d9fbe030e4/go.mod h1:bMl4RjIciD2oAxI7DmWRx6gbeqrkoLqv3MV0vzNad+I= -github.com/danieljoos/wincred v1.1.0/go.mod h1:XYlo+eRTsVA9aHGp7NGjFkPla4m+DCL7hqDjlFjiygg= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/denisenkom/go-mssqldb v0.0.0-20191128021309-1d7a30a10f73/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU= -github.com/denverdino/aliyungo v0.0.0-20190125010748-a747050bb1ba/go.mod h1:dV8lFg6daOBZbT6/BDGIz6Y3WFGn8juu6G+CQ6LHtl0= -github.com/dgrijalva/jwt-go v0.0.0-20170104182250-a601269ab70c/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= -github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= -github.com/docker/cli v0.0.0-20191017083524-a8ff7f821017/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= -github.com/docker/cli v20.10.10+incompatible h1:kcbwdgWbrBOH8QwQzaJmyriHwF7XIl4HT1qh0HTRys4= -github.com/docker/cli v20.10.10+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= -github.com/docker/distribution v0.0.0-20190905152932-14b96e55d84c/go.mod h1:0+TTO4EOBfRPhZXAeF1Vu+W3hHZ8eLp8PgKVZlcvtFY= -github.com/docker/distribution v2.7.1-0.20190205005809-0d3efadf0154+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/distribution v2.7.1+incompatible h1:a5mlkVzth6W5A4fOsS3D2EO5BUmsJpcB+cRlLU7cSug= -github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v1.4.2-0.20190924003213-a8608b5b67c7/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker v20.10.10+incompatible h1:GKkP0T7U4ks6X3lmmHKC2QDprnpRJor2Z5a8m62R9ZM= -github.com/docker/docker v20.10.10+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker-credential-helpers v0.6.3/go.mod h1:WRaJzqw3CTB9bk10avuGsjVBZsD05qeibJ1/TYlvc0Y= -github.com/docker/docker-credential-helpers v0.6.4 h1:axCks+yV+2MR3/kZhAmy07yC56WZ2Pwu/fKWtKuZB0o= -github.com/docker/docker-credential-helpers v0.6.4/go.mod h1:ofX3UI0Gz1TteYBjtgs07O36Pyasyp66D2uKT7H8W1c= -github.com/docker/go v1.5.1-1.0.20160303222718-d30aec9fd63c h1:lzqkGL9b3znc+ZUgi7FlLnqjQhcXxkNM/quxIjBVMD0= -github.com/docker/go v1.5.1-1.0.20160303222718-d30aec9fd63c/go.mod h1:CADgU4DSXK5QUlFslkQu2yW2TKzFZcXq/leZfM0UH5Q= -github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= -github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= -github.com/docker/go-events v0.0.0-20170721190031-9461782956ad/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= -github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= -github.com/docker/go-metrics v0.0.0-20180209012529-399ea8c73916/go.mod h1:/u0gXw0Gay3ceNrsHubL3BtdOL2fHf93USgMTe0W5dI= -github.com/docker/go-metrics v0.0.1 h1:AgB/0SvBxihN0X8OR4SjsblXkbMvalQ8cjmtKQ2rQV8= -github.com/docker/go-metrics v0.0.1/go.mod h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHzueweSI3Vw= -github.com/docker/go-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw= -github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/docker/libtrust v0.0.0-20150114040149-fa567046d9b1/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE= -github.com/docker/libtrust v0.0.0-20160708172513-aabc10ec26b7 h1:UhxFibDNY/bfvqU5CAUmr9zpesgbU6SWc8/B4mflAE4= -github.com/docker/libtrust v0.0.0-20160708172513-aabc10ec26b7/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE= -github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= -github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= -github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/dvsekhvalnov/jose2go v0.0.0-20170216131308-f21a8cedbbae/go.mod h1:7BvyPhdbLxMXIYTFPLsyJRFMsKmOZnQmzh6Gb+uquuM= -github.com/dvyukov/go-fuzz v0.0.0-20210103155950-6a8e9d1f2415/go.mod h1:11Gm+ccJnvAhCNLlf5+cS9KjtbaD5I5zaZpFMsTHWTw= -github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= -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/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.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= -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/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= -github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= -github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5/go.mod h1:a2zkGnVExMxdzMo3M0Hi/3sEU+cWnZpSni0O6/Yb/P0= -github.com/evanphx/json-patch v0.5.2/go.mod h1:ZWS5hhDbVDyob71nXKNL0+PWn6ToqBHMikGIFbs31qQ= -github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/evanphx/json-patch v4.11.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -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/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= -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/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= -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.5.1 h1:mZcQUHVQUQWoPXXtuf9yuEXKudkV2sx1E06UadKWpgI= -github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU= -github.com/fullsailor/pkcs7 v0.0.0-20190404230743-d7302db945fa/go.mod h1:KnogPXtdwXqoenmZCw6S+25EAm2MkxbG0deNDu4cbSA= -github.com/fvbommel/sortorder v1.0.2 h1:mV4o8B2hKboCdkJm+a7uX/SIpZob4JzUpc5GGnM45eo= -github.com/fvbommel/sortorder v1.0.2/go.mod h1:uk88iVf1ovNn1iLfgUVU2F9o5eO30ui720w+kxuqRs0= -github.com/garyburd/redigo v0.0.0-20150301180006-535138d7bcd7/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= -github.com/getkin/kin-openapi v0.76.0/go.mod h1:660oXbgy5JFMKreazJaQTw7o+X00qeSyhcnluiMv+Xg= -github.com/getsentry/raven-go v0.2.0/go.mod h1:KungGk8q33+aIAZUIVWZDr2OfAEBsO49PX4NzFV5kcQ= -github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -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-ini/ini v1.25.4/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= -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 h1:QK40JKJyMdUDz+h+xvCsru/bJhvG0UxvePV0ufL/AcE= -github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/zapr v1.2.0 h1:n4JnPI1T3Qq1SFEi/F8rwLrZERp2bso19PJZDB9dayk= -github.com/go-logr/zapr v1.2.0/go.mod h1:Qa4Bsj2Vb+FAVeAKsLD8RLQ+YRJB8YDmOAKxaBQf7Ro= -github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= -github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= -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/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg= -github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= -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/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= -github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= -github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= -github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -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-sql-driver/mysql v1.3.0 h1:pgwjLi/dvffoP9aabwkT3AKpXQM93QARkjFhDDqC1UE= -github.com/go-sql-driver/mysql v1.3.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= -github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= -github.com/go-test/deep v1.0.8 h1:TDsG77qcSprGbC6vTN8OuXp5g+J+b5Pcguhf7Zt61VM= -github.com/go-test/deep v1.0.8/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE= -github.com/godbus/dbus v0.0.0-20151105175453-c7fdd8b5cd55/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= -github.com/godbus/dbus v0.0.0-20180201030542-885f9cc04c9c/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= -github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= -github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gogo/googleapis v1.2.0/go.mod h1:Njal3psf3qN6dwBtQfUmBZh2ybovJ0tlu3o/AC7HYjU= -github.com/gogo/googleapis v1.4.0/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c= -github.com/gogo/protobuf v1.0.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -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.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/gogo/protobuf v1.3.0/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= -github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -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= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -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.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= -github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= -github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -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.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= -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.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= -github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -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/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= -github.com/google/cel-go v0.9.0/go.mod h1:U7ayypeSkw23szu4GaQTPJGx66c20mx8JklMSxrmI1w= -github.com/google/cel-spec v0.6.0/go.mod h1:Nwjgxy5CbjlPrtCWjeDjUyKMl8w41YBYGjsyDdqk0xA= -github.com/google/certificate-transparency-go v1.0.10-0.20180222191210-5ab67e519c93 h1:jc2UWq7CbdszqeH6qu1ougXMIUBfSy8Pbh/anURYbGI= -github.com/google/certificate-transparency-go v1.0.10-0.20180222191210-5ab67e519c93/go.mod h1:QeJfpSbVSfYc7RgB3gJFj9cbuQMMchQxrWXz8Ruopmg= -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.4.1/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.1/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.3/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.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= -github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-containerregistry v0.5.1/go.mod h1:Ct15B4yir3PLOP5jsy0GNeYVaIZs/MK/Jz5any1wFW0= -github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g= -github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= -github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -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-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -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.2.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/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= -github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= -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/gorilla/handlers v0.0.0-20150720190736-60c7bfde3e33/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= -github.com/gorilla/mux v1.7.0/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.7.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= -github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= -github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -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/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.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= -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.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed h1:5upAirOpQc1Q53c0bnx2ufif5kANL7bfZWcc6VJWJd8= -github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed/go.mod h1:tMWxXQ9wFIaZeTI9F+hmhFiGpFmhOHzyShyFUhRm0H4= -github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= -github.com/hashicorp/consul/api v1.10.1/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= -github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms= -github.com/hashicorp/errwrap v0.0.0-20141028054710-7554cd9344ce/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/errwrap v1.0.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-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= -github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-multierror v0.0.0-20161216184304-ed905158d874/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.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= -github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= -github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= -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 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.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/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= -github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -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/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY= -github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= -github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= -github.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk= -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/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/imdario/mergo v0.3.10/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= -github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= -github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= -github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= -github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/j-keck/arping v0.0.0-20160618110441-2cf9dc699c56/go.mod h1:ymszkNOg6tORTn+6F6j+Jc8TOr5osrynvN6ivFWZ2GA= -github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= -github.com/jinzhu/gorm v0.0.0-20170222002820-5409931a1bb8 h1:CZkYfurY6KGhVtlalI4QwQ6T0Cu6iuY3e0x5RLu96WE= -github.com/jinzhu/gorm v0.0.0-20170222002820-5409931a1bb8/go.mod h1:Vla75njaFJ8clLU1W44h34PjIkijhjHIYnZxMqCdxqo= -github.com/jinzhu/inflection v0.0.0-20170102125226-1c35d901db3d h1:jRQLvyVGL+iVtDElaEIDdKwpPqUIZJfzkNLV34htpEc= -github.com/jinzhu/inflection v0.0.0-20170102125226-1c35d901db3d/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= -github.com/jinzhu/now v1.1.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= -github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -github.com/jmespath/go-jmespath v0.0.0-20160803190731-bd40a432e4c7/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -github.com/joefitzgerald/rainbow-reporter v0.1.0/go.mod h1:481CNgqmVHQZzdIbN52CupLJyoVwB10FQ/IQlF1pdL8= -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/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.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -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/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/juju/loggo v0.0.0-20190526231331-6e530bcce5d8/go.mod h1:vgyd7OREkbtVEN/8IXZe5Ooef3LQePvuBm9UWj6ZL8U= -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/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= -github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= -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.11.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/klauspost/compress v1.11.13/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -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/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= -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.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/lib/pq v0.0.0-20150723085316-0dad96c0b94f/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de h1:9TO3cAIGXtEhnIaL+V+BEER86oLrvS+kWobKpbJuye0= -github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE= -github.com/linuxkit/virtsock v0.0.0-20201010232012-f8cee7dfc7a3/go.mod h1:3r6x7q95whyfWQpmGZTu3gk3v2YkMi05HEzl7Tf7YEo= -github.com/magiconair/properties v1.5.3/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -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.5 h1:b6kJs+EmPFMYGkow9GiUyCyOvIwYetYJ3fSaWak/Gls= -github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= -github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -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/marstr/guid v1.1.0/go.mod h1:74gB1z2wpxxInTG6yaqA7KrtM0NZ+RbrcqDvYHefzho= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -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.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= -github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= -github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-shellwords v1.0.3/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= -github.com/mattn/go-shellwords v1.0.6/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= -github.com/mattn/go-sqlite3 v1.6.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= -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 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI= -github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= -github.com/maxbrunsfeld/counterfeiter/v6 v6.2.2/go.mod h1:eD9eIE7cdwcMi9rYluz88Jz2VyhSmden33/aXg4oVIY= -github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= -github.com/miekg/pkcs11 v1.0.2/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= -github.com/miekg/pkcs11 v1.0.3 h1:iMwmD7I5225wv84WxIG/bmxz9AXjWvTWIbM/TYHvWtw= -github.com/miekg/pkcs11 v1.0.3/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= -github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible/go.mod h1:8AuVvqP/mXw1px98n46wfvcGfQ4ci2FwoAjKYxuo3Z4= -github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= -github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= -github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= -github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= -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/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-20150613213606-2caf8efc9366/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/mapstructure v1.4.2 h1:6h7AQ0yhTcIsmFmnAwQls75jp2Gzs4iB8W7pjMO+rqo= -github.com/mitchellh/mapstructure v1.4.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/osext v0.0.0-20151018003038-5e2d6d41470f/go.mod h1:OkQIRizQZAeMln+1tSwduZz7+Af5oFlKirV/MSYes2A= -github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= -github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= -github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= -github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= -github.com/moby/sys/mount v0.3.0 h1:bXZYMmq7DBQPwHRxH/MG+u9+XF90ZOwoXpHTOznMGp0= -github.com/moby/sys/mount v0.3.0/go.mod h1:U2Z3ur2rXPFrFmy4q6WMwWrBOAQGYtYTRVM8BIvzbwk= -github.com/moby/sys/mountinfo v0.4.0/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= -github.com/moby/sys/mountinfo v0.4.1/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= -github.com/moby/sys/mountinfo v0.5.0 h1:2Ks8/r6lopsxWi9m58nlwjaeSzUX9iiL1vj5qB/9ObI= -github.com/moby/sys/mountinfo v0.5.0/go.mod h1:3bMD3Rg+zkqx8MRYPi7Pyb0Ie97QEBmdxbhnCLlSvSU= -github.com/moby/sys/symlink v0.1.0/go.mod h1:GGDODQmbFOjFsXvfLVn3+ZRxkch54RkSiGqsZeMYowQ= -github.com/moby/term v0.0.0-20200312100748-672ec06f55cd/go.mod h1:DdlQx2hp0Ss5/fLikoLlEeIYiATotOjgB//nb973jeo= -github.com/moby/term v0.0.0-20210610120745-9d4ed1856297/go.mod h1:vgPCkQMyxTZ7IDy8SXRufE172gr8+K/JE/7hHFxHW3A= -github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6 h1:dcztxKSvZ4Id8iPpHERQBbIJfabdt4wUm5qy3wOL2Zc= -github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6/go.mod h1:E2VnQOmVuvZB6UYnnDB0qG5Nq/1tD9acaOpo6xmt0Kw= -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/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= -github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= -github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ= -github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/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/ncw/swift v1.0.47/go.mod h1:23YIA4yWVnGwv2dQlN4bB7egfYX6YLn0Yo/S6zZO/ZM= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= -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/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= -github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= -github.com/onsi/ginkgo v0.0.0-20151202141238-7f8ab55aaf3b/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -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.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg= -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.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= -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-20151007035656-2152b45fa28a/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= -github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= -github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= -github.com/onsi/gomega v1.9.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= -github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.10.3/go.mod h1:V9xEwhxec5O8UDM77eCW8vLymOMltsqPVYWrpDsH8xc= -github.com/onsi/gomega v1.17.0 h1:9Luw4uT5HTjHTN8+aNcSThgH1vdXnmdJ8xIfZ4wyTRE= -github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= -github.com/opencontainers/go-digest v0.0.0-20170106003457-a6d0ee40d420/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= -github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= -github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= -github.com/opencontainers/go-digest v1.0.0-rc1.0.20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= -github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= -github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/opencontainers/image-spec v1.0.0/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/opencontainers/image-spec v1.0.1 h1:JMemWkRwHx4Zj+fVxWoMCFm/8sYGGrUVojFA6h/TRcI= -github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/opencontainers/runc v0.0.0-20190115041553-12f6a991201f/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= -github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= -github.com/opencontainers/runc v1.0.0-rc8.0.20190926000215-3e425f80a8c9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= -github.com/opencontainers/runc v1.0.0-rc9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= -github.com/opencontainers/runc v1.0.0-rc93/go.mod h1:3NOsor4w32B2tC0Zbl8Knk4Wg84SM2ImC1fxBuqJ/H0= -github.com/opencontainers/runc v1.0.2 h1:opHZMaswlyxz1OuGpBE53Dwe4/xF7EZTY0A2L/FpCOg= -github.com/opencontainers/runc v1.0.2/go.mod h1:aTaHFFwQXuA71CiyxOdFFIorAoemI04suvGRQFzWTD0= -github.com/opencontainers/runtime-spec v0.1.2-0.20190507144316-5b71a03e2700/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-spec v1.0.1/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-spec v1.0.2-0.20190207185410-29686dbc5559/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-spec v1.0.3-0.20200929063507-e6143ca7d51d/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-tools v0.0.0-20181011054405-1d69bd0f9c39/go.mod h1:r3f7wjNzSs2extwzU3Y+6pKfobzPh+kKFJ3ofN+3nfs= -github.com/opencontainers/selinux v1.6.0/go.mod h1:VVGKuOLlE7v4PJyT6h7mNWvq1rzqiriPsEqVhc+svHE= -github.com/opencontainers/selinux v1.8.0/go.mod h1:RScLhm78qiWa2gbVCcGkC7tCGdgk3ogry1nUQF8Evvo= -github.com/opencontainers/selinux v1.8.2/go.mod h1:MUIHuUEvKB1wtJjQdOyYRgOnLD2xAPP8dBsCoU0KuF8= -github.com/opentracing/opentracing-go v1.1.0 h1:pWlfV3Bxv7k65HYwkikxat0+s3pV4bsqf19k25Ur8rU= -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/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pelletier/go-toml v1.8.1/go.mod h1:T2/BmBdy8dvIRq1a/8aqjN41wvWlN4lrapLU/GW4pbc= -github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= -github.com/pelletier/go-toml v1.9.4 h1:tjENF6MfZAg8e4ZmZTeWaWiT2vXtsoO6+iuOjFhECwM= -github.com/pelletier/go-toml v1.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= -github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.8.1-0.20171018195549-f15c970de5b7/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/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= -github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= -github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= -github.com/prometheus/client_golang v0.0.0-20180209125602-c332b6f63c06/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.0-pre1.0.20180209125602-c332b6f63c06/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -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.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= -github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.11.0 h1:HNkLOAEQMIDv/K+04rukrLx6ch7msSRwf3/SASFAGtQ= -github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_model v0.0.0-20171117100541-99fa1f4be8e5/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -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 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= -github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/common v0.0.0-20180110214958-89604d197083/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -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.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= -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.28.0 h1:vGVfV9KrDTvWt5boZO0I19g2E3CsWfpPPKZM9dt3mEw= -github.com/prometheus/common v0.28.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= -github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -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.0-20190522114515-bc1a522cf7b1/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= -github.com/prometheus/procfs v0.0.5/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= -github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= -github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.6.0 h1:mxy4L2jP6qMonqmq+aTtOx1ifVWUgG/TAmntgbh3xv4= -github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= -github.com/rancher/k3d/v5 v5.2.2 h1:9F+wqmRZz5Gl7o70g0OSPLYVyCOrz/rJPVQhxmaI2Bo= -github.com/rancher/k3d/v5 v5.2.2/go.mod h1:wf9CUngX+Klerdc1rKlQV5OKzTQesCwoYGDMcB56DLQ= -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/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/safchain/ethtool v0.0.0-20190326074333-42ed695e3de8/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4= -github.com/sagikazarmark/crypt v0.1.0/go.mod h1:B/mN0msZuINBtQ1zZLEQcegFJJf9vnYIR88KRMEuODE= -github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= -github.com/sclevine/spec v1.2.0/go.mod h1:W4J29eT/Kzv7/b9IWLB055Z+qvVC9vt0Arko24q7p+U= -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/sirupsen/logrus v1.0.4-0.20170822132746-89742aefa4b2/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= -github.com/sirupsen/logrus v1.0.6/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= -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.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE= -github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -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/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -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.6.0 h1:xoax2sJ2DT8S8xA2paPFjDCScCNeWsg75VG0DLRreiY= -github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= -github.com/spf13/cast v0.0.0-20150508191742-4d07383ffe94/go.mod h1:r2rcYCSwa1IExKTDiTfzaxqT2FNHs8hODu4LnUfgKEg= -github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.4.1 h1:s0hze+J0196ZfEMTs80N7UlFt0BDuQ7Q+JDnHiMWKdA= -github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cobra v0.0.1/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/cobra v0.0.2-0.20171109065643-2da4a54c5cee/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/cobra v0.0.3/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.2.1 h1:+KmjbUw1hriSNMF55oPrkZcb27aECyrj8V2ytv7kWDw= -github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk= -github.com/spf13/jwalterweatherman v0.0.0-20141219030609-3d60171a6431/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= -github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= -github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.0/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.1-0.20171106142849-4c012f6dcd95/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.1/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 v0.0.0-20150530192845-be5ff3e4840c/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.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= -github.com/spf13/viper v1.9.0 h1:yR6EXjTp0y0cLN8OZg1CRZmOBdI88UcGkhgyJhu6nZk= -github.com/spf13/viper v1.9.0/go.mod h1:+i6ajR7OX2XaiBkrcZJFK21htRk7eDeLg7+O6bhUPP4= -github.com/stefanberger/go-pkcs11uri v0.0.0-20201008174630-78d3cae3a980/go.mod h1:AO3tvPzVZ/ayst6UlUKUv6rcPQInYe3IknH3jYhAKu8= -github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= -github.com/stretchr/objx v0.0.0-20180129172003-8a3f7159479f/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= -github.com/stretchr/testify v0.0.0-20180303142811-b89eecf5ca5d/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= -github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= -github.com/syndtr/gocapability v0.0.0-20170704070218-db04d3cc01c8/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= -github.com/syndtr/gocapability v0.0.0-20180916011248-d98352740cb2/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= -github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= -github.com/tchap/go-patricia v2.2.6+incompatible/go.mod h1:bmLyhP68RS6kStMGxByiQ23RP/odRBOTVjwp2cDyi6I= -github.com/theupdateframework/notary v0.7.0 h1:QyagRZ7wlSpjT5N2qQAh/pN+DVqgekv4DzbAiAiEL3c= -github.com/theupdateframework/notary v0.7.0/go.mod h1:c9DRxcmhHmVLDay4/2fUYdISnHqbFDGRSlXPO0AhYWw= -github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tv42/httpunix v0.0.0-20191220191345-2ba4b9c3382c/go.mod h1:hzIxponao9Kjc7aWznkXaL4U4TWaDSs8zcsY4Ka08nM= -github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= -github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= -github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= -github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/vishvananda/netlink v0.0.0-20181108222139-023a6dafdcdf/go.mod h1:+SR5DhBJrl6ZM7CoCKvpw5BKroDKQ+PJqOg65H/2ktk= -github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= -github.com/vishvananda/netlink v1.1.1-0.20201029203352-d40f9887b852/go.mod h1:twkDnbuQxJYemMlGd4JFIcuhgX83tXhKS2B/PRMpOho= -github.com/vishvananda/netns v0.0.0-20180720170159-13995c7128cc/go.mod h1:ZjcWmFBXmLKZu9Nxj3WKYEafiSqer2rnvPr0en9UNpI= -github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= -github.com/vishvananda/netns v0.0.0-20200728191858-db3c7e526aae/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0= -github.com/willf/bitset v1.1.11-0.20200630133818-d5bec3311243/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= -github.com/willf/bitset v1.1.11/go.mod h1:83CECat5yLh5zVOf4P1ErAgKA5UDvKtgyUABdr3+MjI= -github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= -github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo= -github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= -github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0= -github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= -github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f/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/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= -github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43/go.mod h1:aX5oPXxHm3bOH+xeAttToC8pqch2ScQN/JoXYupl6xs= -github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50/go.mod h1:NUSPSUX/bi6SeDMUh6brw0nXpxHnc96TguQh0+r/ssA= -github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f/go.mod h1:GlGEuHIJweS1mbCqG+7vt2nvWLzLLnRHbXz5JKd/Qbg= -go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= -go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= -go.etcd.io/etcd v0.5.0-alpha.5.0.20200910180754-dd1b699fc489/go.mod h1:yVHk9ub3CSBatqGNg7GRmsnfLWtoW60w4eDYfh7vHDg= -go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= -go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= -go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= -go.etcd.io/etcd/client/v3 v3.5.0/go.mod h1:AIKXXVX/DQXtfTEqBryiLTUXwON+GuvO6Z7lLS/oTh0= -go.etcd.io/etcd/pkg/v3 v3.5.0/go.mod h1:UzJGatBQ1lXChBkQF0AuAtkRQMYnHubxAEYIrC3MSsE= -go.etcd.io/etcd/raft/v3 v3.5.0/go.mod h1:UFOHSIvO/nKwd4lhkwabrTD3cqW5yVyYYf/KlD00Szc= -go.etcd.io/etcd/server/v3 v3.5.0/go.mod h1:3Ah5ruV+M+7RZr0+Y/5mNLwC+eQlni+mQmOVdCRJoS4= -go.mozilla.org/pkcs7 v0.0.0-20200128120323-432b2356ecb1/go.mod h1:SNgMg+EgDFwmvSmLRTNKC5fegJjB7v23qTQ0XLGUNHk= -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.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= -go.opencensus.io v0.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M= -go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= -go.opentelemetry.io/contrib v0.20.0/go.mod h1:G/EtFaa6qaN7+LxqfIAT3GiZa7Wv5DTBUzl5H4LY0Kc= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.20.0/go.mod h1:oVGt1LRbBOBq1A5BQLlUg9UaU/54aiHw8cgjV3aWZ/E= -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.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= -go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= -go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= -go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= -go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= -go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= -go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= -go.uber.org/zap v1.19.1 h1:ue41HOKd1vGURxrmeKIgELGb3jPW9DMUDGtsinblHwI= -go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= -go4.org/intern v0.0.0-20210108033219-3eb7198706b2 h1:VFTf+jjIgsldaz/Mr00VaCSswHJrI2hIjQygE/W4IMg= -go4.org/intern v0.0.0-20210108033219-3eb7198706b2/go.mod h1:vLqJ+12kCw61iCWsPto0EOHhBS+o4rO5VIucbc9g2Cc= -go4.org/unsafe/assume-no-moving-gc v0.0.0-20201222175341-b30ae309168e/go.mod h1:FftLjUGFEDu5k8lt0ddY+HcrH/qU/0qk+H8j9/nTl3E= -go4.org/unsafe/assume-no-moving-gc v0.0.0-20201222180813-1025295fd063 h1:1tk03FUNpulq2cuWpXZWj649rwJpk0d20rxWiopKRmc= -go4.org/unsafe/assume-no-moving-gc v0.0.0-20201222180813-1025295fd063/go.mod h1:FftLjUGFEDu5k8lt0ddY+HcrH/qU/0qk+H8j9/nTl3E= -golang.org/x/crypto v0.0.0-20171113213409-9f005a07e0d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181009213950-7c1a557ab941/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-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= -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-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201117144127-c1f2f97bffc9/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-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= -golang.org/x/crypto v0.0.0-20210817164053-32db794688a5 h1:HWj/xjIHfjYU5nVXpTM0s39J9CbLn7Cc5a7IC5rwsMQ= -golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= -golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= -golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -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-20201208152925-83fdc39ff7b5/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= -golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -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-20181011144130-49bb7cea24b1/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-20190619014844-b5b0513f8c1b/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-20190628185345-da137c7871d7/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-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/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-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200513185701-a91f0712d120/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-20200520182314-0ba52f642ac2/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-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201006153459-a7d1128ccaa0/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/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-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= -golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210520170846-37e1c6afe023/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210825183410-e898025ed96a/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211111160137-58aab5ef257a h1:c83jeVQW0KGKNaKBRfelNYNHaev+qawl9yaA825s8XE= -golang.org/x/net v0.0.0-20211111160137-58aab5ef257a/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f h1:Qmd2pbz05z7z6lm0DrgQVVPuBm92jqujBKMHMOlOQEw= -golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -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-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/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 h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -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-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190514135907-3a4b5fb9f71f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190522044717-8097e1b27ff5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190602015325-4c4f7f33c9ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190812073006-9eafafc0a87e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191115151921-52ab43148777/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-20191210023423-ac6580df4449/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-20200120151820-655fe14d7479/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/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-20200217220822-9197077df867/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-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200728102440-3e129f6d46b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200817155316-9781c653f443/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200831180312-196b9ba8737a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200916030750-2334cc1a136f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200922070232-aee5d888a860/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201112073958-5cba982894dd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201117170446-d9b008d0a637/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201202213521-69691e467435/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/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-20210514084401-e8d321eab015/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-20210603125802-9665404d3644/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-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210831042530-f4d43177bf5e/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-20211029165221-6e7872819dc8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211112143042-c6105e7cf70d h1:jp6PtFmjL+vGsuzd86xYqaJGv6eXdLvmVGzVVLI6EPI= -golang.org/x/sys v0.0.0-20211112143042-c6105e7cf70d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -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-20210615171337-6886f2dfbf5b h1:9zKuko04nR4gjZ4+DNjHqRlAJqbJETHwiNKDqTfOjfE= -golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -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 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -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-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac h1:7zkz7BUtwNFFqcowJ+RIgu2MaV/MapERkDIy+mwPyjs= -golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -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-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/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-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-20190614205625-5aca471b1d59/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-20190706070813-72ffa07ba3db/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= -golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/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= -golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -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-20200227222343-706bc42d1f0d/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-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200616133436-c1934b75d054/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/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-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20200916195026-c9a70fc28ce3/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= -golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= -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.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.6-0.20210820212750-d4cc65f0b2ff/go.mod h1:YD9qOF0M9xpSpdWTBbzEl5e/RnCefISl8E5Noe10jFM= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gomodules.xyz/jsonpatch/v2 v2.2.0 h1:4pT439QV83L+G9FkcCriY6EkpcK6r6bK+A5FBUMI7qY= -gomodules.xyz/jsonpatch/v2 v2.2.0/go.mod h1:WXp+iVDkoLQqPudfQ9GBlwB2eZ5DKOnjQZCYdOS8GPY= -google.golang.org/api v0.0.0-20160322025152-9bf6e6e569ff/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= -google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= -google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= -google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -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.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= -google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= -google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= -google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= -google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= -google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= -google.golang.org/api v0.44.0/go.mod h1:EBOGZqzyhtvMDoxwS97ctnh0zUmYY6CxqXsc1AvkYD8= -google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= -google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= -google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= -google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= -google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= -google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -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= -google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= -google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= -google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/cloud v0.0.0-20151119220103-975617b05ea8/go.mod h1:0H1ncTHf11KCFhTc/+EFRbzSCOZx+VUbRMk55Yv5MYk= -google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190522204451-c2c4e71fbf69/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= -google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200117163144-32f20d992d24/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -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-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200527145253-8367513e4ece/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201019141844-1ed22bb0c154/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201102152239-715cce707fb0/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201110150050-8816d57aaa9a/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= -google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= -google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= -google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20211112145013-271947fe86fd h1:8jqRgiTTWyKMDOM2AvhjA5dZLBSKXg1yFupPRBV/4fQ= -google.golang.org/genproto v0.0.0-20211112145013-271947fe86fd/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/grpc v0.0.0-20160317175043-d3ddb4469d5a/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= -google.golang.org/grpc v1.0.5/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.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA= -google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= -google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= -google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= -google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.42.0 h1:XT2/MFpuPFsEX2fWh3YQtHkZ+WYZFQRfaUgLZYj/p6A= -google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= -google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= -google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= -google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= -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.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= -google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= -gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= -gopkg.in/cenkalti/backoff.v2 v2.2.1 h1:eJ9UAg01/HIHG987TwxvnzK2MgxXq97YY6rYDpY9aII= -gopkg.in/cenkalti/backoff.v2 v2.2.1/go.mod h1:S0QdOvT2AlerfSBkp0O+dk+bbIMaNbEmVk876gPCthU= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20141024133853-64131543e789/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 h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= -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/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= -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.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.63.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.64.0 h1:Mj2zXEXcNb5joEiSA0zc3HZpTst/iyjNiR4CN8tDzOg= -gopkg.in/ini.v1 v1.64.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -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/rethinkdb/rethinkdb-go.v6 v6.2.1 h1:d4KQkxAaAiRY2h5Zqis161Pv91A37uZyJOx73duwUwM= -gopkg.in/rethinkdb/rethinkdb-go.v6 v6.2.1/go.mod h1:WbjuEoo1oadwzQ4apSDU+JTvmllEHtsNHS6y7vFc7iw= -gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= -gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= -gopkg.in/square/go-jose.v2 v2.5.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= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= -gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= -gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= -gotest.tools/v3 v3.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0= -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= -honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -inet.af/netaddr v0.0.0-20210903134321-85fa6c94624e h1:tvgqez5ZQoBBiBAGNU/fmJy247yB/7++kcLOEoMYup0= -inet.af/netaddr v0.0.0-20210903134321-85fa6c94624e/go.mod h1:z0nx+Dh+7N7CC8V5ayHtHGpZpxLQZZxkIaaz6HN65Ls= -k8s.io/api v0.20.1/go.mod h1:KqwcCVogGxQY3nBlRpwt+wpAMF/KjaCc7RpywacvqUo= -k8s.io/api v0.20.4/go.mod h1:++lNL1AJMkDymriNniQsWRkMDzRaX2Y/POTUi8yvqYQ= -k8s.io/api v0.20.6/go.mod h1:X9e8Qag6JV/bL5G6bU8sdVRltWKmdHsFUGS3eVndqE8= -k8s.io/api v0.22.3/go.mod h1:azgiXFiXqiWyLCfI62/eYBOu19rj2LKmIhFPP4+33fs= -k8s.io/api v0.23.0 h1:WrL1gb73VSC8obi8cuYETJGXEoFNEh3LU0Pt+Sokgro= -k8s.io/api v0.23.0/go.mod h1:8wmDdLBHBNxtOIytwLstXt5E9PddnZb0GaMcqsvDBpg= -k8s.io/apiextensions-apiserver v0.23.0 h1:uii8BYmHYiT2ZTAJxmvc3X8UhNYMxl2A0z0Xq3Pm+WY= -k8s.io/apiextensions-apiserver v0.23.0/go.mod h1:xIFAEEDlAZgpVBl/1VSjGDmLoXAWRG40+GsWhKhAxY4= -k8s.io/apimachinery v0.20.1/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= -k8s.io/apimachinery v0.20.4/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= -k8s.io/apimachinery v0.20.6/go.mod h1:ejZXtW1Ra6V1O5H8xPBGz+T3+4gfkTCeExAHKU57MAc= -k8s.io/apimachinery v0.22.3/go.mod h1:O3oNtNadZdeOMxHFVxOreoznohCpy0z6mocxbZr7oJ0= -k8s.io/apimachinery v0.23.0 h1:mIfWRMjBuMdolAWJ3Fd+aPTMv3X9z+waiARMpvvb0HQ= -k8s.io/apimachinery v0.23.0/go.mod h1:fFCTTBKvKcwTPFzjlcxp91uPFZr+JA0FubU4fLzzFYc= -k8s.io/apiserver v0.20.1/go.mod h1:ro5QHeQkgMS7ZGpvf4tSMx6bBOgPfE+f52KwvXfScaU= -k8s.io/apiserver v0.20.4/go.mod h1:Mc80thBKOyy7tbvFtB4kJv1kbdD0eIH8k8vianJcbFM= -k8s.io/apiserver v0.20.6/go.mod h1:QIJXNt6i6JB+0YQRNcS0hdRHJlMhflFmsBDeSgT1r8Q= -k8s.io/apiserver v0.23.0/go.mod h1:Cec35u/9zAepDPPFyT+UMrgqOCjgJ5qtfVJDxjZYmt4= -k8s.io/client-go v0.20.1/go.mod h1:/zcHdt1TeWSd5HoUe6elJmHSQ6uLLgp4bIJHVEuy+/Y= -k8s.io/client-go v0.20.4/go.mod h1:LiMv25ND1gLUdBeYxBIwKpkSC5IsozMMmOOeSJboP+k= -k8s.io/client-go v0.20.6/go.mod h1:nNQMnOvEUEsOzRRFIIkdmYOjAZrC8bgq0ExboWSU1I0= -k8s.io/client-go v0.22.3/go.mod h1:ElDjYf8gvZsKDYexmsmnMQ0DYO8W9RwBjfQ1PI53yow= -k8s.io/client-go v0.23.0 h1:vcsOqyPq7XV3QmQRCBH/t9BICJM9Q1M18qahjv+rebY= -k8s.io/client-go v0.23.0/go.mod h1:hrDnpnK1mSr65lHHcUuIZIXDgEbzc7/683c6hyG4jTA= -k8s.io/code-generator v0.19.7/go.mod h1:lwEq3YnLYb/7uVXLorOJfxg+cUu2oihFhHZ0n9NIla0= -k8s.io/code-generator v0.23.0/go.mod h1:vQvOhDXhuzqiVfM/YHp+dmg10WDZCchJVObc9MvowsE= -k8s.io/component-base v0.20.1/go.mod h1:guxkoJnNoh8LNrbtiQOlyp2Y2XFCZQmrcg2n/DeYNLk= -k8s.io/component-base v0.20.4/go.mod h1:t4p9EdiagbVCJKrQ1RsA5/V4rFQNDfRlevJajlGwgjI= -k8s.io/component-base v0.20.6/go.mod h1:6f1MPBAeI+mvuts3sIdtpjljHWBQ2cIy38oBIWMYnrM= -k8s.io/component-base v0.23.0/go.mod h1:DHH5uiFvLC1edCpvcTDV++NKULdYYU6pR9Tt3HIKMKI= -k8s.io/cri-api v0.17.3/go.mod h1:X1sbHmuXhwaHs9xxYffLqJogVsnI+f6cPRcgPel7ywM= -k8s.io/cri-api v0.20.1/go.mod h1:2JRbKt+BFLTjtrILYVqQK5jqhI+XNdF6UiGMgczeBCI= -k8s.io/cri-api v0.20.4/go.mod h1:2JRbKt+BFLTjtrILYVqQK5jqhI+XNdF6UiGMgczeBCI= -k8s.io/cri-api v0.20.6/go.mod h1:ew44AjNXwyn1s0U4xCKGodU7J1HzBeZ1MpGrpa5r8Yc= -k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20201113003025-83324d819ded/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= -k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/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.4.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/klog/v2 v2.30.0 h1:bUO6drIvCIsvZ/XFgfxoGFQU/a4Qkh0iAlvUR7vlHJw= -k8s.io/klog/v2 v2.30.0/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6/go.mod h1:UuqjUnNftUyPE5H64/qeyjQoUZhGpeFDVdxjTeEVN2o= -k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd/go.mod h1:WOJ3KddDSol4tAGcJo0Tvi+dK12EcqSLqcWsryKMpfM= -k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= -k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65 h1:E3J9oCLlaobFUqsjG9DfKbP2BmgwBL2p7pn0A3dG9W4= -k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65/go.mod h1:sX9MT8g7NVZM5lVL/j8QyCCJe8YSMW30QvGZWaCIDIk= -k8s.io/kubernetes v1.13.0/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk= -k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20210819203725-bdf08cb9a70a/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20210930125809-cb0fa318a74b h1:wxEMGetGMur3J1xuGLQY7GEQYg9bZxKn3tKo5k/eYcs= -k8s.io/utils v0.0.0-20210930125809-cb0fa318a74b/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -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/apiserver-network-proxy/konnectivity-client v0.0.14/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= -sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.15/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= -sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.25/go.mod h1:Mlj9PNLmG9bZ6BHFwFKDo5afkpWyUISkb9Me0GnK66I= -sigs.k8s.io/controller-runtime v0.11.0 h1:DqO+c8mywcZLFJWILq4iktoECTyn30Bkj0CwgqMpZWQ= -sigs.k8s.io/controller-runtime v0.11.0/go.mod h1:KKwLiTooNGu+JmLZGn9Sl3Gjmfj66eMbCQznLP5zcqA= -sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6 h1:fD1pz4yfdADVNfFmcP2aBEtudwUQ1AlLnRBALr33v3s= -sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6/go.mod h1:p4QtZmO4uMYipTQNzagwnNoseA6OxSUutVw05NhYDRs= -sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= -sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= -sigs.k8s.io/structured-merge-diff/v4 v4.0.3/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= -sigs.k8s.io/structured-merge-diff/v4 v4.1.2/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4= -sigs.k8s.io/structured-merge-diff/v4 v4.2.0 h1:kDvPBbnPk+qYmkHmSo8vKGp438IASWofnbbUKDE/bv0= -sigs.k8s.io/structured-merge-diff/v4 v4.2.0/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4= -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.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= -sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= diff --git a/go.mod b/go.mod index 7234e81fcc36..cd470f6147f8 100644 --- a/go.mod +++ b/go.mod @@ -1,17 +1,16 @@ module github.com/grafana/agent -go 1.16 +go 1.17 require ( - cloud.google.com/go/pubsub v1.5.0 // indirect - cloud.google.com/go/storage v1.15.0 // indirect contrib.go.opencensus.io/exporter/prometheus v0.4.0 github.com/Shopify/sarama v1.30.0 github.com/cortexproject/cortex v1.10.1-0.20211014125347-85c378182d0d github.com/davidmparrott/kafka_exporter/v2 v2.0.1 + github.com/docker/docker v20.10.10+incompatible + github.com/docker/go-connections v0.4.0 github.com/drone/envsubst/v2 v2.0.0-20210730161058-179042472c46 github.com/fatih/structs v1.1.0 - github.com/go-kit/kit v0.12.0 github.com/go-kit/log v0.2.0 github.com/go-logfmt/logfmt v0.5.1 github.com/go-logr/logr v1.0.0 @@ -26,12 +25,9 @@ require ( github.com/grafana/loki v1.6.2-0.20211021114919-0ae0d4da122d github.com/hashicorp/consul/api v1.11.0 github.com/hashicorp/go-cleanhttp v0.5.2 - github.com/hashicorp/go-getter v1.5.3 - github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/infinityworks/github-exporter v0.0.0-20201016091012-831b72461034 github.com/jsternberg/zap-logfmt v1.2.0 github.com/lib/pq v1.10.1 - github.com/lufia/iostat v1.2.1 // indirect github.com/miekg/dns v1.1.43 github.com/mitchellh/reflectwalk v1.0.2 github.com/ncabatoff/process-exporter v0.7.5 @@ -67,6 +63,7 @@ require ( github.com/prometheus/procfs v0.7.4-0.20211011103944-1a7a2bd3279f github.com/prometheus/prometheus v1.8.2-0.20211102100715-d4c83da6d252 github.com/prometheus/statsd_exporter v0.22.2 + github.com/rancher/k3d/v5 v5.2.2 github.com/sirupsen/logrus v1.8.1 github.com/spf13/cobra v1.2.1 github.com/stretchr/testify v1.7.0 @@ -86,12 +83,281 @@ require ( gopkg.in/yaml.v2 v2.4.0 gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b k8s.io/api v0.22.3 + k8s.io/apiextensions-apiserver v0.21.0 k8s.io/apimachinery v0.22.3 k8s.io/client-go v12.0.0+incompatible k8s.io/klog/v2 v2.20.0 k8s.io/utils v0.0.0-20211116205334-6203023598ed sigs.k8s.io/controller-runtime v0.9.0-beta.5 - sigs.k8s.io/yaml v1.2.0 + sigs.k8s.io/yaml v1.3.0 +) + +require ( + cloud.google.com/go v0.97.0 // indirect + cloud.google.com/go/pubsub v1.5.0 // indirect + github.com/Azure/azure-sdk-for-go v58.2.0+incompatible // indirect + github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect + github.com/Azure/go-autorest v14.2.0+incompatible // indirect + github.com/Azure/go-autorest/autorest v0.11.21 // indirect + github.com/Azure/go-autorest/autorest/adal v0.9.16 // indirect + github.com/Azure/go-autorest/autorest/date v0.3.0 // indirect + github.com/Azure/go-autorest/autorest/to v0.4.0 // indirect + github.com/Azure/go-autorest/autorest/validation v0.3.1 // indirect + github.com/Azure/go-autorest/logger v0.2.1 // indirect + github.com/Azure/go-autorest/tracing v0.6.0 // indirect + github.com/Masterminds/goutils v1.1.1 // indirect + github.com/Masterminds/semver/v3 v3.1.1 // indirect + github.com/Masterminds/sprig/v3 v3.2.2 // indirect + github.com/Microsoft/go-winio v0.5.1 // indirect + github.com/Microsoft/hcsshim v0.9.1 // indirect + github.com/StackExchange/wmi v1.2.1 // indirect + github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 // indirect + github.com/alecthomas/units v0.0.0-20210927113745-59d0afb8317a // indirect + github.com/apache/thrift v0.15.0 // indirect + github.com/armon/go-metrics v0.3.9 // indirect + github.com/aws/aws-sdk-go v1.42.9 // indirect + github.com/beevik/ntp v0.3.0 // indirect + github.com/beorn7/perks v1.0.1 // indirect + github.com/bits-and-blooms/bitset v1.2.0 // indirect + github.com/blang/semver v3.5.2-0.20180723201105-3c1074078d32+incompatible // indirect + github.com/bmatcuk/doublestar v1.2.2 // indirect + github.com/buger/jsonparser v1.1.1 // indirect + github.com/c2h5oh/datasize v0.0.0-20200112174442-28bbd4740fee // indirect + github.com/cenkalti/backoff/v4 v4.1.2 // indirect + github.com/census-instrumentation/opencensus-proto v0.3.0 // indirect + github.com/cespare/xxhash/v2 v2.1.2 // indirect + github.com/checkpoint-restore/go-criu/v5 v5.0.0 // indirect + github.com/cilium/ebpf v0.7.0 // indirect + github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1 // indirect + github.com/containerd/cgroups v1.0.2 // indirect + github.com/containerd/console v1.0.2 // indirect + github.com/containerd/containerd v1.5.8 // indirect + github.com/containerd/ttrpc v1.1.0 // indirect + github.com/coreos/etcd v3.3.25+incompatible // indirect + github.com/coreos/go-semver v0.3.0 // indirect + github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf // indirect + github.com/coreos/go-systemd/v22 v22.3.2 // indirect + github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f // indirect + github.com/cyphar/filepath-securejoin v0.2.2 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/dennwc/varint v1.0.0 // indirect + github.com/digitalocean/godo v1.69.1 // indirect + github.com/dimchansky/utfbom v1.1.1 // indirect + github.com/docker/cli v20.10.10+incompatible // indirect + github.com/docker/distribution v2.7.1+incompatible // indirect + github.com/docker/docker-credential-helpers v0.6.4 // indirect + github.com/docker/go v1.5.1-1.0.20160303222718-d30aec9fd63c // indirect + github.com/docker/go-metrics v0.0.1 // indirect + github.com/docker/go-units v0.4.0 // indirect + github.com/dustin/go-humanize v1.0.0 // indirect + github.com/eapache/go-resiliency v1.2.0 // indirect + github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 // indirect + github.com/eapache/queue v1.1.0 // indirect + github.com/edsrzf/mmap-go v1.0.0 // indirect + github.com/ema/qdisc v0.0.0-20200603082823-62d0308e3e00 // indirect + github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021 // indirect + github.com/envoyproxy/protoc-gen-validate v0.6.1 // indirect + github.com/euank/go-kmsg-parser v2.0.0+incompatible // indirect + github.com/evanphx/json-patch v4.9.0+incompatible // indirect + github.com/fatih/color v1.12.0 // indirect + github.com/felixge/fgprof v0.9.1 // indirect + github.com/felixge/httpsnoop v1.0.2 // indirect + github.com/fsnotify/fsnotify v1.5.1 // indirect + github.com/fvbommel/sortorder v1.0.2 // indirect + github.com/go-kit/kit v0.12.0 // indirect + github.com/go-ole/go-ole v1.2.6 // indirect + github.com/go-resty/resty/v2 v2.1.1-0.20191201195748-d7b97669fe48 // indirect + github.com/go-stack/stack v1.8.0 // indirect + github.com/go-test/deep v1.0.8 // indirect + github.com/go-zookeeper/zk v1.0.2 // indirect + github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e // indirect + github.com/godbus/dbus/v5 v5.0.4 // indirect + github.com/gofrs/uuid v4.0.0+incompatible // indirect + github.com/gogo/googleapis v1.4.1 // indirect + github.com/gogo/status v1.1.0 // indirect + github.com/golang-jwt/jwt/v4 v4.0.0 // indirect + github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect + github.com/golang/snappy v0.0.4 // indirect + github.com/gomodule/redigo v2.0.0+incompatible // indirect + github.com/google/btree v1.0.1 // indirect + github.com/google/go-cmp v0.5.6 // indirect + github.com/google/go-querystring v1.0.0 // indirect + github.com/google/gofuzz v1.1.0 // indirect + github.com/google/pprof v0.0.0-20211008130755-947d60d73cc0 // indirect + github.com/google/uuid v1.3.0 // indirect + github.com/googleapis/gax-go/v2 v2.1.1 // indirect + github.com/googleapis/gnostic v0.5.4 // indirect + github.com/gophercloud/gophercloud v0.22.0 // indirect + github.com/grobie/gomemcache v0.0.0-20201204163352-08d7c80fcac6 // indirect + github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect + github.com/grpc-ecosystem/grpc-gateway v1.16.0 // indirect + github.com/hashicorp/errwrap v1.0.0 // indirect + github.com/hashicorp/go-envparse v0.0.0-20200406174449-d9cfd743a15e // indirect + github.com/hashicorp/go-hclog v0.16.2 // indirect + github.com/hashicorp/go-immutable-radix v1.3.1 // indirect + github.com/hashicorp/go-msgpack v0.5.5 // indirect + github.com/hashicorp/go-multierror v1.1.1 // indirect + github.com/hashicorp/go-rootcerts v1.0.2 // indirect + github.com/hashicorp/go-sockaddr v1.0.2 // indirect + github.com/hashicorp/go-uuid v1.0.2 // indirect + github.com/hashicorp/golang-lru v0.5.4 // indirect + github.com/hashicorp/hcl v1.0.0 // indirect + github.com/hashicorp/memberlist v0.2.4 // indirect + github.com/hashicorp/serf v0.9.5 // indirect + github.com/hetznercloud/hcloud-go v1.32.0 // indirect + github.com/hodgesds/perf-utils v0.4.0 // indirect + github.com/hpcloud/tail v1.0.0 // indirect + github.com/huandu/xstrings v1.3.1 // indirect + github.com/illumos/go-kstat v0.0.0-20210513183136-173c9b0a9973 // indirect + github.com/imdario/mergo v0.3.12 // indirect + github.com/inconshreveable/mousetrap v1.0.0 // indirect + github.com/infinityworks/go-common v0.0.0-20170820165359-7f20a140fd37 // indirect + github.com/influxdata/go-syslog/v3 v3.0.1-0.20201128200927-a1889d947b48 // indirect + github.com/influxdata/telegraf v1.16.3 // indirect + github.com/jaegertracing/jaeger v1.28.0 // indirect + github.com/jcmturner/aescts/v2 v2.0.0 // indirect + github.com/jcmturner/dnsutils/v2 v2.0.0 // indirect + github.com/jcmturner/gofork v1.0.0 // indirect + github.com/jcmturner/gokrb5/v8 v8.4.2 // indirect + github.com/jcmturner/rpc/v2 v2.0.3 // indirect + github.com/jmespath/go-jmespath v0.4.0 // indirect + github.com/josharian/native v0.0.0-20200817173448-b6b71def0850 // indirect + github.com/jpillora/backoff v1.0.0 // indirect + github.com/jsimonetti/rtnetlink v0.0.0-20211022192332-93da33804786 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/karrick/godirwalk v1.16.1 // indirect + github.com/klauspost/compress v1.13.6 // indirect + github.com/knadh/koanf v1.3.2 // indirect + github.com/kolo/xmlrpc v0.0.0-20201022064351-38db28db192b // indirect + github.com/krallistic/kazoo-go v0.0.0-20170526135507-a15279744f4e // indirect + github.com/leodido/ragel-machinery v0.0.0-20181214104525-299bdde78165 // indirect + github.com/leoluk/perflib_exporter v0.1.0 // indirect + github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de // indirect + github.com/linode/linodego v1.1.0 // indirect + github.com/lufia/iostat v1.2.1 // indirect + github.com/magiconair/properties v1.8.5 // indirect + github.com/mattn/go-colorable v0.1.8 // indirect + github.com/mattn/go-isatty v0.0.14 // indirect + github.com/mattn/go-runewidth v0.0.9 // indirect + github.com/mattn/go-xmlrpc v0.0.3 // indirect + github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect + github.com/mdlayher/genetlink v1.0.0 // indirect + github.com/mdlayher/netlink v1.4.1 // indirect + github.com/mdlayher/socket v0.0.0-20210307095302-262dc9984e00 // indirect + github.com/mdlayher/wifi v0.0.0-20200527114002-84f0b9457fdd // indirect + github.com/miekg/pkcs11 v1.0.3 // indirect + github.com/mindprince/gonvml v0.0.0-20190828220739-9ebdce4bb989 // indirect + github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible // indirect + github.com/mitchellh/copystructure v1.2.0 // indirect + github.com/mitchellh/go-homedir v1.1.0 // indirect + github.com/mitchellh/mapstructure v1.4.2 // indirect + github.com/moby/sys/mount v0.3.0 // indirect + github.com/moby/sys/mountinfo v0.5.0 // indirect + github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/morikuni/aec v1.0.0 // indirect + github.com/mostynb/go-grpc-compression v1.1.15 // indirect + github.com/mrunalp/fileutils v0.5.0 // indirect + github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f // indirect + github.com/ncabatoff/go-seq v0.0.0-20180805175032-b08ef85ed833 // indirect + github.com/oklog/ulid v1.3.1 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/kafkaexporter v0.40.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.40.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/sharedcomponent v0.40.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/batchpersignal v0.40.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.40.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/jaeger v0.40.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/opencensus v0.40.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/zipkin v0.40.0 // indirect + github.com/opencontainers/go-digest v1.0.0 // indirect + github.com/opencontainers/image-spec v1.0.2 // indirect + github.com/opencontainers/runc v1.0.2 // indirect + github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417 // indirect + github.com/opencontainers/selinux v1.8.2 // indirect + github.com/openzipkin/zipkin-go v0.3.0 // indirect + github.com/pelletier/go-toml v1.9.4 // indirect + github.com/percona/exporter_shared v0.7.3 // indirect + github.com/percona/percona-toolkit v0.0.0-20210803120725-d14d18a1bfb6 // indirect + github.com/pierrec/lz4 v2.6.1+incompatible // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/prometheus/client_model v0.2.0 // indirect + github.com/prometheus/common/sigv4 v0.1.0 // indirect + github.com/prometheus/exporter-toolkit v0.7.0 // indirect + github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect + github.com/rs/cors v1.8.0 // indirect + github.com/safchain/ethtool v0.1.0 // indirect + github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da // indirect + github.com/satori/go.uuid v1.2.1-0.20181028125025-b2ce2384e17b // indirect + github.com/scaleway/scaleway-sdk-go v1.0.0-beta.7.0.20210223165440-c65ae3540d44 // indirect + github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 // indirect + github.com/seccomp/libseccomp-golang v0.9.1 // indirect + github.com/sercand/kuberesolver v2.4.0+incompatible // indirect + github.com/shirou/gopsutil v3.21.8+incompatible // indirect + github.com/shopspring/decimal v1.2.0 // indirect + github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749 // indirect + github.com/shurcooL/vfsgen v0.0.0-20200824052919-0d455de96546 // indirect + github.com/soheilhy/cmux v0.1.5 // indirect + github.com/soundcloud/go-runit v0.0.0-20150630195641-06ad41a06c4a // indirect + github.com/spf13/afero v1.6.0 // indirect + github.com/spf13/cast v1.4.1 // indirect + github.com/spf13/jwalterweatherman v1.1.0 // indirect + github.com/spf13/pflag v1.0.5 // indirect + github.com/spf13/viper v1.9.0 // indirect + github.com/stretchr/objx v0.2.0 // indirect + github.com/subosito/gotenv v1.2.0 // indirect + github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635 // indirect + github.com/theupdateframework/notary v0.7.0 // indirect + github.com/tklauser/go-sysconf v0.3.9 // indirect + github.com/tklauser/numcpus v0.3.0 // indirect + github.com/tomnomnom/linkheader v0.0.0-20180905144013-02ca5825eb80 // indirect + github.com/uber/jaeger-lib v2.4.1+incompatible // indirect + github.com/vishvananda/netlink v1.1.1-0.20201029203352-d40f9887b852 // indirect + github.com/vishvananda/netns v0.0.0-20200728191858-db3c7e526aae // indirect + github.com/weaveworks/promrus v1.2.0 // indirect + github.com/xdg-go/pbkdf2 v1.0.0 // indirect + github.com/xdg-go/scram v1.0.2 // indirect + github.com/xdg-go/stringprep v1.0.2 // indirect + github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c // indirect + github.com/xdg/stringprep v1.0.0 // indirect + github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect + github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect + github.com/xeipuuv/gojsonschema v1.2.0 // indirect + github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d // indirect + go.etcd.io/etcd v3.3.25+incompatible // indirect + go.etcd.io/etcd/api/v3 v3.5.0 // indirect + go.etcd.io/etcd/client/pkg/v3 v3.5.0 // indirect + go.etcd.io/etcd/client/v3 v3.5.0 // indirect + go.mongodb.org/mongo-driver v1.7.1 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.27.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.27.0 // indirect + go.opentelemetry.io/otel v1.2.0 // indirect + go.opentelemetry.io/otel/internal/metric v0.25.0 // indirect + go.uber.org/goleak v1.1.12 // indirect + go4.org/intern v0.0.0-20210108033219-3eb7198706b2 // indirect + go4.org/unsafe/assume-no-moving-gc v0.0.0-20201222180813-1025295fd063 // indirect + golang.org/x/crypto v0.0.0-20210920023735-84f357641f63 // indirect + golang.org/x/net v0.0.0-20211111160137-58aab5ef257a // indirect + golang.org/x/oauth2 v0.0.0-20211005180243-6b3c2da341f1 // indirect + golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect + golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b // indirect + golang.org/x/text v0.3.7 // indirect + golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac // indirect + gomodules.xyz/jsonpatch/v2 v2.1.0 // indirect + google.golang.org/api v0.59.0 // indirect + google.golang.org/appengine v1.6.7 // indirect + google.golang.org/genproto v0.0.0-20211112145013-271947fe86fd // indirect + google.golang.org/protobuf v1.27.1 // indirect + gopkg.in/fsnotify.v1 v1.4.7 // indirect + gopkg.in/fsnotify/fsnotify.v1 v1.4.7 // indirect + gopkg.in/inf.v0 v0.9.1 // indirect + gopkg.in/ini.v1 v1.64.0 // indirect + gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 // indirect + gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect + inet.af/netaddr v0.0.0-20210903134321-85fa6c94624e // indirect + k8s.io/component-base v0.21.0 // indirect + k8s.io/kube-openapi v0.0.0-20210305001622-591a79e4bda7 // indirect + sigs.k8s.io/structured-merge-diff/v4 v4.1.2 // indirect ) // Replace directives from Prometheus diff --git a/go.sum b/go.sum index 81a773040330..470d91cfec3a 100644 --- a/go.sum +++ b/go.sum @@ -45,7 +45,6 @@ cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1 cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= cloud.google.com/go/firestore v1.6.0/go.mod h1:afJwI0vaXwAG54kI7A//lP/lSPDkQORQuMkv56TxEPU= cloud.google.com/go/kms v1.0.0 h1:YkIeqPXqTAlwXk3Z2/WG0d6h1tqJQjU354WftjEoP9E= -cloud.google.com/go/kms v1.0.0/go.mod h1:nhUehi+w7zht2XrUfvTRNpxrfayBHqP4lu2NSywui/0= 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= @@ -58,8 +57,6 @@ cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0Zeo cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -cloud.google.com/go/storage v1.15.0 h1:Ljj+ZXVEhCr/1+4ZhvtteN1ND7UUsNTlduGclLh8GO0= -cloud.google.com/go/storage v1.15.0/go.mod h1:mjjQMoxxyGH7Jr8K5qrx6N2O0AHsczI61sMNn03GIZI= code.cloudfoundry.org/bytefmt v0.0.0-20190710193110-1eb035ffe2b6/go.mod h1:wN/zk7mhREp/oviagqUXY3EwuHhWyOvAdsn5Y4CzOrc= code.cloudfoundry.org/clock v1.0.0/go.mod h1:QD9Lzhd/ux6eNQVUDVRJX/RKTigpewimNYBi7ivZKY8= collectd.org v0.3.0/go.mod h1:A/8DzQBkF6abtvrT2j/AU/4tiBgJWYyh0y/oB/4MlWE= @@ -82,8 +79,9 @@ github.com/Azure/azure-storage-blob-go v0.8.0/go.mod h1:lPI3aLPpuLTeUwh1sViKXFxw github.com/Azure/azure-storage-blob-go v0.13.0/go.mod h1:pA9kNqtjUeQF2zOSu4s//nUdBD+e64lEuc4sVnuOfNs= github.com/Azure/azure-storage-queue-go v0.0.0-20181215014128-6ed74e755687/go.mod h1:K6am8mT+5iFXgingS9LUc7TmbsW6XBw3nxaRyaMyWc8= github.com/Azure/go-amqp v0.12.6/go.mod h1:qApuH6OFTSKZFmCOxccvAv5rLizBQf4v8pRmG138DPo= -github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78 h1:w+iIsaOQNcT7OZ575w+acHgRric5iCyQh+xv+KJ4HB8= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= +github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= +github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/Azure/go-autorest v10.7.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= github.com/Azure/go-autorest v10.8.1+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= github.com/Azure/go-autorest v10.15.3+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= @@ -95,8 +93,6 @@ github.com/Azure/go-autorest/autorest v0.9.3/go.mod h1:GsRuLYvwzLjjjRoWEIyMUaYq8 github.com/Azure/go-autorest/autorest v0.11.9/go.mod h1:eipySxLmqSyC5s5k1CLupqet0PSENBEDP93LQ9a8QYw= github.com/Azure/go-autorest/autorest v0.11.12/go.mod h1:eipySxLmqSyC5s5k1CLupqet0PSENBEDP93LQ9a8QYw= github.com/Azure/go-autorest/autorest v0.11.17/go.mod h1:eipySxLmqSyC5s5k1CLupqet0PSENBEDP93LQ9a8QYw= -github.com/Azure/go-autorest/autorest v0.11.19/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA= -github.com/Azure/go-autorest/autorest v0.11.20/go.mod h1:o3tqFY+QR40VOlk+pV4d77mORO64jOXSgEnPQgLK6JY= github.com/Azure/go-autorest/autorest v0.11.21 h1:w77zY/9RnUAWcIQyDC0Fc89mCvwftR8F+zsR/OH6enk= github.com/Azure/go-autorest/autorest v0.11.21/go.mod h1:Do/yuMSW/13ayUkcVREpsMHGG+MvV81uzSCFgYPj4tM= github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= @@ -106,9 +102,7 @@ github.com/Azure/go-autorest/autorest/adal v0.8.1/go.mod h1:ZjhuQClTqx435SRJ2iMl github.com/Azure/go-autorest/autorest/adal v0.9.2/go.mod h1:/3SMAM86bP6wC9Ev35peQDUeqFZBMH07vvUOmg4z/fE= github.com/Azure/go-autorest/autorest/adal v0.9.5/go.mod h1:B7KF7jKIeC9Mct5spmyCB/A8CG/sEz1vwIRGv/bbw7A= github.com/Azure/go-autorest/autorest/adal v0.9.11/go.mod h1:nBKAnTomx8gDtl+3ZCJv2v0KACFHWTB2drffI1B68Pk= -github.com/Azure/go-autorest/autorest/adal v0.9.13/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M= github.com/Azure/go-autorest/autorest/adal v0.9.14/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M= -github.com/Azure/go-autorest/autorest/adal v0.9.15/go.mod h1:tGMin8I49Yij6AQ+rvV+Xa/zwxYQB5hmsd6DkfAx2+A= github.com/Azure/go-autorest/autorest/adal v0.9.16 h1:P8An8Z9rH1ldbOLdFpxYorgOt2sywL9V24dAwWHPuGc= github.com/Azure/go-autorest/autorest/adal v0.9.16/go.mod h1:tGMin8I49Yij6AQ+rvV+Xa/zwxYQB5hmsd6DkfAx2+A= github.com/Azure/go-autorest/autorest/azure/auth v0.4.2/go.mod h1:90gmfKdlmKgfjUpnCEpOJzsUEjrWDSLwHIG73tSXddM= @@ -142,24 +136,19 @@ github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUM 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/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= github.com/DATA-DOG/go-sqlmock v1.4.1 h1:ThlnYciV1iM/V0OSF/dtkqWb6xo5qITT1TJBG1MRDJM= github.com/DATA-DOG/go-sqlmock v1.4.1/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= github.com/DataDog/datadog-go v0.0.0-20160329135253-cc2f4770f4d6/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= -github.com/HdrHistogram/hdrhistogram-go v1.0.1/go.mod h1:BWJ+nMSHY3L41Zj7CA3uXnloDp7xxV0YvstAE7nKTaM= github.com/HdrHistogram/hdrhistogram-go v1.1.0/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= github.com/HdrHistogram/hdrhistogram-go v1.1.2 h1:5IcZpTvzydCQeHzK4Ef/D5rrSqwxob0t8PQPMybUNFM= -github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= github.com/Jeffail/gabs v1.1.0/go.mod h1:6xMvQMK4k33lb7GUUpaAPh6nKMmemQeg5d4gn7/bOXc= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= -github.com/Masterminds/semver v1.4.2 h1:WBLTQ37jOCzSLtXNdoo8bNM8876KhNqOKvrlGITgsTc= github.com/Masterminds/semver v1.4.2/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= github.com/Masterminds/semver/v3 v3.1.1 h1:hLg3sBzpNErnxhQtUy/mmLR2I9foDujNK030IGemrRc= github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= -github.com/Masterminds/sprig v2.16.0+incompatible h1:QZbMUPxRQ50EKAq3LFMnxddMu88/EUUG3qmxwtDmPsY= github.com/Masterminds/sprig v2.16.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= github.com/Masterminds/sprig/v3 v3.2.2 h1:17jRggJu518dr3QaafizSXOjKYp94wKfABxUmyxvxX8= github.com/Masterminds/sprig/v3 v3.2.2/go.mod h1:UoaO7Yp8KlPnJIYWTFkMaqPUYKTfGFPhxNuwnnxkKlk= @@ -176,8 +165,9 @@ github.com/Microsoft/go-winio v0.4.16-0.20201130162521-d1ffc52c7331/go.mod h1:XB github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= github.com/Microsoft/go-winio v0.4.17-0.20210211115548-6eac466e5fa3/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= github.com/Microsoft/go-winio v0.4.17-0.20210324224401-5516f17a5958/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= -github.com/Microsoft/go-winio v0.4.17 h1:iT12IBVClFevaf8PuVyi3UmZOVh4OqnaLxDTW2O6j3w= github.com/Microsoft/go-winio v0.4.17/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= +github.com/Microsoft/go-winio v0.5.1 h1:aPJp2QD7OOrhO5tQXqQoGSJc+DjDtWTGLOmNyAm6FgY= +github.com/Microsoft/go-winio v0.5.1/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= github.com/Microsoft/hcsshim v0.8.6/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= github.com/Microsoft/hcsshim v0.8.7-0.20190325164909-8abdbb8205e4/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= github.com/Microsoft/hcsshim v0.8.7/go.mod h1:OHd7sQqRFrYd3RmSgbgji+ctCwkbq2wbEYNSzOYtcBQ= @@ -186,8 +176,10 @@ github.com/Microsoft/hcsshim v0.8.14/go.mod h1:NtVKoYxQuTLx6gEq0L96c9Ju4JbRJ4nY2 github.com/Microsoft/hcsshim v0.8.15/go.mod h1:x38A4YbHbdxJtc0sF6oIz+RG0npwSCAvn69iY6URG00= github.com/Microsoft/hcsshim v0.8.16/go.mod h1:o5/SZqmR7x9JNKsW3pu+nqHm0MF8vbA+VxGOoXdC600= github.com/Microsoft/hcsshim v0.8.18/go.mod h1:+w2gRZ5ReXQhFOrvSQeNfhrYB/dg3oDwTOcER2fw4I4= -github.com/Microsoft/hcsshim v0.8.23 h1:47MSwtKGXet80aIn+7h4YI6fwPmwIghAnsx2aOUrG2M= +github.com/Microsoft/hcsshim v0.8.21/go.mod h1:+w2gRZ5ReXQhFOrvSQeNfhrYB/dg3oDwTOcER2fw4I4= github.com/Microsoft/hcsshim v0.8.23/go.mod h1:4zegtUJth7lAvFyc6cH2gGQ5B3OFQim01nnU2M8jKDg= +github.com/Microsoft/hcsshim v0.9.1 h1:VfDCj+QnY19ktX5TsH22JHcjaZ05RWQiwDbOyEg5ziM= +github.com/Microsoft/hcsshim v0.9.1/go.mod h1:Y/0uV2jUab5kBI7SQgl62at0AVX7uaruzADAVmxm3eM= github.com/Microsoft/hcsshim/test v0.0.0-20201218223536-d3e5debf77da/go.mod h1:5hlzMzRKMLyo42nCZ9oml8AdTlq/0cvIaBv6tK1RehU= github.com/Microsoft/hcsshim/test v0.0.0-20210227013316-43a75bb4edd3/go.mod h1:mw7qgWloBUl75W/gVH3cQszUg1+gUITj7D6NY7ywVnY= github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= @@ -204,6 +196,8 @@ github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdko github.com/SAP/go-hdb v0.12.0/go.mod h1:etBT+FAi1t5k3K3tf5vQTnosgYmhDkRi8jEnQqCnxF0= github.com/SAP/go-hdb v0.14.1/go.mod h1:7fdQLVC2lER3urZLjZCm0AuMQfApof92n3aylBPEkMo= github.com/SermoDigital/jose v0.0.0-20180104203859-803625baeddc/go.mod h1:ARgCUhI1MHQH+ONky/PAtmVHQrP5JlGY0F3poXOp/fA= +github.com/Shopify/logrus-bugsnag v0.0.0-20170309145241-6dbc35f2c30d/go.mod h1:HI8ITrYtUY+O+ZhtlqUnD8+KwNPOyugEhfP9fdUIaEQ= +github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d h1:UrqY+r/OJnIp5u0s1SbQ8dVfLCZJsnvazdBP5hS4iRs= github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod h1:HI8ITrYtUY+O+ZhtlqUnD8+KwNPOyugEhfP9fdUIaEQ= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= github.com/Shopify/sarama v1.27.1/go.mod h1:g5s5osgELxgM+Md9Qni9rzo7Rbt+vvFQI4bt/Mc93II= @@ -220,7 +214,6 @@ github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDO github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8= github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= -github.com/Workiva/go-datastructures v1.0.53/go.mod h1:1yZL+zfsztete+ePzZz/Zb1/t5BnDuE2Ya2MMGhzP6A= github.com/abdullin/seq v0.0.0-20160510034733-d5467c17e7af/go.mod h1:5Jv4cbFiHJMsVxt52+i0Ha45fjshj6wxYr1r19tB9bw= github.com/aerospike/aerospike-client-go v1.27.0/go.mod h1:zj8LBEnWBDOVEIJt8LvaRvDG5ARAoa5dBeHaB472NRc= github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= @@ -247,7 +240,6 @@ github.com/amir/raidman v0.0.0-20170415203553-1ccc43bfb9c9/go.mod h1:eliMa/PW+RD github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= github.com/antihax/optional v0.0.0-20180407024304-ca021399b1a6/go.mod h1:V8iCPQYkqmusNa815XgQio277wI47sdRh1dUOLdyC6Q= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/antonmedv/expr v1.9.0/go.mod h1:5qsM3oLGDND7sDmQGDXHkYfkjYMUX14qsgqmHhwGEk8= github.com/aokoli/goutils v1.0.1/go.mod h1:SijmP0QR8LtwsmDs8Yii5Z/S4trXFGFC2oO5g9DP+DQ= github.com/apache/arrow/go/arrow v0.0.0-20200601151325-b2287a20f230/go.mod h1:QNYViu/X0HXDHw7m3KXzWSVXIbfUvJqBFe6Gj8/pYA0= github.com/apache/arrow/go/arrow v0.0.0-20200923215132-ac86123a3f01/go.mod h1:QNYViu/X0HXDHw7m3KXzWSVXIbfUvJqBFe6Gj8/pYA0= @@ -275,7 +267,6 @@ github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:l github.com/asaskevich/govalidator v0.0.0-20200108200545-475eaeb16496/go.mod h1:oGkLhpf+kjZl6xBf758TQhh5XrAeiJv/7FRz/2spLIg= github.com/asaskevich/govalidator v0.0.0-20200428143746-21a406dcc535/go.mod h1:oGkLhpf+kjZl6xBf758TQhh5XrAeiJv/7FRz/2spLIg= github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= -github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= github.com/aws/aws-sdk-go v1.15.11/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= github.com/aws/aws-sdk-go v1.15.24/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= @@ -297,14 +288,11 @@ github.com/aws/aws-sdk-go v1.38.35/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2z github.com/aws/aws-sdk-go v1.38.68/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= github.com/aws/aws-sdk-go v1.40.11/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q= github.com/aws/aws-sdk-go v1.40.37/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q= -github.com/aws/aws-sdk-go v1.40.45/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q= -github.com/aws/aws-sdk-go v1.40.56/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q= github.com/aws/aws-sdk-go v1.41.7/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q= github.com/aws/aws-sdk-go v1.42.9 h1:8ptAGgA+uC2TUbdvUeOVSfBocIZvGE2NKiLxkAcn1GA= github.com/aws/aws-sdk-go v1.42.9/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= github.com/aws/aws-sdk-go-v2 v1.7.0/go.mod h1:tb9wi5s61kTDA5qCkcDbt3KRVV74GGslQkl/DRdX/P4= -github.com/aws/aws-sdk-go-v2 v1.9.1/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4= github.com/aws/aws-sdk-go-v2 v1.9.2/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4= github.com/aws/aws-sdk-go-v2/config v1.8.3/go.mod h1:4AEiLtAb8kLs7vgw2ZV3p2VZ1+hBavOc84hqxVNpCyw= github.com/aws/aws-sdk-go-v2/credentials v1.4.3/go.mod h1:FNNC6nQZQUuyhq5aE5c7ata8o9e4ECGmS4lAXC7o1mQ= @@ -312,7 +300,6 @@ github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.6.0/go.mod h1:gqlclDEZp4aqJOanc github.com/aws/aws-sdk-go-v2/internal/ini v1.2.4/go.mod h1:ZcBrrI3zBKlhGFNYWvju0I3TR93I7YIgAfy82Fh4lcQ= github.com/aws/aws-sdk-go-v2/service/appconfig v1.4.2/go.mod h1:FZ3HkCe+b10uFZZkFdvf98LHW21k49W8o8J366lqVKY= github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.5.0/go.mod h1:acH3+MQoiMzozT/ivU+DbRg7Ooo2298RdRaWcOv+4vM= -github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.8.1/go.mod h1:CM+19rL1+4dFWnOQKwDc7H1KwXTz+h61oUSHyhV0b3o= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.3.2/go.mod h1:72HRZDLMtmVQiLG2tLfQcaWLCssELvGl+Zf2WVxMmR8= github.com/aws/aws-sdk-go-v2/service/sso v1.4.2/go.mod h1:NBvT9R1MEF+Ud6ApJKM0G+IkPchKS7p7c2YPKwHmBOk= github.com/aws/aws-sdk-go-v2/service/sts v1.7.2/go.mod h1:8EzeIqfWt2wWT4rJVu3f21TfrhJ8AEMzVybRNSb/b4g= @@ -325,16 +312,14 @@ github.com/beevik/ntp v0.3.0/go.mod h1:hIHWr+l3+/clUnF44zdK+CWW7fO8dR5cIylAQ76NR 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/clock v1.2.0 h1:9Re3G2TWxkE06LdMWMpcY6KV81GLXMGiYpPYUPkFAws= -github.com/benbjohnson/clock v1.2.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/benbjohnson/immutable v0.2.1/go.mod h1:uc6OHo6PN2++n98KHLxW8ef4W42ylHiQSENghE1ezxI= github.com/benbjohnson/tmpl v1.0.0/go.mod h1:igT620JFIi44B6awvU9IsDhR77IXWtFigTLil/RPdps= +github.com/beorn7/perks v0.0.0-20150223135152-b965b613227f/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v0.0.0-20160804104726-4c0e84591b9a/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= 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/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas= -github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bitly/go-hostpool v0.0.0-20171023180738-a3a6125de932/go.mod h1:NOuUCSz6Q9T7+igc/hlvDOUdtWKryOrtFyIVABv/p7k= github.com/bitly/go-hostpool v0.1.0/go.mod h1:4gOCgp6+NZnVqlKyZ/iBZFTAJKembaVENUpMkpg42fw= @@ -358,12 +343,15 @@ github.com/bonitoo-io/go-sql-bigquery v0.3.4-1.4.0/go.mod h1:J4Y6YJm0qTWB9aFziB7 github.com/bradfitz/gomemcache v0.0.0-20190913173617-a41fca850d0b/go.mod h1:H0wQNHz2YrLsuXOZozoeDmnHXkNCRmMW0gwFWDfEZDA= github.com/brancz/kube-rbac-proxy v0.8.0/go.mod h1:j7cg7LCsVWhOLBwJWxPxn5q/tZpFp6KH1KB6Jq4ixOo= github.com/bshuster-repo/logrus-logstash-hook v0.4.1/go.mod h1:zsTqEiSzDgAa/8GZR7E1qaXrhYNDKBYy5/dWPTIflbk= -github.com/bsm/sarama-cluster v2.1.13+incompatible/go.mod h1:r7ao+4tTNXvWm+VRpRJchr2kQhqxgmAp2iEX5W96gMM= github.com/buger/jsonparser v0.0.0-20180808090653-f4dd9f5a6b44/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs= github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/bugsnag/bugsnag-go v0.0.0-20141110184014-b1d153021fcd/go.mod h1:2oa8nejYd4cQ/b0hMIopN0lCRxU0bueqREvZLWFrtK8= +github.com/bugsnag/bugsnag-go v1.0.5-0.20150529004307-13fd6b8acda0 h1:s7+5BfS4WFJoVF9pnB8kBk03S7pZXRdKamnV0FOl5Sc= +github.com/bugsnag/bugsnag-go v1.0.5-0.20150529004307-13fd6b8acda0/go.mod h1:2oa8nejYd4cQ/b0hMIopN0lCRxU0bueqREvZLWFrtK8= +github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b h1:otBG+dV+YK+Soembjv71DPz3uX/V/6MMlSyD9JBQ6kQ= github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b/go.mod h1:obH5gd0BsqsP2LwDJ9aOkm/6J86V6lyAXCoQWGw3K50= +github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0 h1:nvj0OLI3YqYXer/kZD8Ri1aaunCxIEsOst1BVJswV0o= github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE= github.com/c-bata/go-prompt v0.2.2/go.mod h1:VzqtzE2ksDBcdln8G7mk2RX9QyGjH+OVqOCSiVIqS34= github.com/c2h5oh/datasize v0.0.0-20200112174442-28bbd4740fee h1:BnPxIde0gjtTnc9Er7cxvBk8DHLWhEux0SxayC8dP6I= @@ -372,12 +360,10 @@ github.com/cactus/go-statsd-client/statsd v0.0.0-20191106001114-12b4e2b38748/go. github.com/caio/go-tdigest v2.3.0+incompatible/go.mod h1:sHQM/ubZStBUmF1WbB8FAm8q9GjDajLC5T7ydxE3JHI= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= github.com/casbin/casbin/v2 v2.31.6/go.mod h1:vByNa/Fchek0KZUgG5wEsl7iFsiviAYKRtgrQfcJqHg= -github.com/casbin/casbin/v2 v2.37.0/go.mod h1:vByNa/Fchek0KZUgG5wEsl7iFsiviAYKRtgrQfcJqHg= github.com/cenkalti/backoff v0.0.0-20181003080854-62661b46c409/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff v1.0.0/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff v2.0.0+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff v2.1.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= -github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff/v4 v4.0.2/go.mod h1:eEew/i+1Q6OrCDZh3WiXYv3+nJwBASZ8Bog/87DQnVg= github.com/cenkalti/backoff/v4 v4.1.0/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= @@ -388,7 +374,6 @@ github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA github.com/census-instrumentation/opencensus-proto v0.3.0 h1:t/LhUZLVitR1Ow2YOnduCsavhwFUklBMoGVYUCqmCqk= github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/certifi/gocertifi v0.0.0-20191021191039-0944d244cd40/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= -github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.0/go.mod h1:dgIUBU3pDso/gPgZ1osOZ0iQf77oPR28Tjxl5dIMyVM= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= @@ -397,7 +382,6 @@ github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XL github.com/checkpoint-restore/go-criu/v4 v4.1.0/go.mod h1:xUQBLp4RLc5zJtWY++yjOoMoB5lihDt7fai+75m+rGw= github.com/checkpoint-restore/go-criu/v5 v5.0.0 h1:TW8f/UvntYoVDMN1K2HlT82qH1rb0sOjpGw3m6Ym+i4= github.com/checkpoint-restore/go-criu/v5 v5.0.0/go.mod h1:cfwC0EG7HMUenopBsUf9d89JlCLQIfgVcNsNN0t6T2M= -github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= github.com/chromedp/cdproto v0.0.0-20200116234248-4da64dd111ac/go.mod h1:PfAWWKJqjlGFYJEidUM6aVIWPr0EpobeyVWEEmplX7g= github.com/chromedp/cdproto v0.0.0-20200424080200-0de008e41fa0/go.mod h1:PfAWWKJqjlGFYJEidUM6aVIWPr0EpobeyVWEEmplX7g= github.com/chromedp/chromedp v0.5.3/go.mod h1:YLdPtndaHQ4rCpSpBG+IPpy9JvX0VD+7aaLxYgYj28w= @@ -417,9 +401,10 @@ github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6D github.com/circonus-labs/circonusllhist v0.0.0-20161110002650-365d370cc145/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/cisco-ie/nx-telemetry-proto v0.0.0-20190531143454-82441e232cf6/go.mod h1:ugEfq4B8T8ciw/h5mCkgdiDRFS4CkqqhH2dymDB4knc= -github.com/clbanning/mxj v1.8.4/go.mod h1:BVjHeAH+rl9rs6f+QIpeRl0tfu10SXn1pUSa5PVGJng= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cloudflare/cfssl v0.0.0-20180223231731-4e2dcbde5004 h1:lkAMpLVBDaj17e85keuznYcH5rqI438v41pKcBl4ZxQ= +github.com/cloudflare/cfssl v0.0.0-20180223231731-4e2dcbde5004/go.mod h1:yMWuSON2oQp+43nFtAV/uvKQIFpSPerB57DCt9t8sSA= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= @@ -450,8 +435,9 @@ github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59/go.mod h1:pA0z1 github.com/containerd/cgroups v0.0.0-20200710171044-318312a37340/go.mod h1:s5q4SojHctfxANBDvMeIaIovkq29IP48TKAxnhYRxvo= github.com/containerd/cgroups v0.0.0-20200824123100-0b889c03f102/go.mod h1:s5q4SojHctfxANBDvMeIaIovkq29IP48TKAxnhYRxvo= github.com/containerd/cgroups v0.0.0-20210114181951-8a68de567b68/go.mod h1:ZJeTFisyysqgcCdecO57Dj79RfL0LNeGiFUqLYQRYLE= -github.com/containerd/cgroups v1.0.1 h1:iJnMvco9XGvKUvNQkv88bE4uJXxRQH18efbKo9w5vHQ= github.com/containerd/cgroups v1.0.1/go.mod h1:0SJrPIenamHDcZhEcJMNBB85rHcUsw4f25ZfBiPYRkU= +github.com/containerd/cgroups v1.0.2 h1:mZBclaSgNDfPWtfhj2xJY28LZ9nYIgzB0pwSURPl6JM= +github.com/containerd/cgroups v1.0.2/go.mod h1:qpbpJ1jmlqsR9f2IyaLPsdkCdnt0rbDVqIDlhuu5tRY= github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= github.com/containerd/console v0.0.0-20181022165439-0650fd9eeb50/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= github.com/containerd/console v0.0.0-20191206165004-02ecf6a7291e/go.mod h1:8Pf4gM6VEbTNRIT26AyyU7hxdQU3MvAvxVI0sc00XBE= @@ -475,6 +461,7 @@ github.com/containerd/containerd v1.5.0-beta.4/go.mod h1:GmdgZd2zA2GYIBZ0w09Zvgq github.com/containerd/containerd v1.5.0-rc.0/go.mod h1:V/IXoMqNGgBlabz3tHD2TWDoTJseu1FGOKuoA4nNb2s= github.com/containerd/containerd v1.5.1/go.mod h1:0DOxVqwDy2iZvrZp2JUx/E+hS0UNTVn7dJnIOwtYR4g= github.com/containerd/containerd v1.5.4/go.mod h1:sx18RgvW6ABJ4iYUw7Q5x7bgFOAB9B6G7+yO0XBc4zw= +github.com/containerd/containerd v1.5.7/go.mod h1:gyvv6+ugqY25TiXxcZC3L5yOeYgEw0QMhscqVp1AR9c= github.com/containerd/containerd v1.5.8 h1:NmkCC1/QxyZFBny8JogwLpOy2f+VEbO/f6bV2Mqtwuw= github.com/containerd/containerd v1.5.8/go.mod h1:YdFSv5bTFLpG2HIYmfqDpSYYTDX+mc5qtSuYx1YUb/s= github.com/containerd/continuity v0.0.0-20181203112020-004b46473808/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= @@ -485,6 +472,7 @@ github.com/containerd/continuity v0.0.0-20200710164510-efbc4488d8fe/go.mod h1:cE github.com/containerd/continuity v0.0.0-20201208142359-180525291bb7/go.mod h1:kR3BEg7bDFaEddKm54WSmrol1fKWDU1nKYkgrcgZT7Y= github.com/containerd/continuity v0.0.0-20210208174643-50096c924a4e/go.mod h1:EXlVlkqNba9rJe3j7w3Xa924itAMLgZH4UD/Q4PExuQ= github.com/containerd/continuity v0.1.0/go.mod h1:ICJu0PwR54nI0yPEnJ6jcS+J7CZAUXrLh8lPo2knzsM= +github.com/containerd/continuity v0.2.1 h1:/EeEo2EtN3umhbbgCveyjifoMYg0pS+nMMEemaYw634= github.com/containerd/fifo v0.0.0-20180307165137-3d5202aec260/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= github.com/containerd/fifo v0.0.0-20190226154929-a9fb20d87448/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= github.com/containerd/fifo v0.0.0-20200410184934-f15a3290365b/go.mod h1:jPQ2IAeZRCYxpS/Cm1495vGFww6ecHmMk1YJH2Q5ln0= @@ -505,6 +493,7 @@ github.com/containerd/imgcrypt v1.1.1/go.mod h1:xpLnwiQmEUJPvQoAapeb2SNCxz7Xr6PJ github.com/containerd/nri v0.0.0-20201007170849-eb1350a75164/go.mod h1:+2wGSDGFYfE5+So4M5syatU0N0f0LbWpuqyMi4/BE8c= github.com/containerd/nri v0.0.0-20210316161719-dbaa18c31c14/go.mod h1:lmxnXF6oMkbqs39FiCt1s0R2HSMhcLel9vNL3m4AaeY= github.com/containerd/nri v0.1.0/go.mod h1:lmxnXF6oMkbqs39FiCt1s0R2HSMhcLel9vNL3m4AaeY= +github.com/containerd/stargz-snapshotter/estargz v0.4.1/go.mod h1:x7Q9dg9QYb4+ELgxmo4gBUeJB0tl5dqH1Sdz0nJU1QM= github.com/containerd/ttrpc v0.0.0-20190828154514-0e0f228740de/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= github.com/containerd/ttrpc v0.0.0-20190828172938-92c8520ef9f8/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= github.com/containerd/ttrpc v0.0.0-20191028202541-4f1b8fe65a5c/go.mod h1:LPm1u0xBw8r8NOKoOdNMeVHSawSsltak+Ihv+etqsE8= @@ -577,8 +566,8 @@ github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:ma github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= 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 h1:07n33Z8lZxZ2qwegKbObQohDhXDQxiMMz1NOUGYlesw= github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/crossdock/crossdock-go v0.0.0-20160816171116-049aabb0122b/go.mod h1:v9FBN7gdVTpiD/+LZ7Po0UKvROyT87uLVxTHVky/dlQ= github.com/cucumber/godog v0.8.1/go.mod h1:vSh3r/lM+psC1BPXvdkSEuNjmXfpVqrMGYAElF6hxnA= github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4= github.com/cyphar/filepath-securejoin v0.2.2 h1:jCwT2GTP+PY5nBz3c/YL5PAIbusElVrPujOBSCj8xRg= @@ -597,9 +586,9 @@ github.com/d2g/dhcp4 v0.0.0-20170904100407-a1d1b6c41b1c/go.mod h1:Ct2BUK8SB0YC1S github.com/d2g/dhcp4client v1.0.0/go.mod h1:j0hNfjhrt2SxUOw55nL0ATM/z4Yt3t2Kd1mW34z5W5s= github.com/d2g/dhcp4server v0.0.0-20181031114812-7d4a0a7f59a5/go.mod h1:Eo87+Kg/IX2hfWJfwxMzLyuSZyxSoAug2nGa1G2QAi8= github.com/d2g/hardwareaddr v0.0.0-20190221164911-e7d9fbe030e4/go.mod h1:bMl4RjIciD2oAxI7DmWRx6gbeqrkoLqv3MV0vzNad+I= +github.com/danieljoos/wincred v1.1.0/go.mod h1:XYlo+eRTsVA9aHGp7NGjFkPla4m+DCL7hqDjlFjiygg= github.com/dave/jennifer v1.2.0/go.mod h1:fIb+770HOpJ2fmN9EPPKOqm1vMGhB+TwXKMZhrIygKg= github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v0.0.0-20161028175848-04cdfd42973b/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -609,27 +598,23 @@ github.com/deepmap/oapi-codegen v1.6.0/go.mod h1:ryDa9AgbELGeB+YEXE1dR53yAjHwFvE github.com/denisenkom/go-mssqldb v0.0.0-20180620032804-94c9c97e8c9f/go.mod h1:xN/JuLBIz4bjkxNmByTiV1IbhfnYb6oo99phBn4Eqhc= github.com/denisenkom/go-mssqldb v0.0.0-20190515213511-eb9f6a1743f3/go.mod h1:zAg7JM8CkOJ43xKXIj7eRO9kmWm/TW578qo+oDO6tuM= github.com/denisenkom/go-mssqldb v0.0.0-20190707035753-2be1aa521ff4/go.mod h1:zAg7JM8CkOJ43xKXIj7eRO9kmWm/TW578qo+oDO6tuM= +github.com/denisenkom/go-mssqldb v0.0.0-20191128021309-1d7a30a10f73/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU= github.com/denisenkom/go-mssqldb v0.10.0/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU= github.com/dennwc/varint v1.0.0 h1:kGNFFSSw8ToIy3obO/kKr8U9GZYUAxQEVuix4zfDWzE= github.com/dennwc/varint v1.0.0/go.mod h1:hnItb35rvZvJrbTALZtY/iQfDs48JKRG1RPpgziApxA= github.com/denverdino/aliyungo v0.0.0-20170926055100-d3308649c661/go.mod h1:dV8lFg6daOBZbT6/BDGIz6Y3WFGn8juu6G+CQ6LHtl0= github.com/denverdino/aliyungo v0.0.0-20190125010748-a747050bb1ba/go.mod h1:dV8lFg6daOBZbT6/BDGIz6Y3WFGn8juu6G+CQ6LHtl0= github.com/devigned/tab v0.1.1/go.mod h1:XG9mPq0dFghrYvoBF3xdRrJzSTX1b7IQrvaL9mzjeJY= -github.com/dgraph-io/badger/v3 v3.2103.1/go.mod h1:dULbq6ehJ5K0cGW/1TQ9iSfUk0gbSiToDWmWmTsJ53E= -github.com/dgraph-io/ristretto v0.1.0/go.mod h1:fux0lOrBhrVCJd3lcTHsIJhq1T2rokOu6v9Vcb3Q9ug= github.com/dgrijalva/jwt-go v0.0.0-20170104182250-a601269ab70c/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgrijalva/jwt-go/v4 v4.0.0-preview1/go.mod h1:+hnT3ywWDTAFrW5aE+u2Sa/wT555ZqwoCS+pk3p6ry4= github.com/dgryski/go-bitstream v0.0.0-20180413035011-3522498ce2c8/go.mod h1:VMaSuZ+SZcx/wljOQKvp5srsbCiKDEb6K2wC4+PiBmQ= -github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= 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/dgryski/go-sip13 v0.0.0-20200911182023-62edffca9245/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/dhui/dktest v0.3.0/go.mod h1:cyzIUfGsBEbZ6BT7tnXqAShHSXCZhSNmFl70sZ7c1yc= github.com/digitalocean/godo v1.1.1/go.mod h1:h6faOIcZ8lWIwNQ+DN7b3CgX4Kwby5T+nbpNqkUIozU= github.com/digitalocean/godo v1.10.0/go.mod h1:h6faOIcZ8lWIwNQ+DN7b3CgX4Kwby5T+nbpNqkUIozU= -github.com/digitalocean/godo v1.62.0/go.mod h1:p7dOjjtSBqCTUksqtA5Fd3uaKs9kyTq2xcz76ulEJRU= -github.com/digitalocean/godo v1.65.0/go.mod h1:p7dOjjtSBqCTUksqtA5Fd3uaKs9kyTq2xcz76ulEJRU= github.com/digitalocean/godo v1.69.1 h1:aCyfwth8R3DeOaWB9J9E8v7cjlDIlF19eXTt8R3XhTE= github.com/digitalocean/godo v1.69.1/go.mod h1:epPuOzTOOJujNo0nduDj2D5O1zu8cSpp9R+DdN0W9I0= github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8= @@ -637,6 +622,9 @@ github.com/dimchansky/utfbom v1.1.1 h1:vV6w1AhK4VMnhBno/TPVCoK9U/LP0PkLCS9tbxHdi github.com/dimchansky/utfbom v1.1.1/go.mod h1:SxdoEBH5qIqFocHMyGOXVAybYJdr71b1Q/j0mACtrfE= github.com/dnaeon/go-vcr v1.0.1 h1:r8L/HqC0Hje5AXMu1ooW8oyQyOFv4GxqpL0nRP7SLLY= github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= +github.com/docker/cli v0.0.0-20191017083524-a8ff7f821017/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/cli v20.10.10+incompatible h1:kcbwdgWbrBOH8QwQzaJmyriHwF7XIl4HT1qh0HTRys4= +github.com/docker/cli v20.10.10+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/distribution v0.0.0-20190905152932-14b96e55d84c/go.mod h1:0+TTO4EOBfRPhZXAeF1Vu+W3hHZ8eLp8PgKVZlcvtFY= github.com/docker/distribution v2.6.0-rc.1.0.20170726174610-edc3ab29cdff+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/distribution v2.7.0+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= @@ -646,33 +634,40 @@ github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4Kfc github.com/docker/docker v0.7.3-0.20190103212154-2b7e084dc98b/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker v0.7.3-0.20190327010347-be7ac8be2ae0/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker v0.7.3-0.20190817195342-4760db040282/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v1.4.2-0.20190924003213-a8608b5b67c7/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker v17.12.0-ce-rc1.0.20200916142827-bd33bbf0497b+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker v20.10.7+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker v20.10.8+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker v20.10.9+incompatible h1:JlsVnETOjM2RLQa0Cc1XCIspUdXW3Zenq9P54uXBm6k= github.com/docker/docker v20.10.9+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v20.10.10+incompatible h1:GKkP0T7U4ks6X3lmmHKC2QDprnpRJor2Z5a8m62R9ZM= +github.com/docker/docker v20.10.10+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker-credential-helpers v0.6.3/go.mod h1:WRaJzqw3CTB9bk10avuGsjVBZsD05qeibJ1/TYlvc0Y= +github.com/docker/docker-credential-helpers v0.6.4 h1:axCks+yV+2MR3/kZhAmy07yC56WZ2Pwu/fKWtKuZB0o= +github.com/docker/docker-credential-helpers v0.6.4/go.mod h1:ofX3UI0Gz1TteYBjtgs07O36Pyasyp66D2uKT7H8W1c= +github.com/docker/go v1.5.1-1.0.20160303222718-d30aec9fd63c h1:lzqkGL9b3znc+ZUgi7FlLnqjQhcXxkNM/quxIjBVMD0= +github.com/docker/go v1.5.1-1.0.20160303222718-d30aec9fd63c/go.mod h1:CADgU4DSXK5QUlFslkQu2yW2TKzFZcXq/leZfM0UH5Q= github.com/docker/go-connections v0.3.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= github.com/docker/go-events v0.0.0-20170721190031-9461782956ad/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= github.com/docker/go-metrics v0.0.0-20180209012529-399ea8c73916/go.mod h1:/u0gXw0Gay3ceNrsHubL3BtdOL2fHf93USgMTe0W5dI= +github.com/docker/go-metrics v0.0.1 h1:AgB/0SvBxihN0X8OR4SjsblXkbMvalQ8cjmtKQ2rQV8= github.com/docker/go-metrics v0.0.1/go.mod h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHzueweSI3Vw= -github.com/docker/go-plugins-helpers v0.0.0-20181025120712-1e6269c305b8/go.mod h1:LFyLie6XcDbyKGeVK6bHe+9aJTYCxWLBg5IrJZOaXKA= github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docker/go-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw= github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docker/libnetwork v0.8.0-dev.2.0.20181012153825-d7b61745d166/go.mod h1:93m0aTqz6z+g32wla4l4WxTrdtvBRmVzYRkYvasA5Z8= github.com/docker/libtrust v0.0.0-20150114040149-fa567046d9b1/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE= +github.com/docker/libtrust v0.0.0-20160708172513-aabc10ec26b7 h1:UhxFibDNY/bfvqU5CAUmr9zpesgbU6SWc8/B4mflAE4= +github.com/docker/libtrust v0.0.0-20160708172513-aabc10ec26b7/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= -github.com/drone/envsubst v1.0.2 h1:dpYLMAspQHW0a8dZpLRKe9jCNvIGZPhCPrycZzIHdqo= -github.com/drone/envsubst v1.0.2/go.mod h1:bkZbnc/2vh1M12Ecn7EYScpI4YGYU0etwLJICOWi8Z0= github.com/drone/envsubst/v2 v2.0.0-20210730161058-179042472c46 h1:7QPwrLT79GlD5sizHf27aoY2RTvw62mO6x7mxkScNk0= github.com/drone/envsubst/v2 v2.0.0-20210730161058-179042472c46/go.mod h1:esf2rsHFNlZlxsqsZDojNBcnNs5REqIvRrWRHqX0vEU= github.com/duosecurity/duo_api_golang v0.0.0-20190308151101-6c680f768e74/go.mod h1:UqXY1lYT/ERa4OEAywUqdok1T4RCRdArkhic1Opuavo= github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/dvsekhvalnov/jose2go v0.0.0-20170216131308-f21a8cedbbae/go.mod h1:7BvyPhdbLxMXIYTFPLsyJRFMsKmOZnQmzh6Gb+uquuM= github.com/dvyukov/go-fuzz v0.0.0-20210103155950-6a8e9d1f2415/go.mod h1:11Gm+ccJnvAhCNLlf5+cS9KjtbaD5I5zaZpFMsTHWTw= github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= github.com/eapache/go-resiliency v1.2.0 h1:v7g92e/KSN71Rq7vSThKaWIq68fL4YHvWyiUKorFR1Q= @@ -713,6 +708,7 @@ github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7 github.com/envoyproxy/protoc-gen-validate v0.6.1 h1:4CF52PCseTFt4bE+Yk3dIpdVi7XWuPVMhPtm4FaIJPM= github.com/envoyproxy/protoc-gen-validate v0.6.1/go.mod h1:txg5va2Qkip90uYoSKH+nkAAmXrb2j3iq4FLwdrCbXQ= github.com/ericchiang/k8s v1.2.0/go.mod h1:/OmBgSq2cd9IANnsGHGlEz27nwMZV2YxlpXuQtU3Bz4= +github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5/go.mod h1:a2zkGnVExMxdzMo3M0Hi/3sEU+cWnZpSni0O6/Yb/P0= github.com/euank/go-kmsg-parser v2.0.0+incompatible h1:cHD53+PLQuuQyLZeriD1V/esuG4MuU0Pjs5y6iknohY= github.com/euank/go-kmsg-parser v2.0.0+incompatible/go.mod h1:MhmAMZ8V4CYH4ybgdRwPr2TU5ThnS43puaKEMpja1uw= github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= @@ -734,14 +730,12 @@ github.com/felixge/fgprof v0.9.1/go.mod h1:7/HK6JFtFaARhIljgP2IV8rJLIoHDoOYoUphs github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/felixge/httpsnoop v1.0.2 h1:+nS9g82KMXccJ/wp0zyRW9ZBHFETmMGtkk+2CTTrW4o= github.com/felixge/httpsnoop v1.0.2/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/fluent/fluent-bit-go v0.0.0-20190925192703-ea13c021720c/go.mod h1:WQX+afhrekY9rGK+WT4xvKSlzmia9gDoLYu4GGYGASQ= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/form3tech-oss/jwt-go v3.2.2+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/foxcpp/go-mockdns v0.0.0-20201212160233-ede2f9158d15/go.mod h1:tPg4cp4nseejPd+UKxtCVQ2hUxNTZ7qQZJa7CLriIeo= github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= -github.com/franela/goblin v0.0.0-20210519012713-85d372ac71e2/go.mod h1:VzmDKDJVZI3aJmnRI9VjAn9nJ8qPPsN1fqzr9dqInIo= github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= github.com/frankban/quicktest v1.4.0/go.mod h1:36zfPVQyHxymz4cH7wlDmVwDrJuljRB60qkgn7rorfQ= github.com/frankban/quicktest v1.10.2/go.mod h1:K+q6oSqb0W0Ininfk863uOk1lMy69l/P6txr3mVT54s= @@ -754,9 +748,9 @@ github.com/fsnotify/fsnotify v1.5.1 h1:mZcQUHVQUQWoPXXtuf9yuEXKudkV2sx1E06UadKWp github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU= github.com/fsouza/fake-gcs-server v1.7.0/go.mod h1:5XIRs4YvwNbNoz+1JF8j6KLAyDh7RHGAyAK3EP2EsNk= github.com/fullsailor/pkcs7 v0.0.0-20190404230743-d7302db945fa/go.mod h1:KnogPXtdwXqoenmZCw6S+25EAm2MkxbG0deNDu4cbSA= +github.com/fvbommel/sortorder v1.0.2 h1:mV4o8B2hKboCdkJm+a7uX/SIpZob4JzUpc5GGnM45eo= +github.com/fvbommel/sortorder v1.0.2/go.mod h1:uk88iVf1ovNn1iLfgUVU2F9o5eO30ui720w+kxuqRs0= github.com/garyburd/redigo v0.0.0-20150301180006-535138d7bcd7/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= -github.com/gdamore/encoding v1.0.0/go.mod h1:alR0ol34c49FCSBLjhosxzcPHQbf2trDkoo5dl+VrEg= -github.com/gdamore/tcell v1.3.0/go.mod h1:Hjvr+Ofd+gLglo7RYKxxnzCBmev3BzsS67MebKS4zMM= github.com/getkin/kin-openapi v0.53.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW6yheSwk8Yi4= github.com/getsentry/raven-go v0.2.0/go.mod h1:KungGk8q33+aIAZUIVWZDr2OfAEBsO49PX4NzFV5kcQ= github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= @@ -807,7 +801,6 @@ github.com/go-openapi/analysis v0.19.5/go.mod h1:hkEAkxagaIvIP7VTn8ygJNkd4kAYON2 github.com/go-openapi/analysis v0.19.10/go.mod h1:qmhS3VNFxBlquFJ0RGoDtylO9y4pgTAUNE9AEEMdlJQ= github.com/go-openapi/analysis v0.19.16/go.mod h1:GLInF007N83Ad3m8a/CbQ5TPzdnGT7workfHwuVjNVk= github.com/go-openapi/analysis v0.20.0/go.mod h1:BMchjvaHDykmRMsK40iPtvyOfFdMMxlOmQr9FBZk+Og= -github.com/go-openapi/analysis v0.20.1/go.mod h1:BMchjvaHDykmRMsK40iPtvyOfFdMMxlOmQr9FBZk+Og= github.com/go-openapi/errors v0.17.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= github.com/go-openapi/errors v0.18.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= github.com/go-openapi/errors v0.19.2/go.mod h1:qX0BLWsyaKfvhluLejVpVNwNRdXZhEbTA4kxxpKBC94= @@ -818,7 +811,6 @@ github.com/go-openapi/errors v0.19.7/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpX github.com/go-openapi/errors v0.19.8/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= github.com/go-openapi/errors v0.19.9/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= github.com/go-openapi/errors v0.20.0/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= -github.com/go-openapi/errors v0.20.1/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= github.com/go-openapi/jsonpointer v0.18.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= @@ -850,7 +842,6 @@ github.com/go-openapi/runtime v0.19.15/go.mod h1:dhGWCTKRXlAfGnQG0ONViOZpjfg0m2g github.com/go-openapi/runtime v0.19.16/go.mod h1:5P9104EJgYcizotuXhEuUrzVc+j1RiSjahULvYmlv98= github.com/go-openapi/runtime v0.19.24/go.mod h1:Lm9YGCeecBnUUkFTxPC4s1+lwrkJ0pthx8YvyjCfkgk= github.com/go-openapi/runtime v0.19.26/go.mod h1:BvrQtn6iVb2QmiVXRsFAm6ZCAZBpbVKFfN6QWCp582M= -github.com/go-openapi/runtime v0.19.28/go.mod h1:BvrQtn6iVb2QmiVXRsFAm6ZCAZBpbVKFfN6QWCp582M= github.com/go-openapi/runtime v0.19.29/go.mod h1:BvrQtn6iVb2QmiVXRsFAm6ZCAZBpbVKFfN6QWCp582M= github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= github.com/go-openapi/spec v0.17.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= @@ -907,6 +898,7 @@ github.com/go-redis/redis/v8 v8.11.4/go.mod h1:2Z2wHZXdQpCDXEGzqMockDpNyYvi2l4Px github.com/go-resty/resty/v2 v2.1.1-0.20191201195748-d7b97669fe48 h1:JVrqSeQfdhYRFk24TvhTZWU0q8lfCojxZQFi3Ou7+uY= github.com/go-resty/resty/v2 v2.1.1-0.20191201195748-d7b97669fe48/go.mod h1:dZGr0i9PLlaaTD4H/hoZIDjQ+r6xq8mgbRzHZf7f2J8= github.com/go-sql-driver/mysql v0.0.0-20180618115901-749ddf1598b4/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/go-sql-driver/mysql v1.3.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= @@ -917,6 +909,8 @@ github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/me github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/go-test/deep v1.0.1/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/go-test/deep v1.0.2-0.20181118220953-042da051cf31/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= +github.com/go-test/deep v1.0.8 h1:TDsG77qcSprGbC6vTN8OuXp5g+J+b5Pcguhf7Zt61VM= +github.com/go-test/deep v1.0.8/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE= github.com/go-zookeeper/zk v1.0.2 h1:4mx0EYENAdX/B/rbunjlt5+4RTA/a9SMHBRuSKdGxPM= github.com/go-zookeeper/zk v1.0.2/go.mod h1:nOB03cncLtlp4t+UAkGSV+9beXP/akpekBwL+UX1Qcw= github.com/gobuffalo/attrs v0.0.0-20190224210810-a9411de4debd/go.mod h1:4duuawTqi2wkkpB4ePgWMaai6/Kc6WEz83bhFwpHzj0= @@ -957,7 +951,6 @@ github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6 github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.0.4 h1:9349emZab16e7zQvpmsbtjc18ykshndd8y2PG3sgJbA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gofrs/flock v0.7.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= github.com/gofrs/uuid v2.1.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gofrs/uuid v3.3.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gofrs/uuid v4.0.0+incompatible h1:1SD/1F5pU8p29ybwgQSwpQk+mwdRrXCYuPhW6m+TnJw= @@ -981,7 +974,6 @@ github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69 github.com/gogo/status v1.0.3/go.mod h1:SavQ51ycCLnc7dGyJxp8YAmudx8xqiVrRf+6IXRsugc= github.com/gogo/status v1.1.0 h1:+eIkrewn5q6b30y+g/BJINVVdi2xH7je5MPJ3ZPK3JA= github.com/gogo/status v1.1.0/go.mod h1:BFv9nrluPLmrS0EmGVvLaPNmRosr9KapBYd5/hpY1WM= -github.com/golang-jwt/jwt v3.2.1+incompatible h1:73Z+4BJcrTC+KczS6WvTPvRGOp1WmfEP4Q1lOd9Z/+c= github.com/golang-jwt/jwt v3.2.1+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= github.com/golang-jwt/jwt/v4 v4.0.0 h1:RAqyYixv1p7uEnocuy8P1nru5wprCh/MH2BIlW5z5/o= github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= @@ -1045,8 +1037,9 @@ 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/cadvisor v0.43.0 h1:z0ULgYPKZ7L/c7Zjq+ZD6ltklWwYdCSvBMgSjNC/hGo= github.com/google/cadvisor v0.43.0/go.mod h1:+RdMSbc3FVr5NYCD2dOEJy/LI0jYJ/0xJXkzWXEyiFQ= +github.com/google/certificate-transparency-go v1.0.10-0.20180222191210-5ab67e519c93 h1:jc2UWq7CbdszqeH6qu1ougXMIUBfSy8Pbh/anURYbGI= +github.com/google/certificate-transparency-go v1.0.10-0.20180222191210-5ab67e519c93/go.mod h1:QeJfpSbVSfYc7RgB3gJFj9cbuQMMchQxrWXz8Ruopmg= github.com/google/flatbuffers v1.11.0/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= -github.com/google/flatbuffers v1.12.0/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/flatbuffers v2.0.0+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= 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= @@ -1061,6 +1054,7 @@ github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-containerregistry v0.5.1/go.mod h1:Ct15B4yir3PLOP5jsy0GNeYVaIZs/MK/Jz5any1wFW0= github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= github.com/google/go-github/v32 v32.1.0/go.mod h1:rIEpZD9CTDQwDK9GDrtMTycQNA4JU3qBsCizh3q2WCI= github.com/google/go-jsonnet v0.17.0 h1:/9NIEfhK1NQRKl3sP2536b2+x5HnZMdql7x3yK/l8JY= @@ -1073,11 +1067,9 @@ github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSN github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g= github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.2.1 h1:d8MncMlErDFTwQGBK1xhv026j9kqhvw1Qv9IbWT1VLQ= github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= @@ -1095,7 +1087,6 @@ github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210827144239-02619b876842/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20211008130755-947d60d73cc0 h1:zHs+jv3LO743/zFGcByu2KmpbliCU2AhjcGgrdTwSG4= github.com/google/pprof v0.0.0-20211008130755-947d60d73cc0/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= @@ -1105,7 +1096,6 @@ github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+ github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/gax-go v2.0.2+incompatible h1:silFMLAnr330+NRuag/VjIGF7TLp/LBrV2CJKFLWEww= github.com/googleapis/gax-go v2.0.2+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= 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= @@ -1124,8 +1114,6 @@ github.com/gophercloud/gophercloud v0.0.0-20180828235145-f29afc2cceca/go.mod h1: github.com/gophercloud/gophercloud v0.6.0/go.mod h1:GICNByuaEBibcjmjvI7QvYJSZEbGkcYwAR7EZK2WMqM= github.com/gophercloud/gophercloud v0.12.0/go.mod h1:gmC5oQqMDOMO1t1gq5DquX/yAU808e/4mzjjDA76+Ss= github.com/gophercloud/gophercloud v0.13.0/go.mod h1:VX0Ibx85B60B5XOrZr6kaNwrmPUzcmMpwxvQ1WQIIWM= -github.com/gophercloud/gophercloud v0.18.0/go.mod h1:wRtmUelyIIv3CSSDI47aUwbs075O6i+LY+pXsKCBsb4= -github.com/gophercloud/gophercloud v0.20.0/go.mod h1:wRtmUelyIIv3CSSDI47aUwbs075O6i+LY+pXsKCBsb4= github.com/gophercloud/gophercloud v0.22.0 h1:9lFISNLafZcecT0xUveIMt3IafexC6DIV9ek1SZdSMw= github.com/gophercloud/gophercloud v0.22.0/go.mod h1:wRtmUelyIIv3CSSDI47aUwbs075O6i+LY+pXsKCBsb4= github.com/gopherjs/gopherjs v0.0.0-20180825215210-0210a2f0f73c/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= @@ -1136,8 +1124,8 @@ github.com/gopherjs/gopherjs v0.0.0-20191106031601-ce3c9ade29de/go.mod h1:wJfORR github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= github.com/gorilla/handlers v0.0.0-20150720190736-60c7bfde3e33/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4= -github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q= github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.7.0/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.7.1/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.7.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= @@ -1198,6 +1186,7 @@ github.com/grpc-ecosystem/grpc-gateway v1.14.6/go.mod h1:zdiPV4Yse/1gnckTHtghG4G 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/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645/go.mod h1:6iZfnjpejD4L/4DwD7NryNaJyCQdzwWwH2MWhCA90Kw= +github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed h1:5upAirOpQc1Q53c0bnx2ufif5kANL7bfZWcc6VJWJd8= github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed/go.mod h1:tMWxXQ9wFIaZeTI9F+hmhFiGpFmhOHzyShyFUhRm0H4= github.com/harlow/kinesis-consumer v0.3.1-0.20181230152818-2f58b136fee0/go.mod h1:dk23l2BruuUzRP8wbybQbPn3J7sZga2QHICCeaEy5rQ= github.com/hashicorp/consul v1.5.1 h1:p7tRmQ4m3ZMYkGQkuyjLXKbdU1weeumgZFqZOvw7o4c= @@ -1230,19 +1219,14 @@ github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/S github.com/hashicorp/go-discover v0.0.0-20190403160810-22221edb15cd/go.mod h1:ueUgD9BeIocT7QNuvxSyJyPAM9dfifBcaWmeybb67OY= github.com/hashicorp/go-envparse v0.0.0-20200406174449-d9cfd743a15e h1:v1d9+AJMP6i4p8BSKNU0InuvmIAdZjQLNN19V86AG4Q= github.com/hashicorp/go-envparse v0.0.0-20200406174449-d9cfd743a15e/go.mod h1:/NlxCzN2D4C4L2uDE6ux/h6jM+n98VFQM14nnCIfHJU= -github.com/hashicorp/go-getter v1.5.3 h1:NF5+zOlQegim+w/EUhSLh6QhXHmZMEeHLQzllkQ3ROU= -github.com/hashicorp/go-getter v1.5.3/go.mod h1:BrrV/1clo8cCYu6mxvboYg+KutTiFnXjMEgDD8+i7ZI= github.com/hashicorp/go-hclog v0.0.0-20180402200405-69ff559dc25f/go.mod h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI= github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI= github.com/hashicorp/go-hclog v0.8.0/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= -github.com/hashicorp/go-hclog v0.12.2/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= -github.com/hashicorp/go-hclog v0.14.1/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-hclog v0.16.2 h1:K4ev2ib4LdQETX5cSZBG0DVLk1jwGqSPXBjdah3veNs= github.com/hashicorp/go-hclog v0.16.2/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-immutable-radix v1.1.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-immutable-radix v1.2.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 v0.0.0-20180223233045-1289e7fffe71/go.mod h1:kbfItVoBJwCfKXDXN4YoAXjxcFVZ7MRrJzyTX6H4giE= @@ -1257,7 +1241,6 @@ github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+l github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/go-plugin v0.0.0-20180331002553-e8d22c780116/go.mod h1:JSqWYsict+jzcj0+xElxyrBQRPNoiWQuddnxArJ7XHQ= github.com/hashicorp/go-plugin v1.0.1/go.mod h1:++UyYGoz3o5w9ZzAdZxtQKrWWP+iqPBn3cQptSMzBuY= -github.com/hashicorp/go-plugin v1.4.3/go.mod h1:5fGEH17QVwTTcR0zV7yhDPLLmFX9YSZ38b18Udy6vYQ= github.com/hashicorp/go-retryablehttp v0.0.0-20180531211321-3b087ef2d313/go.mod h1:fXcdFsQoipQa7mwORhKad5jmDCeSy/RCGzWA08PO0lM= github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= github.com/hashicorp/go-retryablehttp v0.5.4/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= @@ -1266,8 +1249,6 @@ github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa github.com/hashicorp/go-rootcerts v1.0.1/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= github.com/hashicorp/go-rootcerts v1.0.2 h1:jzhAVGtqPKbwpyCPELlgNWhE1znq+qwJtW5Oi2viEzc= github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= -github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= -github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I= github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= github.com/hashicorp/go-sockaddr v1.0.2 h1:ztczhD1jLxIRjVejw8gFomI1BQZOe2WoVOu0SyteCQc= github.com/hashicorp/go-sockaddr v1.0.2/go.mod h1:rB4wwRAUzs07qva3c5SdrY/NEtAUjGlgmH/UkBUC97A= @@ -1280,7 +1261,6 @@ github.com/hashicorp/go-version v0.0.0-20170202080759-03c5bf6be031/go.mod h1:flt github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.2.1-0.20190424083514-192140e6f3e6/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go-version v1.3.0 h1:McDWVJIU/y+u1BRV06dPaLfLCaT7fUTJLp5r04x7iNw= github.com/hashicorp/go-version v1.3.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= 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= @@ -1320,8 +1300,6 @@ github.com/hashicorp/vault/sdk v0.1.13/go.mod h1:B+hVj7TpuQY1Y/GPbCpffmgd+tSEwvh github.com/hashicorp/vic v1.5.1-0.20190403131502-bbfe86ec9443/go.mod h1:bEpDU35nTu0ey1EXjwNwPjI9xErAsoOCmcMb9GKvyxo= github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= -github.com/hashicorp/yamux v0.0.0-20190923154419-df201c70410d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= -github.com/hetznercloud/hcloud-go v1.26.2/go.mod h1:2C5uMtBiMoFr3m7lBFPf7wXTdh33CevmZpQIIDPGYJI= github.com/hetznercloud/hcloud-go v1.32.0 h1:7zyN2V7hMlhm3HZdxOarmOtvzKvkcYKjM0hcwYMQZz0= github.com/hetznercloud/hcloud-go v1.32.0/go.mod h1:XX/TQub3ge0yWR2yHWmnDVIrB+MQbda1pHxkUmDlUME= github.com/hodgesds/perf-utils v0.0.8/go.mod h1:F6TfvsbtrF88i++hou29dTXlI2sfsJv+gRZDtmTJkAs= @@ -1332,7 +1310,6 @@ github.com/huandu/xstrings v1.0.0/go.mod h1:4qWG/gcEcfX4z/mBDHJ++3ReCw9ibxbsNJbc github.com/huandu/xstrings v1.3.1 h1:4jgBlKK6tLKFvO8u5pmYjG91cqytmDCDvGh7ECVFfFs= github.com/huandu/xstrings v1.3.1/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= -github.com/hudl/fargo v1.4.0/go.mod h1:9Ai6uvFy5fQNq6VPKtg+Ceq1+eTY4nKUlR2JElEOcDo= github.com/iancoleman/strcase v0.0.0-20180726023541-3605ed457bf7/go.mod h1:SK73tn/9oHe+/Y0h39VT4UCxmurVJkR5NA7kMEAOgSE= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= @@ -1395,7 +1372,11 @@ github.com/jefferai/jsonx v0.0.0-20160721235117-9cc31c3135ee/go.mod h1:N0t2vlmpe github.com/jessevdk/go-flags v0.0.0-20180331124232-1c38ed7ad0cc/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4= -github.com/jhump/protoreflect v1.6.0/go.mod h1:eaTn3RZAmMBcV0fifFvlm6VHNz3wSkYyXYWUh7ymB74= +github.com/jinzhu/gorm v0.0.0-20170222002820-5409931a1bb8 h1:CZkYfurY6KGhVtlalI4QwQ6T0Cu6iuY3e0x5RLu96WE= +github.com/jinzhu/gorm v0.0.0-20170222002820-5409931a1bb8/go.mod h1:Vla75njaFJ8clLU1W44h34PjIkijhjHIYnZxMqCdxqo= +github.com/jinzhu/inflection v0.0.0-20170102125226-1c35d901db3d h1:jRQLvyVGL+iVtDElaEIDdKwpPqUIZJfzkNLV34htpEc= +github.com/jinzhu/inflection v0.0.0-20170102125226-1c35d901db3d/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= +github.com/jinzhu/now v1.1.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.0.0-20160803190731-bd40a432e4c7/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= @@ -1404,12 +1385,12 @@ github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9Y github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= +github.com/joefitzgerald/rainbow-reporter v0.1.0/go.mod h1:481CNgqmVHQZzdIbN52CupLJyoVwB10FQ/IQlF1pdL8= github.com/joeshaw/multierror v0.0.0-20140124173710-69b34d4ec901/go.mod h1:Z86h9688Y0wesXCyonoVr47MasHilkuLMqGhRZ4Hpak= github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= 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/joncrlsn/dque v2.2.1-0.20200515025108-956d14155fa2+incompatible/go.mod h1:hDZb8oMj3Kp8MxtbNLg9vrtAUDHjgI1yZvqivT4O8Iw= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/josharian/native v0.0.0-20200817173448-b6b71def0850 h1:uhL5Gw7BINiiPAo24A2sxkcDI0Jt/sqp1v5xQCniEFA= github.com/josharian/native v0.0.0-20200817173448-b6b71def0850/go.mod h1:7X/raswPFr05uY3HiLlYeyQntB6OO7E/d2Cu7qoaN2w= @@ -1445,6 +1426,7 @@ github.com/jsternberg/zap-logfmt v1.2.0/go.mod h1:kz+1CUmCutPWABnNkOu9hOHKdT2q3T github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/juju/loggo v0.0.0-20190526231331-6e530bcce5d8/go.mod h1:vgyd7OREkbtVEN/8IXZe5Ooef3LQePvuBm9UWj6ZL8U= 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/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= @@ -1464,19 +1446,15 @@ github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+o github.com/klauspost/compress v1.9.5/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.10.10/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.0/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/klauspost/compress v1.11.2/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.12/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.13/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.13.1/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= -github.com/klauspost/compress v1.13.4/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.13.6 h1:P76CopJELS0TiO2mebmnzgWaajssP/EszplttgQxcgc= github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= github.com/klauspost/cpuid v1.2.3/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/klauspost/cpuid v1.3.1/go.mod h1:bYW4mA6ZgKPob1/Dlai2LviZJO7KGI3uoWLd42rAQw4= github.com/klauspost/pgzip v1.0.2-0.20170402124221-0bf5dcad4ada/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= -github.com/klauspost/pgzip v1.2.5/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= github.com/knadh/koanf v1.3.2 h1:0JKfmTLcvEmdJwjY16BMOVKpqThxRwj29CtQvZiCsAA= github.com/knadh/koanf v1.3.2/go.mod h1:HZ7HMLIGbrWJUfgtEzfHvzR/rX+eIqQlBNPRr4Vt42s= github.com/knq/sysutil v0.0.0-20191005231841-15668db23d08/go.mod h1:dFWs1zEqDjFtnBXsd1vPOZaLsESovai349994nHx3e0= @@ -1495,7 +1473,6 @@ github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NB github.com/kr/pty v1.0.0/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= -github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= @@ -1516,29 +1493,30 @@ github.com/leesper/go_rng v0.0.0-20190531154944-a612b043e353/go.mod h1:N0SVk0uhy github.com/leodido/go-urn v1.1.0/go.mod h1:+cyI34gQWZcE1eQU7NVgKkkzdXDQHr1dBMtdAPozLkw= github.com/leodido/ragel-machinery v0.0.0-20181214104525-299bdde78165 h1:bCiVCRCs1Heq84lurVinUPy19keqGEe4jh5vtK37jcg= github.com/leodido/ragel-machinery v0.0.0-20181214104525-299bdde78165/go.mod h1:WZxr2/6a/Ar9bMDc2rN/LJrE/hF6bXE4LPyDSIxwAfg= +github.com/lib/pq v0.0.0-20150723085316-0dad96c0b94f/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v0.0.0-20180523175426-90697d60dd84/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.3.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.10.1 h1:6VXZrLU0jHBYyAqrSPa+MgPfnSvTPuMgK+k0o5kVFWo= github.com/lib/pq v1.10.1/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de h1:9TO3cAIGXtEhnIaL+V+BEER86oLrvS+kWobKpbJuye0= +github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= github.com/lightstep/lightstep-tracer-go v0.18.0/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= -github.com/linode/linodego v0.28.5/go.mod h1:BR0gVkCJffEdIGJSl6bHR80Ty+Uvg/2jkjmrWaFectM= github.com/linode/linodego v1.1.0 h1:ZiFVUptlzuExtUbHZtXiN7I0dAOFQAyirBKb/6/n9n4= github.com/linode/linodego v1.1.0/go.mod h1:x/7+BoaKd4unViBmS2umdjYyVAmpFtBtEXZ0wou7FYQ= +github.com/linuxkit/virtsock v0.0.0-20201010232012-f8cee7dfc7a3/go.mod h1:3r6x7q95whyfWQpmGZTu3gk3v2YkMi05HEzl7Tf7YEo= github.com/lovoo/gcloud-opentracing v0.3.0/go.mod h1:ZFqk2y38kMDDikZPAK7ynTTGuyt17nSPdS3K5e+ZTBY= -github.com/lucasb-eyer/go-colorful v1.0.2/go.mod h1:0MS4r+7BZKSJ5mw4/S5MPN+qHFF1fYclkSPilDOKW0s= -github.com/lucasb-eyer/go-colorful v1.0.3/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= github.com/lufia/iostat v1.1.0/go.mod h1:rEPNA0xXgjHQjuI5Cy05sLlS2oRcSlWHRLrvh/AQ+Pg= github.com/lufia/iostat v1.2.0/go.mod h1:rEPNA0xXgjHQjuI5Cy05sLlS2oRcSlWHRLrvh/AQ+Pg= github.com/lufia/iostat v1.2.1 h1:tnCdZBIglgxD47RyD55kfWQcJMGzO+1QBziSQfesf2k= github.com/lufia/iostat v1.2.1/go.mod h1:rEPNA0xXgjHQjuI5Cy05sLlS2oRcSlWHRLrvh/AQ+Pg= -github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= github.com/lyft/protoc-gen-star v0.5.1/go.mod h1:9toiA3cC7z5uVbODF7kEQ91Xn7XNFkVUl+SrEe+ZORU= github.com/lyft/protoc-gen-validate v0.0.0-20180911180927-64fcb82c878e/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= +github.com/magiconair/properties v1.5.3/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= 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.5 h1:b6kJs+EmPFMYGkow9GiUyCyOvIwYetYJ3fSaWak/Gls= @@ -1552,7 +1530,6 @@ github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= github.com/mailru/easyjson v0.7.1/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= github.com/marstr/guid v1.1.0/go.mod h1:74gB1z2wpxxInTG6yaqA7KrtM0NZ+RbrcqDvYHefzho= @@ -1581,11 +1558,11 @@ github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzp github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.6/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/mattn/go-runewidth v0.0.8/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-shellwords v1.0.3/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= github.com/mattn/go-shellwords v1.0.6/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= +github.com/mattn/go-sqlite3 v1.6.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= github.com/mattn/go-sqlite3 v1.10.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= github.com/mattn/go-sqlite3 v1.11.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= github.com/mattn/go-tty v0.0.0-20180907095812-13ff1204f104/go.mod h1:XPvLUNfbS4fJH25nqRHfWLMa1ONC8Amw+mIA639KxkE= @@ -1595,6 +1572,7 @@ github.com/matttproud/golang_protobuf_extensions v1.0.0/go.mod h1:D8He9yQNgCq6Z5 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 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/maxbrunsfeld/counterfeiter/v6 v6.2.2/go.mod h1:eD9eIE7cdwcMi9rYluz88Jz2VyhSmden33/aXg4oVIY= github.com/mdlayher/apcupsd v0.0.0-20200608131503-2bf01da7bf1b/go.mod h1:WYK/Z/aXq9cbMFIL5ihcA4sX/r/3/WCas/Qvs/2fXcA= github.com/mdlayher/ethtool v0.0.0-20210210192532-2b88debcdd43 h1:WgyLFv10Ov49JAQI/ZLUkCZ7VJS3r74hwFIGXJsgZlY= github.com/mdlayher/ethtool v0.0.0-20210210192532-2b88debcdd43/go.mod h1:+t7E0lkKfbBsebllff1xdTmyJt8lH37niI6kwFk9OTo= @@ -1629,13 +1607,14 @@ github.com/miekg/dns v1.1.38/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7 github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= github.com/miekg/dns v1.1.43 h1:JKfpVSCB84vrAmHzyrsxB5NAr5kLoMXZArPSw7Qlgyg= github.com/miekg/dns v1.1.43/go.mod h1:+evo5L0630/F6ca/Z9+GAqzhjGyn8/c+TBaOyfEl0V4= +github.com/miekg/pkcs11 v1.0.2/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= +github.com/miekg/pkcs11 v1.0.3 h1:iMwmD7I5225wv84WxIG/bmxz9AXjWvTWIbM/TYHvWtw= github.com/miekg/pkcs11 v1.0.3/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= github.com/mikioh/ipaddr v0.0.0-20190404000644-d465c8ab6721/go.mod h1:Ickgr2WtCLZ2MDGd4Gr0geeCH5HybhRJbonOgQpvSxc= github.com/mileusna/useragent v0.0.0-20190129205925-3e331f0949a5/go.mod h1:JWhYAp2EXqUtsxTKdeGlY8Wp44M7VxThC9FEoNGi2IE= github.com/mindprince/gonvml v0.0.0-20190828220739-9ebdce4bb989 h1:PS1dLCGtD8bb9RPKJrc8bS7qHL6JnW1CZvwzH9dPoUs= github.com/mindprince/gonvml v0.0.0-20190828220739-9ebdce4bb989/go.mod h1:2eu9pRWp8mo84xCg6KswZ+USQHjwgRhNp06sozOdsTY= github.com/minio/highwayhash v1.0.1/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= -github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= github.com/minio/md5-simd v1.1.0/go.mod h1:XpBqgZULrMYD3R+M28PcmP0CkI7PEMzB3U77ZrKZ0Gw= github.com/minio/minio-go/v6 v6.0.44/go.mod h1:qD0lajrGW49lKZLtXKtCB4X/qkMf0a5tBvN2PaZg7Gg= github.com/minio/minio-go/v6 v6.0.56/go.mod h1:KQMM+/44DSlSGSQWSfRrAZ12FVMmpWNuX37i2AX0jfI= @@ -1662,6 +1641,7 @@ github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS4 github.com/mitchellh/hashstructure v0.0.0-20170609045927-2bca23e0e452/go.mod h1:QjSHrPWS+BGUVBYkbTZWEnOh3G1DutKwClXU/ABz6AQ= github.com/mitchellh/hashstructure v1.1.0/go.mod h1:xUDAozZz0Wmdiufv0uyhnHkUTN6/6d8ulp4AwfLKrmA= github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= +github.com/mitchellh/mapstructure v0.0.0-20150613213606-2caf8efc9366/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.3.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= @@ -1675,16 +1655,19 @@ github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx github.com/mitchellh/reflectwalk v1.0.1/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= -github.com/mjibson/esc v0.2.0/go.mod h1:9Hw9gxxfHulMF5OJKCyhYD7PzlSdhzXyaGEBRPH1OPs= github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= +github.com/moby/sys/mount v0.3.0 h1:bXZYMmq7DBQPwHRxH/MG+u9+XF90ZOwoXpHTOznMGp0= +github.com/moby/sys/mount v0.3.0/go.mod h1:U2Z3ur2rXPFrFmy4q6WMwWrBOAQGYtYTRVM8BIvzbwk= github.com/moby/sys/mountinfo v0.4.0/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= -github.com/moby/sys/mountinfo v0.4.1 h1:1O+1cHA1aujwEwwVMa2Xm2l+gIpUHyd3+D+d7LZh1kM= github.com/moby/sys/mountinfo v0.4.1/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= +github.com/moby/sys/mountinfo v0.5.0 h1:2Ks8/r6lopsxWi9m58nlwjaeSzUX9iiL1vj5qB/9ObI= +github.com/moby/sys/mountinfo v0.5.0/go.mod h1:3bMD3Rg+zkqx8MRYPi7Pyb0Ie97QEBmdxbhnCLlSvSU= github.com/moby/sys/symlink v0.1.0/go.mod h1:GGDODQmbFOjFsXvfLVn3+ZRxkch54RkSiGqsZeMYowQ= github.com/moby/term v0.0.0-20200312100748-672ec06f55cd/go.mod h1:DdlQx2hp0Ss5/fLikoLlEeIYiATotOjgB//nb973jeo= -github.com/moby/term v0.0.0-20201216013528-df9cb8a40635 h1:rzf0wL0CHVc8CEsgyygG0Mn9CNCCPZqOPaz8RiiHYQk= github.com/moby/term v0.0.0-20201216013528-df9cb8a40635/go.mod h1:FBS0z0QWA44HXygs7VXDUOGoN/1TV3RuWkLO04am3wc= +github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6 h1:dcztxKSvZ4Id8iPpHERQBbIJfabdt4wUm5qy3wOL2Zc= +github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6/go.mod h1:E2VnQOmVuvZB6UYnnDB0qG5Nq/1tD9acaOpo6xmt0Kw= 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= @@ -1699,7 +1682,6 @@ github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/mostynb/go-grpc-compression v1.1.15 h1:9pLWmZldgo3vstd3yGyNgpCzY5gvhCrCj3PyvnvlDiY= github.com/mostynb/go-grpc-compression v1.1.15/go.mod h1:OTK+ha9cKfSY0Pb3ESCzvGhzStJrudBxXPzuC3PaA5A= -github.com/mozilla/tls-observatory v0.0.0-20190404164649-a3c1b6cfecfd/go.mod h1:SrKMQvPiws7F7iqYp8/TX+IhxCYhzr6N/1yb8cwHsGk= github.com/mozillazg/go-cos v0.13.0/go.mod h1:Zp6DvvXn0RUOXGJ2chmWt2bLEqRAnJnS3DnAZsJsoaE= github.com/mozillazg/go-httpheader v0.2.1/go.mod h1:jJ8xECTlalr6ValeXYdOF8fFUISeBAdw6E61aqQma60= github.com/mrunalp/fileutils v0.5.0 h1:NKzVxiH7eSk+OQ4M+ZYW1K6h27RUV3MI6NUTsHhU6Z4= @@ -1717,20 +1699,16 @@ github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5Vgl github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= github.com/nats-io/jwt v1.2.2/go.mod h1:/xX356yQA6LuXI9xWW7mZNpxgF2mBmGecH+Fj34sP5Q= github.com/nats-io/jwt/v2 v2.0.2/go.mod h1:VRP+deawSXyhNjXmxPCHskrR6Mq50BqpEI5SEcNiGlY= -github.com/nats-io/jwt/v2 v2.0.3/go.mod h1:VRP+deawSXyhNjXmxPCHskrR6Mq50BqpEI5SEcNiGlY= github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= github.com/nats-io/nats-server/v2 v2.1.4/go.mod h1:Jw1Z28soD/QasIA2uWjXyM9El1jly3YwyFOuR8tH1rg= github.com/nats-io/nats-server/v2 v2.2.6/go.mod h1:sEnFaxqe09cDmfMgACxZbziXnhQFhwk+aKkZjBBRYrI= -github.com/nats-io/nats-server/v2 v2.5.0/go.mod h1:Kj86UtrXAL6LwYRA6H4RqzkHhK0Vcv2ZnKD5WbQ1t3g= github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= github.com/nats-io/nats.go v1.11.0/go.mod h1:BPko4oXsySz4aSWeFgOHLZs3G4Jq4ZAyE6/zMCxRT6w= -github.com/nats-io/nats.go v1.12.1/go.mod h1:BPko4oXsySz4aSWeFgOHLZs3G4Jq4ZAyE6/zMCxRT6w= github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nkeys v0.2.0/go.mod h1:XdZpAbhgyyODYqjTawOnIOI7VlbKSarI9Gfy1tqEu/s= github.com/nats-io/nkeys v0.3.0/go.mod h1:gvUNGjVcM2IPr5rCsRsC6Wb3Hr2CQAm08dsxtV6A5y4= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= -github.com/nbutton23/zxcvbn-go v0.0.0-20180912185939-ae427f1e4c1d/go.mod h1:o96djdrsSGy3AWPyBgZMAGfxZNfgntdJG+11KU4QvbU= github.com/ncabatoff/fakescraper v0.0.0-20201102132415-4b37ba603d65/go.mod h1:Tx6UMSMyIsjLG/VU/F6xA1+0XI+/f9o1dGJnf1l+bPg= github.com/ncabatoff/go-seq v0.0.0-20180805175032-b08ef85ed833 h1:t4WWQ9I797y7QUgeEjeXnVb+oYuEDQc6gLvrZJTYo94= github.com/ncabatoff/go-seq v0.0.0-20180805175032-b08ef85ed833/go.mod h1:0CznHmXSjMEqs5Tezj/w2emQoM41wzYM9KpDKUHPYag= @@ -1758,7 +1736,6 @@ github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/oliver006/redis_exporter v1.27.1 h1:vYMjrOsZM73Z+KMFeF/9kQ0oDU1QaQhGpsqVxXOHR+c= github.com/oliver006/redis_exporter v1.27.1/go.mod h1:XSYKlN8zrq6YLG8FOt0eZfTLRTxArPWc11IgKrnNkk4= -github.com/olivere/elastic v6.2.37+incompatible/go.mod h1:J+q1zQJTgAz9woqsbVRqGeB5G1iqDKVBWLNSYW8yfJ8= github.com/onsi/ginkgo v0.0.0-20151202141238-7f8ab55aaf3b/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= 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= @@ -1772,7 +1749,6 @@ github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108 github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= github.com/onsi/ginkgo v1.14.1/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= github.com/onsi/ginkgo v1.15.0/go.mod h1:hF8qUzuuC8DJGygJH3726JnCZX4MYbRB8yFfISqnKUg= -github.com/onsi/ginkgo v1.16.2/go.mod h1:CObGmKUOKaSC0RjmoAK7tKyn4Azo5P2IWuoMnvwxz1E= github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= @@ -1789,7 +1765,6 @@ github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1y github.com/onsi/gomega v1.10.2/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.10.3/go.mod h1:V9xEwhxec5O8UDM77eCW8vLymOMltsqPVYWrpDsH8xc= github.com/onsi/gomega v1.10.5/go.mod h1:gza4q3jKQJijlu05nKWRCW/GavJumGt8aNRxWg7mt48= -github.com/onsi/gomega v1.13.0/go.mod h1:lRk9szgn8TxENtWd0Tp4c3wjlRfMTMH27I+3Je41yGY= github.com/onsi/gomega v1.16.0 h1:6gjqkI8iiRHMvdccRJM8rVKjCWk6ZIm6FTm3ddIe4/c= github.com/onsi/gomega v1.16.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= @@ -1801,7 +1776,6 @@ github.com/open-telemetry/opentelemetry-collector-contrib/exporter/loadbalancing github.com/open-telemetry/opentelemetry-collector-contrib/exporter/loadbalancingexporter v0.40.0/go.mod h1:8gCz0iEj986dJMmKwi/tYo8pdQj/mnBRiRkemi97XGw= github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.40.0 h1:KCRIWJ8cqooPisXKhhoFPmq6Oo5nhb2X0XU/9uW6yAU= github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.40.0/go.mod h1:kbjb5xSL0+VLPOaroPGXV9/aZKfHDx1NEzRGjX55avA= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusremotewriteexporter v0.40.0/go.mod h1:w0fvrEO4ZpvmdfWFRimRBed6qrsJQKW9A1XaWFzwX6g= github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.40.0 h1:FDoxyvSRJumeWNMMtwmyS6qz+5vDogkOAViz7EUvF6s= github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.40.0/go.mod h1:a56dESln9qTQfvLlG4iVrDSVsLzWaFS5363i8sAxqDo= github.com/open-telemetry/opentelemetry-collector-contrib/internal/sharedcomponent v0.40.0 h1:IICNKhsUNFUw9qLmOVj4EkoTS+MYrGqAij+LgEM/f/c= @@ -1829,7 +1803,6 @@ github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kafkareceiver github.com/open-telemetry/opentelemetry-collector-contrib/receiver/opencensusreceiver v0.40.0 h1:miGyqEInA0tkbRUIXHsN2M518dowt1aBjbQIpSPuSbI= github.com/open-telemetry/opentelemetry-collector-contrib/receiver/opencensusreceiver v0.40.0/go.mod h1:/Rf2qXVPJkFz4tuRNr53CwdXEkixAWRQUqHLnCLwlaY= github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver v0.40.0 h1:66Lu5/q8QYEhfoJwtCBTOkBUU3UcHm3uOxf6ID1AAjQ= -github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver v0.40.0/go.mod h1:B+xJb1mP9Mpzyz5q/NKWP2574RNTIgri2aAxhl/VAr8= github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zipkinreceiver v0.40.0 h1:oQ+hXHYEDokuggT00/YoD77xGseH2UfkA+n/Z9B2Ugs= github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zipkinreceiver v0.40.0/go.mod h1:BcABvzE8U4lB6mys1/gZlf7zEkX9C1Q82XB3tEgGdPU= github.com/openconfig/gnmi v0.0.0-20180912164834-33a1865c3029/go.mod h1:t+O9It+LKzfOAhKTT5O0ehDix+MTqbtT0T9t+7zzOvc= @@ -1863,7 +1836,6 @@ github.com/opencontainers/selinux v1.8.0/go.mod h1:RScLhm78qiWa2gbVCcGkC7tCGdgk3 github.com/opencontainers/selinux v1.8.2 h1:c4ca10UMgRcvZ6h0K4HtS15UaVSBEaE+iln2LVpAuGc= github.com/opencontainers/selinux v1.8.2/go.mod h1:MUIHuUEvKB1wtJjQdOyYRgOnLD2xAPP8dBsCoU0KuF8= github.com/opentracing-contrib/go-grpc v0.0.0-20180928155321-4b5a12d3ff02/go.mod h1:JNdpVEzCpXBgIiv4ds+TzhN1hrtxq6ClLrTlT9OQRSc= -github.com/opentracing-contrib/go-grpc v0.0.0-20191001143057-db30781987df/go.mod h1:DYR5Eij8rJl8h7gblRrOZ8g0kW1umSpKqYIBTgeDtLo= github.com/opentracing-contrib/go-grpc v0.0.0-20210225150812-73cb765af46e h1:4cPxUYdgaGzZIT5/j0IfqOrrXmq6bG8AwvwisMXpdrg= github.com/opentracing-contrib/go-grpc v0.0.0-20210225150812-73cb765af46e/go.mod h1:DYR5Eij8rJl8h7gblRrOZ8g0kW1umSpKqYIBTgeDtLo= github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= @@ -1904,10 +1876,8 @@ github.com/percona/exporter_shared v0.7.4-0.20211108113423-8555cdbac68b h1:tPnod github.com/percona/exporter_shared v0.7.4-0.20211108113423-8555cdbac68b/go.mod h1:bweWrCdYX+iAONTNUNIIkXGDjGg8dbFL0VBxuUv0wus= github.com/percona/go-mysql v0.0.0-20190903141930-197f4ad8db8d/go.mod h1:/SGLf9OMxlnK6jq4mkFiImBcJXXk5jwD+lDrwDaGXcw= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= -github.com/performancecopilot/speed/v4 v4.0.0/go.mod h1:qxrSyuDGrTOWfV+uKRFhfxw6h/4HXRGUiZiufxo49BM= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/peterh/liner v1.0.1-0.20180619022028-8c1271fcf47f/go.mod h1:xIteQHvHuaLYG9IFj6mSxM0fCKrs34IrEQUhOYuGPHc= -github.com/philhofer/fwd v1.1.1/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= github.com/pierrec/cmdflag v0.0.2/go.mod h1:a3zKGZ3cdQUfxjd0RGMLZr8xI3nvpJOB+m6o/1X5BmU= github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= @@ -1915,7 +1885,6 @@ github.com/pierrec/lz4 v2.5.2+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi github.com/pierrec/lz4 v2.6.1+incompatible h1:9UY3+iC23yxF0UfGaYrGplQ+79Rg+h/q9FV9ix19jjM= github.com/pierrec/lz4 v2.6.1+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pierrec/lz4/v3 v3.3.4/go.mod h1:280XNCGS8jAcG++AHdd6SeWnzyJ1w9oow2vbORyey8Q= -github.com/pierrec/lz4/v4 v4.1.7/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pkg/browser v0.0.0-20180916011732-0a3d74bf9ce4/go.mod h1:4OwLy04Bl9Ef3GJJCoec+30X3LQs/0/m4HFRt/2LUSA= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1-0.20171018195549-f15c970de5b7/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -1952,6 +1921,7 @@ github.com/prometheus/alertmanager v0.23.1-0.20210914172521-e35efbddb66a/go.mod github.com/prometheus/client_golang v0.0.0-20180209125602-c332b6f63c06/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.0.0-20180328130430-f504d69affe1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.8.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.0-pre1.0.20180209125602-c332b6f63c06/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM= github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= @@ -2041,12 +2011,13 @@ github.com/prometheus/procfs v0.0.11/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4 github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.7.4-0.20211011103944-1a7a2bd3279f h1:ncXqc93eJV1Ncr3f6GA3MrIDNkNHvcPonRC2QgZaVkQ= github.com/prometheus/procfs v0.7.4-0.20211011103944-1a7a2bd3279f/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/rabbitmq/amqp091-go v1.1.0/go.mod h1:ogQDLSOACsLPsIq0NpbtiifNZi2YOz0VTJ0kHRghqbM= github.com/rafaeljusto/redigomock v0.0.0-20190202135759-257e089e14a1/go.mod h1:JaY6n2sDr+z2WTsXkOmNRUfDy6FN0L6Nk7x06ndm4tY= +github.com/rancher/k3d/v5 v5.2.2 h1:9F+wqmRZz5Gl7o70g0OSPLYVyCOrz/rJPVQhxmaI2Bo= +github.com/rancher/k3d/v5 v5.2.2/go.mod h1:wf9CUngX+Klerdc1rKlQV5OKzTQesCwoYGDMcB56DLQ= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rcrowley/go-metrics v0.0.0-20200313005456-10cdbea86bc0/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= @@ -2059,8 +2030,6 @@ github.com/rfratto/go-yaml v0.0.0-20211119180816-77389c3526dc/go.mod h1:rMzeXFmW github.com/rgeyer/github-exporter v0.0.0-20210722215637-d0cec2ee0dc8 h1:wNuNGrFzFmZlhrtz1Q8EiK1Ob6yWli8lX7D2AGmSGzE= github.com/rgeyer/github-exporter v0.0.0-20210722215637-d0cec2ee0dc8/go.mod h1:6XoOvFDTfk3aqGaOLHLxoWiZNx4zHobApOhKc3oHF/g= github.com/rhnvrm/simples3 v0.6.1/go.mod h1:Y+3vYm2V7Y4VijFoJHHTrja6OgPrJ2cBti8dPGkC3sA= -github.com/rivo/tview v0.0.0-20200219210816-cd38d7432498/go.mod h1:6lkG1x+13OShEf0EaOCaTQYyB7d5nSbb181KtjlS+84= -github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rlankfo/percona-toolkit v0.0.0-20211028191359-7aada1bf148f h1:rmF1x0fYpkVM5UsjL0RCGBUpfE2lS9vAGWbyAdDvXGY= github.com/rlankfo/percona-toolkit v0.0.0-20211028191359-7aada1bf148f/go.mod h1:rfOuOPhJETQRkJGQ68P6KBGlQzC4/L69S9f5JCHlk8E= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= @@ -2089,20 +2058,18 @@ github.com/sagikazarmark/crypt v0.1.0/go.mod h1:B/mN0msZuINBtQ1zZLEQcegFJJf9vnYI github.com/samuel/go-zookeeper v0.0.0-20180130194729-c4fab1ac1bec/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da h1:p3Vo3i64TCLY7gIfzeQaUJ+kppEO5WQG3cL8iE8tGHU= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= -github.com/sanity-io/litter v1.2.0/go.mod h1:JF6pZUFgu2Q0sBZ+HSV35P8TVPI1TTzEwyu9FXAw2W4= github.com/santhosh-tekuri/jsonschema v1.2.4/go.mod h1:TEAUOeZSmIxTTuHatJzrvARHiuO9LYd+cIxzgEHCQI4= github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/scaleway/scaleway-sdk-go v1.0.0-beta.7.0.20210223165440-c65ae3540d44 h1:3egqo0Vut6daANFm7tOXdNAa8v5/uLU+sgCJrc88Meo= github.com/scaleway/scaleway-sdk-go v1.0.0-beta.7.0.20210223165440-c65ae3540d44/go.mod h1:CJJ5VAbozOl0yEw7nHB9+7BXTJbIn6h7W+f6Gau5IP8= github.com/schollz/progressbar/v2 v2.13.2/go.mod h1:6YZjqdthH6SCZKv2rqGryrxPtfmRB/DWZxSMfCXPyD8= +github.com/sclevine/spec v1.2.0/go.mod h1:W4J29eT/Kzv7/b9IWLB055Z+qvVC9vt0Arko24q7p+U= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/seccomp/libseccomp-golang v0.9.1 h1:NJjM5DNFOs0s3kYE1WUOr6G8V97sdt46rlXTMfXGWBo= github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= -github.com/securego/gosec v0.0.0-20200203094520-d13bb6d2420c/go.mod h1:gp0gaHj0WlmPh9BdsTmo1aq6C27yIPWdxCKGFGdVKBE= github.com/segmentio/fasthash v0.0.0-20180216231524-a72b379d632e/go.mod h1:tm/wZFQ8e24NYaBGIlnO2WGCAi67re4HHuOm0sftE/M= -github.com/segmentio/fasthash v1.0.2/go.mod h1:waKX8l2N8yckOgmSsXJi7x1ZfdKZ4x7KRMzBtS3oedY= github.com/segmentio/kafka-go v0.1.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo= github.com/sercand/kuberesolver v2.1.0+incompatible/go.mod h1:lWF3GL0xptCB/vCiJPl/ZshwPsX/n4Y7u0CW9E7aQIQ= github.com/sercand/kuberesolver v2.4.0+incompatible h1:WE2OlRf6wjLxHwNkkFLQGaZcVLEXjMjBPjjEU5vksH8= @@ -2115,7 +2082,6 @@ github.com/shirou/gopsutil v2.20.8+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu github.com/shirou/gopsutil v2.20.9+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= github.com/shirou/gopsutil v3.21.8+incompatible h1:sh0foI8tMRlCidUJR+KzqWYWxrkuuPIGiO6Vp+KXdCU= github.com/shirou/gopsutil v3.21.8+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= -github.com/shirou/gopsutil/v3 v3.21.10/go.mod h1:t75NhzCZ/dYyPQjyQmrAYP6c8+LCdFANeBMdLPCNnew= github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4/go.mod h1:qsXQc7+bwAM3Q1u/4XEfrquwF8Lw7D7y5cD8CuHnfIc= github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= github.com/shopspring/decimal v0.0.0-20200105231215-408a2507e114/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= @@ -2130,7 +2096,6 @@ github.com/shurcooL/vfsgen v0.0.0-20200824052919-0d455de96546/go.mod h1:TrYk7fJV github.com/siebenmann/go-kstat v0.0.0-20160321171754-d34789b79745/go.mod h1:G81aIFAMS9ECrwBYR9YxhlPjWgrItd+Kje78O6+uqm8= github.com/siebenmann/go-kstat v0.0.0-20210513183136-173c9b0a9973 h1:GfSdC6wKfTGcgCS7BtzF5694Amne1pGCSTY252WhlEY= github.com/siebenmann/go-kstat v0.0.0-20210513183136-173c9b0a9973/go.mod h1:G81aIFAMS9ECrwBYR9YxhlPjWgrItd+Kje78O6+uqm8= -github.com/simonpasquier/klog-gokit v0.3.0 h1:TkFK21cbwDRS+CiystjqbAiq5ubJcVTk9hLUck5Ntcs= github.com/simonpasquier/klog-gokit v0.3.0/go.mod h1:+SUlDQNrhVtGt2FieaqNftzzk8P72zpWlACateWxA9k= github.com/simonpasquier/klog-gokit/v3 v3.1.0 h1:xQGqjZdgo1lFA4eZ9PcGnKKXgIPz9t+jc25q/fXooIE= github.com/simonpasquier/klog-gokit/v3 v3.1.0/go.mod h1:+WRhGy707Lp2Q4r727m9Oc7FxazOHgW76FIyCr23nus= @@ -2173,10 +2138,12 @@ github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY52 github.com/spf13/afero v1.3.4/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= github.com/spf13/afero v1.6.0 h1:xoax2sJ2DT8S8xA2paPFjDCScCNeWsg75VG0DLRreiY= github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= +github.com/spf13/cast v0.0.0-20150508191742-4d07383ffe94/go.mod h1:r2rcYCSwa1IExKTDiTfzaxqT2FNHs8hODu4LnUfgKEg= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.4.1 h1:s0hze+J0196ZfEMTs80N7UlFt0BDuQ7Q+JDnHiMWKdA= github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cobra v0.0.1/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.2-0.20171109065643-2da4a54c5cee/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= @@ -2184,16 +2151,19 @@ github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHN github.com/spf13/cobra v1.1.1/go.mod h1:WnodtKOvamDL/PwE2M4iKs8aMDBZ5Q5klgD3qfVJQMI= github.com/spf13/cobra v1.2.1 h1:+KmjbUw1hriSNMF55oPrkZcb27aECyrj8V2ytv7kWDw= github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk= +github.com/spf13/jwalterweatherman v0.0.0-20141219030609-3d60171a6431/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.0/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.1-0.20171106142849-4c012f6dcd95/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.2/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 v0.0.0-20150530192845-be5ff3e4840c/go.mod h1:A8kyI5cUJhb8N+3pkfONlcEcZbueH6nhAm0Fq7SrnBM= github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= 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= @@ -2215,7 +2185,6 @@ github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/objx v0.2.0 h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v0.0.0-20161117074351-18a02ba4a312/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v0.0.0-20180303142811-b89eecf5ca5d/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.0/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= @@ -2247,18 +2216,14 @@ github.com/thanos-io/thanos v0.13.1-0.20210226164558-03dace0a1aa1/go.mod h1:gMCy github.com/thanos-io/thanos v0.13.1-0.20210401085038-d7dff0c84d17/go.mod h1:zU8KqE+6A+HksK4wiep8e/3UvCZLm+Wrw9AqZGaAm9k= github.com/thanos-io/thanos v0.19.0/go.mod h1:+mXfPepU1VrKw/fMfG2LIKF0NunOTZll452nGEFALhw= github.com/thanos-io/thanos v0.22.0/go.mod h1:SZDWz3phcUcBr4MYFoPFRvl+Z9Nbi45HlwQlwSZSt+Q= +github.com/theupdateframework/notary v0.7.0 h1:QyagRZ7wlSpjT5N2qQAh/pN+DVqgekv4DzbAiAiEL3c= +github.com/theupdateframework/notary v0.7.0/go.mod h1:c9DRxcmhHmVLDay4/2fUYdISnHqbFDGRSlXPO0AhYWw= github.com/tidwall/gjson v1.6.0/go.mod h1:P256ACg0Mn+j1RXIDXoss50DeIABTYK1PULOJHhxOls= -github.com/tidwall/gjson v1.10.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.0.1/go.mod h1:LujAq0jyVjBy028G1WhWfIzbpQfMO8bBZ6Tyb0+pL9E= -github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v0.0.0-20180105212114-65a9db5fad51/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= +github.com/tidwall/pretty v1.0.0 h1:HsD+QiTn7sK6flMKIvNmpqz1qrpP3Ps6jOKIKMooyg4= github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= -github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= -github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= -github.com/tidwall/tinylru v1.1.0/go.mod h1:3+bX+TJ2baOLMWTnlyNWHh4QMnFyARg2TLTQ6OFbzw8= -github.com/tidwall/wal v0.1.6/go.mod h1:r6lR1j27W9EPalgHiB7zLJDYu3mzW5BQP5KrzBpYY/E= github.com/tinylib/msgp v1.1.0/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= -github.com/tinylib/msgp v1.1.5/go.mod h1:eQsjooMTnV42mHu917E26IogZ2930nFyBQdofk10Udg= github.com/tklauser/go-sysconf v0.3.9 h1:JeUVdAOWhhxVcU6Eqr/ATFHgXk/mmiItdKeJPev3vTo= github.com/tklauser/go-sysconf v0.3.9/go.mod h1:11DU/5sG7UexIrp/O6g35hrWzu0JxlwQ3LSFUzyeuhs= github.com/tklauser/numcpus v0.3.0 h1:ILuRUQBtssgnxw0XXIjKUC56fgnOrFoQQ/4+DeU2biQ= @@ -2268,8 +2233,6 @@ github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1 github.com/tmc/grpc-websocket-proxy v0.0.0-20200427203606-3cfed13b9966/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tomnomnom/linkheader v0.0.0-20180905144013-02ca5825eb80 h1:nrZ3ySNYwJbSpD6ce9duiP+QkD3JuLCcWkdaehUS/3Y= github.com/tomnomnom/linkheader v0.0.0-20180905144013-02ca5825eb80/go.mod h1:iFyPdL66DjUD96XmzVL3ZntbzcflLnznH0fr99w5VqE= -github.com/tonistiigi/fifo v0.0.0-20190226154929-a9fb20d87448/go.mod h1:Q5IRRDY+cjIaiOjTAnXN5LKQV5MPqVx5ofQn85Jy5Yw= -github.com/ttacon/chalk v0.0.0-20160626202418-22c06c80ed31/go.mod h1:onvgF043R+lC5RZ8IT9rBXDaEDnpnw/Cl+HFiw+v/7Q= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= github.com/uber-go/tally v3.3.15+incompatible/go.mod h1:YDTIBxdXyOU/sCWilKB4bgyufu1cEi0jdVnRdxvjnmU= github.com/uber/athenadriver v1.1.4/go.mod h1:tQjho4NzXw55LGfSZEcETuYydpY1vtmixUabHkC1K/E= @@ -2290,8 +2253,6 @@ github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGr github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= -github.com/ulikunitz/xz v0.5.8 h1:ERv8V6GKqVi23rgu5cj9pVfVzJbOqAY2Ntl88O6c2nQ= -github.com/ulikunitz/xz v0.5.8/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= @@ -2301,7 +2262,6 @@ github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyC github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw= -github.com/vektra/mockery v0.0.0-20181123154057-e78b021dcbb5/go.mod h1:ppEjwdhyy7Y31EnHRDm1JkChoC7LXIJ7Ex0VYLWtZtQ= github.com/vishvananda/netlink v0.0.0-20171020171820-b2de5d10e38e/go.mod h1:+SR5DhBJrl6ZM7CoCKvpw5BKroDKQ+PJqOg65H/2ktk= github.com/vishvananda/netlink v0.0.0-20181108222139-023a6dafdcdf/go.mod h1:+SR5DhBJrl6ZM7CoCKvpw5BKroDKQ+PJqOg65H/2ktk= github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= @@ -2314,7 +2274,6 @@ github.com/vishvananda/netns v0.0.0-20200728191858-db3c7e526aae/go.mod h1:DD4vA1 github.com/vjeantet/grok v1.0.0/go.mod h1:/FWYEVYekkm+2VjcFmO9PufDU5FgXHUz9oy2EGqmQBo= github.com/vmware/govmomi v0.18.0/go.mod h1:URlwyTFZX72RmxtxuaFL2Uj3fD1JTvZdx59bHWk6aFU= github.com/vmware/govmomi v0.19.0/go.mod h1:URlwyTFZX72RmxtxuaFL2Uj3fD1JTvZdx59bHWk6aFU= -github.com/wadey/gocovmerge v0.0.0-20160331181800-b5bfa59ec0ad/go.mod h1:Hy8o65+MXnS6EwGElrSRjUzQDLXreJlzYLlWiHtt8hM= github.com/wavefronthq/wavefront-sdk-go v0.9.2/go.mod h1:hQI6y8M9OtTCtc0xdwh+dCER4osxXdEAeCpacjpDZEU= github.com/weaveworks/common v0.0.0-20200206153930-760e36ae819a/go.mod h1:6enWAqfQBFrE8X/XdJwZr8IKgh1chStuFR0mjU/UOUw= github.com/weaveworks/common v0.0.0-20200625145055-4b1847531bc9/go.mod h1:c98fKi5B9u8OsKGiWHLRKus6ToQ1Tubeow44ECO1uxY= @@ -2323,7 +2282,6 @@ github.com/weaveworks/common v0.0.0-20201119133501-0619918236ec/go.mod h1:ykzWac github.com/weaveworks/common v0.0.0-20210112142934-23c8d7fa6120/go.mod h1:ykzWac1LtVfOxdCK+jD754at1Ws9dKCwFeUzkFBffPs= github.com/weaveworks/common v0.0.0-20210419092856-009d1eebd624/go.mod h1:ykzWac1LtVfOxdCK+jD754at1Ws9dKCwFeUzkFBffPs= github.com/weaveworks/common v0.0.0-20210913144402-035033b78a78/go.mod h1:YU9FvnS7kUnRt6HY10G+2qHkwzP3n3Vb1XsXDsJTSp8= -github.com/weaveworks/common v0.0.0-20211015155308-ebe5bdc2c89e/go.mod h1:GWX2dQ7yjrgvqH0+d3kCJC5bsY8oOFwqjxFMHaRK4/k= github.com/weaveworks/common v0.0.0-20211222122857-933588f98737 h1:BBhcuf4+YMKHEYQqbmzNN+e3btTzh8xk3tA2xh24MfU= github.com/weaveworks/common v0.0.0-20211222122857-933588f98737/go.mod h1:YfOOLoW1Q/jIIu0WLeSwgStmrKjuJEZSKTAUc+0KFvE= github.com/weaveworks/promrus v1.2.0 h1:jOLf6pe6/vss4qGHjXmGz4oDJQA+AOCqEL3FvvZGz7M= @@ -2346,8 +2304,13 @@ github.com/xdg/stringprep v0.0.0-20180714160509-73f8eece6fdc/go.mod h1:Jhud4/sHM github.com/xdg/stringprep v1.0.0 h1:d9X0esnoa3dFsV0FG35rAT0RIhYFlPq7MiP+DW89La0= github.com/xdg/stringprep v1.0.0/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= +github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo= +github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f/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/xlab/treeprint v0.0.0-20180616005107-d6fb6747feb6/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= github.com/xlab/treeprint v1.0.0/go.mod h1:IoImgRak9i3zJyuxOKUP1v4UZd1tMoKkq/Cimt1uhCg= @@ -2411,7 +2374,6 @@ go.mongodb.org/mongo-driver v1.4.3/go.mod h1:WcMNYLx/IlOxLe6JRJiv2uXuCz6zBLndR4S go.mongodb.org/mongo-driver v1.4.4/go.mod h1:WcMNYLx/IlOxLe6JRJiv2uXuCz6zBLndR4SoGjYphSc= go.mongodb.org/mongo-driver v1.4.6/go.mod h1:WcMNYLx/IlOxLe6JRJiv2uXuCz6zBLndR4SoGjYphSc= go.mongodb.org/mongo-driver v1.5.1/go.mod h1:gRXCHX4Jo7J0IJ1oDQyUxF7jfy19UfxniMS4xxMmUqw= -go.mongodb.org/mongo-driver v1.5.2/go.mod h1:gRXCHX4Jo7J0IJ1oDQyUxF7jfy19UfxniMS4xxMmUqw= go.mongodb.org/mongo-driver v1.5.3/go.mod h1:gRXCHX4Jo7J0IJ1oDQyUxF7jfy19UfxniMS4xxMmUqw= go.mongodb.org/mongo-driver v1.7.1 h1:jwqTeEM3x6L9xDXrCxN0Hbg7vdGfPBOTIkr0+/LYZDA= go.mongodb.org/mongo-driver v1.7.1/go.mod h1:Q4oFMbo1+MSNqICAdYMlC/zSTrwCogR4R8NzkI+yfU8= @@ -2427,26 +2389,20 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opentelemetry.io/collector/model v0.30.0/go.mod h1:PcHNnM+RUl0uD8VkSn93PO78N7kQYhfqpI/eki57pl4= -go.opentelemetry.io/collector/model v0.36.0/go.mod h1:+7YCSjJG+MqiIFjauzt7oM2qkqBsaJWh5hcsO4fwsAc= go.opentelemetry.io/collector/model v0.40.0 h1:UgdWfBnJBQL4atFv6LhlYq67Ts/vFDbwGknvsIsm/g8= go.opentelemetry.io/collector/model v0.40.0/go.mod h1:dXqjAeml+cB+YzJ3kUnd3v5/JvGAKl3MqHXfgSWRIo8= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.27.0 h1:TON1iU3Y5oIytGQHIejDYLam5uoSMsmA0UV9Yupb5gQ= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.27.0/go.mod h1:T/zQwBldOpoAEpE3HMbLnI8ydESZVz4ggw6Is4FF9LI= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.27.0 h1:0BgiNWjN7rUWO9HdjF4L12r8OW86QkVQcYmCjnayJLo= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.27.0/go.mod h1:bdvm3YpMxWAgEfQhtTBaVR8ceXPRuRBSQrvOBnIlHxc= -go.opentelemetry.io/contrib/zpages v0.27.0/go.mod h1:D8d5QMQJnidUFSazrcjfwq6Qw17G39JY+d4XvhQFMyI= go.opentelemetry.io/otel v0.11.0/go.mod h1:G8UCk+KooF2HLkgo8RHX9epABH/aRGYET7gQOqBVdB0= go.opentelemetry.io/otel v1.2.0 h1:YOQDvxO1FayUcT9MIhJhgMyNO1WqoduiyvQHzGN0kUQ= go.opentelemetry.io/otel v1.2.0/go.mod h1:aT17Fk0Z1Nor9e0uisf98LrntPGMnk4frBO9+dkf69I= -go.opentelemetry.io/otel/exporters/prometheus v0.25.0/go.mod h1:TmEyKmTplB/cdILsJBqD9/JDK9ssGXWjsrpmMHodFLw= go.opentelemetry.io/otel/internal/metric v0.25.0 h1:w/7RXe16WdPylaIXDgcYM6t/q0K5lXgSdZOEbIEyliE= go.opentelemetry.io/otel/internal/metric v0.25.0/go.mod h1:Nhuw26QSX7d6n4duoqAFi5KOQR4AuzyMcl5eXOgwxtc= go.opentelemetry.io/otel/metric v0.25.0 h1:7cXOnCADUsR3+EOqxPaSKwhEuNu0gz/56dRN1hpIdKw= go.opentelemetry.io/otel/metric v0.25.0/go.mod h1:E884FSpQfnJOMMUaq+05IWlJ4rjZpk2s/F1Ju+TEEm8= go.opentelemetry.io/otel/sdk v1.2.0 h1:wKN260u4DesJYhyjxDa7LRFkuhH7ncEVKU37LWcyNIo= -go.opentelemetry.io/otel/sdk v1.2.0/go.mod h1:jNN8QtpvbsKhgaC6V5lHiejMoKD+V8uadoSafgHPx1U= -go.opentelemetry.io/otel/sdk/export/metric v0.25.0/go.mod h1:Ej7NOa+WpN49EIcr1HMUYRvxXXCCnQCg2+ovdt2z8Pk= -go.opentelemetry.io/otel/sdk/metric v0.25.0/go.mod h1:G4xzj4LvC6xDDSsVXpvRVclQCbofGGg4ZU2VKKtDRfg= go.opentelemetry.io/otel/trace v1.2.0 h1:Ys3iqbqZhcf28hHzrm5WAquMkDHNZTUkw7KHbuNjej0= go.opentelemetry.io/otel/trace v1.2.0/go.mod h1:N5FLswTubnxKxOJHM7XZC074qpeEdLy3CgAVsdMucK0= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= @@ -2460,7 +2416,6 @@ go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/automaxprocs v1.2.0/go.mod h1:YfO3fm683kQpzETxlTGZhGIVmXAhaw3gxeBADbpZtnU= -go.uber.org/automaxprocs v1.4.0/go.mod h1:/mTEdr7LvHhs0v7mjdxDreTz1OG5zdZGqgOnhWiR/+Q= go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/goleak v1.1.12 h1:gZAh5/EyT/HQwlpkCy6wTpqfH9H8Lz8zbm3dZh+OyzA= @@ -2525,6 +2480,7 @@ golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201112155050-0c6587e931a9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201117144127-c1f2f97bffc9/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20201208171446-5f87f3452ae9/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= @@ -2533,7 +2489,6 @@ golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20210915214749-c084706c2272/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210920023735-84f357641f63 h1:kETrAMYZq6WVGPa8IIixL0CaEcIUNi+1WX7grUoi3y8= golang.org/x/crypto v0.0.0-20210920023735-84f357641f63/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -2582,7 +2537,6 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180530234432-1e491301e022/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= 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= @@ -2660,10 +2614,12 @@ golang.org/x/net v0.0.0-20210610132358-84b48f89b13b/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20210614182718-04defd469f4e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210825183410-e898025ed96a/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210903162142-ad29c8ab022f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210917221730-978cfadd31cf/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211020060615-d418f374d309 h1:A0lJIi+hcTR6aajJH4YqKWwohY4aW9RO7oRMcdv+HKI= golang.org/x/net v0.0.0-20211020060615-d418f374d309/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211111160137-58aab5ef257a h1:c83jeVQW0KGKNaKBRfelNYNHaev+qawl9yaA825s8XE= +golang.org/x/net v0.0.0-20211111160137-58aab5ef257a/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/oauth2 v0.0.0-20170807180024-9a379c6b3e95/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181106182150-f42d05182288/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -2680,7 +2636,6 @@ golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210413134643-5e61552d6c78/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210427180440-81ed05c6b58c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= @@ -2737,7 +2692,7 @@ golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190626150813-e07cf5db2756/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190812073006-9eafafc0a87e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -2829,9 +2784,7 @@ golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210412220455-f1c623a9e750/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210503080704-8803ae5d1324/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -2849,17 +2802,17 @@ golang.org/x/sys v0.0.0-20210816074244-15123e1e1f71/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210906170528-6f6e22806c34/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210917161153-d61c044b1678/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211013075003-97ac67df715c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211020174200-9d6173849985/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211023085530-d6a326fbbf70/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-20211117180635-dee7805ff2e1 h1:kwrAHlwJ0DUBZwQ238v+Uod/3eZ8B2K5rYsUHBQvzmI= golang.org/x/sys v0.0.0-20211117180635-dee7805ff2e1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 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 h1:SZxvLBoTP5yHO3Frd4z4vrF+DBX9vMVanchswa69toE= golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b h1:9zKuko04nR4gjZ4+DNjHqRlAJqbJETHwiNKDqTfOjfE= +golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -2889,7 +2842,6 @@ golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181112210238-4b1f3b6b1646/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-20190125232054-d66bd3c5d5a6/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -2912,6 +2864,7 @@ golang.org/x/tools v0.0.0-20190617190820-da514acc4774/go.mod h1:/rFqwRUd4F7ZHNgw 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-20190706070813-72ffa07ba3db/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= golang.org/x/tools v0.0.0-20190813034749-528a2984e271/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -2937,7 +2890,6 @@ golang.org/x/tools v0.0.0-20200108203644-89082a384178/go.mod h1:TB2adYChydJhpapK golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200203023011-6f24f261dadb/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= 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= @@ -2956,6 +2908,7 @@ golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20200513201620-d5fe73897c97/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200522201501-cb1345f3a375/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200616133436-c1934b75d054/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/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-20200626171337-aa94e735be7f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= @@ -2965,8 +2918,8 @@ golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= +golang.org/x/tools v0.0.0-20200916195026-c9a70fc28ce3/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= golang.org/x/tools v0.0.0-20201014170642-d1624618ad65/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= -golang.org/x/tools v0.0.0-20201022035929-9cf592e881e9/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= @@ -3026,7 +2979,6 @@ google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBz google.golang.org/api v0.42.0/go.mod h1:+Oj4s6ch2SEGtPjGqfUfZonBH0GjQH89gTeKKAEGZKI= google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= google.golang.org/api v0.44.0/go.mod h1:EBOGZqzyhtvMDoxwS97ctnh0zUmYY6CxqXsc1AvkYD8= -google.golang.org/api v0.45.0/go.mod h1:ISLIJCedJolbZvDfAk+Ctuq5hf+aJ33WgtUsfyFoLXA= google.golang.org/api v0.46.0/go.mod h1:ceL4oozhkAiTID8XMmJBsIxID/9wMXJVVFXPg4ylg3I= google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= @@ -3049,7 +3001,6 @@ google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCID google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/cloud v0.0.0-20151119220103-975617b05ea8/go.mod h1:0H1ncTHf11KCFhTc/+EFRbzSCOZx+VUbRMk55Yv5MYk= -google.golang.org/genproto v0.0.0-20170818010345-ee236bd376b0/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180518175338-11a468237815/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180608181217-32ee49c4dd80/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= @@ -3087,6 +3038,7 @@ google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfG google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200527145253-8367513e4ece/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= google.golang.org/genproto v0.0.0-20200626011028-ee7919e894b5/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200707001353-8e8330bf89df/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= @@ -3109,8 +3061,6 @@ google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20210312152112-fc591d9ea70f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210413151531-c14fb6ef47c3/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= -google.golang.org/genproto v0.0.0-20210420162539-3c870d7478d2/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= google.golang.org/genproto v0.0.0-20210429181445-86c259c2b4ab/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= @@ -3127,15 +3077,14 @@ google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEc google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210917145530-b395a37504d4/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210921142501-181ce0d877f6/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211008145708-270636b82663/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211020151524-b7c3a969101a h1:8maMHMQp9NroHXhc3HelFX9Ay2lWlXLcdH5mw5Biz0s= google.golang.org/genproto v0.0.0-20211020151524-b7c3a969101a/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211112145013-271947fe86fd h1:8jqRgiTTWyKMDOM2AvhjA5dZLBSKXg1yFupPRBV/4fQ= +google.golang.org/genproto v0.0.0-20211112145013-271947fe86fd/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/grpc v0.0.0-20160317175043-d3ddb4469d5a/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v0.0.0-20180920234847-8997b5fa0873/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio= -google.golang.org/grpc v1.8.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= +google.golang.org/grpc v1.0.5/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.12.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= @@ -3193,6 +3142,8 @@ gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4 gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/asn1-ber.v1 v1.0.0-20181015200546-f715ec2f112d/go.mod h1:cuepJuh7vyXfUyUwEgHQXw849cJrilpS5NeIjOWESAw= +gopkg.in/cenkalti/backoff.v2 v2.2.1 h1:eJ9UAg01/HIHG987TwxvnzK2MgxXq97YY6rYDpY9aII= +gopkg.in/cenkalti/backoff.v2 v2.2.1/go.mod h1:S0QdOvT2AlerfSBkp0O+dk+bbIMaNbEmVk876gPCthU= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20141024133853-64131543e789/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -3203,7 +3154,6 @@ gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8 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/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= -gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fatih/pool.v2 v2.0.0/go.mod h1:8xVGeu1/2jr2wm5V9SPuMht2H5AEmf5aFMGSQixtjTY= gopkg.in/fsnotify.v1 v1.2.1/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= @@ -3222,8 +3172,9 @@ gopkg.in/ini.v1 v1.42.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.57.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.63.2 h1:tGK/CyBg7SMzb60vP1M03vNZ3VDu3wGQJwn7Sxi9r3c= gopkg.in/ini.v1 v1.63.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.64.0 h1:Mj2zXEXcNb5joEiSA0zc3HZpTst/iyjNiR4CN8tDzOg= +gopkg.in/ini.v1 v1.64.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/jcmturner/aescts.v1 v1.0.1/go.mod h1:nsR8qBOg+OucoIW+WMhB3GspUQXq9XorLnQb9XtvcOo= gopkg.in/jcmturner/dnsutils.v1 v1.0.1/go.mod h1:m3v+5svpVOhtFAP/wSz+yzh4Mc0Fg7eRhxkJMWSIz9Q= gopkg.in/jcmturner/goidentity.v3 v3.0.0/go.mod h1:oG2kH0IvSYNIu80dVAyu/yoefjq1mNfM5bm88whjWx4= @@ -3238,6 +3189,8 @@ gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24 gopkg.in/olivere/elastic.v5 v5.0.70/go.mod h1:FylZT6jQWtfHsicejzOm3jIMVPOAksa80i3o+6qtQRk= gopkg.in/ory-am/dockertest.v3 v3.3.4/go.mod h1:s9mmoLkaGeAh97qygnNj4xWkiN7e1SKekYC6CovU+ek= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/rethinkdb/rethinkdb-go.v6 v6.2.1 h1:d4KQkxAaAiRY2h5Zqis161Pv91A37uZyJOx73duwUwM= +gopkg.in/rethinkdb/rethinkdb-go.v6 v6.2.1/go.mod h1:WbjuEoo1oadwzQ4apSDU+JTvmllEHtsNHS6y7vFc7iw= gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/square/go-jose.v2 v2.5.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= @@ -3264,10 +3217,9 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh 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= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.2.1/go.mod h1:lPVVZ2BS5TfnjLyizF7o7hv7j9/L+8cZY2hLyjP9cGY= howett.net/plist v0.0.0-20181124034731-591f970eefbb/go.mod h1:vMygbs4qMhSZSc4lCUl2OEE+rDiIIJAIdR4m7MiMcm0= -inet.af/netaddr v0.0.0-20210707202901-70468d781e6c h1:ZNUX2CiFwNbN1VFaD4MQFmC8o5Rxc7BQW1P1K8kMpbE= -inet.af/netaddr v0.0.0-20210707202901-70468d781e6c/go.mod h1:z0nx+Dh+7N7CC8V5ayHtHGpZpxLQZZxkIaaz6HN65Ls= +inet.af/netaddr v0.0.0-20210903134321-85fa6c94624e h1:tvgqez5ZQoBBiBAGNU/fmJy247yB/7++kcLOEoMYup0= +inet.af/netaddr v0.0.0-20210903134321-85fa6c94624e/go.mod h1:z0nx+Dh+7N7CC8V5ayHtHGpZpxLQZZxkIaaz6HN65Ls= k8s.io/api v0.21.0 h1:gu5iGF4V6tfVCQ/R+8Hc0h7H1JuEhzyEi9S4R5LM8+Y= k8s.io/api v0.21.0/go.mod h1:+YbrhBBGgsxbF6o6Kj4KJPJnBmAKuXDeS3E18bgHNVU= k8s.io/apiextensions-apiserver v0.18.3/go.mod h1:TMsNGs7DYpMXd+8MOCX8KzPOCx8fnZMoIGB24m03+JE= @@ -3284,6 +3236,7 @@ k8s.io/apiserver v0.21.0/go.mod h1:w2YSn4/WIwYuxG5zJmcqtRdtqgW/J2JRgFAqps3bBpg= k8s.io/client-go v0.21.0 h1:n0zzzJsAQmJngpC0IhgFcApZyoGXPrDIAD601HD09ag= k8s.io/client-go v0.21.0/go.mod h1:nNBytTF9qPFDEhoqgEPaarobC8QPae13bElIVHzIglA= k8s.io/code-generator v0.18.3/go.mod h1:TgNEVx9hCyPGpdtCWA34olQYLkh3ok9ar7XfSsr8b6c= +k8s.io/code-generator v0.19.7/go.mod h1:lwEq3YnLYb/7uVXLorOJfxg+cUu2oihFhHZ0n9NIla0= k8s.io/code-generator v0.21.0/go.mod h1:hUlps5+9QaTrKx+jiM4rmq7YmH8wPOIko64uZCHDh6Q= k8s.io/component-base v0.18.3/go.mod h1:bp5GzGR0aGkYEfTj+eTY0AN/vXTgkJdQXjNTTVUaa3k= k8s.io/component-base v0.19.2/go.mod h1:g5LrsiTiabMLZ40AR6Hl45f088DevyGY+cCE2agEIVo= @@ -3299,6 +3252,8 @@ k8s.io/cri-api v0.20.6/go.mod h1:ew44AjNXwyn1s0U4xCKGodU7J1HzBeZ1MpGrpa5r8Yc= k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/gengo v0.0.0-20200114144118-36b2048a9120/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20201113003025-83324d819ded/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/gengo v0.0.0-20201214224949-b6c5ce23f027/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= k8s.io/kube-openapi v0.0.0-20200410145947-61e04a5be9a6/go.mod h1:GRQhZsXIAJ1xR0C9bd8UpWHZ5plfAS9fzPjJuQ6JL3E= @@ -3331,16 +3286,17 @@ sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.14/go.mod h1:LEScyz sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.15/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= sigs.k8s.io/controller-runtime v0.9.0-beta.5 h1:yteq8am8lUFvlI/bfIgySMp/MqAPXiAghxX+XrMCifE= sigs.k8s.io/controller-runtime v0.9.0-beta.5/go.mod h1:ufPDuvefw2Y1KnBgHQrLdOjueYlj+XJV2AszbT+WTxs= -sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e h1:4Z09Hglb792X0kfOBBJUPFEyvVfQWrYT/l8h5EKA6JQ= sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= sigs.k8s.io/structured-merge-diff/v3 v3.0.0-20200116222232-67a7b8c61874/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw= sigs.k8s.io/structured-merge-diff/v3 v3.0.0/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw= sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= sigs.k8s.io/structured-merge-diff/v4 v4.0.3/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= -sigs.k8s.io/structured-merge-diff/v4 v4.1.0 h1:C4r9BgJ98vrKnnVCjwCSXcWjWe0NKcUQkmzDXZXGwH8= sigs.k8s.io/structured-merge-diff/v4 v4.1.0/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/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= -sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q= sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= +sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= +sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= diff --git a/pkg/integrations/cadvisor/cadvisor.go b/pkg/integrations/cadvisor/cadvisor.go index 49aedd90c104..c82fbfd10b91 100644 --- a/pkg/integrations/cadvisor/cadvisor.go +++ b/pkg/integrations/cadvisor/cadvisor.go @@ -10,7 +10,7 @@ import ( "strings" "time" - "github.com/go-kit/kit/log" + "github.com/go-kit/log" "github.com/google/cadvisor/cache/memory" "github.com/google/cadvisor/container" v2 "github.com/google/cadvisor/info/v2" diff --git a/pkg/metrics/instance/instance.go b/pkg/metrics/instance/instance.go index 87818bb1f65e..86d9a713924e 100644 --- a/pkg/metrics/instance/instance.go +++ b/pkg/metrics/instance/instance.go @@ -35,6 +35,7 @@ import ( func init() { remote.UserAgent = fmt.Sprintf("GrafanaAgent/%s", build.Version) + scrape.UserAgent = fmt.Sprintf("GrafanaAgent/%s", build.Version) } var ( diff --git a/pkg/metrics/instance/manager.go b/pkg/metrics/instance/manager.go index a27012e63a10..a622d073b0f2 100644 --- a/pkg/metrics/instance/manager.go +++ b/pkg/metrics/instance/manager.go @@ -149,6 +149,9 @@ func (m *BasicManager) ListInstances() map[string]ManagedInstance { res := make(map[string]ManagedInstance, len(m.processes)) for name, process := range m.processes { + if process == nil { + continue + } res[name] = process.inst } return res diff --git a/pkg/operator/apis/monitoring/v1alpha1/types.go b/pkg/operator/apis/monitoring/v1alpha1/types.go index fc4122807f3f..a9f0b6396694 100644 --- a/pkg/operator/apis/monitoring/v1alpha1/types.go +++ b/pkg/operator/apis/monitoring/v1alpha1/types.go @@ -4,6 +4,7 @@ import ( prom_v1 "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1" v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "sigs.k8s.io/controller-runtime/pkg/client" ) // +kubebuilder:object:root=true @@ -24,6 +25,7 @@ type GrafanaAgent struct { // MetricsInstanceSelector returns a selector to find MetricsInstances. func (a *GrafanaAgent) MetricsInstanceSelector() ObjectSelector { return ObjectSelector{ + ObjectType: &MetricsInstance{}, ParentNamespace: a.Namespace, NamespaceSelector: a.Spec.Metrics.InstanceNamespaceSelector, Labels: a.Spec.Metrics.InstanceSelector, @@ -33,6 +35,7 @@ func (a *GrafanaAgent) MetricsInstanceSelector() ObjectSelector { // LogsInstanceSelector returns a selector to find LogsInstances. func (a *GrafanaAgent) LogsInstanceSelector() ObjectSelector { return ObjectSelector{ + ObjectType: &LogsInstance{}, ParentNamespace: a.Namespace, NamespaceSelector: a.Spec.Logs.InstanceNamespaceSelector, Labels: a.Spec.Logs.InstanceSelector, @@ -153,6 +156,7 @@ type GrafanaAgentSpec struct { // resource hierarchy. When NamespaceSelector is nil, objects should be // searched directly in the ParentNamespace. type ObjectSelector struct { + ObjectType client.Object ParentNamespace string NamespaceSelector *metav1.LabelSelector Labels *metav1.LabelSelector diff --git a/pkg/operator/apis/monitoring/v1alpha1/types_logs.go b/pkg/operator/apis/monitoring/v1alpha1/types_logs.go index 4b5f46b4290d..d32b76c48b20 100644 --- a/pkg/operator/apis/monitoring/v1alpha1/types_logs.go +++ b/pkg/operator/apis/monitoring/v1alpha1/types_logs.go @@ -100,9 +100,10 @@ type LogsInstance struct { Spec LogsInstanceSpec `json:"spec,omitempty"` } -// PodLogsInstanceSelector returns the selector to discover PodLogs. -func (i *LogsInstance) PodLogsInstanceSelector() ObjectSelector { +// PodLogsSelector returns the selector to discover PodLogs. +func (i *LogsInstance) PodLogsSelector() ObjectSelector { return ObjectSelector{ + ObjectType: &PodLogs{}, ParentNamespace: i.Namespace, NamespaceSelector: i.Spec.PodLogsNamespaceSelector, Labels: i.Spec.PodLogsSelector, diff --git a/pkg/operator/apis/monitoring/v1alpha1/types_metrics.go b/pkg/operator/apis/monitoring/v1alpha1/types_metrics.go index 9b62046f5c1b..5a20cc22d3cf 100644 --- a/pkg/operator/apis/monitoring/v1alpha1/types_metrics.go +++ b/pkg/operator/apis/monitoring/v1alpha1/types_metrics.go @@ -182,6 +182,7 @@ type MetricsInstance struct { // ServiceMonitorSelector returns a selector to find ServiceMonitors. func (p *MetricsInstance) ServiceMonitorSelector() ObjectSelector { return ObjectSelector{ + ObjectType: &prom_v1.ServiceMonitor{}, ParentNamespace: p.Namespace, NamespaceSelector: p.Spec.ServiceMonitorNamespaceSelector, Labels: p.Spec.ServiceMonitorSelector, @@ -191,6 +192,7 @@ func (p *MetricsInstance) ServiceMonitorSelector() ObjectSelector { // PodMonitorSelector returns a selector to find PodMonitors. func (p *MetricsInstance) PodMonitorSelector() ObjectSelector { return ObjectSelector{ + ObjectType: &prom_v1.PodMonitor{}, ParentNamespace: p.Namespace, NamespaceSelector: p.Spec.PodMonitorNamespaceSelector, Labels: p.Spec.PodMonitorSelector, @@ -200,6 +202,7 @@ func (p *MetricsInstance) PodMonitorSelector() ObjectSelector { // ProbeSelector returns a selector to find Probes. func (p *MetricsInstance) ProbeSelector() ObjectSelector { return ObjectSelector{ + ObjectType: &prom_v1.Probe{}, ParentNamespace: p.Namespace, NamespaceSelector: p.Spec.ProbeNamespaceSelector, Labels: p.Spec.ProbeSelector, diff --git a/pkg/operator/build_hierarchy.go b/pkg/operator/build_hierarchy.go new file mode 100644 index 000000000000..cab0b212644b --- /dev/null +++ b/pkg/operator/build_hierarchy.go @@ -0,0 +1,282 @@ +package operator + +import ( + "context" + "fmt" + + "github.com/go-kit/log" + "github.com/go-kit/log/level" + grafana "github.com/grafana/agent/pkg/operator/apis/monitoring/v1alpha1" + "github.com/grafana/agent/pkg/operator/assets" + "github.com/grafana/agent/pkg/operator/config" + "github.com/grafana/agent/pkg/operator/hierarchy" + prom "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1" + corev1 "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/api/meta" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/controller-runtime/pkg/client/apiutil" +) + +// buildHierarchy constructs a resource hierarchy starting from root. +func buildHierarchy(ctx context.Context, l log.Logger, cli client.Client, root *grafana.GrafanaAgent) (deployment config.Deployment, watchers []hierarchy.Watcher, err error) { + deployment.Agent = root + + // search is used throughout BuildHierarchy, where it will perform a list for + // a set of objects in the hierarchy and populate the watchers return + // variable. + search := func(resources []hierarchyResource) error { + for _, res := range resources { + sel, err := res.Find(ctx, cli) + if err != nil { + gvk, _ := apiutil.GVKForObject(res.List, cli.Scheme()) + return fmt.Errorf("failed to find %q resource: %w", gvk.String(), err) + } + + watchers = append(watchers, hierarchy.Watcher{ + Object: res.Selector.ObjectType, + Owner: client.ObjectKeyFromObject(root), + Selector: sel, + }) + } + return nil + } + + // Root resources + var ( + metricInstances grafana.MetricsInstanceList + logsInstances grafana.LogsInstanceList + ) + var roots = []hierarchyResource{ + {List: &metricInstances, Selector: root.MetricsInstanceSelector()}, + {List: &logsInstances, Selector: root.LogsInstanceSelector()}, + } + if err := search(roots); err != nil { + return deployment, nil, err + } + + // Metrics resources + for _, metricsInst := range metricInstances.Items { + var ( + serviceMonitors prom.ServiceMonitorList + podMonitors prom.PodMonitorList + probes prom.ProbeList + ) + var children = []hierarchyResource{ + {List: &serviceMonitors, Selector: metricsInst.ServiceMonitorSelector()}, + {List: &podMonitors, Selector: metricsInst.PodMonitorSelector()}, + {List: &probes, Selector: metricsInst.ProbeSelector()}, + } + if err := search(children); err != nil { + return deployment, nil, err + } + + deployment.Metrics = append(deployment.Metrics, config.MetricsInstance{ + Instance: metricsInst, + ServiceMonitors: filterServiceMonitors(l, root, &serviceMonitors).Items, + PodMonitors: podMonitors.Items, + Probes: probes.Items, + }) + } + + // Logs resources + for _, logsInst := range logsInstances.Items { + var ( + podLogs grafana.PodLogsList + ) + var children = []hierarchyResource{ + {List: &podLogs, Selector: logsInst.PodLogsSelector()}, + } + if err := search(children); err != nil { + return deployment, nil, err + } + + deployment.Logs = append(deployment.Logs, config.LogInstance{ + Instance: logsInst, + PodLogs: podLogs.Items, + }) + } + + // Finally, find all referenced secrets + secrets, secretWatchers, err := buildSecrets(ctx, cli, deployment) + if err != nil { + return deployment, nil, fmt.Errorf("failed to discover secrets: %w", err) + } + deployment.Secrets = secrets + watchers = append(watchers, secretWatchers...) + + return deployment, watchers, nil +} + +type hierarchyResource struct { + List client.ObjectList // List to populate + Selector grafana.ObjectSelector // Raw selector to use for list +} + +func (hr *hierarchyResource) Find(ctx context.Context, cli client.Client) (hierarchy.Selector, error) { + sel, err := toSelector(hr.Selector) + if err != nil { + return nil, fmt.Errorf("failed to build selector: %w", err) + } + err = hierarchy.List(ctx, cli, hr.List, sel) + if err != nil { + return nil, fmt.Errorf("failed to list resources: %w", err) + } + return sel, nil +} + +func toSelector(os grafana.ObjectSelector) (hierarchy.Selector, error) { + var res hierarchy.LabelsSelector + res.NamespaceName = os.ParentNamespace + + if os.NamespaceSelector != nil { + sel, err := metav1.LabelSelectorAsSelector(os.NamespaceSelector) + if err != nil { + return nil, fmt.Errorf("invalid namespace selector: %w", err) + } + res.NamespaceLabels = sel + } + + sel, err := metav1.LabelSelectorAsSelector(os.Labels) + if err != nil { + return nil, fmt.Errorf("invalid label selector: %w", err) + } + res.Labels = sel + return &res, nil +} + +func filterServiceMonitors(l log.Logger, root *grafana.GrafanaAgent, list *prom.ServiceMonitorList) *prom.ServiceMonitorList { + items := make([]*prom.ServiceMonitor, 0, len(list.Items)) + +Item: + for _, item := range list.Items { + if root.Spec.Metrics.ArbitraryFSAccessThroughSMs.Deny { + for _, ep := range item.Spec.Endpoints { + err := testForArbitraryFSAccess(ep) + if err == nil { + continue + } + + level.Warn(l).Log( + "msg", "skipping service monitor", + "agent", client.ObjectKeyFromObject(root), + "servicemonitor", client.ObjectKeyFromObject(item), + "err", err, + ) + continue Item + } + } + items = append(items, item) + } + + return &prom.ServiceMonitorList{ + TypeMeta: list.TypeMeta, + ListMeta: *list.ListMeta.DeepCopy(), + Items: items, + } +} + +func testForArbitraryFSAccess(e prom.Endpoint) error { + if e.BearerTokenFile != "" { + return fmt.Errorf("it accesses file system via bearer token file which is disallowed via GrafanaAgent specification") + } + + if e.TLSConfig == nil { + return nil + } + + if e.TLSConfig.CAFile != "" || e.TLSConfig.CertFile != "" || e.TLSConfig.KeyFile != "" { + return fmt.Errorf("it accesses file system via TLS config which is disallowed via GrafanaAgent specification") + } + + return nil +} + +func buildSecrets(ctx context.Context, cli client.Client, deploy config.Deployment) (secrets assets.SecretStore, watchers []hierarchy.Watcher, err error) { + secrets = make(assets.SecretStore) + + // KeySelector caches to make sure we don't create duplicate watchers. + var ( + usedSecretSelectors = map[hierarchy.KeySelector]struct{}{} + usedConfigMapSelectors = map[hierarchy.KeySelector]struct{}{} + ) + + for _, ref := range deploy.AssetReferences() { + var ( + objectList client.ObjectList + sel hierarchy.KeySelector + ) + + switch { + case ref.Reference.Secret != nil: + objectList = &corev1.SecretList{} + sel = hierarchy.KeySelector{ + Namespace: ref.Namespace, + Name: ref.Reference.Secret.Name, + } + case ref.Reference.ConfigMap != nil: + objectList = &corev1.ConfigMapList{} + sel = hierarchy.KeySelector{ + Namespace: ref.Namespace, + Name: ref.Reference.ConfigMap.Name, + } + } + + gvk, _ := apiutil.GVKForObject(objectList, cli.Scheme()) + if err := hierarchy.List(ctx, cli, objectList, &sel); err != nil { + return nil, nil, fmt.Errorf("failed to find %q resource: %w", gvk.String(), err) + } + + err := meta.EachListItem(objectList, func(o runtime.Object) error { + var value string + + switch o := o.(type) { + case *corev1.Secret: + rawValue, ok := o.Data[ref.Reference.Secret.Key] + if !ok { + return fmt.Errorf("no key %s in Secret %s", ref.Reference.ConfigMap.Key, o.Name) + } + value = string(rawValue) + case *corev1.ConfigMap: + rawValue, ok := o.BinaryData[ref.Reference.ConfigMap.Key] + if !ok { + return fmt.Errorf("no key %s in ConfigMap %s", ref.Reference.ConfigMap.Key, o.Name) + } + value = string(rawValue) + } + + secrets[assets.KeyForSelector(ref.Namespace, &ref.Reference)] = value + return nil + }) + if err != nil { + return nil, nil, fmt.Errorf("failed to iterate over %q list: %w", gvk.String(), err) + } + + switch { + case ref.Reference.Secret != nil: + if _, used := usedSecretSelectors[sel]; used { + continue + } + watchers = append(watchers, hierarchy.Watcher{ + Object: &v1.Secret{}, + Owner: client.ObjectKeyFromObject(deploy.Agent), + Selector: &sel, + }) + usedSecretSelectors[sel] = struct{}{} + case ref.Reference.ConfigMap != nil: + if _, used := usedConfigMapSelectors[sel]; used { + continue + } + watchers = append(watchers, hierarchy.Watcher{ + Object: &v1.ConfigMap{}, + Owner: client.ObjectKeyFromObject(deploy.Agent), + Selector: &sel, + }) + usedConfigMapSelectors[sel] = struct{}{} + } + } + + return secrets, watchers, nil +} diff --git a/pkg/operator/build_hierarchy_test.go b/pkg/operator/build_hierarchy_test.go new file mode 100644 index 000000000000..b77adb761c95 --- /dev/null +++ b/pkg/operator/build_hierarchy_test.go @@ -0,0 +1,166 @@ +//go:build !nonetwork && !nodocker && !race +// +build !nonetwork,!nodocker,!race + +package operator + +import ( + "context" + "fmt" + "sync" + "testing" + "time" + + grafana "github.com/grafana/agent/pkg/operator/apis/monitoring/v1alpha1" + "github.com/grafana/agent/pkg/operator/hierarchy" + "github.com/grafana/agent/pkg/util" + "github.com/grafana/agent/pkg/util/k8s" + "github.com/grafana/agent/pkg/util/structwalk" + prom "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1" + "github.com/stretchr/testify/require" + v1 "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/labels" + "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/controller-runtime/pkg/client/apiutil" +) + +// Test_buildHierarchy checks that an entire resource hierarchy can be +// discovered. +func Test_buildHierarchy(t *testing.T) { + var wg sync.WaitGroup + defer wg.Wait() + + ctx, cancel := context.WithTimeout(context.Background(), 3*time.Minute) + defer cancel() + + l := util.TestLogger(t) + cluster := NewTestCluster(ctx, t, l) + cli := cluster.Client() + + resources := k8s.NewResourceSet(l, cluster) + defer resources.Stop() + require.NoError(t, resources.AddFile(ctx, "./testdata/test-resource-hierarchy.yaml")) + + // Get root resource + var root grafana.GrafanaAgent + err := cli.Get(ctx, client.ObjectKey{Namespace: "default", Name: "grafana-agent-example"}, &root) + require.NoError(t, err) + + deployment, watchers, err := buildHierarchy(ctx, l, cli, &root) + require.NoError(t, err) + + // Check resources in hierarchy + { + expectedResources := []string{ + "GrafanaAgent/grafana-agent-example", + "MetricsInstance/primary", + "LogsInstance/primary", + "PodMonitor/grafana-agents", + "PodLogs/grafana-agents", + } + var gotResources []string + structwalk.Walk(&resourceWalker{ + onResource: func(c client.Object) { + gvk, _ := apiutil.GVKForObject(c, cli.Scheme()) + + key := fmt.Sprintf("%s/%s", gvk.Kind, c.GetName()) + gotResources = append(gotResources, key) + }, + }, deployment) + + require.ElementsMatch(t, expectedResources, gotResources) + } + + // Check secrets + { + expectedSecrets := []string{ + "/secrets/default/prometheus-fake-credentials/fakeUsername", + "/secrets/default/prometheus-fake-credentials/fakePassword", + } + var actualSecrets []string + for key := range deployment.Secrets { + actualSecrets = append(actualSecrets, string(key)) + } + + require.ElementsMatch(t, expectedSecrets, actualSecrets) + } + + // Check configured watchers + { + expectedWatchers := []hierarchy.Watcher{ + { + Object: &grafana.MetricsInstance{}, + Owner: client.ObjectKey{Namespace: "default", Name: "grafana-agent-example"}, + Selector: &hierarchy.LabelsSelector{ + NamespaceName: "default", + Labels: labels.SelectorFromSet(labels.Set{"agent": "grafana-agent-example"}), + }, + }, + { + Object: &grafana.LogsInstance{}, + Owner: client.ObjectKey{Namespace: "default", Name: "grafana-agent-example"}, + Selector: &hierarchy.LabelsSelector{ + NamespaceName: "default", + Labels: labels.SelectorFromSet(labels.Set{"agent": "grafana-agent-example"}), + }, + }, + { + Object: &prom.ServiceMonitor{}, + Owner: client.ObjectKey{Namespace: "default", Name: "grafana-agent-example"}, + Selector: &hierarchy.LabelsSelector{ + NamespaceName: "default", + NamespaceLabels: labels.Everything(), + Labels: labels.SelectorFromSet(labels.Set{"instance": "primary"}), + }, + }, + { + Object: &prom.PodMonitor{}, + Owner: client.ObjectKey{Namespace: "default", Name: "grafana-agent-example"}, + Selector: &hierarchy.LabelsSelector{ + NamespaceName: "default", + NamespaceLabels: labels.Everything(), + Labels: labels.SelectorFromSet(labels.Set{"instance": "primary"}), + }, + }, + { + Object: &prom.Probe{}, + Owner: client.ObjectKey{Namespace: "default", Name: "grafana-agent-example"}, + Selector: &hierarchy.LabelsSelector{ + NamespaceName: "default", + Labels: labels.Nothing(), + }, + }, + { + Object: &grafana.PodLogs{}, + Owner: client.ObjectKey{Namespace: "default", Name: "grafana-agent-example"}, + Selector: &hierarchy.LabelsSelector{ + NamespaceName: "default", + NamespaceLabels: labels.Everything(), + Labels: labels.SelectorFromSet(labels.Set{"instance": "primary"}), + }, + }, + { + Object: &v1.Secret{}, + Owner: client.ObjectKey{Namespace: "default", Name: "grafana-agent-example"}, + Selector: &hierarchy.KeySelector{ + Namespace: "default", + Name: "prometheus-fake-credentials", + }, + }, + } + require.ElementsMatch(t, expectedWatchers, watchers) + } +} + +type resourceWalker struct { + onResource func(c client.Object) +} + +func (w *resourceWalker) Visit(v interface{}) (next structwalk.Visitor) { + if v == nil { + return nil + } + if obj, ok := v.(client.Object); ok { + w.onResource(obj) + } + return w +} diff --git a/pkg/operator/config/config.go b/pkg/operator/config/config.go index 011ff65b7a79..50678200ab62 100644 --- a/pkg/operator/config/config.go +++ b/pkg/operator/config/config.go @@ -53,6 +53,8 @@ type Deployment struct { // Logs is the set of logging instances discovered from the root Agent // resource. Logs []LogInstance + // Secrets that can be referenced in the deployment. + Secrets assets.SecretStore } // DeepCopy creates a deep copy of d. diff --git a/pkg/operator/config/config_references.go b/pkg/operator/config/config_references.go index 390064505306..f1ba0956957b 100644 --- a/pkg/operator/config/config_references.go +++ b/pkg/operator/config/config_references.go @@ -17,13 +17,18 @@ type AssetReference struct { // the deployment. Every used secret and configmap should then be loaded into // an assets.SecretStore. func (d *Deployment) AssetReferences() []AssetReference { + return AssetReferences(d) +} + +// AssetReferences returns all secret or configmap selectors used throughout v. +func AssetReferences(v interface{}) []AssetReference { var refs []AssetReference w := assetReferencesWalker{ addReference: func(ar AssetReference) { refs = append(refs, ar) }, } - structwalk.Walk(&w, d) + structwalk.Walk(&w, v) return refs } diff --git a/pkg/operator/config/metrics_templates_test.go b/pkg/operator/config/metrics_templates_test.go index 360d5a5c267a..da437cb462ce 100644 --- a/pkg/operator/config/metrics_templates_test.go +++ b/pkg/operator/config/metrics_templates_test.go @@ -630,6 +630,20 @@ func TestRemoteWrite(t *testing.T) { send_interval: 5m `), }, + { + name: "proxy_url", + input: map[string]interface{}{ + "namespace": "operator", + "rw": v1alpha1.RemoteWriteSpec{ + URL: "http://cortex/api/prom/push", + ProxyURL: "http://proxy", + }, + }, + expect: util.Untab(` + url: http://cortex/api/prom/push + proxy_url: http://proxy + `), + }, } for _, tc := range tt { diff --git a/pkg/operator/config/templates/component/metrics/remote_write.libsonnet b/pkg/operator/config/templates/component/metrics/remote_write.libsonnet index 6528a86ad23b..38b9553aa9e9 100644 --- a/pkg/operator/config/templates/component/metrics/remote_write.libsonnet +++ b/pkg/operator/config/templates/component/metrics/remote_write.libsonnet @@ -16,6 +16,7 @@ function(namespace, rw) { name: optionals.string(rw.Name), remote_timeout: optionals.string(rw.RemoteTimeout), headers: optionals.object(rw.Headers), + proxy_url: optionals.string(rw.ProxyURL), write_relabel_configs: optionals.array(std.map( new_relabel_config, diff --git a/pkg/operator/deployment_builder.go b/pkg/operator/deployment_builder.go deleted file mode 100644 index 0045381bdc6f..000000000000 --- a/pkg/operator/deployment_builder.go +++ /dev/null @@ -1,290 +0,0 @@ -package operator - -import ( - "context" - "fmt" - - "github.com/go-kit/log" - "github.com/go-kit/log/level" - grafana "github.com/grafana/agent/pkg/operator/apis/monitoring/v1alpha1" - "github.com/grafana/agent/pkg/operator/assets" - "github.com/grafana/agent/pkg/operator/config" - prom "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1" - "k8s.io/apimachinery/pkg/api/meta" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/runtime" - "sigs.k8s.io/controller-runtime/pkg/client" -) - -type deploymentBuilder struct { - client.Client - - Logger log.Logger - Config *Config - Agent *grafana.GrafanaAgent - Secrets assets.SecretStore - - // ResourceSelectors is filled as objects are found and can be used to - // trigger future reconciles. - ResourceSelectors map[secondaryResource][]resourceSelector -} - -func (b *deploymentBuilder) Build(ctx context.Context) (config.Deployment, error) { - metricsInstanceSel, err := b.buildResourceSelector(b.Agent.MetricsInstanceSelector()) - if err != nil { - return config.Deployment{}, fmt.Errorf("failed to build MetricsInstance selector: %w", err) - } - b.addSelector(resourcePromInstance, metricsInstanceSel) - - rootMetricInstances, err := b.getMetricsInstances(ctx, metricsInstanceSel) - if err != nil { - return config.Deployment{}, err - } - metricInstances := make([]config.MetricsInstance, 0, len(rootMetricInstances)) - - for _, inst := range rootMetricInstances { - // Get resource selectors for ServiceMonitors, PodMonitors, Probes - var ( - sMonSel, pMonSel, probeSel resourceSelector - ) - getters := []struct { - name string - rsel *resourceSelector - osel grafana.ObjectSelector - }{ - {"ServiceMonitor", &sMonSel, inst.ServiceMonitorSelector()}, - {"PodMonitor", &pMonSel, inst.PodMonitorSelector()}, - {"Probe", &probeSel, inst.ProbeSelector()}, - } - for _, g := range getters { - var err error - *g.rsel, err = b.buildResourceSelector(g.osel) - if err != nil { - return config.Deployment{}, fmt.Errorf("failed to build %s selector: %w", g.name, err) - } - } - - // Use resource selectors to look up objects - sMons, err := b.getServiceMonitors(ctx, sMonSel) - if err != nil { - return config.Deployment{}, fmt.Errorf("unable to fetch ServiceMonitors: %w", err) - } - pMons, err := b.getPodMonitors(ctx, pMonSel) - if err != nil { - return config.Deployment{}, fmt.Errorf("unable to fetch PodMonitors: %w", err) - } - probes, err := b.getProbes(ctx, probeSel) - if err != nil { - return config.Deployment{}, fmt.Errorf("unable to fetch Probes: %w", err) - } - - metricInstances = append(metricInstances, config.MetricsInstance{ - Instance: inst, - ServiceMonitors: sMons, - PodMonitors: pMons, - Probes: probes, - }) - - b.addSelector(resourceServiceMonitor, sMonSel) - b.addSelector(resourcePodMonitor, pMonSel) - b.addSelector(resourceProbe, probeSel) - } - - logsInstanceSel, err := b.buildResourceSelector(b.Agent.LogsInstanceSelector()) - if err != nil { - return config.Deployment{}, fmt.Errorf("failed to build LogsInstance selector: %w", err) - } - b.addSelector(resourceLogsInstance, logsInstanceSel) - - rootLogsInstances, err := b.getLogsInstances(ctx, logsInstanceSel) - if err != nil { - return config.Deployment{}, err - } - logsInstances := make([]config.LogInstance, 0, len(rootLogsInstances)) - - for _, inst := range rootLogsInstances { - podLogsSel, err := b.buildResourceSelector(inst.PodLogsInstanceSelector()) - if err != nil { - return config.Deployment{}, fmt.Errorf("failed to build PodLogs selector: %w", err) - } - podLogs, err := b.getPodLogs(ctx, podLogsSel) - if err != nil { - return config.Deployment{}, fmt.Errorf("unable to fetch PodLogs: %w", err) - } - - logsInstances = append(logsInstances, config.LogInstance{ - Instance: inst, - PodLogs: podLogs, - }) - - b.addSelector(resourcePodLogs, podLogsSel) - } - - return config.Deployment{ - Agent: b.Agent, - Metrics: metricInstances, - Logs: logsInstances, - }, nil -} - -// buildResourceSelector builds a selector for discovering objects with a -// namespace selector and an object selector. If the namespace -// selector, it will default to finding everything in the parent -// namespace. -func (b *deploymentBuilder) buildResourceSelector(sel grafana.ObjectSelector) (resourceSelector, error) { - var namespaceFilter string - if sel.NamespaceSelector == nil { - // When there's no namespaceSelector defined, default to looking in the - // current namespace and matching everything within that namespace. - namespaceFilter = sel.ParentNamespace - sel.NamespaceSelector = &metav1.LabelSelector{} - } - - nsLabels, err := metav1.LabelSelectorAsSelector(sel.NamespaceSelector) - if err != nil { - return nil, fmt.Errorf("failed to convert object namespace selector into label selector: %w", err) - } - objectLabels, err := metav1.LabelSelectorAsSelector(sel.Labels) - if err != nil { - return nil, fmt.Errorf("failed to convert object selector into label selector: %w", err) - } - - var ss []resourceSelector - - if namespaceFilter != "" { - ss = append(ss, &namespaceSelector{Namespace: namespaceFilter}) - } - ss = append(ss, &namespaceLabelSelector{Selector: nsLabels}) - ss = append(ss, &labelSelector{Selector: objectLabels}) - return &multiSelector{Selectors: ss}, nil -} - -// addSelector registers the given selector for the resource to use for update -// tracking. -func (b *deploymentBuilder) addSelector(res secondaryResource, sel resourceSelector) { - b.ResourceSelectors[res] = append(b.ResourceSelectors[res], sel) -} - -func (b *deploymentBuilder) getMetricsInstances(ctx context.Context, sel resourceSelector) ([]*grafana.MetricsInstance, error) { - var list grafana.MetricsInstanceList - if err := b.list(ctx, &list, sel); err != nil { - return nil, fmt.Errorf("unable to discover MetricsInstance: %w", err) - } - return list.Items, nil -} - -// list finds all objects for sel and fills them into list. -func (b *deploymentBuilder) list( - ctx context.Context, - list client.ObjectList, - sel resourceSelector, -) error { - - var lo client.ListOptions - sel.SetListOptions(&lo) - if err := b.List(ctx, list, &lo); err != nil { - return fmt.Errorf("failed to list objects: %w", err) - } - - elements, err := meta.ExtractList(list) - if err != nil { - return fmt.Errorf("failed to get list: %w", err) - } - - filteredElements := make([]runtime.Object, 0, len(elements)) - for _, e := range elements { - o, ok := e.(client.Object) - if !ok { - return fmt.Errorf("unexpected object returned") - } - - if sel.Matches(b.Logger, b.Client, o) { - filteredElements = append(filteredElements, e) - } - } - - if err := meta.SetList(list, filteredElements); err != nil { - return fmt.Errorf("failed to populate list of objects: %w", err) - } - return nil -} - -func (b *deploymentBuilder) getServiceMonitors(ctx context.Context, sel resourceSelector) ([]*prom.ServiceMonitor, error) { - var list prom.ServiceMonitorList - if err := b.list(ctx, &list, sel); err != nil { - return nil, fmt.Errorf("unable to discover ServiceMonitors: %w", err) - } - - items := make([]*prom.ServiceMonitor, 0, len(list.Items)) -Item: - for _, item := range list.Items { - if b.Agent.Spec.Metrics.ArbitraryFSAccessThroughSMs.Deny { - for _, ep := range item.Spec.Endpoints { - err := testForArbitraryFSAccess(ep) - if err == nil { - continue - } - - level.Warn(b.Logger).Log( - "msg", "skipping service monitor", - "agent", client.ObjectKeyFromObject(b.Agent), - "servicemonitor", client.ObjectKeyFromObject(item), - "err", err, - ) - - continue Item - } - } - items = append(items, item) - } - - return items, nil -} - -func testForArbitraryFSAccess(e prom.Endpoint) error { - if e.BearerTokenFile != "" { - return fmt.Errorf("it accesses file system via bearer token file which is disallowed via GrafanaAgent specification") - } - - if e.TLSConfig == nil { - return nil - } - - if e.TLSConfig.CAFile != "" || e.TLSConfig.CertFile != "" || e.TLSConfig.KeyFile != "" { - return fmt.Errorf("it accesses file system via TLS config which is disallowed via GrafanaAgent specification") - } - - return nil -} - -func (b *deploymentBuilder) getPodMonitors(ctx context.Context, sel resourceSelector) ([]*prom.PodMonitor, error) { - var list prom.PodMonitorList - if err := b.list(ctx, &list, sel); err != nil { - return nil, fmt.Errorf("unable to discover PodMonitors: %w", err) - } - return list.Items, nil -} - -func (b *deploymentBuilder) getProbes(ctx context.Context, sel resourceSelector) ([]*prom.Probe, error) { - var list prom.ProbeList - if err := b.list(ctx, &list, sel); err != nil { - return nil, fmt.Errorf("unable to discover Probes: %w", err) - } - return list.Items, nil -} - -func (b *deploymentBuilder) getLogsInstances(ctx context.Context, sel resourceSelector) ([]*grafana.LogsInstance, error) { - var list grafana.LogsInstanceList - if err := b.list(ctx, &list, sel); err != nil { - return nil, fmt.Errorf("unable to discover LogsInstances: %w", err) - } - return list.Items, nil -} - -func (b *deploymentBuilder) getPodLogs(ctx context.Context, sel resourceSelector) ([]*grafana.PodLogs, error) { - var list grafana.PodLogsList - if err := b.list(ctx, &list, sel); err != nil { - return nil, fmt.Errorf("unable to discover PodLogs: %w", err) - } - return list.Items, nil -} diff --git a/pkg/operator/hierarchy/hierarchy.go b/pkg/operator/hierarchy/hierarchy.go new file mode 100644 index 000000000000..05c5658bb3d7 --- /dev/null +++ b/pkg/operator/hierarchy/hierarchy.go @@ -0,0 +1,149 @@ +// Package hierarchy provides tools to discover a resource hierarchy. A +// resource hierarchy is made when a resource has a set of rules to discover +// other resources. +package hierarchy + +import ( + "context" + "fmt" + "sync" + "time" + + "github.com/go-kit/log" + "github.com/go-kit/log/level" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/client-go/util/workqueue" + "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/controller-runtime/pkg/client/apiutil" + "sigs.k8s.io/controller-runtime/pkg/event" + "sigs.k8s.io/controller-runtime/pkg/handler" + "sigs.k8s.io/controller-runtime/pkg/reconcile" +) + +// Notifier can be attached to a controller and generate reconciles when +// objects inside of a resource hierarchy change. +type Notifier struct { + log log.Logger + client client.Client + + watchersMut sync.RWMutex + watchers map[schema.GroupVersionKind][]Watcher +} + +// Watcher is something watching for changes to a resource. +type Watcher struct { + Object client.Object // Object to watch for events against. + Owner client.ObjectKey // Owner to receive a reconcile for. + Selector Selector // Selector to use to match changed objects. +} + +// NewNotifier creates a new Notifier which uses the provided client for +// performing hierarchy lookups. +func NewNotifier(l log.Logger, cli client.Client) *Notifier { + return &Notifier{ + log: l, + client: cli, + watchers: make(map[schema.GroupVersionKind][]Watcher), + } +} + +// EventHandler returns an event handler that can be given to +// controller.Watches. +// +// controller.Watches should be called once per type in the resource hierarchy. +// Each call to controller.Watches should use the same Notifier. +func (n *Notifier) EventHandler() handler.EventHandler { + // TODO(rfratto): It's possible to create a custom implementation of + // source.Source so we wouldn't have to call controller.Watches a bunch of + // times. I played around a little with an implementation but it was going to + // be a lot of work to dynamically spin up/down informers, so I put it aside + // for now. Maybe it's an improvement for the future. + return ¬ifierEventHandler{Notifier: n} +} + +// Notify configures reconciles to be generated for a set of watchers when +// watched resources change. +// +// Notify appends to the list of watchers. To remove out notifications for a +// specific owner, call StopNotify. +func (n *Notifier) Notify(watchers ...Watcher) error { + n.watchersMut.Lock() + defer n.watchersMut.Unlock() + + for _, w := range watchers { + gvk, err := apiutil.GVKForObject(w.Object, n.client.Scheme()) + if err != nil { + return fmt.Errorf("could not get GVK: %w", err) + } + + n.watchers[gvk] = append(n.watchers[gvk], w) + } + + return nil +} + +// StopNotify removes all watches for a specific owner. +func (n *Notifier) StopNotify(owner client.ObjectKey) { + n.watchersMut.Lock() + defer n.watchersMut.Unlock() + + for key, watchers := range n.watchers { + rem := make([]Watcher, 0, len(watchers)) + for _, w := range watchers { + if w.Owner != owner { + rem = append(rem, w) + } + } + n.watchers[key] = rem + } +} + +type notifierEventHandler struct { + *Notifier +} + +var _ handler.EventHandler = (*notifierEventHandler)(nil) + +func (h *notifierEventHandler) Create(ev event.CreateEvent, q workqueue.RateLimitingInterface) { + h.handleEvent(ev.Object, q) +} + +func (h *notifierEventHandler) Update(ev event.UpdateEvent, q workqueue.RateLimitingInterface) { + h.handleEvent(ev.ObjectOld, q) + h.handleEvent(ev.ObjectNew, q) +} + +func (h *notifierEventHandler) Delete(ev event.DeleteEvent, q workqueue.RateLimitingInterface) { + h.handleEvent(ev.Object, q) +} + +func (h *notifierEventHandler) Generic(ev event.GenericEvent, q workqueue.RateLimitingInterface) { + h.handleEvent(ev.Object, q) +} + +func (h *notifierEventHandler) handleEvent(obj client.Object, q workqueue.RateLimitingInterface) { + h.watchersMut.RLock() + defer h.watchersMut.RUnlock() + + gvk, err := apiutil.GVKForObject(obj, h.client.Scheme()) + if err != nil { + level.Error(h.log).Log("msg", "failed to get gvk for object", "err", err) + return + } + + ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) + defer cancel() + + // Iterate through all of the watchers for the gvk and check to see if we + // should trigger a reconcile. + for _, watcher := range h.watchers[gvk] { + matches, err := watcher.Selector.Matches(ctx, h.client, obj) + if err != nil { + level.Error(h.log).Log("msg", "failed to handle notifier event", "err", err) + return + } + if matches { + q.Add(reconcile.Request{NamespacedName: watcher.Owner}) + } + } +} diff --git a/pkg/operator/hierarchy/hierarchy_test.go b/pkg/operator/hierarchy/hierarchy_test.go new file mode 100644 index 000000000000..a844b647f961 --- /dev/null +++ b/pkg/operator/hierarchy/hierarchy_test.go @@ -0,0 +1,144 @@ +//go:build !nonetwork && !nodocker && !race +// +build !nonetwork,!nodocker,!race + +package hierarchy + +import ( + "context" + "testing" + "time" + + "github.com/go-kit/log" + "github.com/grafana/agent/pkg/util/k8s" + "github.com/stretchr/testify/require" + v1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/labels" + "k8s.io/apimachinery/pkg/types" + "k8s.io/client-go/util/workqueue" + "sigs.k8s.io/controller-runtime/pkg/event" +) + +// TestNotifier tests that notifier properly handles events for changed +// objects. +func TestNotifier(t *testing.T) { + l := log.NewNopLogger() + + ctx, cancel := context.WithTimeout(context.Background(), 5*time.Minute) + defer cancel() + + cluster, err := k8s.NewCluster(ctx, k8s.Options{}) + require.NoError(t, err) + defer cluster.Stop() + + cli := cluster.Client() + + // Tests will rely on a namespace existing, so let's create a namespace with + // some labels. + testNs := v1.Namespace{ + TypeMeta: metav1.TypeMeta{ + APIVersion: "v1", + Kind: "Namespace", + }, + ObjectMeta: metav1.ObjectMeta{ + Name: "enqueue-test", + Labels: map[string]string{"foo": "bar"}, + }, + } + err = cli.Create(ctx, &testNs) + require.NoError(t, err) + + testPod := &v1.Pod{ObjectMeta: metav1.ObjectMeta{ + Name: "test-pod", + Namespace: "enqueue-test", + Labels: map[string]string{"fizz": "buzz"}, + }} + + tt := []struct { + name string + sel Selector + expectEnqueue bool + }{ + { + name: "no watchers", + sel: nil, + expectEnqueue: false, + }, + { + name: "matches watcher", + sel: &LabelsSelector{ + NamespaceName: "enqueue-test", + NamespaceLabels: parseSelector(t, "foo in (bar)"), + Labels: parseSelector(t, "fizz in (buzz)"), + }, + expectEnqueue: true, + }, + { + name: "matches watcher with explicit namespace", + sel: &LabelsSelector{ + NamespaceName: "enqueue-test", + Labels: parseSelector(t, "fizz in (buzz)"), + }, + expectEnqueue: true, + }, + { + name: "bad namespace name selector", + sel: &LabelsSelector{ + NamespaceName: "default", + Labels: labels.Everything(), + }, + expectEnqueue: false, + }, + { + name: "bad namespace label selector", + sel: &LabelsSelector{ + NamespaceName: "enqueue-test", + NamespaceLabels: parseSelector(t, "foo notin (bar)"), + Labels: labels.Everything(), + }, + expectEnqueue: false, + }, + { + name: "bad label selector", + sel: &LabelsSelector{ + NamespaceName: "default", + NamespaceLabels: labels.Everything(), + Labels: parseSelector(t, "fizz notin (buzz)"), + }, + expectEnqueue: false, + }, + } + + for _, tc := range tt { + t.Run(tc.name, func(t *testing.T) { + limiter := workqueue.DefaultControllerRateLimiter() + q := workqueue.NewRateLimitingQueue(limiter) + + notifier := NewNotifier(l, cli) + + if tc.sel != nil { + err := notifier.Notify(Watcher{ + Object: &v1.Pod{}, + Owner: types.NamespacedName{Name: "watcher", Namespace: "enqueue-test"}, + Selector: tc.sel, + }) + require.NoError(t, err) + } + + e := notifier.EventHandler() + e.Create(event.CreateEvent{Object: testPod}, q) + if tc.expectEnqueue { + require.Equal(t, 1, q.Len(), "expected change enqueue") + } else { + require.Equal(t, 0, q.Len(), "no changes should have been enqueued") + } + }) + } +} + +func parseSelector(t *testing.T, selector string) labels.Selector { + t.Helper() + s, err := labels.Parse(selector) + require.NoError(t, err) + return s +} diff --git a/pkg/operator/hierarchy/list.go b/pkg/operator/hierarchy/list.go new file mode 100644 index 000000000000..016fdc33da6c --- /dev/null +++ b/pkg/operator/hierarchy/list.go @@ -0,0 +1,50 @@ +package hierarchy + +import ( + "context" + "fmt" + + "k8s.io/apimachinery/pkg/api/meta" + "k8s.io/apimachinery/pkg/runtime" + "sigs.k8s.io/controller-runtime/pkg/client" +) + +// List will populate list with elements that match sel. +func List(ctx context.Context, cli client.Client, list client.ObjectList, sel Selector) error { + if err := cli.List(ctx, list, sel); err != nil { + return fmt.Errorf("list failed: %w", err) + } + if err := filterList(ctx, cli, list, sel); err != nil { + return fmt.Errorf("filter failed: %w", err) + } + return nil +} + +// filterList updates the provided list to only elements which match sel. +func filterList(ctx context.Context, cli client.Client, list client.ObjectList, sel Selector) error { + allElements, err := meta.ExtractList(list) + if err != nil { + return fmt.Errorf("failed to get list: %w", err) + } + + filtered := make([]runtime.Object, 0, len(allElements)) + for _, element := range allElements { + obj, ok := element.(client.Object) + if !ok { + return fmt.Errorf("unexpected object of type %T in list", element) + } + + matches, err := sel.Matches(ctx, cli, obj) + if err != nil { + return fmt.Errorf("failed to validate object: %w", err) + } + if matches { + filtered = append(filtered, obj) + } + } + + if err := meta.SetList(list, filtered); err != nil { + return fmt.Errorf("failed to update list: %w", err) + } + return nil +} diff --git a/pkg/operator/hierarchy/selector.go b/pkg/operator/hierarchy/selector.go new file mode 100644 index 000000000000..06454e3a8f1e --- /dev/null +++ b/pkg/operator/hierarchy/selector.go @@ -0,0 +1,88 @@ +package hierarchy + +import ( + "context" + "fmt" + + corev1 "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/fields" + "k8s.io/apimachinery/pkg/labels" + "sigs.k8s.io/controller-runtime/pkg/client" +) + +// Selector finding objects within the resource hierarchy. +type Selector interface { + // ListOption can be passed to List to perform initial filtering of returned + // objects. + client.ListOption + + // Matches returns true if the Selector matches the provided Object. The + // provided Client may be used to perform extra searches. + Matches(context.Context, client.Client, client.Object) (bool, error) +} + +// LabelsSelector is used for discovering a set of objects in a hierarchy based +// on labels. +type LabelsSelector struct { + // NamespaceName is the default namespace to search for objects in when + // NamespaceSelector is nil. + NamespaceName string + + // NamespaceLabels causes all namespaces whose labels match NamespaceLabels + // to be searched. When nil, only the namespace specified by NamespaceName + // will be searched. + NamespaceLabels labels.Selector + + // Labels discovers all objects whose labels match the selector. If nil, + // no objects will be discovered. + Labels labels.Selector +} + +var _ Selector = (*LabelsSelector)(nil) + +// ApplyToList implements Selector. +func (ls *LabelsSelector) ApplyToList(lo *client.ListOptions) { + if ls.NamespaceLabels == nil { + lo.Namespace = ls.NamespaceName + } + lo.LabelSelector = ls.Labels +} + +// Matches implements Selector. +func (ls *LabelsSelector) Matches(ctx context.Context, cli client.Client, o client.Object) (bool, error) { + if !ls.Labels.Matches(labels.Set(o.GetLabels())) { + return false, nil + } + + // Fast path: we don't need to retrieve the labels of the namespace. + if ls.NamespaceLabels == nil { + return o.GetNamespace() == ls.NamespaceName, nil + } + + // Slow path: we need to look up the namespace to see if its labels match. As + // long as cli implements caching, this won't be too bad. + var ns corev1.Namespace + if err := cli.Get(ctx, client.ObjectKey{Name: o.GetNamespace()}, &ns); err != nil { + return false, fmt.Errorf("error looking up namespace %q: %w", o.GetNamespace(), err) + } + return ls.NamespaceLabels.Matches(labels.Set(ns.GetLabels())), nil +} + +// KeySelector is used for discovering a single object based on namespace and +// name. +type KeySelector struct { + Namespace, Name string +} + +var _ Selector = (*KeySelector)(nil) + +// ApplyToList implements Selector. +func (ks *KeySelector) ApplyToList(lo *client.ListOptions) { + lo.Namespace = ks.Namespace + lo.FieldSelector = fields.OneTermEqualSelector("metadata.name", ks.Name) +} + +// Matches implements Selector. +func (ks *KeySelector) Matches(ctx context.Context, cli client.Client, o client.Object) (bool, error) { + return ks.Name == o.GetName() && ks.Namespace == o.GetNamespace(), nil +} diff --git a/pkg/operator/kubelet_test.go b/pkg/operator/kubelet_test.go index 6d68bae375c0..ede1fa495604 100644 --- a/pkg/operator/kubelet_test.go +++ b/pkg/operator/kubelet_test.go @@ -1,7 +1,5 @@ -// These tests depend on test assets from controller-runtime which don't work on Windows. - -//go:build !windows && has_network -// +build !windows,has_network +//go:build !nonetwork && !nodocker && !race +// +build !nonetwork,!nodocker,!race package operator @@ -12,9 +10,8 @@ import ( "github.com/grafana/agent/pkg/operator/logutil" "github.com/grafana/agent/pkg/util" + "github.com/grafana/agent/pkg/util/k8s" "github.com/stretchr/testify/require" - "sigs.k8s.io/controller-runtime/pkg/client" - "sigs.k8s.io/controller-runtime/pkg/envtest" "sigs.k8s.io/controller-runtime/pkg/reconcile" core_v1 "k8s.io/api/core/v1" @@ -32,15 +29,11 @@ func TestKubelet(t *testing.T) { defer cancel() ctx = clog.IntoContext(ctx, logutil.Wrap(l)) - var env envtest.Environment - setupEnvtest(t, &env) - - cfg, err := env.Start() + cluster, err := k8s.NewCluster(ctx, k8s.Options{}) require.NoError(t, err) - t.Cleanup(func() { _ = env.Stop() }) + defer cluster.Stop() - cli, err := client.New(cfg, client.Options{}) - require.NoError(t, err) + cli := cluster.Client() nodes := []core_v1.Node{ { diff --git a/pkg/operator/operator.go b/pkg/operator/operator.go index a41502f07ef7..f78b93c6efc6 100644 --- a/pkg/operator/operator.go +++ b/pkg/operator/operator.go @@ -1,22 +1,26 @@ package operator import ( + "context" "flag" "fmt" "strings" + "sync" "github.com/go-kit/log" + "github.com/go-kit/log/level" "github.com/weaveworks/common/logging" "k8s.io/apimachinery/pkg/runtime" controller "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/builder" - "sigs.k8s.io/controller-runtime/pkg/client" - "sigs.k8s.io/controller-runtime/pkg/client/apiutil" + "sigs.k8s.io/controller-runtime/pkg/healthz" "sigs.k8s.io/controller-runtime/pkg/manager" "sigs.k8s.io/controller-runtime/pkg/predicate" + "sigs.k8s.io/controller-runtime/pkg/reconcile" "sigs.k8s.io/controller-runtime/pkg/source" grafana_v1alpha1 "github.com/grafana/agent/pkg/operator/apis/monitoring/v1alpha1" + "github.com/grafana/agent/pkg/operator/hierarchy" promop_v1 "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1" promop "github.com/prometheus-operator/prometheus-operator/pkg/operator" apps_v1 "k8s.io/api/apps/v1" @@ -25,6 +29,7 @@ import ( // Needed for clients. _ "k8s.io/client-go/plugin/pkg/client/auth" + "k8s.io/client-go/rest" ) // Config controls the configuration of the Operator. @@ -36,6 +41,10 @@ type Config struct { AgentSelector string KubelsetServiceName string + // RestConfig used to connect to cluster. One will be generated based on the + // environment if not set. + RestConfig *rest.Config + // TODO(rfratto): extra settings from Prometheus Operator: // // 1. Reloader container image/requests/limits @@ -91,32 +100,58 @@ func (c *Config) registerFlags(f *flag.FlagSet) error { return nil } -// Manager initializes the controller for this Config. -func (c *Config) Manager() (manager.Manager, error) { - return controller.NewManager(controller.GetConfigOrDie(), c.Controller) +// Operator is the Grafana Agent Operator. +type Operator struct { + log log.Logger + manager manager.Manager + + // New creates reconcilers to reconcile creating the kubelet service (if + // configured) and Grafana Agent deployments. We store them as + // lazyReconcilers so tests can update what the underlying reconciler + // implementation is. + + kubeletReconciler *lazyReconciler // Unused if kubelet service unconfigured + agentReconciler *lazyReconciler } -// New creates a new Operator managed by a specific Manager. Start the Manager -// to also start the Operator. -func New(l log.Logger, c *Config, m manager.Manager) error { +// New creates a new Operator. +func New(l log.Logger, c *Config) (*Operator, error) { var ( - events = newResourceEventHandlers(m.GetClient(), l) + lazyKubeletReconciler, lazyAgentReconciler lazyReconciler + ) - applyGVK = func(obj client.Object) client.Object { return applyGVK(obj, m) } - watchType = func(obj client.Object) source.Source { return watchType(obj, m) } + restConfig := c.RestConfig + if restConfig == nil { + restConfig = controller.GetConfigOrDie() + } + manager, err := controller.NewManager(restConfig, c.Controller) + if err != nil { + return nil, fmt.Errorf("failed to create manager: %w", err) + } + if err := manager.AddReadyzCheck("running", healthz.Ping); err != nil { + level.Warn(l).Log("msg", "failed to set up 'running' readyz check", "err", err) + } + if err := manager.AddHealthzCheck("running", healthz.Ping); err != nil { + level.Warn(l).Log("msg", "failed to set up 'running' healthz check", "err", err) + } + + var ( agentPredicates []predicate.Predicate + + notifier = hierarchy.NewNotifier(log.With(l, "component", "hierarchy_notifier"), manager.GetClient()) + notifierHandler = notifier.EventHandler() ) // Initialize agentPredicates if an GrafanaAgent selector is configured. if c.AgentSelector != "" { sel, err := meta_v1.ParseToLabelSelector(c.AgentSelector) if err != nil { - return fmt.Errorf("unable to create predicate for selecting GrafanaAgent CRs: %w", err) + return nil, fmt.Errorf("unable to create predicate for selecting GrafanaAgent CRs: %w", err) } selPredicate, err := predicate.LabelSelectorPredicate(*sel) if err != nil { - return fmt.Errorf("unable to create predicate for selecting GrafanaAgent CRs: %w", err) + return nil, fmt.Errorf("unable to create predicate for selecting GrafanaAgent CRs: %w", err) } agentPredicates = append(agentPredicates, selPredicate) } @@ -124,70 +159,101 @@ func New(l log.Logger, c *Config, m manager.Manager) error { if c.KubelsetServiceName != "" { parts := strings.Split(c.KubelsetServiceName, "/") if len(parts) != 2 { - return fmt.Errorf("invalid format for kubelet-service %q, must be formatted as \"namespace/name\"", c.KubelsetServiceName) + return nil, fmt.Errorf("invalid format for kubelet-service %q, must be formatted as \"namespace/name\"", c.KubelsetServiceName) } kubeletNamespace := parts[0] kubeletName := parts[1] - err := controller.NewControllerManagedBy(m). - For(applyGVK(&core_v1.Node{})). - Owns(applyGVK(&core_v1.Service{})). - Owns(applyGVK(&core_v1.Endpoints{})). - Complete(&kubeletReconciler{ - Client: m.GetClient(), - - kubeletNamespace: kubeletNamespace, - kubeletName: kubeletName, - }) + err := controller.NewControllerManagedBy(manager). + For(&core_v1.Node{}). + Owns(&core_v1.Service{}). + Owns(&core_v1.Endpoints{}). + Complete(&lazyKubeletReconciler) if err != nil { - return fmt.Errorf("failed to create kubelet controller: %w", err) + return nil, fmt.Errorf("failed to create kubelet controller: %w", err) } - } - err := controller.NewControllerManagedBy(m). - For(applyGVK(&grafana_v1alpha1.GrafanaAgent{}), builder.WithPredicates(agentPredicates...)). - Owns(applyGVK(&apps_v1.StatefulSet{})). - Owns(applyGVK(&apps_v1.DaemonSet{})). - Owns(applyGVK(&core_v1.Secret{})). - Owns(applyGVK(&core_v1.Service{})). - Watches(watchType(&core_v1.Secret{}), events[resourceSecret]). - Watches(watchType(&grafana_v1alpha1.LogsInstance{}), events[resourceLogsInstance]). - Watches(watchType(&grafana_v1alpha1.PodLogs{}), events[resourcePodLogs]). - Watches(watchType(&grafana_v1alpha1.MetricsInstance{}), events[resourcePromInstance]). - Watches(watchType(&promop_v1.PodMonitor{}), events[resourcePodMonitor]). - Watches(watchType(&promop_v1.Probe{}), events[resourceProbe]). - Watches(watchType(&promop_v1.ServiceMonitor{}), events[resourceServiceMonitor]). - Watches(watchType(&core_v1.Secret{}), events[resourceSecret]). - Watches(watchType(&core_v1.ConfigMap{}), events[resourceConfigMap]). - Complete(&reconciler{ - Client: m.GetClient(), - scheme: m.GetScheme(), - eventHandlers: events, - config: c, + lazyKubeletReconciler.Set(&kubeletReconciler{ + Client: manager.GetClient(), + + kubeletNamespace: kubeletNamespace, + kubeletName: kubeletName, }) + } + + err = controller.NewControllerManagedBy(manager). + For(&grafana_v1alpha1.GrafanaAgent{}, builder.WithPredicates(agentPredicates...)). + Owns(&apps_v1.StatefulSet{}). + Owns(&apps_v1.DaemonSet{}). + Owns(&core_v1.Secret{}). + Owns(&core_v1.Service{}). + Watches(&source.Kind{Type: &core_v1.Secret{}}, notifierHandler). + Watches(&source.Kind{Type: &grafana_v1alpha1.LogsInstance{}}, notifierHandler). + Watches(&source.Kind{Type: &grafana_v1alpha1.PodLogs{}}, notifierHandler). + Watches(&source.Kind{Type: &grafana_v1alpha1.MetricsInstance{}}, notifierHandler). + Watches(&source.Kind{Type: &promop_v1.PodMonitor{}}, notifierHandler). + Watches(&source.Kind{Type: &promop_v1.Probe{}}, notifierHandler). + Watches(&source.Kind{Type: &promop_v1.ServiceMonitor{}}, notifierHandler). + Watches(&source.Kind{Type: &core_v1.Secret{}}, notifierHandler). + Watches(&source.Kind{Type: &core_v1.ConfigMap{}}, notifierHandler). + Complete(&lazyAgentReconciler) if err != nil { - return fmt.Errorf("failed to create GrafanaAgent controller: %w", err) + return nil, fmt.Errorf("failed to create GrafanaAgent controller: %w", err) } - return nil + lazyAgentReconciler.Set(&reconciler{ + Client: manager.GetClient(), + scheme: manager.GetScheme(), + notifier: notifier, + config: c, + }) + + return &Operator{ + log: l, + manager: manager, + + kubeletReconciler: &lazyKubeletReconciler, + agentReconciler: &lazyAgentReconciler, + }, nil } -// watchType applies the GVK to an object and returns a source to watch it. -// watchType is a convenience function; without it, the GVK won't show up in -// logs. -func watchType(obj client.Object, m manager.Manager) source.Source { - applyGVK(obj, m) - return &source.Kind{Type: obj} +// Start starts the operator. It will run until ctx is canceled. +func (o *Operator) Start(ctx context.Context) error { + return o.manager.Start(ctx) } -// applyGVK applies a GVK to an object based on the scheme. applyGVK is a -// convenience function; without it, the GVK won't show up in logs. -// nolint: interfacer -func applyGVK(obj client.Object, m manager.Manager) client.Object { - gvk, err := apiutil.GVKForObject(obj, m.GetScheme()) - if err != nil { - panic(err) +type lazyReconciler struct { + mut sync.RWMutex + inner reconcile.Reconciler +} + +// Get returns the current reconciler. +func (lr *lazyReconciler) Get() reconcile.Reconciler { + lr.mut.RLock() + defer lr.mut.RUnlock() + return lr.inner +} + +// Set updates the current reconciler. +func (lr *lazyReconciler) Set(inner reconcile.Reconciler) { + lr.mut.Lock() + defer lr.mut.Unlock() + lr.inner = inner +} + +// Wrap wraps the current reconciler with a middleware. +func (lr *lazyReconciler) Wrap(mw func(next reconcile.Reconciler) reconcile.Reconciler) { + lr.mut.Lock() + defer lr.mut.Unlock() + lr.inner = mw(lr.inner) +} + +// Reconcile calls Reconcile against the current reconciler. +func (lr *lazyReconciler) Reconcile(ctx context.Context, req reconcile.Request) (reconcile.Result, error) { + lr.mut.RLock() + defer lr.mut.RUnlock() + if lr.inner == nil { + return reconcile.Result{}, fmt.Errorf("no reconciler") } - obj.GetObjectKind().SetGroupVersionKind(gvk) - return obj + return lr.inner.Reconcile(ctx, req) } diff --git a/pkg/operator/operator_test.go b/pkg/operator/operator_test.go new file mode 100644 index 000000000000..1874aa6f0404 --- /dev/null +++ b/pkg/operator/operator_test.go @@ -0,0 +1,159 @@ +//go:build !nonetwork && !nodocker && !race +// +build !nonetwork,!nodocker,!race + +package operator + +import ( + "context" + "fmt" + "os" + "path/filepath" + "sync" + "testing" + "time" + + "github.com/go-kit/log" + "github.com/grafana/agent/pkg/operator/logutil" + "github.com/grafana/agent/pkg/util" + "github.com/grafana/agent/pkg/util/k8s" + "github.com/grafana/agent/pkg/util/subset" + "github.com/stretchr/testify/require" + "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" + "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/yaml" +) + +// TestMetricsInstance deploys a basic MetricsInstance and validates expected +// resources were applied. +func TestMetricsInstance(t *testing.T) { + ctx, cancel := context.WithTimeout(context.Background(), 3*time.Minute) + defer cancel() + + inFile := "./testdata/test-metrics-instance.in.yaml" + outFile := "./testdata/test-metrics-instance.out.yaml" + ReconcileTest(ctx, t, inFile, outFile) +} + +// ReconcileTest deploys a cluster and runs the operator against it locally. It +// then does the following: +// +// 1. Deploys all resources in inFile, assuming a Reconcile will retrigger from +// them +// +// 2. Loads the resources specified by outFile and checks if the equivalent +// existing resources in the cluster are subsets of the loaded outFile +// resources. +// +// The second step will run in a loop until the test passes or ctx is canceled. +// +// ReconcileTest cannot be used to check that the data of a Secret or a +// ConfigMap is a subset of expected data. +func ReconcileTest(ctx context.Context, t *testing.T, inFile, outFile string) { + t.Helper() + + var wg sync.WaitGroup + defer wg.Wait() + + ctx, cancel := context.WithCancel(ctx) + defer cancel() + + l := util.TestLogger(t) + cluster := NewTestCluster(ctx, t, l) + + cfg := NewTestConfig(t, cluster) + op, err := New(l, cfg) + require.NoError(t, err) + + // Deploy input resources + resources := k8s.NewResourceSet(l, cluster) + defer resources.Stop() + require.NoError(t, resources.AddFile(ctx, inFile)) + + // Start the operator. + wg.Add(1) + go func() { + defer wg.Done() + err := op.Start(ctx) + require.NoError(t, err) + }() + + // Load our expected resources, and then get the real resource for each and + // ensure that it overlaps with our expected object. + expectedFile, err := os.Open(outFile) + require.NoError(t, err) + defer expectedFile.Close() + + expectedSet, err := k8s.ReadUnstructuredObjects(expectedFile) + require.NoError(t, err) + + for _, expected := range expectedSet { + err := k8s.Wait(ctx, l, func() error { + var actual unstructured.Unstructured + actual.SetGroupVersionKind(expected.GroupVersionKind()) + + err := cluster.Client().Get(ctx, client.ObjectKeyFromObject(expected), &actual) + if err != nil { + return fmt.Errorf("failed to get resource: %w", err) + } + + expectedBytes, err := yaml.Marshal(expected) + if err != nil { + return fmt.Errorf("failed to marshal expected: %w", err) + } + + actualBytes, err := yaml.Marshal(&actual) + if err != nil { + return fmt.Errorf("failed to marshal actual: %w", err) + } + + err = subset.YAMLAssert(expectedBytes, actualBytes) + if err != nil { + return fmt.Errorf("assert failed: %w", err) + } + return nil + }) + require.NoError(t, err) + } +} + +// NewTestCluster creates a new testing cluster. The cluster will be removed +// when the test completes. +func NewTestCluster(ctx context.Context, t *testing.T, l log.Logger) *k8s.Cluster { + t.Helper() + + cluster, err := k8s.NewCluster(ctx, k8s.Options{}) + require.NoError(t, err) + t.Cleanup(cluster.Stop) + + // Apply CRDs to cluster + crds := k8s.NewResourceSet(l, cluster) + t.Cleanup(crds.Stop) + + crdPaths, err := filepath.Glob("../../production/operator/crds/*.yaml") + require.NoError(t, err) + + for _, crd := range crdPaths { + err := crds.AddFile(ctx, crd) + require.NoError(t, err) + } + + return cluster +} + +// NewTestConfig generates a new base operator Config used for tests. +func NewTestConfig(t *testing.T, cluster *k8s.Cluster) *Config { + t.Helper() + + cfg, err := NewConfig(nil) + require.NoError(t, err) + + cfg.RestConfig = cluster.GetConfig() + cfg.Controller.Logger = logutil.Wrap(util.TestLogger(t)) + + // Listen on any port for testing purposes + cfg.Controller.Port = 0 + cfg.Controller.MetricsBindAddress = "127.0.0.1:0" + cfg.Controller.HealthProbeBindAddress = "127.0.0.1:0" + + return cfg +} diff --git a/pkg/operator/reconciler.go b/pkg/operator/reconciler.go index 68ba4847c323..a1c5208be195 100644 --- a/pkg/operator/reconciler.go +++ b/pkg/operator/reconciler.go @@ -10,12 +10,12 @@ import ( "github.com/grafana/agent/pkg/operator/assets" "github.com/grafana/agent/pkg/operator/clientutil" "github.com/grafana/agent/pkg/operator/config" + "github.com/grafana/agent/pkg/operator/hierarchy" "github.com/grafana/agent/pkg/operator/logutil" core_v1 "k8s.io/api/core/v1" k8s_errors "k8s.io/apimachinery/pkg/api/errors" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" - "k8s.io/apimachinery/pkg/types" controller "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/client" ) @@ -25,18 +25,20 @@ type reconciler struct { scheme *runtime.Scheme config *Config - eventHandlers eventHandlers + notifier *hierarchy.Notifier } func (r *reconciler) Reconcile(ctx context.Context, req controller.Request) (controller.Result, error) { l := logutil.FromContext(ctx) level.Info(l).Log("msg", "reconciling grafana-agent") + defer level.Debug(l).Log("msg", "done reconciling grafana-agent") + + // Reset our notifications while we re-handle the reconcile. + r.notifier.StopNotify(req.NamespacedName) var agent grafana_v1alpha1.GrafanaAgent if err := r.Get(ctx, req.NamespacedName, &agent); k8s_errors.IsNotFound(err) { - level.Debug(l).Log("msg", "detected deleted agent, cleaning up watchers") - r.eventHandlers.Clear(req.NamespacedName) - + level.Debug(l).Log("msg", "detected deleted agent") return controller.Result{}, nil } else if err != nil { level.Error(l).Log("msg", "unable to get grafana-agent", "err", err) @@ -47,37 +49,13 @@ func (r *reconciler) Reconcile(ctx context.Context, req controller.Request) (con return controller.Result{}, nil } - secrets := make(assets.SecretStore) - builder := deploymentBuilder{ - Logger: l, - Config: r.config, - Client: r.Client, - Agent: &agent, - Secrets: secrets, - ResourceSelectors: make(map[secondaryResource][]resourceSelector), - } - - deployment, err := builder.Build(ctx) + deployment, watchers, err := buildHierarchy(ctx, l, r.Client, &agent) if err != nil { - level.Error(l).Log("msg", "unable to collect resources", "err", err) + level.Error(l).Log("msg", "unable to build hierarchy", "err", err) return controller.Result{}, nil } - - // Update our notifiers with the objects we discovered from building the - // deployment. This allows us to re-reconcile when any of the objects that - // composed our final deployment changes. - for _, secondary := range secondaryResources { - r.eventHandlers[secondary].Notify(req.NamespacedName, builder.ResourceSelectors[secondary]) - } - - assetRefs := deployment.AssetReferences() - - // Update our notifiers with asset references discovered through the deployment. - r.watchSecrets(req, assetRefs) - - // Fill secrets in store - if err := r.fillStore(ctx, assetRefs, secrets); err != nil { - level.Error(l).Log("msg", "unable to cache secrets for building config", "err", err) + if err := r.notifier.Notify(watchers...); err != nil { + level.Error(l).Log("msg", "unable to update notifier", "err", err) return controller.Result{}, nil } @@ -96,7 +74,7 @@ func (r *reconciler) Reconcile(ctx context.Context, req controller.Request) (con r.createLogsDaemonSet, } for _, actor := range actors { - err := actor(ctx, l, deployment, secrets) + err := actor(ctx, l, deployment, deployment.Secrets) if err != nil { level.Error(l).Log("msg", "error during reconciling", "err", err) return controller.Result{Requeue: true}, nil @@ -106,75 +84,6 @@ func (r *reconciler) Reconcile(ctx context.Context, req controller.Request) (con return controller.Result{}, nil } -// watchSecrets will go iterate over asset references and configure them to be -// watched for updates. This allows reconciles to trigger when a referenced -// Secret or ConfigMap changes. -func (r *reconciler) watchSecrets(req controller.Request, refs []config.AssetReference) { - var ( - configMapSelectors []resourceSelector - secretSelectors []resourceSelector - ) - - for _, ref := range refs { - switch { - case ref.Reference.ConfigMap != nil: - configMapSelectors = append(configMapSelectors, &assetReferenceSelector{Reference: ref}) - case ref.Reference.Secret != nil: - secretSelectors = append(secretSelectors, &assetReferenceSelector{Reference: ref}) - default: - panic("unknown AssetReference") - } - } - - r.eventHandlers[resourceConfigMap].Notify(req.NamespacedName, configMapSelectors) - r.eventHandlers[resourceSecret].Notify(req.NamespacedName, secretSelectors) -} - -// fillStore retrieves all the values from refs and caches them in the provided store. -func (r *reconciler) fillStore(ctx context.Context, refs []config.AssetReference, store assets.SecretStore) error { - for _, ref := range refs { - var value string - - if ref.Reference.ConfigMap != nil { - var cm core_v1.ConfigMap - name := types.NamespacedName{ - Namespace: ref.Namespace, - Name: ref.Reference.ConfigMap.Name, - } - - if err := r.Get(ctx, name, &cm); err != nil { - return err - } - - rawValue, ok := cm.BinaryData[ref.Reference.ConfigMap.Key] - if !ok { - return fmt.Errorf("no key %s in ConfigMap %s", ref.Reference.ConfigMap.Key, name) - } - value = string(rawValue) - } else if ref.Reference.Secret != nil { - var secret core_v1.Secret - name := types.NamespacedName{ - Namespace: ref.Namespace, - Name: ref.Reference.Secret.Name, - } - - if err := r.Get(ctx, name, &secret); err != nil { - return err - } - - rawValue, ok := secret.Data[ref.Reference.Secret.Key] - if !ok { - return fmt.Errorf("no key %s in Secret %s", ref.Reference.ConfigMap.Key, name) - } - value = string(rawValue) - } - - store[assets.KeyForSelector(ref.Namespace, &ref.Reference)] = value - } - - return nil -} - // createSecrets creates secrets from the secret store. func (r *reconciler) createSecrets( ctx context.Context, diff --git a/pkg/operator/reconciler_logs.go b/pkg/operator/reconciler_logs.go index 8bdeb301abd0..a12e752a5db8 100644 --- a/pkg/operator/reconciler_logs.go +++ b/pkg/operator/reconciler_logs.go @@ -10,7 +10,6 @@ import ( "github.com/grafana/agent/pkg/operator/clientutil" "github.com/grafana/agent/pkg/operator/config" apps_v1 "k8s.io/api/apps/v1" - k8s_errors "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/types" ) @@ -40,20 +39,8 @@ func (r *reconciler) createLogsDaemonSet( key := types.NamespacedName{Namespace: ds.Namespace, Name: ds.Name} if len(d.Logs) == 0 { - var ds apps_v1.DaemonSet - err := r.Client.Get(ctx, key, &ds) - if k8s_errors.IsNotFound(err) || !isManagedResource(&ds) { - return nil - } else if err != nil { - return fmt.Errorf("failed to find stale DaemonSet %s: %w", key, err) - } - - err = r.Client.Delete(ctx, &ds) - if err != nil { - return fmt.Errorf("failed to delete stale DaemonSet %s: %w", key, err) - } - return nil + return deleteManagedResource(ctx, r.Client, key, &ds) } level.Info(l).Log("msg", "reconciling logs daemonset", "ds", key) diff --git a/pkg/operator/reconciler_metrics.go b/pkg/operator/reconciler_metrics.go index 334f94adcd4a..6a52948133b5 100644 --- a/pkg/operator/reconciler_metrics.go +++ b/pkg/operator/reconciler_metrics.go @@ -14,10 +14,10 @@ import ( "github.com/grafana/agent/pkg/operator/config" apps_v1 "k8s.io/api/apps/v1" core_v1 "k8s.io/api/core/v1" - k8s_errors "k8s.io/apimachinery/pkg/api/errors" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/types" + "k8s.io/utils/pointer" "sigs.k8s.io/controller-runtime/pkg/client" ) @@ -57,18 +57,7 @@ func (r *reconciler) createTelemetryConfigurationSecret( // Delete the old Secret if one exists and we have nothing to create. if !shouldCreate { var secret core_v1.Secret - err := r.Client.Get(ctx, key, &secret) - if k8s_errors.IsNotFound(err) || !isManagedResource(&secret) { - return nil - } else if err != nil { - return fmt.Errorf("failed to find stale secret %s: %w", key, err) - } - - err = r.Client.Delete(ctx, &secret) - if err != nil { - return fmt.Errorf("failed to delete stale secret %s: %w", key, err) - } - return nil + return deleteManagedResource(ctx, r.Client, key, &secret) } rawConfig, err := d.BuildConfig(s, ty) @@ -83,8 +72,6 @@ func (r *reconciler) createTelemetryConfigurationSecret( return fmt.Errorf("unable to build config: %w", err) } - blockOwnerDeletion := true - secret := core_v1.Secret{ ObjectMeta: v1.ObjectMeta{ Namespace: key.Namespace, @@ -92,7 +79,7 @@ func (r *reconciler) createTelemetryConfigurationSecret( Labels: r.config.Labels.Merge(managedByOperatorLabels), OwnerReferences: []v1.OwnerReference{{ APIVersion: d.Agent.APIVersion, - BlockOwnerDeletion: &blockOwnerDeletion, + BlockOwnerDeletion: pointer.Bool(true), Kind: d.Agent.Kind, Name: d.Agent.Name, UID: d.Agent.UID, @@ -121,21 +108,9 @@ func (r *reconciler) createMetricsGoverningService( // Delete the old Secret if one exists and we have no prometheus instances. if len(d.Metrics) == 0 { - key := types.NamespacedName{Namespace: svc.Namespace, Name: svc.Name} - var service core_v1.Service - err := r.Client.Get(ctx, key, &service) - if k8s_errors.IsNotFound(err) || !isManagedResource(&service) { - return nil - } else if err != nil { - return fmt.Errorf("failed to find stale Service %s: %w", key, err) - } - - err = r.Client.Delete(ctx, &service) - if err != nil { - return fmt.Errorf("failed to delete stale Service %s: %w", key, err) - } - return nil + key := types.NamespacedName{Namespace: svc.Namespace, Name: svc.Name} + return deleteManagedResource(ctx, r.Client, key, &service) } level.Info(l).Log("msg", "reconciling statefulset service", "service", svc.Name) @@ -199,11 +174,11 @@ func (r *reconciler) createMetricsStatefulSets( return fmt.Errorf("failed to list statefulsets: %w", err) } for _, ss := range statefulSets.Items { - if _, keep := generated[ss.Name]; keep { + if _, keep := generated[ss.Name]; keep || !isManagedResource(&ss) { continue } level.Info(l).Log("msg", "deleting stale statefulset", "name", ss.Name) - if err := r.Client.Delete(ctx, &ss); err != nil { + if err := r.Delete(ctx, &ss); err != nil { return fmt.Errorf("failed to delete stale statefulset %s: %w", ss.Name, err) } } diff --git a/pkg/operator/resources_logs.go b/pkg/operator/resources_logs.go index 81d7119b2477..85dc07b6cce9 100644 --- a/pkg/operator/resources_logs.go +++ b/pkg/operator/resources_logs.go @@ -11,6 +11,7 @@ import ( v1 "k8s.io/api/core/v1" meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/intstr" + "k8s.io/utils/pointer" ) func generateLogsDaemonSet( @@ -32,7 +33,7 @@ func generateLogsDaemonSet( // Don't transfer any kubectl annotations to the DaemonSet so it doesn't get // pruned by kubectl. annotations := make(map[string]string) - for k, v := range d.Agent.ObjectMeta.Annotations { + for k, v := range d.Agent.Annotations { if !strings.HasPrefix(k, "kubectl.kubernetes.io/") { annotations[k] = v } @@ -46,7 +47,6 @@ func generateLogsDaemonSet( labels[agentTypeLabel] = "logs" labels[managedByOperatorLabel] = managedByOperatorLabelValue - boolTrue := true ds := &apps_v1.DaemonSet{ ObjectMeta: meta_v1.ObjectMeta{ Name: name, @@ -56,8 +56,8 @@ func generateLogsDaemonSet( OwnerReferences: []meta_v1.OwnerReference{{ APIVersion: d.Agent.APIVersion, Kind: d.Agent.Kind, - BlockOwnerDeletion: &boolTrue, - Controller: &boolTrue, + BlockOwnerDeletion: pointer.Bool(true), + Controller: pointer.Bool(true), Name: d.Agent.Name, UID: d.Agent.UID, }}, @@ -260,13 +260,6 @@ func generateLogsDaemonSetSpec( Value: "0", }} - var ( - privileged bool = true - runAsUser int64 = 0 - - terminationGracePeriodSeconds = int64(4800) - ) - operatorContainers := []v1.Container{ { Name: "config-reloader", @@ -274,8 +267,8 @@ func generateLogsDaemonSetSpec( VolumeMounts: volumeMounts, Env: envVars, SecurityContext: &v1.SecurityContext{ - Privileged: &privileged, - RunAsUser: &runAsUser, + Privileged: pointer.Bool(true), + RunAsUser: pointer.Int64(0), }, Args: []string{ "--config-file=/var/lib/grafana-agent/config-in/agent.yml", @@ -336,7 +329,7 @@ func generateLogsDaemonSetSpec( ServiceAccountName: d.Agent.Spec.ServiceAccountName, NodeSelector: d.Agent.Spec.NodeSelector, PriorityClassName: d.Agent.Spec.PriorityClassName, - TerminationGracePeriodSeconds: &terminationGracePeriodSeconds, + TerminationGracePeriodSeconds: pointer.Int64(4800), Volumes: volumes, Tolerations: d.Agent.Spec.Tolerations, Affinity: d.Agent.Spec.Affinity, diff --git a/pkg/operator/resources_metrics.go b/pkg/operator/resources_metrics.go index 69fd583966f0..4834fb8e9793 100644 --- a/pkg/operator/resources_metrics.go +++ b/pkg/operator/resources_metrics.go @@ -1,6 +1,7 @@ package operator import ( + "context" "fmt" "strings" @@ -10,8 +11,10 @@ import ( prom_operator "github.com/prometheus-operator/prometheus-operator/pkg/operator" apps_v1 "k8s.io/api/apps/v1" v1 "k8s.io/api/core/v1" + k8s_errors "k8s.io/apimachinery/pkg/api/errors" meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/intstr" + "k8s.io/utils/pointer" "sigs.k8s.io/controller-runtime/pkg/client" ) @@ -33,6 +36,22 @@ var ( probeTimeoutSeconds int32 = 3 ) +// deleteManagedResource deletes a managed resource. Ignores resources that are +// not managed. +func deleteManagedResource(ctx context.Context, cli client.Client, key client.ObjectKey, o client.Object) error { + err := cli.Get(ctx, key, o) + if k8s_errors.IsNotFound(err) || !isManagedResource(o) { + return nil + } else if err != nil { + return fmt.Errorf("failed to find stale resource %s: %w", key, err) + } + err = cli.Delete(ctx, o) + if err != nil { + return fmt.Errorf("failed to delete stale resource %s: %w", key, err) + } + return nil +} + // isManagedResource returns true if the given object has a managed-by // grafana-agent-operator label. func isManagedResource(obj client.Object) bool { @@ -51,18 +70,16 @@ func generateMetricsStatefulSetService(cfg *Config, d config.Deployment) *v1.Ser d.Agent.Spec.PortName = defaultPortName } - boolTrue := true - return &v1.Service{ ObjectMeta: meta_v1.ObjectMeta{ Name: governingServiceName(d.Agent.Name), - Namespace: d.Agent.ObjectMeta.Namespace, + Namespace: d.Agent.Namespace, OwnerReferences: []meta_v1.OwnerReference{{ APIVersion: d.Agent.APIVersion, Kind: d.Agent.Kind, Name: d.Agent.Name, - BlockOwnerDeletion: &boolTrue, - Controller: &boolTrue, + BlockOwnerDeletion: pointer.Bool(true), + Controller: pointer.Bool(true), UID: d.Agent.UID, }}, Labels: cfg.Labels.Merge(map[string]string{ @@ -122,7 +139,7 @@ func generateMetricsStatefulSet( // Don't transfer any kubectl annotations to the statefulset so it doesn't // get pruned by kubectl. annotations := make(map[string]string) - for k, v := range d.Agent.ObjectMeta.Annotations { + for k, v := range d.Agent.Annotations { if !strings.HasPrefix(k, "kubectl.kubernetes.io/") { annotations[k] = v } @@ -136,8 +153,6 @@ func generateMetricsStatefulSet( labels[agentTypeLabel] = "metrics" labels[managedByOperatorLabel] = managedByOperatorLabelValue - boolTrue := true - ss := &apps_v1.StatefulSet{ ObjectMeta: meta_v1.ObjectMeta{ Name: name, @@ -147,8 +162,8 @@ func generateMetricsStatefulSet( OwnerReferences: []meta_v1.OwnerReference{{ APIVersion: d.Agent.APIVersion, Kind: d.Agent.Kind, - BlockOwnerDeletion: &boolTrue, - Controller: &boolTrue, + BlockOwnerDeletion: pointer.Bool(true), + Controller: pointer.Bool(true), Name: d.Agent.Name, UID: d.Agent.UID, }}, @@ -214,8 +229,6 @@ func generateMetricsStatefulSetSpec( shards = *reqShards } - terminationGracePeriodSeconds := int64(4800) - useVersion := d.Agent.Spec.Version if useVersion == "" { useVersion = DefaultAgentVersion @@ -446,7 +459,7 @@ func generateMetricsStatefulSetSpec( ServiceAccountName: d.Agent.Spec.ServiceAccountName, NodeSelector: d.Agent.Spec.NodeSelector, PriorityClassName: d.Agent.Spec.PriorityClassName, - TerminationGracePeriodSeconds: &terminationGracePeriodSeconds, + TerminationGracePeriodSeconds: pointer.Int64(4800), Volumes: volumes, Tolerations: d.Agent.Spec.Tolerations, Affinity: d.Agent.Spec.Affinity, diff --git a/pkg/operator/secondary_resource.go b/pkg/operator/secondary_resource.go deleted file mode 100644 index 72d0b6d2674f..000000000000 --- a/pkg/operator/secondary_resource.go +++ /dev/null @@ -1,58 +0,0 @@ -package operator - -import ( - "github.com/go-kit/log" - "k8s.io/apimachinery/pkg/types" - "sigs.k8s.io/controller-runtime/pkg/client" -) - -// secondaryResource is a secondary resource that is consumed by the primary -// resource (the GrafanaAgent CR) that should trigger a reconcile when it -// changes. -type secondaryResource int - -// List of secondary resources that the reconciler will watch. -const ( - resourcePromInstance secondaryResource = iota - resourceServiceMonitor - resourcePodMonitor - resourceProbe - resourceSecret - resourceConfigMap - resourceLogsInstance - resourcePodLogs -) - -// secondaryResources is the list of valid secondaryResources. -var secondaryResources = []secondaryResource{ - resourcePromInstance, - resourceServiceMonitor, - resourcePodMonitor, - resourceProbe, - resourceSecret, - resourceConfigMap, - resourceLogsInstance, - resourcePodLogs, -} - -// eventHandlers is a set of EnqueueRequestForSelector event handlers, one per -// secondary resource. -type eventHandlers map[secondaryResource]*enqueueRequestForSelector - -// newResourceEventHandlers creates a new eventHandlers for all secondary -// resources using the given client and logger. -func newResourceEventHandlers(c client.Reader, l log.Logger) eventHandlers { - m := make(eventHandlers) - for _, r := range secondaryResources { - m[r] = &enqueueRequestForSelector{Client: c, Log: l} - } - return m -} - -// Clear informs all event handlers to stop sending events for the given -// namespaced name. -func (ev eventHandlers) Clear(name types.NamespacedName) { - for _, v := range ev { - v.Notify(name, nil) - } -} diff --git a/pkg/operator/selector_eventhandler.go b/pkg/operator/selector_eventhandler.go deleted file mode 100644 index e799d052239f..000000000000 --- a/pkg/operator/selector_eventhandler.go +++ /dev/null @@ -1,202 +0,0 @@ -package operator - -import ( - "context" - "fmt" - "sync" - "time" - - "github.com/go-kit/log" - "github.com/go-kit/log/level" - "github.com/grafana/agent/pkg/operator/config" - v1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/labels" - "k8s.io/apimachinery/pkg/types" - "k8s.io/client-go/util/workqueue" - "sigs.k8s.io/controller-runtime/pkg/client" - "sigs.k8s.io/controller-runtime/pkg/event" - "sigs.k8s.io/controller-runtime/pkg/reconcile" -) - -// enqueueRequestForSelector allows for requesting that specific -// reconciliations occur whenever an object that matches a selector -// comes in. -// -// Implements handler.EventHandler. -type enqueueRequestForSelector struct { - Client client.Reader - Log log.Logger - - mut sync.RWMutex - watchers map[types.NamespacedName][]resourceSelector -} - -// Create implements handler.EventHandler. -func (e *enqueueRequestForSelector) Create(ev event.CreateEvent, q workqueue.RateLimitingInterface) { - level.Debug(e.logger(ev.Object)).Log("msg", "got create for object") - e.handleEvent(ev.Object, q) -} - -// Update implements handler.EventHandler. -func (e *enqueueRequestForSelector) Update(ev event.UpdateEvent, q workqueue.RateLimitingInterface) { - level.Debug(e.logger(ev.ObjectNew)).Log("msg", "got update for object") - e.handleEvent(ev.ObjectOld, q) - e.handleEvent(ev.ObjectNew, q) -} - -// Delete implements handler.EventHandler. -func (e *enqueueRequestForSelector) Delete(ev event.DeleteEvent, q workqueue.RateLimitingInterface) { - level.Debug(e.logger(ev.Object)).Log("msg", "got delete for object") - e.handleEvent(ev.Object, q) -} - -// Generic implements handler.EventHandler. -func (e *enqueueRequestForSelector) Generic(ev event.GenericEvent, q workqueue.RateLimitingInterface) { - level.Debug(e.logger(ev.Object)).Log("msg", "got generic event for object") - e.handleEvent(ev.Object, q) -} - -func (e *enqueueRequestForSelector) logger(obj client.Object) log.Logger { - gvk := obj.GetObjectKind().GroupVersionKind() - return log.With( - e.Log, - "kind", fmt.Sprintf("%s/%s.%s", gvk.Group, gvk.Version, gvk.Kind), - "key", client.ObjectKeyFromObject(obj), - ) -} - -func (e *enqueueRequestForSelector) handleEvent(obj client.Object, q workqueue.RateLimitingInterface) { - e.mut.RLock() - defer e.mut.RUnlock() - - if e.watchers == nil { - return - } - - // Go through our watchers. If any of their selectors match this object, - // enqueue a reconcile request for the watcher. - for watcher, selectors := range e.watchers { - var performReconcile bool - for _, selector := range selectors { - if selector.Matches(e.Log, e.Client, obj) { - performReconcile = true - break - } - } - if performReconcile { - q.Add(reconcile.Request{NamespacedName: watcher}) - } - } -} - -// Notify will notify obj to reconcile if an event was received that matches -// any selector in ss. -// -// To stop being notified for changes, call Notify again with nil for ss. -func (e *enqueueRequestForSelector) Notify(obj types.NamespacedName, ss []resourceSelector) { - e.mut.Lock() - defer e.mut.Unlock() - - if e.watchers == nil { - e.watchers = make(map[types.NamespacedName][]resourceSelector) - } - - if ss == nil { - delete(e.watchers, obj) - } else { - e.watchers[obj] = ss - } -} - -type resourceSelector interface { - Matches(l log.Logger, c client.Reader, o client.Object) bool - SetListOptions(lo *client.ListOptions) -} - -// multiSelector returns true if all inner selectors match. -type multiSelector struct { - Selectors []resourceSelector -} - -func (s *multiSelector) Matches(l log.Logger, c client.Reader, o client.Object) bool { - for _, inner := range s.Selectors { - if !inner.Matches(l, c, o) { - return false - } - } - return true -} - -func (s *multiSelector) SetListOptions(lo *client.ListOptions) { - for _, inner := range s.Selectors { - inner.SetListOptions(lo) - } -} - -type namespaceSelector struct { - Namespace string -} - -func (s *namespaceSelector) Matches(l log.Logger, c client.Reader, o client.Object) bool { - return o.GetNamespace() == s.Namespace -} - -func (s *namespaceSelector) SetListOptions(lo *client.ListOptions) { - lo.Namespace = s.Namespace -} - -type namespaceLabelSelector struct { - Selector labels.Selector -} - -func (s *namespaceLabelSelector) Matches(l log.Logger, c client.Reader, o client.Object) bool { - ctx, cancel := context.WithTimeout(context.Background(), 500*time.Millisecond) - defer cancel() - - in := o.GetNamespace() - var ns v1.Namespace - if err := c.Get(ctx, types.NamespacedName{Name: in}, &ns); err != nil { - level.Error(l).Log("msg", "failed to look up namespace", "namespace", in, "err", err) - return false - } - - return s.Selector.Matches(labels.Set(ns.Labels)) -} - -func (s *namespaceLabelSelector) SetListOptions(lo *client.ListOptions) { - // no-op -} - -type labelSelector struct { - Selector labels.Selector -} - -func (s *labelSelector) Matches(l log.Logger, c client.Reader, o client.Object) bool { - return s.Selector.Matches(labels.Set(o.GetLabels())) -} - -func (s *labelSelector) SetListOptions(lo *client.ListOptions) { - lo.LabelSelector = s.Selector -} - -type assetReferenceSelector struct { - Reference config.AssetReference -} - -func (s *assetReferenceSelector) Matches(l log.Logger, c client.Reader, o client.Object) bool { - if o.GetNamespace() != s.Reference.Namespace { - return false - } - - if sc, ok := o.(*v1.Secret); ok { - return s.Reference.Reference.Secret != nil && sc.Name == s.Reference.Reference.Secret.Name - } else if cm, ok := o.(*v1.ConfigMap); ok { - return s.Reference.Reference.ConfigMap != nil && cm.Name == s.Reference.Reference.ConfigMap.Name - } - - return false -} - -func (s *assetReferenceSelector) SetListOptions(lo *client.ListOptions) { - // no-op -} diff --git a/pkg/operator/selector_eventhandler_test.go b/pkg/operator/selector_eventhandler_test.go deleted file mode 100644 index 43690ba2f777..000000000000 --- a/pkg/operator/selector_eventhandler_test.go +++ /dev/null @@ -1,184 +0,0 @@ -// These tests depend on test assets from controller-runtime which don't work on Windows. - -//go:build !windows && has_network -// +build !windows,has_network - -package operator - -import ( - "context" - "fmt" - "path/filepath" - "runtime" - "testing" - "time" - - "github.com/go-kit/log" - "github.com/hashicorp/go-getter" - "github.com/stretchr/testify/require" - v1 "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/labels" - "k8s.io/apimachinery/pkg/types" - "k8s.io/client-go/util/workqueue" - "sigs.k8s.io/controller-runtime/pkg/client" - "sigs.k8s.io/controller-runtime/pkg/envtest" - "sigs.k8s.io/controller-runtime/pkg/event" -) - -var ( - envTestK8sVersion = "1.19.2" - - envtestToolsURL = fmt.Sprintf( - "https://storage.googleapis.com/kubebuilder-tools/kubebuilder-tools-%s-%s-%s.tar.gz", - envTestK8sVersion, - runtime.GOOS, - runtime.GOARCH, - ) -) - -// TestEnqueueRequestForSelector creates an example Kubenretes cluster and runs -// EnqueueRequestForSelector to validate it works. -func TestEnqueueRequestForSelector(t *testing.T) { - l := log.NewNopLogger() - - ctx, cancel := context.WithTimeout(context.Background(), 5*time.Minute) - defer cancel() - - var env envtest.Environment - setupEnvtest(t, &env) - - cfg, err := env.Start() - require.NoError(t, err) - t.Cleanup(func() { _ = env.Stop() }) - - cli, err := client.New(cfg, client.Options{}) - require.NoError(t, err) - - // Tests will rely on a namespace existing, so let's create a namespace with - // some labels. - testNs := v1.Namespace{ - TypeMeta: metav1.TypeMeta{ - APIVersion: "v1", - Kind: "Namespace", - }, - ObjectMeta: metav1.ObjectMeta{ - Name: "enqueue-test", - Labels: map[string]string{"foo": "bar"}, - }, - } - err = cli.Create(ctx, &testNs) - require.NoError(t, err) - - testPod := &v1.Pod{ObjectMeta: metav1.ObjectMeta{ - Name: "test-pod", - Namespace: "enqueue-test", - Labels: map[string]string{"fizz": "buzz"}, - }} - - t.Run("no watchers", func(t *testing.T) { - limiter := workqueue.DefaultControllerRateLimiter() - q := workqueue.NewRateLimitingQueue(limiter) - - e := enqueueRequestForSelector{Client: cli, Log: l} - e.Create(event.CreateEvent{Object: testPod}, q) - - require.Equal(t, 0, q.Len(), "no changes should have been enqueued") - }) - - t.Run("matches watcher", func(t *testing.T) { - limiter := workqueue.DefaultControllerRateLimiter() - q := workqueue.NewRateLimitingQueue(limiter) - - e := enqueueRequestForSelector{Client: cli, Log: l} - - e.Notify(types.NamespacedName{Name: "watcher"}, buildSelectorSet( - &namespaceLabelSelector{Selector: parseSelector(t, "foo in (bar)")}, - &labelSelector{Selector: parseSelector(t, "fizz in (buzz)")}, - )) - - e.Create(event.CreateEvent{Object: testPod}, q) - require.Equal(t, 1, q.Len(), "expected one enqueue") - }) - - t.Run("matches watcher with explicit namespace", func(t *testing.T) { - limiter := workqueue.DefaultControllerRateLimiter() - q := workqueue.NewRateLimitingQueue(limiter) - - e := enqueueRequestForSelector{Client: cli, Log: l} - e.Notify(types.NamespacedName{Name: "watcher"}, buildSelectorSet( - &namespaceSelector{Namespace: "enqueue-test"}, - &namespaceLabelSelector{Selector: labels.Everything()}, - &labelSelector{Selector: labels.Everything()}, - )) - - e.Create(event.CreateEvent{Object: testPod}, q) - require.Equal(t, 1, q.Len(), "expected one enqueue") - }) - - t.Run("bad namespace name selector", func(t *testing.T) { - limiter := workqueue.DefaultControllerRateLimiter() - q := workqueue.NewRateLimitingQueue(limiter) - - e := enqueueRequestForSelector{Client: cli, Log: l} - e.Notify(types.NamespacedName{Name: "watcher"}, buildSelectorSet( - &namespaceSelector{Namespace: "default"}, - &namespaceLabelSelector{Selector: labels.Everything()}, - &labelSelector{Selector: labels.Everything()}, - )) - - e.Create(event.CreateEvent{Object: testPod}, q) - require.Equal(t, 0, q.Len(), "expected no enqueues") - }) - - t.Run("bad namespace label selector", func(t *testing.T) { - limiter := workqueue.DefaultControllerRateLimiter() - q := workqueue.NewRateLimitingQueue(limiter) - - e := enqueueRequestForSelector{Client: cli, Log: l} - e.Notify(types.NamespacedName{Name: "watcher"}, buildSelectorSet( - &namespaceLabelSelector{Selector: parseSelector(t, "foo notin (bar)")}, - &labelSelector{Selector: parseSelector(t, "fizz in (buzz)")}, - )) - - e.Create(event.CreateEvent{Object: testPod}, q) - require.Equal(t, 0, q.Len(), "no changes should have been enqueued") - }) - - t.Run("bad label selector", func(t *testing.T) { - limiter := workqueue.DefaultControllerRateLimiter() - q := workqueue.NewRateLimitingQueue(limiter) - - e := enqueueRequestForSelector{Client: cli, Log: l} - e.Notify(types.NamespacedName{Name: "watcher"}, buildSelectorSet( - &namespaceLabelSelector{Selector: parseSelector(t, "foo in (bar)")}, - &labelSelector{Selector: parseSelector(t, "fizz notin (buzz)")}, - )) - - e.Create(event.CreateEvent{Object: testPod}, q) - require.Equal(t, 0, q.Len(), "no changes should have been enqueued") - }) -} - -// buildSelectorSet returns a single multiSelector composed of ss. -func buildSelectorSet(ss ...resourceSelector) []resourceSelector { - return []resourceSelector{&multiSelector{Selectors: ss}} -} - -// setupEnvtest downloads Envtest dependencies to a temporary directory. -func setupEnvtest(t *testing.T, env *envtest.Environment) { - t.Helper() - storagePath := t.TempDir() - - err := getter.Get(storagePath, envtestToolsURL) - require.NoError(t, err, "failed to download dependencies for envtest") - - env.BinaryAssetsDirectory = filepath.Join(storagePath, "kubebuilder", "bin") -} - -func parseSelector(t *testing.T, selector string) labels.Selector { - t.Helper() - s, err := labels.Parse(selector) - require.NoError(t, err) - return s -} diff --git a/pkg/operator/testdata/test-metrics-instance.in.yaml b/pkg/operator/testdata/test-metrics-instance.in.yaml new file mode 100644 index 000000000000..911ed996efc5 --- /dev/null +++ b/pkg/operator/testdata/test-metrics-instance.in.yaml @@ -0,0 +1,84 @@ +apiVersion: monitoring.grafana.com/v1alpha1 +kind: GrafanaAgent +metadata: + name: grafana-agent-example + namespace: default + labels: + app: grafana-agent-example +spec: + image: grafana/agent:latest + logLevel: debug + serviceAccountName: grafana-agent + storage: + volumeClaimTemplate: + spec: + resources: + requests: + storage: 1Gi + metrics: + instanceSelector: + matchLabels: + agent: grafana-agent-example + +--- + +apiVersion: monitoring.grafana.com/v1alpha1 +kind: MetricsInstance +metadata: + name: primary + namespace: default + labels: + agent: grafana-agent-example +spec: + remoteWrite: + - url: http://prometheus.default.svc.cluster.local:9090/prometheus/api/v1/write + +--- + +# +# Extra resources +# + +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: grafana-agent + namespace: default +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: grafana-agent +rules: +- apiGroups: + - "" + resources: + - nodes + - nodes/proxy + - nodes/metrics + - services + - endpoints + - pods + verbs: + - get + - list + - watch +- nonResourceURLs: + - /metrics + - /metrics/cadvisor + verbs: + - get +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: grafana-agent +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: grafana-agent +subjects: +- kind: ServiceAccount + name: grafana-agent + namespace: default diff --git a/pkg/operator/testdata/test-metrics-instance.out.yaml b/pkg/operator/testdata/test-metrics-instance.out.yaml new file mode 100644 index 000000000000..a65e221b7869 --- /dev/null +++ b/pkg/operator/testdata/test-metrics-instance.out.yaml @@ -0,0 +1,152 @@ +# Resources to assert to exist when reconciling test-metrics-instance.in.yaml. + +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: grafana-agent-example + namespace: default + labels: + operator.agent.grafana.com/name: grafana-agent-example + operator.agent.grafana.com/shard: "0" + operator.agent.grafana.com/type: metrics + app.kubernetes.io/instance: grafana-agent-example + app.kubernetes.io/managed-by: grafana-agent-operator + app.kubernetes.io/name: grafana-agent + grafana-agent: grafana-agent-example + ownerReferences: + - apiVersion: monitoring.grafana.com/v1alpha1 + blockOwnerDeletion: true + controller: true + kind: GrafanaAgent + name: grafana-agent-example +spec: + replicas: 1 + serviceName: grafana-agent-example-operated + template: + spec: + containers: + - name: config-reloader + args: + - --config-file=/var/lib/grafana-agent/config-in/agent.yml + - --config-envsubst-file=/var/lib/grafana-agent/config/agent.yml + - --watch-interval=1m + - --statefulset-ordinal-from-envvar=POD_NAME + - --reload-url=http://127.0.0.1:8081/-/reload + env: + - name: POD_NAME + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.name + - name: SHARD + value: "0" + - name: SHARDS + value: "1" + volumeMounts: + - mountPath: /var/lib/grafana-agent/config-in + name: config + readOnly: true + - mountPath: /var/lib/grafana-agent/config + name: config-out + - mountPath: /var/lib/grafana-agent/data + name: grafana-agent-example-wal + - mountPath: /var/lib/grafana-agent/secrets + name: secrets + readOnly: true + - name: grafana-agent + args: + - -config.file=/var/lib/grafana-agent/config/agent.yml + - -config.expand-env=true + - -reload-port=8081 + env: + - name: POD_NAME + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.name + - name: SHARD + value: "0" + - name: SHARDS + value: "1" + ports: + - containerPort: 8080 + name: http-metrics + protocol: TCP + readinessProbe: + httpGet: + path: /-/ready + port: http-metrics + scheme: HTTP + volumeMounts: + - mountPath: /var/lib/grafana-agent/config-in + name: config + readOnly: true + - mountPath: /var/lib/grafana-agent/config + name: config-out + - mountPath: /var/lib/grafana-agent/data + name: grafana-agent-example-wal + - mountPath: /var/lib/grafana-agent/secrets + name: secrets + readOnly: true + serviceAccount: grafana-agent + serviceAccountName: grafana-agent + terminationGracePeriodSeconds: 4800 + volumes: + - name: config + secret: + secretName: grafana-agent-example-config + - name: config-out + emptyDir: {} + - name: secrets + secret: + secretName: grafana-agent-example-secrets + volumeClaimTemplates: + - metadata: + name: grafana-agent-example-wal + spec: + accessModes: [ReadWriteOnce] + resources: + requests: + storage: 1Gi + +--- + +apiVersion: v1 +kind: Secret +metadata: + name: grafana-agent-example-config + namespace: default + labels: + app.kubernetes.io/managed-by: grafana-agent-operator + ownerReferences: + - apiVersion: monitoring.grafana.com/v1alpha1 + kind: GrafanaAgent + name: grafana-agent-example +# We don't test the contents of the secret here; we use unit-level tests for +# asserting that the generated config is correct. + +--- + +apiVersion: v1 +kind: Service +metadata: + name: grafana-agent-example-operated + namespace: default + labels: + app.kubernetes.io/managed-by: grafana-agent-operator + operated-agent: "true" + operator.agent.grafana.com/name: grafana-agent-example + ownerReferences: + - apiVersion: monitoring.grafana.com/v1alpha1 + kind: GrafanaAgent + name: grafana-agent-example +spec: + type: ClusterIP + ports: + - name: http-metrics + port: 8080 + protocol: TCP + targetPort: http-metrics + selector: + app.kubernetes.io/name: grafana-agent + operator.agent.grafana.com/name: grafana-agent-example diff --git a/pkg/operator/testdata/test-resource-hierarchy.yaml b/pkg/operator/testdata/test-resource-hierarchy.yaml new file mode 100644 index 000000000000..c3e412550f7c --- /dev/null +++ b/pkg/operator/testdata/test-resource-hierarchy.yaml @@ -0,0 +1,165 @@ +apiVersion: monitoring.grafana.com/v1alpha1 +kind: GrafanaAgent +metadata: + name: grafana-agent-example + namespace: default + labels: + app: grafana-agent-example +spec: + image: grafana/agent:latest + serviceAccountName: grafana-agent + logs: + instanceSelector: + matchLabels: + agent: grafana-agent-example + metrics: + instanceSelector: + matchLabels: + agent: grafana-agent-example + +--- + +apiVersion: monitoring.grafana.com/v1alpha1 +kind: MetricsInstance +metadata: + name: primary + namespace: default + labels: + agent: grafana-agent-example +spec: + remoteWrite: + - url: http://prometheus:9090/api/v1/write + basicAuth: + username: + name: prometheus-fake-credentials + key: fakeUsername + password: + name: prometheus-fake-credentials + key: fakePassword + # Supply an empty namespace selector to look in all namespaces. + podMonitorNamespaceSelector: {} + podMonitorSelector: + matchLabels: + instance: primary + # Supply an empty namespace selector to look in all namespaces. + serviceMonitorNamespaceSelector: {} + serviceMonitorSelector: + matchLabels: + instance: primary + +--- + +apiVersion: monitoring.grafana.com/v1alpha1 +kind: LogsInstance +metadata: + name: primary + namespace: default + labels: + agent: grafana-agent-example +spec: + clients: + - url: http://loki:8080/loki/api/v1/push + + # Supply an empty namespace selector to look in all namespaces. + podLogsNamespaceSelector: {} + podLogsSelector: + matchLabels: + instance: primary + +--- + +# Have the Agent monitor itself. +apiVersion: monitoring.coreos.com/v1 +kind: PodMonitor +metadata: + name: grafana-agents + namespace: default + labels: + instance: primary +spec: + selector: + matchLabels: + app.kubernetes.io/name: grafana-agent + podMetricsEndpoints: + - port: http-metrics + +--- + +# Have the Agent get logs from itself. +apiVersion: monitoring.grafana.com/v1alpha1 +kind: PodLogs +metadata: + name: grafana-agents + namespace: default + labels: + instance: primary +spec: + selector: + matchLabels: + app.kubernetes.io/name: grafana-agent + pipelineStages: + - cri: {} + +# +# Pretend credentials +# + +--- +apiVersion: v1 +kind: Secret +metadata: + name: prometheus-fake-credentials + namespace: default +data: + # "user" + fakeUsername: "dXNlcg==" + # "password" + fakePassword: "cGFzc3dvcmQ=" + +# +# Extra resources +# + +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: grafana-agent + namespace: default +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: grafana-agent +rules: +- apiGroups: + - "" + resources: + - nodes + - nodes/proxy + - nodes/metrics + - services + - endpoints + - pods + verbs: + - get + - list + - watch +- nonResourceURLs: + - /metrics + - /metrics/cadvisor + verbs: + - get +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: grafana-agent +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: grafana-agent +subjects: +- kind: ServiceAccount + name: grafana-agent + namespace: default diff --git a/pkg/traces/promsdprocessor/prom_sd_processor.go b/pkg/traces/promsdprocessor/prom_sd_processor.go index 13d4fcc19c78..82eef1aac2f5 100644 --- a/pkg/traces/promsdprocessor/prom_sd_processor.go +++ b/pkg/traces/promsdprocessor/prom_sd_processor.go @@ -119,7 +119,12 @@ func stringAttributeFromMap(attrs pdata.AttributeMap, key string) string { } func getConnectionIP(ctx context.Context) string { - return client.FromContext(ctx).Addr.String() + c := client.FromContext(ctx) + if c.Addr == nil { + return "" + } + + return c.Addr.String() } func (p *promServiceDiscoProcessor) getPodIP(ctx context.Context, attrs pdata.AttributeMap) string { diff --git a/pkg/traces/promsdprocessor/prom_sd_processor_test.go b/pkg/traces/promsdprocessor/prom_sd_processor_test.go index 18d49642e3cc..6c0485d5c2c6 100644 --- a/pkg/traces/promsdprocessor/prom_sd_processor_test.go +++ b/pkg/traces/promsdprocessor/prom_sd_processor_test.go @@ -248,6 +248,16 @@ func TestPodAssociation(t *testing.T) { attrMapFn: func(*testing.T) pdata.AttributeMap { return pdata.NewAttributeMap() }, expectedIP: ipStr, }, + { + name: "connection IP is empty", + podAssociations: []string{podAssociationConnectionIP}, + ctxFn: func(t *testing.T) context.Context { + c := client.FromContext(context.Background()) + return client.NewContext(context.Background(), c) + }, + attrMapFn: func(*testing.T) pdata.AttributeMap { return pdata.NewAttributeMap() }, + expectedIP: "", + }, { name: "ip attribute", ctxFn: func(t *testing.T) context.Context { return context.Background() }, diff --git a/e2e/k8s/k8s.go b/pkg/util/k8s/k8s.go similarity index 83% rename from e2e/k8s/k8s.go rename to pkg/util/k8s/k8s.go index ad83b82aaf4c..ab72a2f3244f 100644 --- a/e2e/k8s/k8s.go +++ b/pkg/util/k8s/k8s.go @@ -10,6 +10,8 @@ import ( docker_types "github.com/docker/docker/api/types" docker_nat "github.com/docker/go-connections/nat" + grafana_v1alpha1 "github.com/grafana/agent/pkg/operator/apis/monitoring/v1alpha1" + promop_v1 "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1" k3d_client "github.com/rancher/k3d/v5/pkg/client" config "github.com/rancher/k3d/v5/pkg/config" k3d_cfgtypes "github.com/rancher/k3d/v5/pkg/config/types" @@ -19,9 +21,13 @@ import ( k3d_docker "github.com/rancher/k3d/v5/pkg/runtimes/docker" k3d_types "github.com/rancher/k3d/v5/pkg/types" k3d_version "github.com/rancher/k3d/v5/version" + apiextensions_v1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/util/rand" + "k8s.io/client-go/kubernetes/scheme" "k8s.io/client-go/rest" k8s_clientcmd "k8s.io/client-go/tools/clientcmd" + "sigs.k8s.io/controller-runtime/pkg/client" ) // Cluster is a Kubernetes cluster that runs inside of a k3s Docker container. @@ -31,7 +37,7 @@ import ( // Cluster also runs an NGINX ingress controller which is exposed to the host. // Call GetHTTPAddr to get the address for making requests against the server. // -// Set E2E_K8S_USE_DOCKER_NETWORK in your environment variables if you are +// Set K8S_USE_DOCKER_NETWORK in your environment variables if you are // running tests from inside of a Docker container. This environment variable // configures the k3s Docker container to join the same network as the // container tests are running in. When this environment variable isn't set, @@ -49,23 +55,56 @@ type Cluster struct { runtime k3d_runtime.Runtime k3dCluster k3d_types.Cluster restConfig *rest.Config + kubeClient client.Client nginxAddr string } -// NewCluster creates a new Cluster. -func NewCluster() (cluster *Cluster, err error) { - var ( - ctx = context.Background() +// Options control creation of a cluster. +type Options struct { + // Scheme is the Kubernetes scheme used for the generated Kubernetes client. + // If nil, a generated scheme that contains all known Kubernetes API types + // will be generated. + Scheme *runtime.Scheme +} + +func (o *Options) applyDefaults() error { + if o.Scheme == nil { + o.Scheme = runtime.NewScheme() + + for _, add := range []func(*runtime.Scheme) error{ + scheme.AddToScheme, + apiextensions_v1.AddToScheme, + grafana_v1alpha1.AddToScheme, + promop_v1.AddToScheme, + } { + if err := add(o.Scheme); err != nil { + return fmt.Errorf("unable to register scheme: %w", err) + } + } + } + return nil +} +// NewCluster creates a new Cluster. NewCluster won't return with success until +// the cluster is running, but things like the ingress controller might not be +// running right away. You should never assume that any resource in the cluster +// is running and utilize exponential backoffs to allow time for things to spin +// up. +func NewCluster(ctx context.Context, o Options) (cluster *Cluster, err error) { + var ( // We force the Docker runtime so we can create a Docker client for getting // the exposed ports for the API server and NGINX. runtime = k3d_runtime.Docker // Running in docker indicates that we should configure k3s to connect to // the same docker network as the current container. - runningInDocker = os.Getenv("E2E_K8S_USE_DOCKER_NETWORK") == "1" + runningInDocker = os.Getenv("K8S_USE_DOCKER_NETWORK") == "1" ) + if err := o.applyDefaults(); err != nil { + return nil, fmt.Errorf("failed to apply defaults to options: %w", err) + } + k3dConfig := k3d_config.SimpleConfig{ TypeMeta: k3d_cfgtypes.TypeMeta{ Kind: "Simple", @@ -152,11 +191,19 @@ func NewCluster() (cluster *Cluster, err error) { return nil, fmt.Errorf("could not generate k8s REST API config: %w", err) } + kubeClient, err := client.New(restCfg, client.Options{ + Scheme: o.Scheme, + }) + if err != nil { + return nil, fmt.Errorf("failed to generate client: %w", err) + } + return &Cluster{ runtime: runtime, k3dCluster: clusterConfig.Cluster, restConfig: restCfg, nginxAddr: httpAddr, + kubeClient: kubeClient, }, nil } @@ -289,6 +336,13 @@ func hostBinding(containerInfo docker_types.ContainerJSON, containerPort int) (s return "", fmt.Errorf("no container port %d exposed", containerPort) } +// Client returns the Kubernetes client for this Cluster. Client is handling +// objects registered to the Scheme passed to Options when creating the +// cluster. +func (c *Cluster) Client() client.Client { + return c.kubeClient +} + // GetConfig returns a *rest.Config that can be used to connect to the // Kubernetes cluster. The returned Config is a copy and is safe for // modification. diff --git a/e2e/k8s/k8s_test.go b/pkg/util/k8s/k8s_test.go similarity index 81% rename from e2e/k8s/k8s_test.go rename to pkg/util/k8s/k8s_test.go index ce4a72065146..88cba243eb4c 100644 --- a/e2e/k8s/k8s_test.go +++ b/pkg/util/k8s/k8s_test.go @@ -1,3 +1,6 @@ +//go:build !nonetwork && !nodocker && !race +// +build !nonetwork,!nodocker,!race + package k8s import ( @@ -12,7 +15,7 @@ import ( func TestCluster(t *testing.T) { ctx := context.Background() - cluster, err := NewCluster() + cluster, err := NewCluster(ctx, Options{}) require.NoError(t, err) defer cluster.Stop() diff --git a/pkg/util/k8s/objects.go b/pkg/util/k8s/objects.go new file mode 100644 index 000000000000..ed52b47aa49e --- /dev/null +++ b/pkg/util/k8s/objects.go @@ -0,0 +1,191 @@ +package k8s + +import ( + "context" + "encoding/json" + "errors" + "fmt" + "io" + "time" + + "github.com/go-kit/log" + "github.com/go-kit/log/level" + "github.com/grafana/dskit/backoff" + "k8s.io/apimachinery/pkg/runtime/serializer" + "k8s.io/apimachinery/pkg/util/yaml" + "sigs.k8s.io/controller-runtime/pkg/client" + + apps_v1 "k8s.io/api/apps/v1" + core_v1 "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" +) + +// CreateObjects will create the provided set of objects. If any object +// couldn't be created, an error will be returned and created objects will be +// deleted. +func CreateObjects(ctx context.Context, cli client.Client, objs ...client.Object) (err error) { + // Index offset into objs for objects we managed to create. + createdOffset := -1 + + defer func() { + if err == nil { + return + } + // Delete the subset of objs we managed to create + for i := 0; i <= createdOffset; i++ { + _ = cli.Delete(context.Background(), objs[i]) + } + }() + + for i, obj := range objs { + if err := cli.Create(ctx, obj); err != nil { + return fmt.Errorf("failed to create %s: %w", client.ObjectKeyFromObject(obj), err) + } + createdOffset = i + } + return nil +} + +// ReadObjects will read the set of objects from r and convert them into +// client.Object based on the scheme of the provided Kubernetes client. +// +// The data of r may be YAML or JSON. +func ReadObjects(r io.Reader, cli client.Client) ([]client.Object, error) { + var ( + objects []client.Object + + scheme = cli.Scheme() + rawDecoder = yaml.NewYAMLOrJSONDecoder(r, 4096) + decoder = serializer.NewCodecFactory(scheme).UniversalDecoder(scheme.PrioritizedVersionsAllGroups()...) + ) + +NextObject: + for { + var raw json.RawMessage + + err := rawDecoder.Decode(&raw) + switch { + case errors.Is(err, io.EOF): + break NextObject + case err != nil: + return nil, fmt.Errorf("error parsing object: %w", err) + case len(raw) == 0: + // Skip over empty objects. This can happen when --- is used at the top + // of YAML files. + continue NextObject + } + + obj, _, err := decoder.Decode(raw, nil, nil) + if err != nil { + return nil, fmt.Errorf("failed to decode object: %w", err) + } + clientObj, ok := obj.(client.Object) + if !ok { + return nil, fmt.Errorf("decoded object %T is not a controller-runtime object", obj) + } + objects = append(objects, clientObj) + } + + return objects, nil +} + +// ReadUnstructuredObjects will read the set of objects from r as unstructured +// objects. +func ReadUnstructuredObjects(r io.Reader) ([]*unstructured.Unstructured, error) { + var ( + objects []*unstructured.Unstructured + rawDecoder = yaml.NewYAMLOrJSONDecoder(r, 4096) + ) + +NextObject: + for { + var raw json.RawMessage + + err := rawDecoder.Decode(&raw) + switch { + case errors.Is(err, io.EOF): + break NextObject + case err != nil: + return nil, fmt.Errorf("error parsing object: %w", err) + case len(raw) == 0: + // Skip over empty objects. This can happen when --- is used at the top + // of YAML files. + continue NextObject + } + + var us unstructured.Unstructured + if err := json.Unmarshal(raw, &us); err != nil { + return nil, fmt.Errorf("failed to decode object: %w", err) + } + objects = append(objects, &us) + } + + return objects, nil +} + +// DefaultBackoff is a default backoff config that retries forever until ctx is +// canceled. +var DefaultBackoff = backoff.Config{ + MinBackoff: 100 * time.Millisecond, + MaxBackoff: 1 * time.Second, +} + +// WaitReady will return with no error if obj becomes ready before ctx cancels +// or the backoff fails. +// +// obj may be one of: DaemonSet, StatefulSet, Deployment, Pod. obj must have +// namespace and name set so it can be found. obj will be updated with the +// state of the object in the cluster as WaitReady runs. +// +// The final state of the object will be returned when it is ready. +func WaitReady(ctx context.Context, cli client.Client, obj client.Object, bc backoff.Config) error { + bo := backoff.New(ctx, bc) + + key := client.ObjectKeyFromObject(obj) + + var readyCheck func() bool + switch obj := obj.(type) { + case *apps_v1.DaemonSet: + readyCheck = func() bool { + return obj.Status.NumberReady >= obj.Status.UpdatedNumberScheduled + } + case *apps_v1.StatefulSet: + readyCheck = func() bool { + return obj.Status.ReadyReplicas >= obj.Status.UpdatedReplicas + } + case *apps_v1.Deployment: + readyCheck = func() bool { + return obj.Status.ReadyReplicas >= obj.Status.UpdatedReplicas + } + case *core_v1.Pod: + readyCheck = func() bool { + phase := obj.Status.Phase + return phase == core_v1.PodRunning || phase == core_v1.PodSucceeded + } + } + + for bo.Ongoing() { + err := cli.Get(ctx, key, obj) + if err == nil && readyCheck() { + break + } + bo.Wait() + } + + return bo.Err() +} + +// Wait calls done until ctx is caneled or check returns nil. Returns an error +// if ctx is canceled. +func Wait(ctx context.Context, l log.Logger, check func() error) error { + bo := backoff.New(ctx, DefaultBackoff) + for bo.Ongoing() { + err := check() + if err == nil { + return nil + } + level.Error(l).Log("msg", "check failed", "err", err) + bo.Wait() + } + return bo.Err() +} diff --git a/pkg/util/k8s/resources.go b/pkg/util/k8s/resources.go new file mode 100644 index 000000000000..c7f2c09d6bd0 --- /dev/null +++ b/pkg/util/k8s/resources.go @@ -0,0 +1,67 @@ +package k8s + +import ( + "context" + "fmt" + "io" + "os" + "time" + + "github.com/go-kit/log" + "github.com/go-kit/log/level" + "sigs.k8s.io/controller-runtime/pkg/client" +) + +// ResourceSet deploys a set of temporary objects to a k8s test cluster and +// deletes them when Stop is called. +type ResourceSet struct { + log log.Logger + kubeClient client.Client + objects []client.Object +} + +// NewResourceSet returns a new resource set. +func NewResourceSet(l log.Logger, cluster *Cluster) *ResourceSet { + return &ResourceSet{ + log: l, + kubeClient: cluster.Client(), + } +} + +// Add will read from r and deploy the resources into the cluster. +func (rs *ResourceSet) Add(ctx context.Context, r io.Reader) error { + readObjects, err := ReadObjects(r, rs.kubeClient) + if err != nil { + return fmt.Errorf("error reading fixture: %w", err) + } + err = CreateObjects(ctx, rs.kubeClient, readObjects...) + if err != nil { + return err + } + + rs.objects = append(rs.objects, readObjects...) + return nil +} + +// AddFile will open filename and deploy it into the cluster. +func (rs *ResourceSet) AddFile(ctx context.Context, filename string) error { + f, err := os.Open(filename) + if err != nil { + return fmt.Errorf("failed to open %q: %w", filename, err) + } + defer f.Close() + return rs.Add(ctx, f) +} + +// Stop removes deployed resources from the cluster. +func (rs *ResourceSet) Stop() { + ctx, cancel := context.WithTimeout(context.Background(), time.Minute) + defer cancel() + + for _, obj := range rs.objects { + err := rs.kubeClient.Delete(ctx, obj) + if err != nil { + level.Error(rs.log).Log("msg", "failed to delete object", "obj", client.ObjectKeyFromObject(obj), "err", err) + } + } +} diff --git a/pkg/util/subset/subset.go b/pkg/util/subset/subset.go new file mode 100644 index 000000000000..875278ee83ad --- /dev/null +++ b/pkg/util/subset/subset.go @@ -0,0 +1,120 @@ +// Package subset implements functions to check if one value is a subset of +// another. +package subset + +import ( + "fmt" + "reflect" + + "gopkg.in/yaml.v2" +) + +// Assert checks whether target is a subset of source. source and target must +// be the same type. target is a subset of source when: +// +// * If target and source are slices or arrays, then target must have the same +// number of elements as source. Each element in target must be a subset of +// the corresponding element from source. +// +// * If target and source are maps, each key in source must exist in target. +// The value for each element in target must be a subset of the corresponding +// element from source. +// +// * Otherwise, target and source must be deeply equal. +// +// An instance of Error will be returned when target is not a subset of source. +// +// Subset checking is primarily useful when doing things like YAML assertions, +// where you only want to ensure that a subset of YAML is defined as expected. +func Assert(source, target interface{}) error { + return assert(reflect.ValueOf(source), reflect.ValueOf(target)) +} + +func assert(source, target reflect.Value) error { + // Deference interface/pointers for direct comparison + for canElem(source) { + source = source.Elem() + } + for canElem(target) { + target = target.Elem() + } + + if source.Type() != target.Type() { + return &Error{Message: fmt.Sprintf("type mismatch: %T != %T", source.Interface(), target.Interface())} + } + + switch source.Kind() { + case reflect.Slice, reflect.Array: + if source.Len() != target.Len() { + return &Error{Message: fmt.Sprintf("length mismatch: %d != %d", source.Len(), target.Len())} + } + for i := 0; i < source.Len(); i++ { + if err := assert(source.Index(i), target.Index(i)); err != nil { + return &Error{ + Message: fmt.Sprintf("element %d", i), + Inner: err, + } + } + } + return nil + + case reflect.Map: + iter := source.MapRange() + for iter.Next() { + var ( + sourceElement = iter.Value() + targetElement = target.MapIndex(iter.Key()) + ) + if !targetElement.IsValid() { + return &Error{Message: fmt.Sprintf("missing key %v", iter.Key().Interface())} + } + if err := assert(sourceElement, targetElement); err != nil { + return &Error{ + Message: fmt.Sprintf("%v", iter.Key().Interface()), + Inner: err, + } + } + } + return nil + + default: + if !reflect.DeepEqual(source.Interface(), target.Interface()) { + return &Error{Message: fmt.Sprintf("%v != %v", source, target)} + } + return nil + } +} + +func canElem(v reflect.Value) bool { + return v.Kind() == reflect.Interface || v.Kind() == reflect.Ptr +} + +// Error is a subset assertion error. +type Error struct { + Message string // Message of the error + Inner error // Optional inner error +} + +// Error implements error. +func (e *Error) Error() string { + if e.Inner == nil { + return e.Message + } + return fmt.Sprintf("%s: %s", e.Message, e.Inner) +} + +// Unwrap returns the inner error, if set. +func (e *Error) Unwrap() error { return e.Inner } + +// YAMLAssert is like Assert but accepts YAML bytes as input. +func YAMLAssert(source, target []byte) error { + var sourceValue interface{} + if err := yaml.Unmarshal(source, &sourceValue); err != nil { + return err + } + var targetValue interface{} + if err := yaml.Unmarshal(target, &targetValue); err != nil { + return err + } + return Assert(sourceValue, targetValue) +} diff --git a/pkg/util/subset/subset_test.go b/pkg/util/subset/subset_test.go new file mode 100644 index 000000000000..a44441dd267e --- /dev/null +++ b/pkg/util/subset/subset_test.go @@ -0,0 +1,92 @@ +package subset + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +func TestAssert(t *testing.T) { + tt := []struct { + name string + source, target string + expect string + }{ + // Plain values + { + name: "values match", + source: `true`, + target: `true`, + expect: "", + }, + { + name: "values mismatch", + source: `true`, + target: `false`, + expect: "true != false", + }, + { + name: "type mismatch", + source: `true`, + target: `5`, + expect: "type mismatch: bool != int", + }, + + // Arrays + { + name: "arrays match", + source: `[1, 2, 3]`, + target: `[1, 2, 3]`, + expect: "", + }, + { + name: "arrays mismatch", + source: `[1, 2, 3]`, + target: `[1, 2, 4]`, + expect: "element 2: 3 != 4", + }, + { + name: "array element type mismatch", + source: `[1, 2, 3]`, + target: `[1, 2, true]`, + expect: "element 2: type mismatch: int != bool", + }, + + // Maps + { + name: "maps match", + source: `{"hello": "world"}`, + target: `{"hello": "world"}`, + expect: "", + }, + { + name: "maps mismatch", + source: `{"hello": "world", "year": 2000}`, + target: `{"hello": "world", "year": 2001}`, + expect: "year: 2000 != 2001", + }, + { + name: "maps subset", + source: `{"hello": "world"}`, + target: `{"hello": "world", "year": 2001}`, + expect: "", + }, + { + name: "maps type mismatch", + source: `{"hello": "world", "year": 2000}`, + target: `{"hello": "world", "year": "yes"}`, + expect: "year: type mismatch: int != string", + }, + } + + for _, tc := range tt { + t.Run(tc.name, func(t *testing.T) { + err := YAMLAssert([]byte(tc.source), []byte(tc.target)) + if tc.expect == "" { + require.NoError(t, err) + } else { + require.EqualError(t, err, tc.expect) + } + }) + } +} diff --git a/pkg/util/trigger.go b/pkg/util/trigger.go index 75925cf3bc93..49d0151432d4 100644 --- a/pkg/util/trigger.go +++ b/pkg/util/trigger.go @@ -37,10 +37,22 @@ func (wt *WaitTrigger) Trigger() { func (wt *WaitTrigger) Wait(timeout time.Duration) error { ctx, cancel := context.WithTimeout(context.Background(), timeout) defer cancel() + return wt.WaitContext(ctx) +} + +// WaitContext waits for trigger to complete or for the context to cancel. +// Returns an error if ctx gets canceled. +func (wt *WaitTrigger) WaitContext(ctx context.Context) error { + parentCtx := ctx + + ctx, cancel := context.WithCancel(parentCtx) + defer cancel() + go func() { <-ctx.Done() - if ctx.Err() == context.DeadlineExceeded { - // Ignore cancellations. + + // Ignore cancellations from our child context. + if parentCtx.Err() != nil { wt.cond.Broadcast() } }() @@ -49,7 +61,7 @@ func (wt *WaitTrigger) Wait(timeout time.Duration) error { for ctx.Err() == nil && !wt.completed.Load() { wt.cond.Wait() } - err := ctx.Err() + err := parentCtx.Err() wt.mut.Unlock() return err } diff --git a/tools/release-note.md b/tools/release-note.md index 00d8cefaf019..fe08a411cdf9 100644 --- a/tools/release-note.md +++ b/tools/release-note.md @@ -1,7 +1,7 @@ This is release `${RELEASE_TAG}` of the Grafana Agent. ### Upgrading -Read the [migration guide](https://github.com/grafana/agent/blob/${RELEASE_TAG}/docs/upgrade-guide/_index.md) for specific instructions on upgrading from older versions. +Read the [upgrade guide](https://github.com/grafana/agent/blob/${RELEASE_TAG}/docs/upgrade-guide/_index.md) for specific instructions on upgrading from older versions. ### Notable changes: :warning: **ADD RELEASE NOTES HERE** :warning: diff --git a/tools/seego/Dockerfile b/tools/seego/Dockerfile index 2bb4f3a8a771..66b69b84d401 100644 --- a/tools/seego/Dockerfile +++ b/tools/seego/Dockerfile @@ -1,13 +1,13 @@ FROM rfratto/seego:latest as build # Use custom Go version instead of one prepacked in seego -ENV GOLANG_VERSION 1.16 +ENV GOLANG_VERSION 1.17.6 ENV GOLANG_DOWNLOAD_URL https://golang.org/dl/go$GOLANG_VERSION.linux-amd64.tar.gz -ENV GOLANG_DOWNLOAD_SHA256 013a489ebb3e24ef3d915abe5b94c3286c070dfe0818d5bca8108f1d6e8440d2 +ENV GOLANG_DOWNLOAD_SHA256 231654bbf2dab3d86c1619ce799e77b03d96f9b50770297c8f4dff8836fc8ca2 RUN rm -rf /usr/local/go \ && curl -fsSL "$GOLANG_DOWNLOAD_URL" -o golang.tar.gz \ && echo "$GOLANG_DOWNLOAD_SHA256 golang.tar.gz" | sha256sum -c - \ && tar -C /usr/local -xzf golang.tar.gz \ && rm golang.tar.gz RUN apt-get update -RUN apt-get install -y nsis \ No newline at end of file +RUN apt-get install -y nsis From 57f934b9b6410fd1288fb67ef9fbb1f98ca1e1a1 Mon Sep 17 00:00:00 2001 From: mattdurham Date: Mon, 24 Jan 2022 15:45:59 -0500 Subject: [PATCH 03/19] Main merge dynamic (#1307) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update node_exporter dependency to v1.3.1 (#1228) * Add node_exporter to depcheck * update weaveworks/common dependency * map current release flags and changed defaults * documentation * revert accidental checkin * print out flags when node_exporter test fails to assist debugging * oops, i introduced some flags from master by mistake * Introduce experimental integrations revamp (#1198) * [dev.multiple-integrations] Enable present integrations by default, deprecate enabled field (#1062) * integrations: default to enabled by default * document deprecation of enabled * pkg/integrations: support *_configs field for integrations (#1130) Creates the basic code to unmarshal integrations from a YAML field called _configs, which is a slice of that integration. Note that this is NOT wired up to the integrations manager yet, and trying to run the agent with more than one integration of the same type will likely cause problems. * [dev.multiple-integrations] Prototype new integrations subsystem (#1142) * wip: prototype new integrations subsystem * implement Controller with basic logic for Integration and UpdateIntegration * Implement HTTPIntegration for Controller * decouple controller and subsystem * don't have controller implement integration slightly less smelly now * multiplexer integration * rely on boilerplate for multiplexing for now generics would be nice here * remove multiplex_integration.go Also a little code smelly. Instead of having integrations that run other integrations, I'm going to fall back to having only one controller. * introduce Subsystem, unexport Controller start wiring up things to Subsystem * introduce v2 agent integration to use for testing * start wiring metrics integrations * rename Options to Globals call a spade a spade * add subsystem options to globals * remove dead code * metricsutils: calculate self-scraping based on globals * complete HTTP target API * working example with agent integration * appease the linter * don't return an error when context to cancel an integration is closed * once again i am asking the linter to forgive my typos * fix bug where labels from individual targets were getting dropped at the API endpoint * pkg/config: fix broken test * finish unit tests for integrations v2 controller * metricsutil/metricshandler_integration: make job name unique Before this change, the job name would have collided when using multiple instances of the same integration. * ensure that global subsystem labels are injected into targets * integrations/v2: Infer target hostname from SD API host (#1175) * [dev.multiple-integrations] integrations/v2: allow shimming between v1 and v2 integrations. (#1179) * integrations/v2: allow shimming between v1 and v2 integrations. Shimming is done by changing how the integration registration works; a new RegisterDynamic was added that allows for creating Configs at runtime. Here be dragons; this should be removed whenever we no longer have a need for it. * fix lint * pkg/integrations/v2: use "RegisterLegacy" instead of a generic mechanism * fine, I won't add the deprecation notice if it will make the linter sad * pkg/integrations: re-align (#1181) This commit reverts 69ba2ddfa9483cc8ac6e010dd7abccd319580c80 in favor of allowing the new subsystem to handle multiple instances of integrations. This commit also removes the wal_truncate_frequency field from integrations as it is the only field from old integrations that does not have a current counterpart. * [dev.multiple-integrations] Hide integrations/v2 behind a feature flag (#1185) * feature flag wip * dynamically switch between integrations v1 and v2 default to v1. * pkg/integrations/versionselector to file in pkg/config * pkg/config: fix defaults for Integrations * pkg/config: use more generic way to unmarshal differently based on flag * add missing godoc comment * more comments * switch to deferred unmarshaling * remove unused Config field * simplify completeUnmarshal * do not perform lazy deferred unmarshaling * enable cadvisor by default * switch to using real feature flag * fix postgres_exporter * Merge main into dev.multiple-integrations (#1184) * Fix typo (#1141) * Traces: Improved pod association in PromSD processor (#1137) * Improve k8s pod association * Add tests * Changelog * typo * Add prom_sd_pod_association * Extend tests for pod associations * Docs for pod association config * Lint fixes * Move to unreleased * Add instrumentation recommendations * Remove uncessary constants * Improve tests * remote config with http(s) provider (#1143) * sample remote config code with http provider * use t.TempDir() in unit test * no need to clean up after T.TempDir() * use NewClientFromConfig and make caller responsible for calling SetDirectory * handle nil HTTPClientConfig * remove blank identifier assignment * pass basic auth command line flags for remote config * address pr nits * add expiremental flag * set loader inline * update changelog * add remote config section in docs * pr comment updates * announce patch releases for cve-2021-41090 (#1152) * Merge patch release to main (#1153) * Add secret type to sensitive values * Break out config tests to their own implementation. Also remove username has a sensitive value. * Update changelog * Fix failing test * Scrub secrets when marshaling instance configs * update for v0.21 * Updated changes from the merge. * Remove changelog * Scrub out receivers has ***receivers_scrubber***:null * obscure etcd/consul credentials * Update pkg/traces/config_test.go Co-authored-by: Robert Fratto * Update pkg/config/config.go * go fmt * Change to using custom object and return * Fix bad merge * [v0.21.2] toggle config endpoint (#19) * disable /-/config endpoint by default * disable scraping api get endpoint as well * fix new test * add test and rename flag Co-authored-by: Robert Fratto * Update version to v0.21.2 * Update defaults.go * fix /-/config endpoint * also fix non-pointer config bug * temporarily disable linting for release * fix lint errors Co-authored-by: Matt Durham Co-authored-by: Robert Lankford * Fix POSTGRES_EXPORTER_DATA_SOURCE_NAME usage for postgres_exporter (#1162) * Fix POSTGRES_EXPORTER_DATA_SOURCE_NAME usage for postgres_exporter A recent change broke the usage of POSTGRES_EXPORTER_DATA_SOURCE_NAME for the postgres_exporter. As the incorrect variable was checked in the if clause, it always raises an error. * changelog: keep feature -> enhancement -> bugfix order * postgres_exporter: add regression test Co-authored-by: f11r Co-authored-by: Robert Fratto * Fix syntax error in Jsonnet logs helper method (#1174) Signed-off-by: Nick Pillitteri * cAdvisor Integration (#1081) * Add cadvisor module * Begin creating common config for cadvisor * Don't export internal state * Finish config options for cadvisor * Set config options, and implement cAdvisor collectors * Linting * Buildflags for cadvisor only in linux * I R LEArN Build Tags * Don't zero value the zero value * Offload sketchy global var manipulation to the integrations Run func * Remove unused collectors * Lint * Create generic stub integration and use it for cadvisor * Lint * Final refactor of cAdvisor config for unsupported platforms. Pared down stub integrations. * Lint * Docs for cadvisor config * Update changelog * Update pkg/integrations/stub_integration.go Co-authored-by: Robert Fratto * Reorder changelog * Instance key clarity * Inclusive naming * Finish name changes Keep default disable metric list in sync with upstream Idiomatic golang * Hardcode disabled metrics for cadvisor Co-authored-by: Robert Fratto * Remove log-level flag from systemd unit file (#1177) * Upgrade to OTel v0.40.0 (#1176) * Upgrade to OTel v0.40.0 * Changelog * Add factories check * go mod tidy * config/features: create package to standardize experimental features (#1170) * config/features: create package to standardize experiemental features This commit introduces a new package, pkg/config/features, which allows defining a set of features and validating whether flags associated with those features are allowed to be set. Closes #1163 * update documentation (also s/enabled-features/enable-features) * Fix typo * Update pkg/config/features/features.go Co-authored-by: Robert Lankford Co-authored-by: Robert Lankford * enable cadvisor by default * switch to using real feature flag * fix postgres_exporter Co-authored-by: Ursula Kallio <73951760+osg-grafana@users.noreply.github.com> Co-authored-by: Mario Co-authored-by: Robert Lankford Co-authored-by: Matt Durham Co-authored-by: f11r Co-authored-by: f11r Co-authored-by: Nick Pillitteri <56quarters@users.noreply.github.com> Co-authored-by: Ryan Geyer Co-authored-by: Juraci Paixão Kröhling Co-authored-by: Robert Lankford * Revert "Merge main into dev.multiple-integrations (#1184)" (#1189) This reverts commit ad76ec54f9a781fc83d3e7001808c887f37833ff. * [dev.multiple-integrations] Revert breaking changes to existing integrations (#1191) * revert breaking changes to integrations v1 This commit reverts #1062 in favor of making breaking changes directly in integrations-next instead. The part of #1181 to remove `wal_truncate_frequency` has also been reverted. As part of this change, the enabled field is removed from the v2 common metrics configs, and v2 integrations can no longer be disabled. v2 integrations can only be disabled by removing them from the YAML. * integrations/v2: remove stale reference to ErrDisabled (fix typo too) * integrations/v2: bring in common config decoupling * [dev.multiple-integrations] Introduce autoscraper (#1195) * pkg/integrations/v2: introduce self-scraping * linting * [dev.multiple-integrations] Multiple instances of integrations (#1196) * multiple instances of integrations opt in relevant v1 integrations into supporting multiple instances * shims should check for instance key override * Document integrations-next (#1197) * document integrations-next * remove json tags since they make markdown unhappy * changelog * s/Run/RunIntegration * remove stale comment about integrations.controller purpose * create dedicated run method for instanceScraper * s/expoter/exporter/g * Document why an autoscrape.Scraper manages a set of per-instance scrapers * spell out prerequisite instead of pre-req * use go.uber.org/atomic to make the code a little easier to follow * remove started callback for running integration * use smaller interface for autoscrape Co-authored-by: Ursula Kallio <73951760+osg-grafana@users.noreply.github.com> Co-authored-by: Mario Co-authored-by: Robert Lankford Co-authored-by: Matt Durham Co-authored-by: f11r Co-authored-by: f11r Co-authored-by: Nick Pillitteri <56quarters@users.noreply.github.com> Co-authored-by: Ryan Geyer Co-authored-by: Juraci Paixão Kröhling Co-authored-by: Robert Lankford * Fix panic when using 'stdout' in automatic logging (#1233) * integrations-next: fix bug where v2 integrations were not being strictly unmarshaled (#1235) * Remove jsonnet vendor folders (#1222) * remove jsonnet vendor This adds all vendor folders into .gitignore and removes cached vendor files from the repository. Closes #1221 * Update scripts and instructions for jsonnet vendor removal * `make example-dashboards` will now also run `jb install` * k3d environment instructions now include `jb install` * smoke-test.bash will now run `jb install` prior to `tk apply` * Fix link to k3d example in DEVELOPERS.md (#1242) Signed-off-by: Paschalis Tsilias * Fix node_exporter upgrade docs (#1239) * Fix panic in automatic logging with stdout backend (#1243) * pkg/util: support custom yaml.Unmarshaler implementations for util.UnmarshalYAMLMerged (#1244) It's common for config types to have implement yaml.Unmarshaler for: * Applying defaults * Applying extra logic post-unmarshal If these config types were unmarshaled through util.UnmarshalYAMLMerged, the yaml.Unmarshaler implementation would never complete successfully, preventing the post-unmarshal logic from running. This issue was introduced in #1192, but went unnoticed until #1228 implemented yaml.Unmarshaler to perform field migrations. #1240 reported the issue. This commit fixes the bug by performing a second non-strict unmarshal to ensure that all input values unmarshal successfully, with the exception of unmarshal errors unrelated to unrecognized field names. This is hacky, but it's worthwhile noting that util.UnmarshalYAMLMerged is a temporary workaround needed for the integrations-next migration, and will eventually be removed. * Update k3d example grafana/grafonnet-lib version (#1246) Signed-off-by: Paschalis Tsilias * Create an e2e framework with support for running tests against k8s (#1234) * e2e: create an e2e framework with support for running tests against a k3d cluster * add new E2E drone job * E2E tests should pass when doing a release * sign drone.yml again * move e2e lint to different step that has golangci-lint installed * upgrade golangci-lint and go for e2e test * e2e: add gcc * E2E: install build-essential to get a working full gcc env * :( * e2e: support running from inside of docker * fix lint error * address review feedback * Operator: fix bug where /-/ready and /-/healthy always returned 404 (#1252) * operator: fix bug where /-/ready and /-/healthy always returned 404 controller-runtime must have at least one ready/healthy check for the endpoints to exist * fix lint error, use healthz.Ping * Make scraping-svc use the new `metrics:` key (#1259) Signed-off-by: Paschalis Tsilias * update prometheus dependency (#1260) * corrected typo (#1265) * Use RELEASE_TAG to choose between `:main` and `:latest` docker tags (#1264) * Use RELEASE_TAG to choose between `:main` and `:latest` docker tags Signed-off-by: Paschalis Tsilias * Use :main tag for images in smoke test Signed-off-by: Paschalis Tsilias * Set IMAGE_BRANCH_TAG env var in drone and actions pipelines Signed-off-by: Paschalis Tsilias * Remove quotes from Makefile variable Signed-off-by: Paschalis Tsilias * Remove force_release action Signed-off-by: Paschalis Tsilias * prepare for v0.22.0 release (#1266) * prepare for v0.22.0 release * remove E2E pipeline * Add basic testing framework for operator (#1268) * remove dedicated go.mod for e2e/ * move e2e/k8s to pkg/util/k8s * Migrate operator tests to pkg/util/k8s * remove dedicated e2e tests * allow skipping TestCluster in pkg/util/k8s * remove e2e/ * fix bad merge * fix order of make env args for windows * actually declare referenced docker volume * introduce pkg/util/subset for asserting subset of objects * refactor operator so it's testable * define basic integration test for operator * fix lint errors * fix invalid address in operator test config * Update release-note.md (#1267) * Set scrape User-Agent header during init (#1274) Signed-off-by: Paschalis Tsilias * Upgrade to Go 1.17 (#1278) * Upgrade to 1.17.6 in go.mod and Dockerfiles * Update CHANGELOG.md to mention the update * Update Go version in drone/actions pipelines * Update go.mod, go.sum files via * Re-sign drone.yml * Remove leading newline causing drone build to fail * Bump golangci-lint image to a version using Go 1.17 * Re-attempt to solve linter issue with new golangci-lint image * Remove suffix of exclude rules * Clean previous Go version before unpacking Go 1.17 * Also clean up previous Go versions in other steps * fix typo (#1284) * Use custom Go version in agent-operator Dockerfile (#1286) Signed-off-by: Paschalis Tsilias * pkg/operator: refactor resource hierarchy discovery (#1271) * pkg/operator: refactor resource hierarchy discovery This commit moves common logic related to discovering the resource hierarchy to pkg/operator/hierarchy. This new package requires less boilerplate, which the reconciler is updated to take advantage of. * remove unused code * test construction of resource hierarchy * add missing build constraints * small extra cleanup to use pointer package * review feedback * update agent-build-image for go 1.17 (#1287) (also use a consistent base image tag instead of latest) * Skip non-ready entries when listing instances (#1289) * Skip non-ready instances in LoadInstances() Signed-off-by: Paschalis Tsilias * Add changelog entry Co-authored-by: Robert Fratto * Fix panic in prom_sd_processor when address is empty (#1279) * Fix panic in prom_sd_processor when address is empty * Fix panic in prom_sd_processor when address is empty * Fix docs * Add test case * Lint * Move to unreleased * Operator: generate proxy_url for remote_write (#1298) * operator: generate proxy_url for remote_write * fix weird indentation in test Co-authored-by: Robert Fratto Co-authored-by: Ursula Kallio <73951760+osg-grafana@users.noreply.github.com> Co-authored-by: Mario Co-authored-by: Robert Lankford Co-authored-by: f11r Co-authored-by: f11r Co-authored-by: Nick Pillitteri <56quarters@users.noreply.github.com> Co-authored-by: Ryan Geyer Co-authored-by: Juraci Paixão Kröhling Co-authored-by: Robert Lankford Co-authored-by: Paschalis Tsilias Co-authored-by: Patrick Koenig Co-authored-by: DataPoints Co-authored-by: Alex <52292902+alexrudd2@users.noreply.github.com> Co-authored-by: Robert Fratto From d74fe821cc30342af0d1ea300997caa94494d04c Mon Sep 17 00:00:00 2001 From: mattdurham Date: Thu, 3 Feb 2022 14:11:08 -0500 Subject: [PATCH 04/19] [RFC] Dynamic Documentation (#1308) * Documentation and feature flag support. Part 1 of many. * Fix linting * Documentation * More documentation * MOAR documentation * Update overall readme * fix typo * Update docs/configuration/dynamic-config.md Co-authored-by: Robert Lankford * fix typos and add additional comments * Feedback from PR * Allow overrides of documentation Co-authored-by: Robert Lankford --- docs/configuration/dynamic-config.md | 127 ++++++++ .../01_Basics/01_Structure.md | 64 ++++ .../01_Basics/01_assets/agent-1.yml | 17 ++ .../01_Basics/01_assets/final.yml | 186 ++++++++++++ .../01_Basics/01_assets/server-1.yml | 2 + .../01_Basics/01_config.yml | 2 + .../01_Basics/02_Instances.md | 63 ++++ .../01_Basics/02_assets/agent-1.yml | 17 ++ .../01_Basics/02_assets/final.yml | 205 +++++++++++++ .../01_Basics/02_assets/metrics-1.yml | 6 + .../02_assets/metrics_instances-1.yml | 6 + .../02_assets/metrics_instances-2.yml | 6 + .../01_Basics/02_assets/server-1.yml | 2 + .../01_Basics/02_config.yml | 2 + .../01_Basics/03_Integrations.md | 43 +++ .../01_Basics/03_assets/agent-1.yml | 17 ++ .../01_Basics/03_assets/final.yml | 253 ++++++++++++++++ .../01_Basics/03_assets/integrations-node.yml | 1 + .../03_assets/integrations-redis.yml | 8 + .../01_Basics/03_assets/metrics-1.yml | 6 + .../03_assets/metrics_instances-1.yml | 6 + .../03_assets/metrics_instances-2.yml | 6 + .../01_Basics/03_assets/server-1.yml | 2 + .../01_Basics/03_config.yml | 2 + .../01_Basics/04_Logs_and_Traces.md | 46 +++ .../01_Basics/04_assets/agent-1.yml | 17 ++ .../01_Basics/04_assets/final.yml | 278 +++++++++++++++++ .../01_Basics/04_assets/integrations-node.yml | 1 + .../04_assets/integrations-redis.yml | 8 + .../01_Basics/04_assets/logs-1.yml | 10 + .../01_Basics/04_assets/metrics-1.yml | 6 + .../04_assets/metrics_instances-1.yml | 6 + .../04_assets/metrics_instances-2.yml | 6 + .../01_Basics/04_assets/server-1.yml | 2 + .../01_Basics/04_assets/traces-1.yml | 6 + .../01_Basics/04_config.yml | 2 + .../02_Templates/01_Looping.md | 42 +++ .../02_Templates/01_assets/agent-1.yml | 17 ++ .../02_Templates/01_assets/final.yml | 285 ++++++++++++++++++ .../02_Templates/01_config.yml | 2 + .../02_Templates/02_Datasources.md | 50 +++ .../02_Templates/02_assets/agent-1.yml | 17 ++ .../02_Templates/02_assets/final.yml | 285 ++++++++++++++++++ .../02_Templates/02_assets/fruit.json | 1 + .../02_Templates/02_config.yml | 5 + .../02_Templates/03_Datasource_and_Objects.md | 86 ++++++ .../02_Templates/03_assets/agent-1.yml | 30 ++ .../02_Templates/03_assets/computers.json | 18 ++ .../02_Templates/03_assets/final.yml | 231 ++++++++++++++ .../02_Templates/03_config.yml | 5 + .../03_Advanced_Datasources/01_AWS.md | 39 +++ .../01_assets/agent-1.yml | 21 ++ .../01_assets/final.yml | 220 ++++++++++++++ .../03_Advanced_Datasources/01_config.yml | 2 + docs/cookbook/dynamic-configuration/README.md | 19 ++ pkg/config/config.go | 23 +- pkg/integrations/node_exporter/config.go | 2 +- 57 files changed, 2834 insertions(+), 3 deletions(-) create mode 100644 docs/configuration/dynamic-config.md create mode 100644 docs/cookbook/dynamic-configuration/01_Basics/01_Structure.md create mode 100644 docs/cookbook/dynamic-configuration/01_Basics/01_assets/agent-1.yml create mode 100644 docs/cookbook/dynamic-configuration/01_Basics/01_assets/final.yml create mode 100644 docs/cookbook/dynamic-configuration/01_Basics/01_assets/server-1.yml create mode 100644 docs/cookbook/dynamic-configuration/01_Basics/01_config.yml create mode 100644 docs/cookbook/dynamic-configuration/01_Basics/02_Instances.md create mode 100644 docs/cookbook/dynamic-configuration/01_Basics/02_assets/agent-1.yml create mode 100644 docs/cookbook/dynamic-configuration/01_Basics/02_assets/final.yml create mode 100644 docs/cookbook/dynamic-configuration/01_Basics/02_assets/metrics-1.yml create mode 100644 docs/cookbook/dynamic-configuration/01_Basics/02_assets/metrics_instances-1.yml create mode 100644 docs/cookbook/dynamic-configuration/01_Basics/02_assets/metrics_instances-2.yml create mode 100644 docs/cookbook/dynamic-configuration/01_Basics/02_assets/server-1.yml create mode 100644 docs/cookbook/dynamic-configuration/01_Basics/02_config.yml create mode 100644 docs/cookbook/dynamic-configuration/01_Basics/03_Integrations.md create mode 100644 docs/cookbook/dynamic-configuration/01_Basics/03_assets/agent-1.yml create mode 100644 docs/cookbook/dynamic-configuration/01_Basics/03_assets/final.yml create mode 100644 docs/cookbook/dynamic-configuration/01_Basics/03_assets/integrations-node.yml create mode 100644 docs/cookbook/dynamic-configuration/01_Basics/03_assets/integrations-redis.yml create mode 100644 docs/cookbook/dynamic-configuration/01_Basics/03_assets/metrics-1.yml create mode 100644 docs/cookbook/dynamic-configuration/01_Basics/03_assets/metrics_instances-1.yml create mode 100644 docs/cookbook/dynamic-configuration/01_Basics/03_assets/metrics_instances-2.yml create mode 100644 docs/cookbook/dynamic-configuration/01_Basics/03_assets/server-1.yml create mode 100644 docs/cookbook/dynamic-configuration/01_Basics/03_config.yml create mode 100644 docs/cookbook/dynamic-configuration/01_Basics/04_Logs_and_Traces.md create mode 100644 docs/cookbook/dynamic-configuration/01_Basics/04_assets/agent-1.yml create mode 100644 docs/cookbook/dynamic-configuration/01_Basics/04_assets/final.yml create mode 100644 docs/cookbook/dynamic-configuration/01_Basics/04_assets/integrations-node.yml create mode 100644 docs/cookbook/dynamic-configuration/01_Basics/04_assets/integrations-redis.yml create mode 100644 docs/cookbook/dynamic-configuration/01_Basics/04_assets/logs-1.yml create mode 100644 docs/cookbook/dynamic-configuration/01_Basics/04_assets/metrics-1.yml create mode 100644 docs/cookbook/dynamic-configuration/01_Basics/04_assets/metrics_instances-1.yml create mode 100644 docs/cookbook/dynamic-configuration/01_Basics/04_assets/metrics_instances-2.yml create mode 100644 docs/cookbook/dynamic-configuration/01_Basics/04_assets/server-1.yml create mode 100644 docs/cookbook/dynamic-configuration/01_Basics/04_assets/traces-1.yml create mode 100644 docs/cookbook/dynamic-configuration/01_Basics/04_config.yml create mode 100644 docs/cookbook/dynamic-configuration/02_Templates/01_Looping.md create mode 100644 docs/cookbook/dynamic-configuration/02_Templates/01_assets/agent-1.yml create mode 100644 docs/cookbook/dynamic-configuration/02_Templates/01_assets/final.yml create mode 100644 docs/cookbook/dynamic-configuration/02_Templates/01_config.yml create mode 100644 docs/cookbook/dynamic-configuration/02_Templates/02_Datasources.md create mode 100644 docs/cookbook/dynamic-configuration/02_Templates/02_assets/agent-1.yml create mode 100644 docs/cookbook/dynamic-configuration/02_Templates/02_assets/final.yml create mode 100644 docs/cookbook/dynamic-configuration/02_Templates/02_assets/fruit.json create mode 100644 docs/cookbook/dynamic-configuration/02_Templates/02_config.yml create mode 100644 docs/cookbook/dynamic-configuration/02_Templates/03_Datasource_and_Objects.md create mode 100644 docs/cookbook/dynamic-configuration/02_Templates/03_assets/agent-1.yml create mode 100644 docs/cookbook/dynamic-configuration/02_Templates/03_assets/computers.json create mode 100644 docs/cookbook/dynamic-configuration/02_Templates/03_assets/final.yml create mode 100644 docs/cookbook/dynamic-configuration/02_Templates/03_config.yml create mode 100644 docs/cookbook/dynamic-configuration/03_Advanced_Datasources/01_AWS.md create mode 100644 docs/cookbook/dynamic-configuration/03_Advanced_Datasources/01_assets/agent-1.yml create mode 100644 docs/cookbook/dynamic-configuration/03_Advanced_Datasources/01_assets/final.yml create mode 100644 docs/cookbook/dynamic-configuration/03_Advanced_Datasources/01_config.yml create mode 100644 docs/cookbook/dynamic-configuration/README.md diff --git a/docs/configuration/dynamic-config.md b/docs/configuration/dynamic-config.md new file mode 100644 index 000000000000..9b01fbb4e7bf --- /dev/null +++ b/docs/configuration/dynamic-config.md @@ -0,0 +1,127 @@ +# Dynamic Configuration - Experimental + +**This is experimental and subject to change at anytime, feedback is much appreciated. This is a feature that MAY NOT make it production.** + +Dynamic Configuration is the combination of two things: + +* Loading from multiple files +* Using templates and datasources + +Both of these make heavy use of the excellent [gomplate](https://github.com/hairyhenderson/gomplate). The goal is +that as the configuration grows that it can be split it up into smaller segments to allow better readability and handling. +The configurations cannot be patched in any order and instead are allowed at several levels. + +The second goal is to allow the use of templating, functions for [gomplate doc](https://docs.gomplate.ca/) go into detail +on what functions are available. + +## Configuration + +Location of the dynamic configuration is used via the feature flag `dynamic-config`, then it will use `-config.dynamic-config-path` to +load the configuration for dynamic configuration. + +```yaml +# Sources to pull template values +datasources: + [- ] + +# Locations to use searching for templates, the system does NOT look into subdirectories. Follows gomplate schema +# from [gomplate datasources](https://docs.gomplate.ca/datasources/). File and S3/GCP templates are currently supported +template_paths: + [ - string ] + +# Filters allow you to override the default naming convention + +agent_filter: string # defaults to agent-*.yml +server_filter: string # defaults to server-*.yml +metrics_filter: string # defaults to metrics-*.yml +metrics_instance_filter: string # defaults to metrics_instances-*.yml +integrations_filter: string # defaults to integrations-*.yml +logs_filter: string # defaults to logs-*.yml +traces_filter: string # defaults to traces-*.yml +``` + +### sources_config +```yaml +# Name of the source to use when templating +name: string + +# Path to datasource using schema from [gomplate datasources](https://docs.gomplate.ca/datasources/) +url: string + +``` + +## Templates + +Note when adding a template you MUST NOT add the type as the top level yaml field. For instance if using traces: + +Incorrect + +```yaml +traces: + configs: + - name: default + automatic_logging: + backend: loki + loki_name: default + spans: true +``` + +Correct + +```yaml +configs: +- name: default + automatic_logging: + backend: loki + loki_name: default + spans: true +``` + +Configurations are loaded in the order as they are listed below. + +### Agent + + +Agent template is the standard agent configuration file in its entirety. The default filter is `agent-*.yml`. Only +one file is supported. This is processed first then any subsequent configurations found REPLACE the values here, it is +not additive. + +Reference {{< relref "./" >}}) + +### Server + +The default filter is `server-*.yml`, only ONE server file is supported. + +Reference {{< relref "./server-config.md" >}}) + + +### Metrics + +The default filter is `metrics-*.yml`, only ONE metrics file is supported. + +Reference {{< relref "./metrics-config.md" >}}) + +### Metric Instances + +The default filter is `metrics_instances-*.yml`. Any metric instances are appended to the instances defined in Metrics above. Any number of metric instance files are supporter. + +Reference {{< relref "./metrics-config.md#metrics_instance_config" >}}) in the metrics instance + + +### Integrations + +The default filter is `integrations-*.yml`, these support more than one file, and multiple integrations can be defined in a file. Do not assume any order of loading for integrations. For any integration that is a singleton, loading multiple of those will result in an error. + +Reference {{< relref "./integrations/" >}}) + +### Traces + +The default filter is `traces-*.yml`. This supports ONE file. + +Reference {{< relref "./traces-config.md" >}}) + +### Logs + +The default filter is `logs-*.yml`. This supports ONE file. + +Reference {{< relref "./logs-config.md" >}}) diff --git a/docs/cookbook/dynamic-configuration/01_Basics/01_Structure.md b/docs/cookbook/dynamic-configuration/01_Basics/01_Structure.md new file mode 100644 index 000000000000..89b8206b5a11 --- /dev/null +++ b/docs/cookbook/dynamic-configuration/01_Basics/01_Structure.md @@ -0,0 +1,64 @@ +# 01 Structure + +Dynamic Configuration uses a series of files to load templates. This example will show how they all combine together. Running the below command will combine all the templates into the final.yml. Any failure while loading the config will revert to the original config, or if this is the initial load Grafana Agent will quit. + +`docker run -v ${PWD}/:/etc/grafana grafana/agentctl:latest template-parse /etc/grafana/01_config.yml` + +## Dynamic Configuration + +[config.yml](./01_config.yml) + +```yaml +template_paths: + - "file:///etc/grafana/01_assets" +``` + +Tells the Grafana Agent where to load files from. It is important to note that dynamic configuration does NOT traverse directories. It will look at the directory specified only, if you need more directories then add them to the `template_paths` array. NOTE, if no protocol specified ie `file://` above, then file access will be assumed. `file:///etc/grafana/01_assets` is equivalent to `//etc/grafana/01_assets` + +## Agent + +Dynamic Configuration will find the first file matching pattern `agent-*.yml` and load that as the base. You can only have one agent template. If multiple matching templates are found then the configuration will fail to load. + +[agent-1.yml](./01_assets/agent-1.yml) + +```yaml +server: + http_listen_port: 12345 + log_level: debug +metrics: + wal_directory: /tmp/grafana-agent-normal + global: + scrape_interval: 60s + remote_write: + - url: https://prometheus-us-central1.grafana.net/api/prom/push + basic_auth: + username: 12345 + password: secretpassword +integrations: + node_exporter: + enabled: true + agent: + enabled: true +``` + +## Server + +Dynamic configuration will find the first file matching pattern `server-*.yml` and replace the `Server` config block in +the Agent Configuration. Note that you do NOT include the `server:` tag, dynamic configuration knows by the name that it +is a configuration block. + +You can only have 1 server template. + +[server-1.yml](./01_assets/server-1.yml) + + +```yaml +http_listen_port: 12345 +log_level: info +``` + +## Final + +[final.yml](./01_assets/final.yml) + +In the above example the `log_level: debug` block will be replaced with `log_level: info` from the server-1.yml diff --git a/docs/cookbook/dynamic-configuration/01_Basics/01_assets/agent-1.yml b/docs/cookbook/dynamic-configuration/01_Basics/01_assets/agent-1.yml new file mode 100644 index 000000000000..9ccde139a590 --- /dev/null +++ b/docs/cookbook/dynamic-configuration/01_Basics/01_assets/agent-1.yml @@ -0,0 +1,17 @@ +server: + http_listen_port: 12345 + log_level: debug +metrics: + wal_directory: /tmp/grafana-agent-normal + global: + scrape_interval: 60s + remote_write: + - url: https://prometheus-us-central1.grafana.net/api/prom/push + basic_auth: + username: 12345 + password: secretpassword +integrations: + node_exporter: + enabled: true + agent: + enabled: true \ No newline at end of file diff --git a/docs/cookbook/dynamic-configuration/01_Basics/01_assets/final.yml b/docs/cookbook/dynamic-configuration/01_Basics/01_assets/final.yml new file mode 100644 index 000000000000..649953a37932 --- /dev/null +++ b/docs/cookbook/dynamic-configuration/01_Basics/01_assets/final.yml @@ -0,0 +1,186 @@ +server: + http_listen_network: "" + http_listen_address: "" + http_listen_port: 12345 + http_listen_conn_limit: 0 + grpc_listen_network: "" + grpc_listen_address: "" + grpc_listen_port: 0 + grpc_listen_conn_limit: 0 + http_tls_config: + cert_file: "" + key_file: "" + client_auth_type: "" + client_ca_file: "" + cipher_suites: [] + curve_preferences: [] + min_version: 0 + max_version: 0 + prefer_server_cipher_suites: false + grpc_tls_config: + cert_file: "" + key_file: "" + client_auth_type: "" + client_ca_file: "" + cipher_suites: [] + curve_preferences: [] + min_version: 0 + max_version: 0 + prefer_server_cipher_suites: false + register_instrumentation: false + graceful_shutdown_timeout: 0s + http_server_read_timeout: 0s + http_server_write_timeout: 0s + http_server_idle_timeout: 0s + grpc_server_max_recv_msg_size: 0 + grpc_server_max_send_msg_size: 0 + grpc_server_max_concurrent_streams: 0 + grpc_server_max_connection_idle: 0s + grpc_server_max_connection_age: 0s + grpc_server_max_connection_age_grace: 0s + grpc_server_keepalive_time: 0s + grpc_server_keepalive_timeout: 0s + grpc_server_min_time_between_pings: 0s + grpc_server_ping_without_stream_allowed: false + log_format: "" + log_level: info + log_source_ips_enabled: false + log_source_ips_header: "" + log_source_ips_regex: "" + http_path_prefix: "" +metrics: + global: + scrape_interval: 1m + scrape_timeout: 10s + evaluation_interval: 1m + remote_write: + - url: https://prometheus-us-central1.grafana.net/api/prom/push + remote_timeout: 30s + basic_auth: + username: "12345" + password: + follow_redirects: true + queue_config: + capacity: 2500 + max_shards: 200 + min_shards: 1 + max_samples_per_send: 500 + batch_send_deadline: 5s + min_backoff: 30ms + max_backoff: 100ms + metadata_config: + send: true + send_interval: 1m + max_samples_per_send: 500 + wal_directory: /tmp/grafana-agent-normal + wal_cleanup_age: 12h0m0s + wal_cleanup_period: 30m0s + scraping_service: + enabled: false + reshard_interval: 1m0s + reshard_timeout: 30s + cluster_reshard_event_timeout: 30s + kvstore: + store: consul + prefix: configurations/ + consul: + host: localhost:8500 + acl_token: + http_client_timeout: 20s + consistent_reads: false + watch_rate_limit: 1 + watch_burst_size: 1 + etcd: + endpoints: [] + dial_timeout: 10s + max_retries: 10 + tls_enabled: false + tls_cert_path: "" + tls_key_path: "" + tls_ca_path: "" + tls_server_name: "" + tls_insecure_skip_verify: false + username: "" + password: + multi: + primary: "" + secondary: "" + mirror_enabled: false + mirror_timeout: 2s + lifecycler: + ring: + kvstore: + store: consul + prefix: collectors/ + consul: + host: localhost:8500 + acl_token: + http_client_timeout: 20s + consistent_reads: false + watch_rate_limit: 1 + watch_burst_size: 1 + etcd: + endpoints: [] + dial_timeout: 10s + max_retries: 10 + tls_enabled: false + tls_cert_path: "" + tls_key_path: "" + tls_ca_path: "" + tls_server_name: "" + tls_insecure_skip_verify: false + username: "" + password: + multi: + primary: "" + secondary: "" + mirror_enabled: false + mirror_timeout: 2s + heartbeat_timeout: 1m0s + replication_factor: 3 + zone_awareness_enabled: false + num_tokens: 128 + heartbeat_period: 5s + observe_period: 0s + join_after: 0s + min_ready_duration: 1m0s + interface_names: + - eth0 + - en0 + final_sleep: 30s + tokens_file_path: "" + availability_zone: "" + unregister_on_shutdown: true + address: "" + port: 0 + id: 4c1ed28ad826 + dangerous_allow_reading_files: false + scraping_service_client: + grpc_client_config: + max_recv_msg_size: 104857600 + max_send_msg_size: 16777216 + grpc_compression: "" + rate_limit: 0 + rate_limit_burst: 0 + backoff_on_ratelimits: false + backoff_config: + min_period: 100ms + max_period: 10s + max_retries: 10 + tls_enabled: false + tls_cert_path: "" + tls_key_path: "" + tls_ca_path: "" + tls_server_name: "" + tls_insecure_skip_verify: false + instance_restart_backoff: 5s + instance_mode: shared +integrations: + metrics: + autoscrape: + enable: true + metrics_instance: default + scrape_interval: 1m + scrape_timeout: 10s + agent: {} + diff --git a/docs/cookbook/dynamic-configuration/01_Basics/01_assets/server-1.yml b/docs/cookbook/dynamic-configuration/01_Basics/01_assets/server-1.yml new file mode 100644 index 000000000000..9bf1c55694a8 --- /dev/null +++ b/docs/cookbook/dynamic-configuration/01_Basics/01_assets/server-1.yml @@ -0,0 +1,2 @@ +http_listen_port: 12345 +log_level: info \ No newline at end of file diff --git a/docs/cookbook/dynamic-configuration/01_Basics/01_config.yml b/docs/cookbook/dynamic-configuration/01_Basics/01_config.yml new file mode 100644 index 000000000000..68e200f745f5 --- /dev/null +++ b/docs/cookbook/dynamic-configuration/01_Basics/01_config.yml @@ -0,0 +1,2 @@ +template_paths: + - "/etc/grafana/01_assets" \ No newline at end of file diff --git a/docs/cookbook/dynamic-configuration/01_Basics/02_Instances.md b/docs/cookbook/dynamic-configuration/01_Basics/02_Instances.md new file mode 100644 index 000000000000..b0d5903dd743 --- /dev/null +++ b/docs/cookbook/dynamic-configuration/01_Basics/02_Instances.md @@ -0,0 +1,63 @@ +# 02 Instances + +Dynamic configuration allows multiple prometheus instances to be loaded with a parent metric. This uses +the same agent-1 and server-1 yml from 01. + +`docker run -v ${PWD}/:/etc/grafana grafana/agentctl:latest template-parse /etc/grafana/02_config.yml` + +## Dynamic Configuration + +[config.yml](./02_config.yml) + +Tells the Grafana Agent where to load files from. + +## Metrics + +Dynamic Configuration will find the first file matching pattern `metrics-*.yml` and load that as the base. You can only have one metrics template. + +[metrics-1.yml](./02_assets/metrics-1.yml) + +```yaml +configs: + - name: default +global: + scrape_interval: 60s + scrape_timeout: 20s +wal_directory: /tmp/grafana-agent-wal +``` + +## Metrics Instances + +You can have any number of metrics_instances and they are added to any existing metrics instances defined previously. + +[metrics_instances-1.yml](./02_assets/metrics_instances-1.yml) + +```yaml +name: instance1 +scrape_configs: + - job_name: instance1_job + static_configs: + - targets: + - localhost:4000 +``` + +[metrics_instances-2.yml](./02_assets/metrics_instances-2.yml) + +```yaml +name: instance2 +scrape_configs: + - job_name: instance2_job + static_configs: + - targets: + - localhost:5555 +``` + +## Final + +[final.yml](./01_assets/final.yml) + +In the above you will see the `final.yml` includes all the instance configurations +- default +- instance1 +- instance2 + diff --git a/docs/cookbook/dynamic-configuration/01_Basics/02_assets/agent-1.yml b/docs/cookbook/dynamic-configuration/01_Basics/02_assets/agent-1.yml new file mode 100644 index 000000000000..9ccde139a590 --- /dev/null +++ b/docs/cookbook/dynamic-configuration/01_Basics/02_assets/agent-1.yml @@ -0,0 +1,17 @@ +server: + http_listen_port: 12345 + log_level: debug +metrics: + wal_directory: /tmp/grafana-agent-normal + global: + scrape_interval: 60s + remote_write: + - url: https://prometheus-us-central1.grafana.net/api/prom/push + basic_auth: + username: 12345 + password: secretpassword +integrations: + node_exporter: + enabled: true + agent: + enabled: true \ No newline at end of file diff --git a/docs/cookbook/dynamic-configuration/01_Basics/02_assets/final.yml b/docs/cookbook/dynamic-configuration/01_Basics/02_assets/final.yml new file mode 100644 index 000000000000..245de0c81137 --- /dev/null +++ b/docs/cookbook/dynamic-configuration/01_Basics/02_assets/final.yml @@ -0,0 +1,205 @@ +server: + http_listen_network: "" + http_listen_address: "" + http_listen_port: 12345 + http_listen_conn_limit: 0 + grpc_listen_network: "" + grpc_listen_address: "" + grpc_listen_port: 0 + grpc_listen_conn_limit: 0 + http_tls_config: + cert_file: "" + key_file: "" + client_auth_type: "" + client_ca_file: "" + cipher_suites: [] + curve_preferences: [] + min_version: 0 + max_version: 0 + prefer_server_cipher_suites: false + grpc_tls_config: + cert_file: "" + key_file: "" + client_auth_type: "" + client_ca_file: "" + cipher_suites: [] + curve_preferences: [] + min_version: 0 + max_version: 0 + prefer_server_cipher_suites: false + register_instrumentation: false + graceful_shutdown_timeout: 0s + http_server_read_timeout: 0s + http_server_write_timeout: 0s + http_server_idle_timeout: 0s + grpc_server_max_recv_msg_size: 0 + grpc_server_max_send_msg_size: 0 + grpc_server_max_concurrent_streams: 0 + grpc_server_max_connection_idle: 0s + grpc_server_max_connection_age: 0s + grpc_server_max_connection_age_grace: 0s + grpc_server_keepalive_time: 0s + grpc_server_keepalive_timeout: 0s + grpc_server_min_time_between_pings: 0s + grpc_server_ping_without_stream_allowed: false + log_format: "" + log_level: info + log_source_ips_enabled: false + log_source_ips_header: "" + log_source_ips_regex: "" + http_path_prefix: "" +metrics: + global: + scrape_interval: 1m + scrape_timeout: 20s + evaluation_interval: 1m + wal_directory: /tmp/grafana-agent-wal + wal_cleanup_age: 12h0m0s + wal_cleanup_period: 30m0s + scraping_service: + enabled: false + reshard_interval: 1m0s + reshard_timeout: 30s + cluster_reshard_event_timeout: 30s + kvstore: + store: consul + prefix: configurations/ + consul: + host: localhost:8500 + acl_token: + http_client_timeout: 20s + consistent_reads: false + watch_rate_limit: 1 + watch_burst_size: 1 + etcd: + endpoints: [] + dial_timeout: 10s + max_retries: 10 + tls_enabled: false + tls_cert_path: "" + tls_key_path: "" + tls_ca_path: "" + tls_server_name: "" + tls_insecure_skip_verify: false + username: "" + password: + multi: + primary: "" + secondary: "" + mirror_enabled: false + mirror_timeout: 2s + lifecycler: + ring: + kvstore: + store: consul + prefix: collectors/ + consul: + host: localhost:8500 + acl_token: + http_client_timeout: 20s + consistent_reads: false + watch_rate_limit: 1 + watch_burst_size: 1 + etcd: + endpoints: [] + dial_timeout: 10s + max_retries: 10 + tls_enabled: false + tls_cert_path: "" + tls_key_path: "" + tls_ca_path: "" + tls_server_name: "" + tls_insecure_skip_verify: false + username: "" + password: + multi: + primary: "" + secondary: "" + mirror_enabled: false + mirror_timeout: 2s + heartbeat_timeout: 1m0s + replication_factor: 3 + zone_awareness_enabled: false + num_tokens: 128 + heartbeat_period: 5s + observe_period: 0s + join_after: 0s + min_ready_duration: 1m0s + interface_names: + - eth0 + - en0 + final_sleep: 30s + tokens_file_path: "" + availability_zone: "" + unregister_on_shutdown: true + address: "" + port: 0 + id: 04802136a818 + dangerous_allow_reading_files: false + scraping_service_client: + grpc_client_config: + max_recv_msg_size: 104857600 + max_send_msg_size: 16777216 + grpc_compression: "" + rate_limit: 0 + rate_limit_burst: 0 + backoff_on_ratelimits: false + backoff_config: + min_period: 100ms + max_period: 10s + max_retries: 10 + tls_enabled: false + tls_cert_path: "" + tls_key_path: "" + tls_ca_path: "" + tls_server_name: "" + tls_insecure_skip_verify: false + configs: + - name: default + wal_truncate_frequency: 1h0m0s + min_wal_time: 5m0s + max_wal_time: 4h0m0s + remote_flush_deadline: 1m0s + - name: instance1 + scrape_configs: + - job_name: instance1_job + honor_timestamps: true + scrape_interval: 1m + scrape_timeout: 20s + metrics_path: /metrics + scheme: http + follow_redirects: true + static_configs: + - targets: + - localhost:4000 + wal_truncate_frequency: 1h0m0s + min_wal_time: 5m0s + max_wal_time: 4h0m0s + remote_flush_deadline: 1m0s + - name: instance2 + scrape_configs: + - job_name: instance2_job + honor_timestamps: true + scrape_interval: 1m + scrape_timeout: 20s + metrics_path: /metrics + scheme: http + follow_redirects: true + static_configs: + - targets: + - localhost:5555 + wal_truncate_frequency: 1h0m0s + min_wal_time: 5m0s + max_wal_time: 4h0m0s + remote_flush_deadline: 1m0s + instance_restart_backoff: 5s + instance_mode: shared +integrations: + metrics: + autoscrape: + enable: true + metrics_instance: default + scrape_interval: 1m + scrape_timeout: 20s + agent: {} + diff --git a/docs/cookbook/dynamic-configuration/01_Basics/02_assets/metrics-1.yml b/docs/cookbook/dynamic-configuration/01_Basics/02_assets/metrics-1.yml new file mode 100644 index 000000000000..630e75672beb --- /dev/null +++ b/docs/cookbook/dynamic-configuration/01_Basics/02_assets/metrics-1.yml @@ -0,0 +1,6 @@ +configs: +- name: default +global: + scrape_interval: 60s + scrape_timeout: 20s +wal_directory: /tmp/grafana-agent-wal \ No newline at end of file diff --git a/docs/cookbook/dynamic-configuration/01_Basics/02_assets/metrics_instances-1.yml b/docs/cookbook/dynamic-configuration/01_Basics/02_assets/metrics_instances-1.yml new file mode 100644 index 000000000000..4b93d728201a --- /dev/null +++ b/docs/cookbook/dynamic-configuration/01_Basics/02_assets/metrics_instances-1.yml @@ -0,0 +1,6 @@ +name: instance1 +scrape_configs: + - job_name: instance1_job + static_configs: + - targets: + - localhost:4000 \ No newline at end of file diff --git a/docs/cookbook/dynamic-configuration/01_Basics/02_assets/metrics_instances-2.yml b/docs/cookbook/dynamic-configuration/01_Basics/02_assets/metrics_instances-2.yml new file mode 100644 index 000000000000..12a82ab97e9a --- /dev/null +++ b/docs/cookbook/dynamic-configuration/01_Basics/02_assets/metrics_instances-2.yml @@ -0,0 +1,6 @@ +name: instance2 +scrape_configs: + - job_name: instance2_job + static_configs: + - targets: + - localhost:5555 \ No newline at end of file diff --git a/docs/cookbook/dynamic-configuration/01_Basics/02_assets/server-1.yml b/docs/cookbook/dynamic-configuration/01_Basics/02_assets/server-1.yml new file mode 100644 index 000000000000..9bf1c55694a8 --- /dev/null +++ b/docs/cookbook/dynamic-configuration/01_Basics/02_assets/server-1.yml @@ -0,0 +1,2 @@ +http_listen_port: 12345 +log_level: info \ No newline at end of file diff --git a/docs/cookbook/dynamic-configuration/01_Basics/02_config.yml b/docs/cookbook/dynamic-configuration/01_Basics/02_config.yml new file mode 100644 index 000000000000..28bc47c99d38 --- /dev/null +++ b/docs/cookbook/dynamic-configuration/01_Basics/02_config.yml @@ -0,0 +1,2 @@ +template_paths: + - "file:///etc/grafana/02_assets" \ No newline at end of file diff --git a/docs/cookbook/dynamic-configuration/01_Basics/03_Integrations.md b/docs/cookbook/dynamic-configuration/01_Basics/03_Integrations.md new file mode 100644 index 000000000000..b33f00b6e034 --- /dev/null +++ b/docs/cookbook/dynamic-configuration/01_Basics/03_Integrations.md @@ -0,0 +1,43 @@ +# 03 Integrations + +Dynamic configuration requires the use of `integrations-next` feature flag, to allow arrays of integrations. In this we will load integrations of various types. This is all built on the previous examples. + +`docker run -v ${PWD}/:/etc/grafana grafana/agentctl:latest template-parse /etc/grafana/03_config.yml` + +## Dynamic Configuration + +[config.yml](./03_config.yml) + +Tells the Grafana Agent where to load files from. + +## Integrations + +Integrations are loaded from files matching `integrations-*.yml` and are combined together. You can declare for example multiple sets of `redis_exporter_configs` across several files. + +[integrations-node.yml](./03_assets/integrations-node.yml) + +Note: You do NOT have to name the above file `integrations-node.yml` with `node`, `integrations-1.yml` would work the same. The name does NOT determine the type of integrations a template can contain and a template can contain integrations of different types. + +```yaml +node_exporter: {} +``` + +[integrations-redis.yml](./03_assets/integrations-redis.yml) + +```yaml +redis_exporter_configs: + - redis_addr: localhost:6379 + autoscrape: + metric_relabel_configs: + - source_labels: [__address__] + target_label: "banana" + replacement: "apple" + - redis_addr: localhost:6380 +``` + +## Final + +[final.yml](./03_assets/final.yml) + +The final result should have 3 integrations enabled, 1 node_exporter and 2 redis_exporters. + diff --git a/docs/cookbook/dynamic-configuration/01_Basics/03_assets/agent-1.yml b/docs/cookbook/dynamic-configuration/01_Basics/03_assets/agent-1.yml new file mode 100644 index 000000000000..9ccde139a590 --- /dev/null +++ b/docs/cookbook/dynamic-configuration/01_Basics/03_assets/agent-1.yml @@ -0,0 +1,17 @@ +server: + http_listen_port: 12345 + log_level: debug +metrics: + wal_directory: /tmp/grafana-agent-normal + global: + scrape_interval: 60s + remote_write: + - url: https://prometheus-us-central1.grafana.net/api/prom/push + basic_auth: + username: 12345 + password: secretpassword +integrations: + node_exporter: + enabled: true + agent: + enabled: true \ No newline at end of file diff --git a/docs/cookbook/dynamic-configuration/01_Basics/03_assets/final.yml b/docs/cookbook/dynamic-configuration/01_Basics/03_assets/final.yml new file mode 100644 index 000000000000..840aac17b065 --- /dev/null +++ b/docs/cookbook/dynamic-configuration/01_Basics/03_assets/final.yml @@ -0,0 +1,253 @@ +server: + http_listen_network: "" + http_listen_address: "" + http_listen_port: 12345 + http_listen_conn_limit: 0 + grpc_listen_network: "" + grpc_listen_address: "" + grpc_listen_port: 0 + grpc_listen_conn_limit: 0 + http_tls_config: + cert_file: "" + key_file: "" + client_auth_type: "" + client_ca_file: "" + cipher_suites: [] + curve_preferences: [] + min_version: 0 + max_version: 0 + prefer_server_cipher_suites: false + grpc_tls_config: + cert_file: "" + key_file: "" + client_auth_type: "" + client_ca_file: "" + cipher_suites: [] + curve_preferences: [] + min_version: 0 + max_version: 0 + prefer_server_cipher_suites: false + register_instrumentation: false + graceful_shutdown_timeout: 0s + http_server_read_timeout: 0s + http_server_write_timeout: 0s + http_server_idle_timeout: 0s + grpc_server_max_recv_msg_size: 0 + grpc_server_max_send_msg_size: 0 + grpc_server_max_concurrent_streams: 0 + grpc_server_max_connection_idle: 0s + grpc_server_max_connection_age: 0s + grpc_server_max_connection_age_grace: 0s + grpc_server_keepalive_time: 0s + grpc_server_keepalive_timeout: 0s + grpc_server_min_time_between_pings: 0s + grpc_server_ping_without_stream_allowed: false + log_format: "" + log_level: info + log_source_ips_enabled: false + log_source_ips_header: "" + log_source_ips_regex: "" + http_path_prefix: "" +metrics: + global: + scrape_interval: 1m + scrape_timeout: 20s + evaluation_interval: 1m + wal_directory: /tmp/grafana-agent-wal + wal_cleanup_age: 12h0m0s + wal_cleanup_period: 30m0s + scraping_service: + enabled: false + reshard_interval: 1m0s + reshard_timeout: 30s + cluster_reshard_event_timeout: 30s + kvstore: + store: consul + prefix: configurations/ + consul: + host: localhost:8500 + acl_token: + http_client_timeout: 20s + consistent_reads: false + watch_rate_limit: 1 + watch_burst_size: 1 + etcd: + endpoints: [] + dial_timeout: 10s + max_retries: 10 + tls_enabled: false + tls_cert_path: "" + tls_key_path: "" + tls_ca_path: "" + tls_server_name: "" + tls_insecure_skip_verify: false + username: "" + password: + multi: + primary: "" + secondary: "" + mirror_enabled: false + mirror_timeout: 2s + lifecycler: + ring: + kvstore: + store: consul + prefix: collectors/ + consul: + host: localhost:8500 + acl_token: + http_client_timeout: 20s + consistent_reads: false + watch_rate_limit: 1 + watch_burst_size: 1 + etcd: + endpoints: [] + dial_timeout: 10s + max_retries: 10 + tls_enabled: false + tls_cert_path: "" + tls_key_path: "" + tls_ca_path: "" + tls_server_name: "" + tls_insecure_skip_verify: false + username: "" + password: + multi: + primary: "" + secondary: "" + mirror_enabled: false + mirror_timeout: 2s + heartbeat_timeout: 1m0s + replication_factor: 3 + zone_awareness_enabled: false + num_tokens: 128 + heartbeat_period: 5s + observe_period: 0s + join_after: 0s + min_ready_duration: 1m0s + interface_names: + - eth0 + - en0 + final_sleep: 30s + tokens_file_path: "" + availability_zone: "" + unregister_on_shutdown: true + address: "" + port: 0 + id: 920e9b32116a + dangerous_allow_reading_files: false + scraping_service_client: + grpc_client_config: + max_recv_msg_size: 104857600 + max_send_msg_size: 16777216 + grpc_compression: "" + rate_limit: 0 + rate_limit_burst: 0 + backoff_on_ratelimits: false + backoff_config: + min_period: 100ms + max_period: 10s + max_retries: 10 + tls_enabled: false + tls_cert_path: "" + tls_key_path: "" + tls_ca_path: "" + tls_server_name: "" + tls_insecure_skip_verify: false + configs: + - name: default + wal_truncate_frequency: 1h0m0s + min_wal_time: 5m0s + max_wal_time: 4h0m0s + remote_flush_deadline: 1m0s + - name: instance1 + scrape_configs: + - job_name: instance1_job + honor_timestamps: true + scrape_interval: 1m + scrape_timeout: 20s + metrics_path: /metrics + scheme: http + follow_redirects: true + static_configs: + - targets: + - localhost:4000 + wal_truncate_frequency: 1h0m0s + min_wal_time: 5m0s + max_wal_time: 4h0m0s + remote_flush_deadline: 1m0s + - name: instance2 + scrape_configs: + - job_name: instance2_job + honor_timestamps: true + scrape_interval: 1m + scrape_timeout: 20s + metrics_path: /metrics + scheme: http + follow_redirects: true + static_configs: + - targets: + - localhost:5555 + wal_truncate_frequency: 1h0m0s + min_wal_time: 5m0s + max_wal_time: 4h0m0s + remote_flush_deadline: 1m0s + instance_restart_backoff: 5s + instance_mode: shared +integrations: + metrics: + autoscrape: + enable: true + metrics_instance: default + scrape_interval: 1m + scrape_timeout: 20s + node_exporter: + procfs_path: /proc + sysfs_path: /sys + rootfs_path: / + diskstats_ignored_devices: ^(ram|loop|fd|(h|s|v|xv)d[a-z]|nvme\d+n\d+p)\d+$ + ethtool_metrics_include: .* + filesystem_fs_types_exclude: ^(autofs|binfmt_misc|bpf|cgroup2?|configfs|debugfs|devpts|devtmpfs|fusectl|hugetlbfs|iso9660|mqueue|nsfs|overlay|proc|procfs|pstore|rpc_pipefs|securityfs|selinuxfs|squashfs|sysfs|tracefs)$ + filesystem_mount_points_exclude: ^/(dev|proc|run/credentials/.+|sys|var/lib/docker/.+)($|/) + filesystem_mount_timeout: 5s + ntp_ip_ttl: 1 + ntp_local_offset_tolerance: 1ms + ntp_max_distance: 3.46608s + ntp_protocol_version: 4 + ntp_server: 127.0.0.1 + netclass_ignored_devices: ^$ + netstat_fields: ^(.*_(InErrors|InErrs)|Ip_Forwarding|Ip(6|Ext)_(InOctets|OutOctets)|Icmp6?_(InMsgs|OutMsgs)|TcpExt_(Listen.*|Syncookies.*|TCPSynRetrans|TCPTimeouts)|Tcp_(ActiveOpens|InSegs|OutSegs|OutRsts|PassiveOpens|RetransSegs|CurrEstab)|Udp6?_(InDatagrams|OutDatagrams|NoPorts|RcvbufErrors|SndbufErrors))$ + powersupply_ignored_supplies: ^$ + runit_service_dir: /etc/service + supervisord_url: http://localhost:9001/RPC2 + systemd_unit_exclude: .+\.(automount|device|mount|scope|slice) + systemd_unit_include: .+ + tapestats_ignored_devices: ^$ + vmstat_fields: ^(oom_kill|pgpg|pswp|pg.*fault).* + redis_exporter_configs: + - autoscrape: + metric_relabel_configs: + - source_labels: + - __address__ + separator: ; + regex: (.*) + target_label: banana + replacement: apple + action: replace + include_exporter_metrics: false + redis_addr: localhost:6379 + namespace: redis + config_command: CONFIG + check_key_groups_batch_size: 10000 + max_distinct_key_groups: 100 + connection_timeout: 15s + set_client_name: true + - include_exporter_metrics: false + redis_addr: localhost:6380 + namespace: redis + config_command: CONFIG + check_key_groups_batch_size: 10000 + max_distinct_key_groups: 100 + connection_timeout: 15s + set_client_name: true + diff --git a/docs/cookbook/dynamic-configuration/01_Basics/03_assets/integrations-node.yml b/docs/cookbook/dynamic-configuration/01_Basics/03_assets/integrations-node.yml new file mode 100644 index 000000000000..61f9cb2c8e4c --- /dev/null +++ b/docs/cookbook/dynamic-configuration/01_Basics/03_assets/integrations-node.yml @@ -0,0 +1 @@ +node_exporter: {} \ No newline at end of file diff --git a/docs/cookbook/dynamic-configuration/01_Basics/03_assets/integrations-redis.yml b/docs/cookbook/dynamic-configuration/01_Basics/03_assets/integrations-redis.yml new file mode 100644 index 000000000000..e3022ec607dd --- /dev/null +++ b/docs/cookbook/dynamic-configuration/01_Basics/03_assets/integrations-redis.yml @@ -0,0 +1,8 @@ +redis_exporter_configs: + - redis_addr: localhost:6379 + autoscrape: + metric_relabel_configs: + - source_labels: [__address__] + target_label: "banana" + replacement: "apple" + - redis_addr: localhost:6380 \ No newline at end of file diff --git a/docs/cookbook/dynamic-configuration/01_Basics/03_assets/metrics-1.yml b/docs/cookbook/dynamic-configuration/01_Basics/03_assets/metrics-1.yml new file mode 100644 index 000000000000..630e75672beb --- /dev/null +++ b/docs/cookbook/dynamic-configuration/01_Basics/03_assets/metrics-1.yml @@ -0,0 +1,6 @@ +configs: +- name: default +global: + scrape_interval: 60s + scrape_timeout: 20s +wal_directory: /tmp/grafana-agent-wal \ No newline at end of file diff --git a/docs/cookbook/dynamic-configuration/01_Basics/03_assets/metrics_instances-1.yml b/docs/cookbook/dynamic-configuration/01_Basics/03_assets/metrics_instances-1.yml new file mode 100644 index 000000000000..4b93d728201a --- /dev/null +++ b/docs/cookbook/dynamic-configuration/01_Basics/03_assets/metrics_instances-1.yml @@ -0,0 +1,6 @@ +name: instance1 +scrape_configs: + - job_name: instance1_job + static_configs: + - targets: + - localhost:4000 \ No newline at end of file diff --git a/docs/cookbook/dynamic-configuration/01_Basics/03_assets/metrics_instances-2.yml b/docs/cookbook/dynamic-configuration/01_Basics/03_assets/metrics_instances-2.yml new file mode 100644 index 000000000000..12a82ab97e9a --- /dev/null +++ b/docs/cookbook/dynamic-configuration/01_Basics/03_assets/metrics_instances-2.yml @@ -0,0 +1,6 @@ +name: instance2 +scrape_configs: + - job_name: instance2_job + static_configs: + - targets: + - localhost:5555 \ No newline at end of file diff --git a/docs/cookbook/dynamic-configuration/01_Basics/03_assets/server-1.yml b/docs/cookbook/dynamic-configuration/01_Basics/03_assets/server-1.yml new file mode 100644 index 000000000000..9bf1c55694a8 --- /dev/null +++ b/docs/cookbook/dynamic-configuration/01_Basics/03_assets/server-1.yml @@ -0,0 +1,2 @@ +http_listen_port: 12345 +log_level: info \ No newline at end of file diff --git a/docs/cookbook/dynamic-configuration/01_Basics/03_config.yml b/docs/cookbook/dynamic-configuration/01_Basics/03_config.yml new file mode 100644 index 000000000000..93e04557d703 --- /dev/null +++ b/docs/cookbook/dynamic-configuration/01_Basics/03_config.yml @@ -0,0 +1,2 @@ +template_paths: + - "file:///etc/grafana/03_assets" \ No newline at end of file diff --git a/docs/cookbook/dynamic-configuration/01_Basics/04_Logs_and_Traces.md b/docs/cookbook/dynamic-configuration/01_Basics/04_Logs_and_Traces.md new file mode 100644 index 000000000000..5d3c2c52a718 --- /dev/null +++ b/docs/cookbook/dynamic-configuration/01_Basics/04_Logs_and_Traces.md @@ -0,0 +1,46 @@ +# 04 Logs and Traces + +Logs and Traces can also be templated. This is built ontop of the previous examples. + +`docker run -v ${PWD}/:/etc/grafana grafana/agentctl:latest template-parse /etc/grafana/04_config.yml` + +## Dynamic Configuration + +[config.yml](./04_config.yml) + +Tells the Grafana Agent where to load files from. + +## Logs + +Logs are loaded from a template matching `logs-*.yml`. There can ONLY be 1 template loaded + +[logs-1.yml](./04_assets/logs-1.yml) + +```yaml +configs: + - name: test_logs + positions: + filename: /tmp/positions.yaml + scrape_configs: + - job_name: test + pipeline_stages: + - regex: + source: filename + expression: '\\temp\\Logs\\(?P.+?)\\' +``` + +[traces.yml](./04_assets/traces-1.yml) + +```yaml +configs: + - name: test_traces + automatic_logging: + backend: stdout + loki_name: default + spans: true +``` + +## Final + +[final.yml](./04_assets/final.yml) + diff --git a/docs/cookbook/dynamic-configuration/01_Basics/04_assets/agent-1.yml b/docs/cookbook/dynamic-configuration/01_Basics/04_assets/agent-1.yml new file mode 100644 index 000000000000..9ccde139a590 --- /dev/null +++ b/docs/cookbook/dynamic-configuration/01_Basics/04_assets/agent-1.yml @@ -0,0 +1,17 @@ +server: + http_listen_port: 12345 + log_level: debug +metrics: + wal_directory: /tmp/grafana-agent-normal + global: + scrape_interval: 60s + remote_write: + - url: https://prometheus-us-central1.grafana.net/api/prom/push + basic_auth: + username: 12345 + password: secretpassword +integrations: + node_exporter: + enabled: true + agent: + enabled: true \ No newline at end of file diff --git a/docs/cookbook/dynamic-configuration/01_Basics/04_assets/final.yml b/docs/cookbook/dynamic-configuration/01_Basics/04_assets/final.yml new file mode 100644 index 000000000000..95a6f4575228 --- /dev/null +++ b/docs/cookbook/dynamic-configuration/01_Basics/04_assets/final.yml @@ -0,0 +1,278 @@ +server: + http_listen_network: "" + http_listen_address: "" + http_listen_port: 12345 + http_listen_conn_limit: 0 + grpc_listen_network: "" + grpc_listen_address: "" + grpc_listen_port: 0 + grpc_listen_conn_limit: 0 + http_tls_config: + cert_file: "" + key_file: "" + client_auth_type: "" + client_ca_file: "" + cipher_suites: [] + curve_preferences: [] + min_version: 0 + max_version: 0 + prefer_server_cipher_suites: false + grpc_tls_config: + cert_file: "" + key_file: "" + client_auth_type: "" + client_ca_file: "" + cipher_suites: [] + curve_preferences: [] + min_version: 0 + max_version: 0 + prefer_server_cipher_suites: false + register_instrumentation: false + graceful_shutdown_timeout: 0s + http_server_read_timeout: 0s + http_server_write_timeout: 0s + http_server_idle_timeout: 0s + grpc_server_max_recv_msg_size: 0 + grpc_server_max_send_msg_size: 0 + grpc_server_max_concurrent_streams: 0 + grpc_server_max_connection_idle: 0s + grpc_server_max_connection_age: 0s + grpc_server_max_connection_age_grace: 0s + grpc_server_keepalive_time: 0s + grpc_server_keepalive_timeout: 0s + grpc_server_min_time_between_pings: 0s + grpc_server_ping_without_stream_allowed: false + log_format: "" + log_level: info + log_source_ips_enabled: false + log_source_ips_header: "" + log_source_ips_regex: "" + http_path_prefix: "" +metrics: + global: + scrape_interval: 1m + scrape_timeout: 20s + evaluation_interval: 1m + wal_directory: /tmp/grafana-agent-wal + wal_cleanup_age: 12h0m0s + wal_cleanup_period: 30m0s + scraping_service: + enabled: false + reshard_interval: 1m0s + reshard_timeout: 30s + cluster_reshard_event_timeout: 30s + kvstore: + store: consul + prefix: configurations/ + consul: + host: localhost:8500 + acl_token: + http_client_timeout: 20s + consistent_reads: false + watch_rate_limit: 1 + watch_burst_size: 1 + etcd: + endpoints: [] + dial_timeout: 10s + max_retries: 10 + tls_enabled: false + tls_cert_path: "" + tls_key_path: "" + tls_ca_path: "" + tls_server_name: "" + tls_insecure_skip_verify: false + username: "" + password: + multi: + primary: "" + secondary: "" + mirror_enabled: false + mirror_timeout: 2s + lifecycler: + ring: + kvstore: + store: consul + prefix: collectors/ + consul: + host: localhost:8500 + acl_token: + http_client_timeout: 20s + consistent_reads: false + watch_rate_limit: 1 + watch_burst_size: 1 + etcd: + endpoints: [] + dial_timeout: 10s + max_retries: 10 + tls_enabled: false + tls_cert_path: "" + tls_key_path: "" + tls_ca_path: "" + tls_server_name: "" + tls_insecure_skip_verify: false + username: "" + password: + multi: + primary: "" + secondary: "" + mirror_enabled: false + mirror_timeout: 2s + heartbeat_timeout: 1m0s + replication_factor: 3 + zone_awareness_enabled: false + num_tokens: 128 + heartbeat_period: 5s + observe_period: 0s + join_after: 0s + min_ready_duration: 1m0s + interface_names: + - eth0 + - en0 + final_sleep: 30s + tokens_file_path: "" + availability_zone: "" + unregister_on_shutdown: true + address: "" + port: 0 + id: 2555e70c377f + dangerous_allow_reading_files: false + scraping_service_client: + grpc_client_config: + max_recv_msg_size: 104857600 + max_send_msg_size: 16777216 + grpc_compression: "" + rate_limit: 0 + rate_limit_burst: 0 + backoff_on_ratelimits: false + backoff_config: + min_period: 100ms + max_period: 10s + max_retries: 10 + tls_enabled: false + tls_cert_path: "" + tls_key_path: "" + tls_ca_path: "" + tls_server_name: "" + tls_insecure_skip_verify: false + configs: + - name: default + wal_truncate_frequency: 1h0m0s + min_wal_time: 5m0s + max_wal_time: 4h0m0s + remote_flush_deadline: 1m0s + - name: instance1 + scrape_configs: + - job_name: instance1_job + honor_timestamps: true + scrape_interval: 1m + scrape_timeout: 20s + metrics_path: /metrics + scheme: http + follow_redirects: true + static_configs: + - targets: + - localhost:4000 + wal_truncate_frequency: 1h0m0s + min_wal_time: 5m0s + max_wal_time: 4h0m0s + remote_flush_deadline: 1m0s + - name: instance2 + scrape_configs: + - job_name: instance2_job + honor_timestamps: true + scrape_interval: 1m + scrape_timeout: 20s + metrics_path: /metrics + scheme: http + follow_redirects: true + static_configs: + - targets: + - localhost:5555 + wal_truncate_frequency: 1h0m0s + min_wal_time: 5m0s + max_wal_time: 4h0m0s + remote_flush_deadline: 1m0s + instance_restart_backoff: 5s + instance_mode: shared +integrations: + metrics: + autoscrape: + enable: true + metrics_instance: default + scrape_interval: 1m + scrape_timeout: 20s + redis_exporter_configs: + - autoscrape: + metric_relabel_configs: + - source_labels: + - __address__ + separator: ; + regex: (.*) + target_label: banana + replacement: apple + action: replace + include_exporter_metrics: false + redis_addr: localhost:6379 + namespace: redis + config_command: CONFIG + check_key_groups_batch_size: 10000 + max_distinct_key_groups: 100 + connection_timeout: 15s + set_client_name: true + - include_exporter_metrics: false + redis_addr: localhost:6380 + namespace: redis + config_command: CONFIG + check_key_groups_batch_size: 10000 + max_distinct_key_groups: 100 + connection_timeout: 15s + set_client_name: true + node_exporter: + procfs_path: /proc + sysfs_path: /sys + rootfs_path: / + diskstats_ignored_devices: ^(ram|loop|fd|(h|s|v|xv)d[a-z]|nvme\d+n\d+p)\d+$ + ethtool_metrics_include: .* + filesystem_fs_types_exclude: ^(autofs|binfmt_misc|bpf|cgroup2?|configfs|debugfs|devpts|devtmpfs|fusectl|hugetlbfs|iso9660|mqueue|nsfs|overlay|proc|procfs|pstore|rpc_pipefs|securityfs|selinuxfs|squashfs|sysfs|tracefs)$ + filesystem_mount_points_exclude: ^/(dev|proc|run/credentials/.+|sys|var/lib/docker/.+)($|/) + filesystem_mount_timeout: 5s + ntp_ip_ttl: 1 + ntp_local_offset_tolerance: 1ms + ntp_max_distance: 3.46608s + ntp_protocol_version: 4 + ntp_server: 127.0.0.1 + netclass_ignored_devices: ^$ + netstat_fields: ^(.*_(InErrors|InErrs)|Ip_Forwarding|Ip(6|Ext)_(InOctets|OutOctets)|Icmp6?_(InMsgs|OutMsgs)|TcpExt_(Listen.*|Syncookies.*|TCPSynRetrans|TCPTimeouts)|Tcp_(ActiveOpens|InSegs|OutSegs|OutRsts|PassiveOpens|RetransSegs|CurrEstab)|Udp6?_(InDatagrams|OutDatagrams|NoPorts|RcvbufErrors|SndbufErrors))$ + powersupply_ignored_supplies: ^$ + runit_servic e_dir: /etc/service + supervisord_url: http://localhost:9001/RPC2 + systemd_unit_exclude: .+\.(automount|device|mount|scope|slice) + systemd_unit_include: .+ + tapestats_ignored_devices: ^$ + vmstat_fields: ^(oom_kill|pgpg|pswp|pg.*fault).* +traces: + configs: + - name: test_traces + automatic_logging: + backend: stdout + logs_instance_name: default + spans: true + load_balancing: null +logs: + configs: + - name: test_logs + positions: + sync_period: 10s + filename: /tmp/positions.yaml + ignore_invalid_yaml: false + scrape_configs: + - job_name: test + pipeline_stages: + - expression: \\temp\\Logs\\(?P.+?)\\ + regex: null + source: filename + static_configs: [] + target_config: + sync_period: 10s + stdin: false + diff --git a/docs/cookbook/dynamic-configuration/01_Basics/04_assets/integrations-node.yml b/docs/cookbook/dynamic-configuration/01_Basics/04_assets/integrations-node.yml new file mode 100644 index 000000000000..61f9cb2c8e4c --- /dev/null +++ b/docs/cookbook/dynamic-configuration/01_Basics/04_assets/integrations-node.yml @@ -0,0 +1 @@ +node_exporter: {} \ No newline at end of file diff --git a/docs/cookbook/dynamic-configuration/01_Basics/04_assets/integrations-redis.yml b/docs/cookbook/dynamic-configuration/01_Basics/04_assets/integrations-redis.yml new file mode 100644 index 000000000000..e3022ec607dd --- /dev/null +++ b/docs/cookbook/dynamic-configuration/01_Basics/04_assets/integrations-redis.yml @@ -0,0 +1,8 @@ +redis_exporter_configs: + - redis_addr: localhost:6379 + autoscrape: + metric_relabel_configs: + - source_labels: [__address__] + target_label: "banana" + replacement: "apple" + - redis_addr: localhost:6380 \ No newline at end of file diff --git a/docs/cookbook/dynamic-configuration/01_Basics/04_assets/logs-1.yml b/docs/cookbook/dynamic-configuration/01_Basics/04_assets/logs-1.yml new file mode 100644 index 000000000000..508fc09b9872 --- /dev/null +++ b/docs/cookbook/dynamic-configuration/01_Basics/04_assets/logs-1.yml @@ -0,0 +1,10 @@ +configs: + - name: test_logs + positions: + filename: /tmp/positions.yaml + scrape_configs: + - job_name: test + pipeline_stages: + - regex: + source: filename + expression: '\\temp\\Logs\\(?P.+?)\\' \ No newline at end of file diff --git a/docs/cookbook/dynamic-configuration/01_Basics/04_assets/metrics-1.yml b/docs/cookbook/dynamic-configuration/01_Basics/04_assets/metrics-1.yml new file mode 100644 index 000000000000..630e75672beb --- /dev/null +++ b/docs/cookbook/dynamic-configuration/01_Basics/04_assets/metrics-1.yml @@ -0,0 +1,6 @@ +configs: +- name: default +global: + scrape_interval: 60s + scrape_timeout: 20s +wal_directory: /tmp/grafana-agent-wal \ No newline at end of file diff --git a/docs/cookbook/dynamic-configuration/01_Basics/04_assets/metrics_instances-1.yml b/docs/cookbook/dynamic-configuration/01_Basics/04_assets/metrics_instances-1.yml new file mode 100644 index 000000000000..4b93d728201a --- /dev/null +++ b/docs/cookbook/dynamic-configuration/01_Basics/04_assets/metrics_instances-1.yml @@ -0,0 +1,6 @@ +name: instance1 +scrape_configs: + - job_name: instance1_job + static_configs: + - targets: + - localhost:4000 \ No newline at end of file diff --git a/docs/cookbook/dynamic-configuration/01_Basics/04_assets/metrics_instances-2.yml b/docs/cookbook/dynamic-configuration/01_Basics/04_assets/metrics_instances-2.yml new file mode 100644 index 000000000000..12a82ab97e9a --- /dev/null +++ b/docs/cookbook/dynamic-configuration/01_Basics/04_assets/metrics_instances-2.yml @@ -0,0 +1,6 @@ +name: instance2 +scrape_configs: + - job_name: instance2_job + static_configs: + - targets: + - localhost:5555 \ No newline at end of file diff --git a/docs/cookbook/dynamic-configuration/01_Basics/04_assets/server-1.yml b/docs/cookbook/dynamic-configuration/01_Basics/04_assets/server-1.yml new file mode 100644 index 000000000000..9bf1c55694a8 --- /dev/null +++ b/docs/cookbook/dynamic-configuration/01_Basics/04_assets/server-1.yml @@ -0,0 +1,2 @@ +http_listen_port: 12345 +log_level: info \ No newline at end of file diff --git a/docs/cookbook/dynamic-configuration/01_Basics/04_assets/traces-1.yml b/docs/cookbook/dynamic-configuration/01_Basics/04_assets/traces-1.yml new file mode 100644 index 000000000000..5696c9530ced --- /dev/null +++ b/docs/cookbook/dynamic-configuration/01_Basics/04_assets/traces-1.yml @@ -0,0 +1,6 @@ +configs: + - name: test_traces + automatic_logging: + backend: stdout + loki_name: default + spans: true \ No newline at end of file diff --git a/docs/cookbook/dynamic-configuration/01_Basics/04_config.yml b/docs/cookbook/dynamic-configuration/01_Basics/04_config.yml new file mode 100644 index 000000000000..cffdcacc05e5 --- /dev/null +++ b/docs/cookbook/dynamic-configuration/01_Basics/04_config.yml @@ -0,0 +1,2 @@ +template_paths: + - "file:///etc/grafana/04_assets" \ No newline at end of file diff --git a/docs/cookbook/dynamic-configuration/02_Templates/01_Looping.md b/docs/cookbook/dynamic-configuration/02_Templates/01_Looping.md new file mode 100644 index 000000000000..47f07ebb228c --- /dev/null +++ b/docs/cookbook/dynamic-configuration/02_Templates/01_Looping.md @@ -0,0 +1,42 @@ +# 01 Basics of Templating + +The templating is based on the excellent [gomplate](https://docs.gomplate.ca/) library. Currently using a custom fork to allow loading gomplate as a library in addition to some new commands. This will NOT try to cover the full range of gomplate, would recommend reading the documentation for full knowledge. + +`docker run -v ${PWD}/:/etc/grafana grafana/agentctl:latest template-parse /etc/grafana/01_config.yml` + +## Looping + +[agent-1.yml](./01_assets/agent-1.yml) + +```yaml +server: + http_listen_port: 12345 + log_level: debug +metrics: + wal_directory: /tmp/grafana-agent-normal + global: + scrape_interval: 60s + remote_write: + - url: https://prometheus-us-central1.grafana.net/api/prom/push + basic_auth: + username: 12345 + password: secretpassword + configs: + - name: default + {{ range slice "apple" "banana" "pear" }} + - name: {{ . }} + {{ end }} +``` + +The templating engine uses directives that are wrapped in `{{ command }}`, in the above the dynamic configuration engine will loop over the three values, and those values can be accessed by `{{ . }}` which means current value. + +## Final + +[final.yml](./01_assets/final.yml) + +The final.yml contains 4 prometheus configs + +- default +- apple +- banana +- pear \ No newline at end of file diff --git a/docs/cookbook/dynamic-configuration/02_Templates/01_assets/agent-1.yml b/docs/cookbook/dynamic-configuration/02_Templates/01_assets/agent-1.yml new file mode 100644 index 000000000000..f7b060112cf5 --- /dev/null +++ b/docs/cookbook/dynamic-configuration/02_Templates/01_assets/agent-1.yml @@ -0,0 +1,17 @@ +server: + http_listen_port: 12345 + log_level: debug +metrics: + wal_directory: /tmp/grafana-agent-normal + global: + scrape_interval: 60s + remote_write: + - url: https://prometheus-us-central1.grafana.net/api/prom/push + basic_auth: + username: 12345 + password: secretpassword + configs: + - name: default + {{ range slice "apple" "banana" "pear" }} + - name: {{ . }} + {{ end }} \ No newline at end of file diff --git a/docs/cookbook/dynamic-configuration/02_Templates/01_assets/final.yml b/docs/cookbook/dynamic-configuration/02_Templates/01_assets/final.yml new file mode 100644 index 000000000000..0dcd0a9597aa --- /dev/null +++ b/docs/cookbook/dynamic-configuration/02_Templates/01_assets/final.yml @@ -0,0 +1,285 @@ +server: + http_listen_network: tcp + http_listen_address: "" + http_listen_port: 12345 + http_listen_conn_limit: 0 + grpc_listen_network: tcp + grpc_listen_address: "" + grpc_listen_port: 9095 + grpc_listen_conn_limit: 0 + http_tls_config: + cert_file: "" + key_file: "" + client_auth_type: "" + client_ca_file: "" + cipher_suites: [] + curve_preferences: [] + min_version: 0 + max_version: 0 + prefer_server_cipher_suites: false + grpc_tls_config: + cert_file: "" + key_file: "" + client_auth_type: "" + client_ca_file: "" + cipher_suites: [] + curve_preferences: [] + min_version: 0 + max_version: 0 + prefer_server_cipher_suites: false + register_instrumentation: true + graceful_shutdown_timeout: 30s + http_server_read_timeout: 30s + http_server_write_timeout: 30s + http_server_idle_timeout: 2m0s + grpc_server_max_recv_msg_size: 4194304 + grpc_server_max_send_msg_size: 4194304 + grpc_server_max_concurrent_streams: 100 + grpc_server_max_connection_idle: 2562047h47m16.854775807s + grpc_server_max_connection_age: 2562047h47m16.854775807s + grpc_server_max_connection_age_grace: 2562047h47m16.854775807s + grpc_server_keepalive_time: 2h0m0s + grpc_server_keepalive_timeout: 20s + grpc_server_min_time_between_pings: 5m0s + grpc_server_ping_without_stream_allowed: false + log_format: logfmt + log_level: debug + log_source_ips_enabled: false + log_source_ips_header: "" + log_source_ips_regex: "" + http_path_prefix: "" +metrics: + global: + scrape_interval: 1m + scrape_timeout: 10s + evaluation_interval: 1m + remote_write: + - url: https://prometheus-us-central1.grafana.net/api/prom/push + remote_timeout: 30s + name: default-a098e3 + basic_auth: + username: "12345" + password: + follow_redirects: true + queue_config: + capacity: 2500 + max_shards: 200 + min_shards: 1 + max_samples_per_send: 500 + batch_send_deadline: 5s + min_backoff: 30ms + max_backoff: 100ms + metadata_config: + send: true + send_interval: 1m + max_samples_per_send: 500 + wal_directory: /tmp/grafana-agent-normal + wal_cleanup_age: 12h0m0s + wal_cleanup_period: 30m0s + scraping_service: + enabled: false + reshard_interval: 1m0s + reshard_timeout: 30s + cluster_reshard_event_timeout: 30s + kvstore: + store: consul + prefix: configurations/ + consul: + host: localhost:8500 + acl_token: + http_client_timeout: 20s + consistent_reads: false + watch_rate_limit: 1 + watch_burst_size: 1 + etcd: + endpoints: [] + dial_timeout: 10s + max_retries: 10 + tls_enabled: false + tls_cert_path: "" + tls_key_path: "" + tls_ca_path: "" + tls_server_name: "" + tls_insecure_skip_verify: false + username: "" + password: + multi: + primary: "" + secondary: "" + mirror_enabled: false + mirror_timeout: 2s + lifecycler: + ring: + kvstore: + store: consul + prefix: collectors/ + consul: + host: localhost:8500 + acl_token: + http_client_timeout: 20s + consistent_reads: false + watch_rate_limit: 1 + watch_burst_size: 1 + etcd: + endpoints: [] + dial_timeout: 10s + max_retries: 10 + tls_enabled: false + tls_cert_path: "" + tls_key_path: "" + tls_ca_path: "" + tls_server_name: "" + tls_insecure_skip_verify: false + username: "" + password: + multi: + primary: "" + secondary: "" + mirror_enabled: false + mirror_timeout: 2s + heartbeat_timeout: 1m0s + replication_factor: 3 + zone_awareness_enabled: false + num_tokens: 128 + heartbeat_period: 5s + observe_period: 0s + join_after: 0s + min_ready_duration: 1m0s + interface_names: + - eth0 + - en0 + final_sleep: 30s + tokens_file_path: "" + availability_zone: "" + unregister_on_shutdown: true + address: "" + port: 0 + id: 4d5f79f1dd4d + dangerous_allow_reading_files: false + scraping_service_client: + grpc_client_config: + max_recv_msg_size: 104857600 + max_send_msg_size: 16777216 + grpc_compression: "" + rate_limit: 0 + rate_limit_burst: 0 + backoff_on_ratelimits: false + backoff_config: + min_period: 100ms + max_period: 10s + max_retries: 10 + tls_enabled: false + tls_cert_path: "" + tls_key_path: "" + tls_ca_path: "" + tls_server_name: "" + tls_insecure_skip_verify: false + configs: + - name: default + remote_write: + - url: https://prometheus-us-central1.grafana.net/api/prom/push + remote_timeout: 30s + name: default-a098e3 + basic_auth: + username: "12345" + password: + follow_redirects: true + queue_config: + capacity: 2500 + max_shards: 200 + min_shards: 1 + max_samples_per_send: 500 + batch_send_deadline: 5s + min_backoff: 30ms + max_backoff: 100ms + metadata_config: + send: true + send_interval: 1m + max_samples_per_send: 500 + wal_truncate_frequency: 1h0m0s + min_wal_time: 5m0s + max_wal_time: 4h0m0s + remote_flush_deadline: 1m0s + - name: apple + remote_write: + - url: https://prometheus-us-central1.grafana.net/api/prom/push + remote_timeout: 30s + name: default-a098e3 + basic_auth: + username: "12345" + password: + follow_redirects: true + queue_config: + capacity: 2500 + max_shards: 200 + min_shards: 1 + max_samples_per_send: 500 + batch_send_deadline: 5s + min_backoff: 30ms + max_backoff: 100ms + metadata_config: + send: true + send_interval: 1m + max_samples_per_send: 500 + wal_truncate_frequency: 1h0m0s + min_wal_time: 5m0s + max_wal_time: 4h0m0s + remote_flush_deadline: 1m0s + - name: banana + remote_write: + - url: https://prometheus-us-central1.grafana.net/api/prom/push + remote_timeout: 30s + name: default-a098e3 + basic_auth: + username: "12345" + password: + follow_redirects: true + queue_config: + capacity: 2500 + max_shards: 200 + min_shards: 1 + max_samples_per_send: 500 + batch_send_deadline: 5s + min_backoff: 30ms + max_backoff: 100ms + metadata_config: + send: true + send_interval: 1m + max_samples_per_send: 500 + wal_truncate_frequency: 1h0m0s + min_wal_time: 5m0s + max_wal_time: 4h0m0s + remote_flush_deadline: 1m0s + - name: pear + remote_write: + - url: https://prometheus-us-central1.grafana.net/api/prom/push + remote_timeout: 30s + name: default-a098e3 + basic_auth: + username: "12345" + password: + follow_redirects: true + queue_config: + capacity: 2500 + max_shards: 200 + min_shards: 1 + max_samples_per_send: 500 + batch_send_deadline: 5s + min_backoff: 30ms + max_backoff: 100ms + metadata_config: + send: true + send_interval: 1m + max_samples_per_send: 500 + wal_truncate_frequency: 1h0m0s + min_wal_time: 5m0s + max_wal_time: 4h0m0s + remote_flush_deadline: 1m0s + instance_restart_backoff: 5s + instance_mode: shared +integrations: + scrape_integrations: true + integration_restart_backoff: 5s + replace_instance_label: true + use_hostname_label: true + diff --git a/docs/cookbook/dynamic-configuration/02_Templates/01_config.yml b/docs/cookbook/dynamic-configuration/02_Templates/01_config.yml new file mode 100644 index 000000000000..ab67edcade05 --- /dev/null +++ b/docs/cookbook/dynamic-configuration/02_Templates/01_config.yml @@ -0,0 +1,2 @@ +template_paths: + - "file:///etc/grafana/01_assets" \ No newline at end of file diff --git a/docs/cookbook/dynamic-configuration/02_Templates/02_Datasources.md b/docs/cookbook/dynamic-configuration/02_Templates/02_Datasources.md new file mode 100644 index 000000000000..c6b3b81889e2 --- /dev/null +++ b/docs/cookbook/dynamic-configuration/02_Templates/02_Datasources.md @@ -0,0 +1,50 @@ +# 02 Datasources + +Datasources are a powerful concept in gomplate. They allow you to reach out to other files, systems and resources to pull data. + +`docker run -v ${PWD}/:/etc/grafana grafana/agentctl:latest template-parse /etc/grafana/02_config.yml` + + +## Config + +The [config.yml](./02_config.yml) adds a new field `sources`. Sources can be any number of things defined in the gomplate [datasources](https://docs.gomplate.ca/datasources/) documentation. In this example using fruit. + +```yaml +template_paths: + - "file:///etc/grafana/01_assets" +datasources: + - name: fruit + url: "file://etc/grafana/01_assets/fruit.json" +``` + +[fruit.json](./02_assets/fruit.json) + +```json +["mango","peach","orange"] +``` + +## Usage + +[agent-1.yml](./02_assets/agent-1.yml) + +```yaml +server: + http_listen_port: 12345 + log_level: debug +metrics: + wal_directory: /tmp/grafana-agent-normal + global: + scrape_interval: 60s + remote_write: + - url: https://prometheus-us-central1.grafana.net/api/prom/push + basic_auth: + username: 12345 + password: secretpassword + configs: + - name: default + {{ range (datasource "fruit") }} + - name: {{ . }} + {{ end }} +``` + +A Datasource is reference by name and in this case it is an array and used exactly like the looping example. \ No newline at end of file diff --git a/docs/cookbook/dynamic-configuration/02_Templates/02_assets/agent-1.yml b/docs/cookbook/dynamic-configuration/02_Templates/02_assets/agent-1.yml new file mode 100644 index 000000000000..fdae8e01771e --- /dev/null +++ b/docs/cookbook/dynamic-configuration/02_Templates/02_assets/agent-1.yml @@ -0,0 +1,17 @@ +server: + http_listen_port: 12345 + log_level: debug +metrics: + wal_directory: /tmp/grafana-agent-normal + global: + scrape_interval: 60s + remote_write: + - url: https://prometheus-us-central1.grafana.net/api/prom/push + basic_auth: + username: 12345 + password: secretpassword + configs: + - name: default + {{ range (datasource "fruit") }} + - name: {{ . }} + {{ end }} \ No newline at end of file diff --git a/docs/cookbook/dynamic-configuration/02_Templates/02_assets/final.yml b/docs/cookbook/dynamic-configuration/02_Templates/02_assets/final.yml new file mode 100644 index 000000000000..94dea73ceda3 --- /dev/null +++ b/docs/cookbook/dynamic-configuration/02_Templates/02_assets/final.yml @@ -0,0 +1,285 @@ +server: + http_listen_network: tcp + http_listen_address: "" + http_listen_port: 12345 + http_listen_conn_limit: 0 + grpc_listen_network: tcp + grpc_listen_address: "" + grpc_listen_port: 9095 + grpc_listen_conn_limit: 0 + http_tls_config: + cert_file: "" + key_file: "" + client_auth_type: "" + client_ca_file: "" + cipher_suites: [] + curve_preferences: [] + min_version: 0 + max_version: 0 + prefer_server_cipher_suites: false + grpc_tls_config: + cert_file: "" + key_file: "" + client_auth_type: "" + client_ca_file: "" + cipher_suites: [] + curve_preferences: [] + min_version: 0 + max_version: 0 + prefer_server_cipher_suites: false + register_instrumentation: true + graceful_shutdown_timeout: 30s + http_server_read_timeout: 30s + http_server_write_timeout: 30s + http_server_idle_timeout: 2m0s + grpc_server_max_recv_msg_size: 4194304 + grpc_server_max_send_msg_size: 4194304 + grpc_server_max_concurrent_streams: 100 + grpc_server_max_connection_idle: 2562047h47m16.854775807s + grpc_server_max_connection_age: 2562047h47m16.854775807s + grpc_server_max_connection_age_grace: 2562047h47m16.854775807s + grpc_server_keepalive_time: 2h0m0s + grpc_server_keepalive_timeout: 20s + grpc_server_min_time_between_pings: 5m0s + grpc_server_ping_without_stream_allowed: false + log_format: logfmt + log_level: debug + log_source_ips_enabled: false + log_source_ips_header: "" + log_source_ips_regex: "" + http_path_prefix: "" +metrics: + global: + scrape_interval: 1m + scrape_timeout: 10s + evaluation_interval: 1m + remote_write: + - url: https://prometheus-us-central1.grafana.net/api/prom/push + remote_timeout: 30s + name: default-a098e3 + basic_auth: + username: "12345" + password: + follow_redirects: true + queue_config: + capacity: 2500 + max_shards: 200 + min_shards: 1 + max_samples_per_send: 500 + batch_send_deadline: 5s + min_backoff: 30ms + max_backoff: 100ms + metadata_config: + send: true + send_interval: 1m + max_samples_per_send: 500 + wal_directory: /tmp/grafana-agent-normal + wal_cleanup_age: 12h0m0s + wal_cleanup_period: 30m0s + scraping_service: + enabled: false + reshard_interval: 1m0s + reshard_timeout: 30s + cluster_reshard_event_timeout: 30s + kvstore: + store: consul + prefix: configurations/ + consul: + host: localhost:8500 + acl_token: + http_client_timeout: 20s + consistent_reads: false + watch_rate_limit: 1 + watch_burst_size: 1 + etcd: + endpoints: [] + dial_timeout: 10s + max_retries: 10 + tls_enabled: false + tls_cert_path: "" + tls_key_path: "" + tls_ca_path: "" + tls_server_name: "" + tls_insecure_skip_verify: false + username: "" + password: + multi: + primary: "" + secondary: "" + mirror_enabled: false + mirror_timeout: 2s + lifecycler: + ring: + kvstore: + store: consul + prefix: collectors/ + consul: + host: localhost:8500 + acl_token: + http_client_timeout: 20s + consistent_reads: false + watch_rate_limit: 1 + watch_burst_size: 1 + etcd: + endpoints: [] + dial_timeout: 10s + max_retries: 10 + tls_enabled: false + tls_cert_path: "" + tls_key_path: "" + tls_ca_path: "" + tls_server_name: "" + tls_insecure_skip_verify: false + username: "" + password: + multi: + primary: "" + secondary: "" + mirror_enabled: false + mirror_timeout: 2s + heartbeat_timeout: 1m0s + replication_factor: 3 + zone_awareness_enabled: false + num_tokens: 128 + heartbeat_period: 5s + observe_period: 0s + join_after: 0s + min_ready_duration: 1m0s + interface_names: + - eth0 + - en0 + final_sleep: 30s + tokens_file_path: "" + availability_zone: "" + unregister_on_shutdown: true + address: "" + port: 0 + id: 7fdd8f46a28a + dangerous_allow_reading_files: false + scraping_service_client: + grpc_client_config: + max_recv_msg_size: 104857600 + max_send_msg_size: 16777216 + grpc_compression: "" + rate_limit: 0 + rate_limit_burst: 0 + backoff_on_ratelimits: false + backoff_config: + min_period: 100ms + max_period: 10s + max_retries: 10 + tls_enabled: false + tls_cert_path: "" + tls_key_path: "" + tls_ca_path: "" + tls_server_name: "" + tls_insecure_skip_verify: false + configs: + - name: default + remote_write: + - url: https://prometheus-us-central1.grafana.net/api/prom/push + remote_timeout: 30s + name: default-a098e3 + basic_auth: + username: "12345" + password: + follow_redirects: true + queue_config: + capacity: 2500 + max_shards: 200 + min_shards: 1 + max_samples_per_send: 500 + batch_send_deadline: 5s + min_backoff: 30ms + max_backoff: 100ms + metadata_config: + send: true + send_interval: 1m + max_samples_per_send: 500 + wal_truncate_frequency: 1h0m0s + min_wal_time: 5m0s + max_wal_time: 4h0m0s + remote_flush_deadline: 1m0s + - name: mango + remote_write: + - url: https://prometheus-us-central1.grafana.net/api/prom/push + remote_timeout: 30s + name: default-a098e3 + basic_auth: + username: "12345" + password: + follow_redirects: true + queue_config: + capacity: 2500 + max_shards: 200 + min_shards: 1 + max_samples_per_send: 500 + batch_send_deadline: 5s + min_backoff: 30ms + max_backoff: 100ms + metadata_config: + send: true + send_interval: 1m + max_samples_per_send: 500 + wal_truncate_frequency: 1h0m0s + min_wal_time: 5m0s + max_wal_time: 4h0m0s + remote_flush_deadline: 1m0s + - name: peach + remote_write: + - url: https://prometheus-us-central1.grafana.net/api/prom/push + remote_timeout: 30s + name: default-a098e3 + basic_auth: + username: "12345" + password: + follow_redirects: true + queue_config: + capacity: 2500 + max_shards: 200 + min_shards: 1 + max_samples_per_send: 500 + batch_send_deadline: 5s + min_backoff: 30ms + max_backoff: 100ms + metadata_config: + send: true + send_interval: 1m + max_samples_per_send: 500 + wal_truncate_frequency: 1h0m0s + min_wal_time: 5m0s + max_wal_time: 4h0m0s + remote_flush_deadline: 1m0s + - name: orange + remote_write: + - url: https://prometheus-us-central1.grafana.net/api/prom/push + remote_timeout: 30s + name: default-a098e3 + basic_auth: + username: "12345" + password: + follow_redirects: true + queue_config: + capacity: 2500 + max_shards: 200 + min_shards: 1 + max_samples_per_send: 500 + batch_send_deadline: 5s + min_backoff: 30ms + max_backoff: 100ms + metadata_config: + send: true + send_interval: 1m + max_samples_per_send: 500 + wal_truncate_frequency: 1h0m0s + min_wal_time: 5m0s + max_wal_time: 4h0m0s + remote_flush_deadline: 1m0s + instance_restart_backoff: 5s + instance_mode: shared +integrations: + scrape_integrations: true + integration_restart_backoff: 5s + replace_instance_label: true + use_hostname_label: true + diff --git a/docs/cookbook/dynamic-configuration/02_Templates/02_assets/fruit.json b/docs/cookbook/dynamic-configuration/02_Templates/02_assets/fruit.json new file mode 100644 index 000000000000..c8c10bbfcdeb --- /dev/null +++ b/docs/cookbook/dynamic-configuration/02_Templates/02_assets/fruit.json @@ -0,0 +1 @@ +["mango","peach","orange"] \ No newline at end of file diff --git a/docs/cookbook/dynamic-configuration/02_Templates/02_config.yml b/docs/cookbook/dynamic-configuration/02_Templates/02_config.yml new file mode 100644 index 000000000000..9c77d6994f1f --- /dev/null +++ b/docs/cookbook/dynamic-configuration/02_Templates/02_config.yml @@ -0,0 +1,5 @@ +template_paths: + - "file:///etc/grafana/02_assets" +sources: + - name: fruit + url: "file:///etc/grafana/02_assets/fruit.json" \ No newline at end of file diff --git a/docs/cookbook/dynamic-configuration/02_Templates/03_Datasource_and_Objects.md b/docs/cookbook/dynamic-configuration/02_Templates/03_Datasource_and_Objects.md new file mode 100644 index 000000000000..e59452eabaa5 --- /dev/null +++ b/docs/cookbook/dynamic-configuration/02_Templates/03_Datasource_and_Objects.md @@ -0,0 +1,86 @@ +# 02 Datasources + +Datasources can also access objects. + +`docker run -v ${PWD}/:/etc/grafana grafana/agentctl:latest template-parse /etc/grafana/03_config.yml` + + +## Config + +The [config.yml](./02_config.yml) adds a new field `sources`. Sources can be any number of things defined in the gomplate [datasources](https://docs.gomplate.ca/datasources/) documentation. In this example using fruit. + +```yaml +template_paths: + - "file:///etc/grafana/03_assets" +datasources: + - name: computers + url: "file:///etc/grafana/03_assets/computers.json" +``` + +[computers.json](./03_assets/computers.json) + +```json +[ + { + "name": "webhost1", + "ip" : "192.168.1.1", + "enabled": true + }, + { + "name": "webhost2", + "ip" : "192.168.1.2", + "enabled": false + + }, + { + "name": "webhost3", + "ip" : "192.168.1.3", + "enabled": true + } +] +``` + +## Usage + +[agent-1.yml](./02_assets/agent-1.yml) + +```yaml +server: + http_listen_port: 12345 + log_level: debug +metrics: + wal_directory: /tmp/grafana-agent-normal + global: + scrape_interval: 60s + remote_write: + - url: https://prometheus-us-central1.grafana.net/api/prom/push + basic_auth: + username: 12345 + password: secretpassword + configs: + - name: default + # Check for length so that if it is 0, we dont write any scrape configs + {{ if $length := len (datasource "computers") }} + {{ if gt $length 0 }} + scrape_configs: + {{ end }} + {{ end }} + {{ range (datasource "computers") }} + # Only add if the computers are enabled + # the . references our current object + {{ if eq .enabled true }} + - job_name: {{ .name }} + static_configs: + - targets: + - {{ .ip }} + {{ end }} + {{ end }} +``` + +This is a much more complex example, in the above we are doing: + +- comparisons +- creating and setting variables +- looping over objects + +The final output will only list `webhost1` and `webhost3` since `webhost2` is not enabled. \ No newline at end of file diff --git a/docs/cookbook/dynamic-configuration/02_Templates/03_assets/agent-1.yml b/docs/cookbook/dynamic-configuration/02_Templates/03_assets/agent-1.yml new file mode 100644 index 000000000000..d3f0a5beab5b --- /dev/null +++ b/docs/cookbook/dynamic-configuration/02_Templates/03_assets/agent-1.yml @@ -0,0 +1,30 @@ +server: + http_listen_port: 12345 + log_level: debug +metrics: + wal_directory: /tmp/grafana-agent-normal + global: + scrape_interval: 60s + remote_write: + - url: https://prometheus-us-central1.grafana.net/api/prom/push + basic_auth: + username: 12345 + password: secretpassword + configs: + - name: default + # Check for length so that if it is 0, we dont write any scrape configs + {{ if $length := len (datasource "computers") }} + {{ if gt $length 0 }} + scrape_configs: + {{ end }} + {{ end }} + {{ range (datasource "computers") }} + # Only add if the computers are enabled + # the . references our current object + {{ if eq .enabled true }} + - job_name: {{ .name }} + static_configs: + - targets: + - {{ .ip }} + {{ end }} + {{ end }} \ No newline at end of file diff --git a/docs/cookbook/dynamic-configuration/02_Templates/03_assets/computers.json b/docs/cookbook/dynamic-configuration/02_Templates/03_assets/computers.json new file mode 100644 index 000000000000..d1dc2c31ff6a --- /dev/null +++ b/docs/cookbook/dynamic-configuration/02_Templates/03_assets/computers.json @@ -0,0 +1,18 @@ +[ + { + "name": "webhost1", + "ip" : "192.168.1.1", + "enabled": true + }, + { + "name": "webhost2", + "ip" : "192.168.1.2", + "enabled": false + + }, + { + "name": "webhost3", + "ip" : "192.168.1.3", + "enabled": true + } +] \ No newline at end of file diff --git a/docs/cookbook/dynamic-configuration/02_Templates/03_assets/final.yml b/docs/cookbook/dynamic-configuration/02_Templates/03_assets/final.yml new file mode 100644 index 000000000000..34223781af39 --- /dev/null +++ b/docs/cookbook/dynamic-configuration/02_Templates/03_assets/final.yml @@ -0,0 +1,231 @@ +server: + http_listen_network: tcp + http_listen_address: "" + http_listen_port: 12345 + http_listen_conn_limit: 0 + grpc_listen_network: tcp + grpc_listen_address: "" + grpc_listen_port: 9095 + grpc_listen_conn_limit: 0 + http_tls_config: + cert_file: "" + key_file: "" + client_auth_type: "" + client_ca_file: "" + cipher_suites: [] + curve_preferences: [] + min_version: 0 + max_version: 0 + prefer_server_cipher_suites: false + grpc_tls_config: + cert_file: "" + key_file: "" + client_auth_type: "" + client_ca_file: "" + cipher_suites: [] + curve_preferences: [] + min_version: 0 + max_version: 0 + prefer_server_cipher_suites: false + register_instrumentation: true + graceful_shutdown_timeout: 30s + http_server_read_timeout: 30s + http_server_write_timeout: 30s + http_server_idle_timeout: 2m0s + grpc_server_max_recv_msg_size: 4194304 + grpc_server_max_send_msg_size: 4194304 + grpc_server_max_concurrent_streams: 100 + grpc_server_max_connection_idle: 2562047h47m16.854775807s + grpc_server_max_connection_age: 2562047h47m16.854775807s + grpc_server_max_connection_age_grace: 2562047h47m16.854775807s + grpc_server_keepalive_time: 2h0m0s + grpc_server_keepalive_timeout: 20s + grpc_server_min_time_between_pings: 5m0s + grpc_server_ping_without_stream_allowed: false + log_format: logfmt + log_level: debug + log_source_ips_enabled: false + log_source_ips_header: "" + log_source_ips_regex: "" + http_path_prefix: "" +metrics: + global: + scrape_interval: 1m + scrape_timeout: 10s + evaluation_interval: 1m + remote_write: + - url: https://prometheus-us-central1.grafana.net/api/prom/push + remote_timeout: 30s + name: default-a098e3 + basic_auth: + username: "12345" + password: + follow_redirects: true + queue_config: + capacity: 2500 + max_shards: 200 + min_shards: 1 + max_samples_per_send: 500 + batch_send_deadline: 5s + min_backoff: 30ms + max_backoff: 100ms + metadata_config: + send: true + send_interval: 1m + max_samples_per_send: 500 + wal_directory: /tmp/grafana-agent-normal + wal_cleanup_age: 12h0m0s + wal_cleanup_period: 30m0s + scraping_service: + enabled: false + reshard_interval: 1m0s + reshard_timeout: 30s + cluster_reshard_event_timeout: 30s + kvstore: + store: consul + prefix: configurations/ + consul: + host: localhost:8500 + acl_token: + http_client_timeout: 20s + consistent_reads: false + watch_rate_limit: 1 + watch_burst_size: 1 + etcd: + endpoints: [] + dial_timeout: 10s + max_retries: 10 + tls_enabled: false + tls_cert_path: "" + tls_key_path: "" + tls_ca_path: "" + tls_server_name: "" + tls_insecure_skip_verify: false + username: "" + password: + multi: + primary: "" + secondary: "" + mirror_enabled: false + mirror_timeout: 2s + lifecycler: + ring: + kvstore: + store: consul + prefix: collectors/ + consul: + host: localhost:8500 + acl_token: + http_client_timeout: 20s + consistent_reads: false + watch_rate_limit: 1 + watch_burst_size: 1 + etcd: + endpoints: [] + dial_timeout: 10s + max_retries: 10 + tls_enabled: false + tls_cert_path: "" + tls_key_path: "" + tls_ca_path: "" + tls_server_name: "" + tls_insecure_skip_verify: false + username: "" + password: + multi: + primary: "" + secondary: "" + mirror_enabled: false + mirror_timeout: 2s + heartbeat_timeout: 1m0s + replication_factor: 3 + zone_awareness_enabled: false + num_tokens: 128 + heartbeat_period: 5s + observe_period: 0s + join_after: 0s + min_ready_duration: 1m0s + interface_names: + - eth0 + - en0 + final_sleep: 30s + tokens_file_path: "" + availability_zone: "" + unregister_on_shutdown: true + address: "" + port: 0 + id: 7538ea8d493e + dangerous_allow_reading_files: false + scraping_service_client: + grpc_client_config: + max_recv_msg_size: 104857600 + max_send_msg_size: 16777216 + grpc_compression: "" + rate_limit: 0 + rate_limit_burst: 0 + backoff_on_ratelimits: false + backoff_config: + min_period: 100ms + max_period: 10s + max_retries: 10 + tls_enabled: false + tls_cert_path: "" + tls_key_path: "" + tls_ca_path: "" + tls_server_name: "" + tls_insecure_skip_verify: false + configs: + - name: default + scrape_configs: + - job_name: webhost1 + honor_timestamps: true + scrape_interval: 1m + scrape_timeout: 10s + metrics_path: /metrics + scheme: http + follow_redirects: true + static_configs: + - targets: + - 192.168.1.1 + - job_name: webhost3 + honor_timestamps: true + scrape_interval: 1m + scrape_timeout: 10s + metrics_path: /metrics + scheme: http + follow_redirects: true + static_configs: + - targets: + - 192.168.1.3 + remote_write: + - url: https://prometheus-us-central1.grafana.net/api/prom/push + remote_timeout: 30s + name: default-a098e3 + basic_auth: + username: "12345" + password: + follow_redirects: true + queue_config: + capacity: 2500 + max_shards: 200 + min_shards: 1 + max_samples_per_send: 500 + batch_send_deadline: 5s + min_backoff: 30ms + max_backoff: 100ms + metadata_config: + send: true + send_interval: 1m + max_samples_per_send: 500 + wal_truncate_frequency: 1h0m0s + min_wal_time: 5m0s + max_wal_time: 4h0m0s + remote_flush_deadline: 1m0s + instance_restart_backoff: 5s + instance_mode: shared +integrations: + scrape_integrations: true + integration_restart_backoff: 5s + replace_instance_label: true + use_hostname_label: true + diff --git a/docs/cookbook/dynamic-configuration/02_Templates/03_config.yml b/docs/cookbook/dynamic-configuration/02_Templates/03_config.yml new file mode 100644 index 000000000000..e261f94bae5f --- /dev/null +++ b/docs/cookbook/dynamic-configuration/02_Templates/03_config.yml @@ -0,0 +1,5 @@ +template_paths: + - "file:///etc/grafana/03_assets" +datasources: + - name: computers + url: "file:///etc/grafana/03_assets/computers.json" \ No newline at end of file diff --git a/docs/cookbook/dynamic-configuration/03_Advanced_Datasources/01_AWS.md b/docs/cookbook/dynamic-configuration/03_Advanced_Datasources/01_AWS.md new file mode 100644 index 000000000000..f68fd0115052 --- /dev/null +++ b/docs/cookbook/dynamic-configuration/03_Advanced_Datasources/01_AWS.md @@ -0,0 +1,39 @@ +# 01 AWS + +The AWS datasource assumes that you have appropriate credentials and environment variables set to access AWS resources. The custom fork of gomplate adds a new command to the existing AWS commands. + +Unfortunately there is not a specific docker command but generic examples are below. + +## Looping + +[agent-1.yml](./01_assets/agent-1.yml) + +```yaml +server: + http_listen_port: 12345 + log_level: debug +metrics: + wal_directory: /tmp/grafana-agent-normal + global: + scrape_interval: 60s + remote_write: + - url: https://prometheus-us-central1.grafana.net/api/prom/push + basic_auth: + username: 12345 + password: secretpassword + configs: + - name: default + scrape_configs: + {{ range $index , $value := aws.EC2Query "tag:service=webhost" -}} + - job_name: {{ $value.InstanceId }} + static_configs: + - targets: + - {{ $value.PrivateDnsName }} + {{ end -}} +``` + +The `aws.EC2Query` command is a new command added for Grafana Agent and takes a string in the [DescribeInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstances.html) format + +## Final + +[final.yml](./01_assets/final.yml) diff --git a/docs/cookbook/dynamic-configuration/03_Advanced_Datasources/01_assets/agent-1.yml b/docs/cookbook/dynamic-configuration/03_Advanced_Datasources/01_assets/agent-1.yml new file mode 100644 index 000000000000..aeeb9b165e14 --- /dev/null +++ b/docs/cookbook/dynamic-configuration/03_Advanced_Datasources/01_assets/agent-1.yml @@ -0,0 +1,21 @@ +server: + http_listen_port: 12345 + log_level: debug +metrics: + wal_directory: /tmp/grafana-agent-normal + global: + scrape_interval: 60s + remote_write: + - url: https://prometheus-us-central1.grafana.net/api/prom/push + basic_auth: + username: 12345 + password: secretpassword + configs: + - name: default + scrape_configs: + {{ range $index , $value := aws.EC2Query "tag:service=webhost" -}} + - job_name: {{ $value.InstanceId }} + static_configs: + - targets: + - {{ $value.PrivateDnsName }} + {{ end -}} \ No newline at end of file diff --git a/docs/cookbook/dynamic-configuration/03_Advanced_Datasources/01_assets/final.yml b/docs/cookbook/dynamic-configuration/03_Advanced_Datasources/01_assets/final.yml new file mode 100644 index 000000000000..07a4108aba2f --- /dev/null +++ b/docs/cookbook/dynamic-configuration/03_Advanced_Datasources/01_assets/final.yml @@ -0,0 +1,220 @@ +server: + http_listen_network: tcp + http_listen_address: "" + http_listen_port: 12345 + http_listen_conn_limit: 0 + grpc_listen_network: tcp + grpc_listen_address: "" + grpc_listen_port: 9095 + grpc_listen_conn_limit: 0 + http_tls_config: + cert_file: "" + key_file: "" + client_auth_type: "" + client_ca_file: "" + cipher_suites: [] + curve_preferences: [] + min_version: 0 + max_version: 0 + prefer_server_cipher_suites: false + grpc_tls_config: + cert_file: "" + key_file: "" + client_auth_type: "" + client_ca_file: "" + cipher_suites: [] + curve_preferences: [] + min_version: 0 + max_version: 0 + prefer_server_cipher_suites: false + register_instrumentation: true + graceful_shutdown_timeout: 30s + http_server_read_timeout: 30s + http_server_write_timeout: 30s + http_server_idle_timeout: 2m0s + grpc_server_max_recv_msg_size: 4194304 + grpc_server_max_send_msg_size: 4194304 + grpc_server_max_concurrent_streams: 100 + grpc_server_max_connection_idle: 2562047h47m16.854775807s + grpc_server_max_connection_age: 2562047h47m16.854775807s + grpc_server_max_connection_age_grace: 2562047h47m16.854775807s + grpc_server_keepalive_time: 2h0m0s + grpc_server_keepalive_timeout: 20s + grpc_server_min_time_between_pings: 5m0s + grpc_server_ping_without_stream_allowed: false + log_format: logfmt + log_level: debug + log_source_ips_enabled: false + log_source_ips_header: "" + log_source_ips_regex: "" + http_path_prefix: "" +metrics: + global: + scrape_interval: 1m + scrape_timeout: 10s + evaluation_interval: 1m + remote_write: + - url: https://prometheus-us-central1.grafana.net/api/prom/push + remote_timeout: 30s + name: default-a098e3 + basic_auth: + username: "12345" + password: + follow_redirects: true + queue_config: + capacity: 2500 + max_shards: 200 + min_shards: 1 + max_samples_per_send: 500 + batch_send_deadline: 5s + min_backoff: 30ms + max_backoff: 100ms + metadata_config: + send: true + send_interval: 1m + max_samples_per_send: 500 + wal_directory: /tmp/grafana-agent-normal + wal_cleanup_age: 12h0m0s + wal_cleanup_period: 30m0s + scraping_service: + enabled: false + reshard_interval: 1m0s + reshard_timeout: 30s + cluster_reshard_event_timeout: 30s + kvstore: + store: consul + prefix: configurations/ + consul: + host: localhost:8500 + acl_token: + http_client_timeout: 20s + consistent_reads: false + watch_rate_limit: 1 + watch_burst_size: 1 + etcd: + endpoints: [] + dial_timeout: 10s + max_retries: 10 + tls_enabled: false + tls_cert_path: "" + tls_key_path: "" + tls_ca_path: "" + tls_server_name: "" + tls_insecure_skip_verify: false + username: "" + password: + multi: + primary: "" + secondary: "" + mirror_enabled: false + mirror_timeout: 2s + lifecycler: + ring: + kvstore: + store: consul + prefix: collectors/ + consul: + host: localhost:8500 + acl_token: + http_client_timeout: 20s + consistent_reads: false + watch_rate_limit: 1 + watch_burst_size: 1 + etcd: + endpoints: [] + dial_timeout: 10s + max_retries: 10 + tls_enabled: false + tls_cert_path: "" + tls_key_path: "" + tls_ca_path: "" + tls_server_name: "" + tls_insecure_skip_verify: false + username: "" + password: + multi: + primary: "" + secondary: "" + mirror_enabled: false + mirror_timeout: 2s + heartbeat_timeout: 1m0s + replication_factor: 3 + zone_awareness_enabled: false + num_tokens: 128 + heartbeat_period: 5s + observe_period: 0s + join_after: 0s + min_ready_duration: 1m0s + interface_names: + - eth0 + - en0 + final_sleep: 30s + tokens_file_path: "" + availability_zone: "" + unregister_on_shutdown: true + address: "" + port: 0 + id: juniper.local + dangerous_allow_reading_files: false + scraping_service_client: + grpc_client_config: + max_recv_msg_size: 104857600 + max_send_msg_size: 16777216 + grpc_compression: "" + rate_limit: 0 + rate_limit_burst: 0 + backoff_on_ratelimits: false + backoff_config: + min_period: 100ms + max_period: 10s + max_retries: 10 + tls_enabled: false + tls_cert_path: "" + tls_key_path: "" + tls_ca_path: "" + tls_server_name: "" + tls_insecure_skip_verify: false + configs: + - name: default + scrape_configs: + - job_name: i-1234512345e + honor_timestamps: true + scrape_interval: 1m + scrape_timeout: 10s + metrics_path: /metrics + scheme: http + follow_redirects: true + static_configs: + - targets: + - ip-192-168-1-1.us-east-2.compute.internal + remote_write: + - url: https://prometheus-us-central1.grafana.net/api/prom/push + remote_timeout: 30s + name: default-a098e3 + basic_auth: + username: "12345" + password: + follow_redirects: true + queue_config: + capacity: 2500 + max_shards: 200 + min_shards: 1 + max_samples_per_send: 500 + batch_send_deadline: 5s + min_backoff: 30ms + max_backoff: 100ms + metadata_config: + send: true + send_interval: 1m + max_samples_per_send: 500 + wal_truncate_frequency: 1h0m0s + min_wal_time: 5m0s + max_wal_time: 4h0m0s + remote_flush_deadline: 1m0s + instance_restart_backoff: 5s + instance_mode: shared +integrations: + scrape_integrations: true + integration_restart_backoff: 5s + replace_instance_label: true + use_hostname_label: true diff --git a/docs/cookbook/dynamic-configuration/03_Advanced_Datasources/01_config.yml b/docs/cookbook/dynamic-configuration/03_Advanced_Datasources/01_config.yml new file mode 100644 index 000000000000..ab67edcade05 --- /dev/null +++ b/docs/cookbook/dynamic-configuration/03_Advanced_Datasources/01_config.yml @@ -0,0 +1,2 @@ +template_paths: + - "file:///etc/grafana/01_assets" \ No newline at end of file diff --git a/docs/cookbook/dynamic-configuration/README.md b/docs/cookbook/dynamic-configuration/README.md new file mode 100644 index 000000000000..e8e7e061a95e --- /dev/null +++ b/docs/cookbook/dynamic-configuration/README.md @@ -0,0 +1,19 @@ +# Dynamic Configuration Cookbook + +The purpose of the cookbook is to guide you through common scenarios of using dynamic configuration. Each folder contains increasingly more complex use cases, but feel free to jump in wherever you feel appropriate. + +## Basics + +[Basics](./01_Basics) covers +- [Structure](./01_Basics/01_Structure.md) of how agent and server templates are loaded +- [Instances](./01_Basics/02_Instances.md) of metrics and metrics instances are loaded +- [Integrations](./01_Basics/03_Integrations.md) of how integrations are loaded +- [Logs and Traces](./01_Basics/04_Logs_and_Traces.md) of how traces and logs are loaded + +[Templates](./02_Templates) covers +- [Looping](./02_Templates/01_Looping.md) covers basic command usage and simple loops +- [Datasource](./02_Templates/02_Datasources.md) covers usage of datasource which are external datastores you can use to pull in data +- [Datasources and Objects](./02_Templates/03_Datasource_and_Objects.md) covers the usage of complex json objects + +[Advanced Datasources](./03_Advanced_Datasources) covers non file based datasources +- [AWS](./03_Advanced_Datasources/01_AWS.md) covers querying EC2 for instances \ No newline at end of file diff --git a/pkg/config/config.go b/pkg/config/config.go index eccc1bab054c..8f23089c3522 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -31,10 +31,12 @@ import ( var ( featRemoteConfigs = features.Feature("remote-configs") featIntegrationsNext = features.Feature("integrations-next") + featDynamicConfig = features.Feature("dynamic-config") allFeatures = []features.Feature{ featRemoteConfigs, featIntegrationsNext, + featDynamicConfig, } ) @@ -259,6 +261,13 @@ func LoadRemote(url string, expandEnvVars bool, c *Config) error { return LoadBytes(bb, expandEnvVars, c) } +// LoadDynamicConfiguration is used to load configuration from a variety of sources using +// ConfigLoader, this is a templated approach +func LoadDynamicConfiguration(url string, _ bool, c *Config, fs *flag.FlagSet) error { + // will be filled in by future pr + return nil +} + // LoadBytes unmarshals a config from a buffer. Defaults are not // applied to the file and must be done manually if LoadBytes // is called directly. @@ -302,6 +311,12 @@ func Load(fs *flag.FlagSet, args []string) (*Config, error) { if features.Enabled(fs, featRemoteConfigs) { return LoadRemote(url, expand, c) } + if features.Enabled(fs, featDynamicConfig) { + if !features.Enabled(fs, featIntegrationsNext) { + panic("integrations-next must be enabled for dynamic configuration to work") + } + return LoadDynamicConfiguration(url, expand, c, fs) + } return LoadFile(url, expand, c) }) } @@ -350,8 +365,12 @@ func load(fs *flag.FlagSet, args []string, loader func(string, bool, *Config) er if features.Enabled(fs, featIntegrationsNext) { version = integrationsVersion2 } - if err := cfg.Integrations.setVersion(version); err != nil { - return nil, fmt.Errorf("error loading config file %s: %w", file, err) + // This is due to an odd interaction between dynamic loading and v2 integrations feature, if dynamic loading + // is enabled the cfg version is already set and this will actually override it + if cfg.Integrations.version != integrationsVersion2 && !features.Enabled(fs, featDynamicConfig) { + if err := cfg.Integrations.setVersion(version); err != nil { + return nil, fmt.Errorf("error loading config file %s: %w", file, err) + } } // Finally, apply defaults to config that wasn't specified by file or flag diff --git a/pkg/integrations/node_exporter/config.go b/pkg/integrations/node_exporter/config.go index e0efba0c00ff..836264354e41 100644 --- a/pkg/integrations/node_exporter/config.go +++ b/pkg/integrations/node_exporter/config.go @@ -120,7 +120,7 @@ type Config struct { PerfCPUS string `yaml:"perf_cpus,omitempty"` PerfTracepoint flagext.StringSlice `yaml:"perf_tracepoint,omitempty"` PowersupplyIgnoredSupplies string `yaml:"powersupply_ignored_supplies,omitempty"` - RunitServiceDir string `yaml:"runit_servic e_dir,omitempty"` + RunitServiceDir string `yaml:"runit_service_dir,omitempty"` SupervisordURL string `yaml:"supervisord_url,omitempty"` SystemdEnableRestartsMetrics bool `yaml:"systemd_enable_restarts_metrics,omitempty"` SystemdEnableStartTimeMetrics bool `yaml:"systemd_enable_start_time_metrics,omitempty"` From 935116d20d3a8f0d4d3f0ca875ce56eb0b3f85df Mon Sep 17 00:00:00 2001 From: mattdurham Date: Thu, 24 Feb 2022 16:32:13 -0500 Subject: [PATCH 05/19] Code to support dynamic configuration. (#1360) * Code to support dynamic configuration. * Fix linting errors * Fix issue with examples and add template parse * Fix windows issues * Simplify tests * Respond to PR feedback * Simplify tests and remove setting default * Move to unexported configshim * Export configshims members for testing * Simplify singleton checking * Add error around expand var * sever -> server * Better error code * Fix error when unmarshalling yaml which allowed unexporting fields * Switch to using require.noerror instead of assert. * Split tests into two sections and remove redundant tests * Verbiage cleanup and var renaming * PR feedback * PR feedback * Move singleton check to the controller instead * Cleanup the read file code to MUCH more compact code. * Remove EOF * PR feedback from session with rfratto, lots of changes to simplify the code * Fix misc feedback from PR --- CHANGELOG.md | 2 + cmd/agentctl/main.go | 38 ++ docs/configuration/_index.md | 5 + .../01_Basics/01_Structure.md | 2 +- .../01_Basics/01_assets/agent-1.yml | 6 +- .../01_Basics/01_config.yml | 2 +- .../01_Basics/02_Instances.md | 2 +- .../01_Basics/02_assets/agent-1.yml | 6 +- .../01_Basics/03_Integrations.md | 2 +- .../01_Basics/03_assets/agent-1.yml | 6 +- .../01_Basics/04_Logs_and_Traces.md | 2 +- .../01_Basics/04_assets/agent-1.yml | 6 +- .../02_Templates/01_Looping.md | 2 +- .../02_Templates/02_Datasources.md | 2 +- .../02_Templates/03_Datasource_and_Objects.md | 2 +- go.mod | 89 ++++- go.sum | 295 ++++++++++++-- pkg/config/config.go | 59 ++- pkg/config/config_test.go | 8 + pkg/config/dynamicconfig.go | 25 ++ pkg/config/dynamicloader.go | 363 ++++++++++++++++++ pkg/config/dynamicloader_configs_test.go | 330 ++++++++++++++++ pkg/config/dynamicloader_template_test.go | 174 +++++++++ pkg/config/integrations.go | 15 +- pkg/integrations/v2/controller.go | 19 + pkg/integrations/v2/controller_test.go | 39 ++ pkg/integrations/v2/register.go | 43 ++- 27 files changed, 1445 insertions(+), 99 deletions(-) create mode 100644 pkg/config/dynamicconfig.go create mode 100644 pkg/config/dynamicloader.go create mode 100644 pkg/config/dynamicloader_configs_test.go create mode 100644 pkg/config/dynamicloader_template_test.go diff --git a/CHANGELOG.md b/CHANGELOG.md index b198119135ca..7d9e511b42d4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ - [ENHANCEMENT] Go 1.17 is now used for all builds of the Agent. (@tpaschalis) +- [ENHANCEMENT] Introduce EXPERIMENTAL support for dynamic configuration. (@mattdurham) + - [BUGFIX] Fixed issue where Grafana Agent may panic if there is a very large WAL loading while old WALs are being deleted or the `/agent/api/v1/targets` endpoint is called. (@tpaschalis) diff --git a/cmd/agentctl/main.go b/cmd/agentctl/main.go index 91dab12ded5c..dc76546e753d 100644 --- a/cmd/agentctl/main.go +++ b/cmd/agentctl/main.go @@ -10,6 +10,8 @@ import ( "strings" "time" + "gopkg.in/yaml.v2" + // Adds version information _ "github.com/grafana/agent/pkg/build" "github.com/grafana/agent/pkg/client/grafanacloud" @@ -60,6 +62,7 @@ func main() { samplesCmd(), operatorDetachCmd(), cloudConfigCmd(), + templateDryRunCmd(), ) _ = cmd.Execute() @@ -474,6 +477,41 @@ config that may be used with this agent.`, return cmd } +func templateDryRunCmd() *cobra.Command { + + cmd := &cobra.Command{ + Use: "template-parse [directory]", + Short: "dry run dynamic configuration", + Long: `This will load the dynamic configuration, load configs, run templates and then output the full config as yaml`, + Args: cobra.ExactArgs(1), + + RunE: func(_ *cobra.Command, args []string) error { + cmf, err := config.NewDynamicLoader() + if err != nil { + return err + } + c := &config.Config{} + err = cmf.LoadConfigByPath(args[0]) + if err != nil { + return err + } + err = cmf.ProcessConfigs(c) + if err != nil { + return fmt.Errorf("error processing config templates %s", err) + } + + outBytes, err := yaml.Marshal(c) + if err != nil { + return err + } + fmt.Println(string(outBytes)) + return nil + }, + } + + return cmd +} + func must(err error) { if err != nil { panic(err) diff --git a/docs/configuration/_index.md b/docs/configuration/_index.md index a8495a0bdc47..e326d497f21e 100644 --- a/docs/configuration/_index.md +++ b/docs/configuration/_index.md @@ -127,3 +127,8 @@ The following flags will configure basic auth for requests made to HTTP/S remote - `-config.url.basic-auth-password-file `: path to a file containing the basic auth password Note that this beta feature is subject to change in future releases. + +## Dynamic Configuration (Experimental) + +Dynamic Configuration is an experimental feature that allows loading configurations from a variety of sources and +running gomplate templates against the found file. Details can be found in the [dynamic configuration config]({{< relref "./dynamic-config.md" >}}) \ No newline at end of file diff --git a/docs/cookbook/dynamic-configuration/01_Basics/01_Structure.md b/docs/cookbook/dynamic-configuration/01_Basics/01_Structure.md index 89b8206b5a11..d0a7bf6eed74 100644 --- a/docs/cookbook/dynamic-configuration/01_Basics/01_Structure.md +++ b/docs/cookbook/dynamic-configuration/01_Basics/01_Structure.md @@ -2,7 +2,7 @@ Dynamic Configuration uses a series of files to load templates. This example will show how they all combine together. Running the below command will combine all the templates into the final.yml. Any failure while loading the config will revert to the original config, or if this is the initial load Grafana Agent will quit. -`docker run -v ${PWD}/:/etc/grafana grafana/agentctl:latest template-parse /etc/grafana/01_config.yml` +`docker run -v ${PWD}/:/etc/grafana grafana/agentctl:latest template-parse file:///etc/grafana/01_config.yml` ## Dynamic Configuration diff --git a/docs/cookbook/dynamic-configuration/01_Basics/01_assets/agent-1.yml b/docs/cookbook/dynamic-configuration/01_Basics/01_assets/agent-1.yml index 9ccde139a590..63f679399e68 100644 --- a/docs/cookbook/dynamic-configuration/01_Basics/01_assets/agent-1.yml +++ b/docs/cookbook/dynamic-configuration/01_Basics/01_assets/agent-1.yml @@ -12,6 +12,8 @@ metrics: password: secretpassword integrations: node_exporter: - enabled: true + autoscrape: + enable: true agent: - enabled: true \ No newline at end of file + autoscrape: + enable: true \ No newline at end of file diff --git a/docs/cookbook/dynamic-configuration/01_Basics/01_config.yml b/docs/cookbook/dynamic-configuration/01_Basics/01_config.yml index 68e200f745f5..ab67edcade05 100644 --- a/docs/cookbook/dynamic-configuration/01_Basics/01_config.yml +++ b/docs/cookbook/dynamic-configuration/01_Basics/01_config.yml @@ -1,2 +1,2 @@ template_paths: - - "/etc/grafana/01_assets" \ No newline at end of file + - "file:///etc/grafana/01_assets" \ No newline at end of file diff --git a/docs/cookbook/dynamic-configuration/01_Basics/02_Instances.md b/docs/cookbook/dynamic-configuration/01_Basics/02_Instances.md index b0d5903dd743..4c77951d4ec5 100644 --- a/docs/cookbook/dynamic-configuration/01_Basics/02_Instances.md +++ b/docs/cookbook/dynamic-configuration/01_Basics/02_Instances.md @@ -3,7 +3,7 @@ Dynamic configuration allows multiple prometheus instances to be loaded with a parent metric. This uses the same agent-1 and server-1 yml from 01. -`docker run -v ${PWD}/:/etc/grafana grafana/agentctl:latest template-parse /etc/grafana/02_config.yml` +`docker run -v ${PWD}/:/etc/grafana grafana/agentctl:latest template-parse file:///etc/grafana/02_config.yml` ## Dynamic Configuration diff --git a/docs/cookbook/dynamic-configuration/01_Basics/02_assets/agent-1.yml b/docs/cookbook/dynamic-configuration/01_Basics/02_assets/agent-1.yml index 9ccde139a590..186ed83dd358 100644 --- a/docs/cookbook/dynamic-configuration/01_Basics/02_assets/agent-1.yml +++ b/docs/cookbook/dynamic-configuration/01_Basics/02_assets/agent-1.yml @@ -11,7 +11,5 @@ metrics: username: 12345 password: secretpassword integrations: - node_exporter: - enabled: true - agent: - enabled: true \ No newline at end of file + node_exporter: {} + agent: {} \ No newline at end of file diff --git a/docs/cookbook/dynamic-configuration/01_Basics/03_Integrations.md b/docs/cookbook/dynamic-configuration/01_Basics/03_Integrations.md index b33f00b6e034..268dd17223a1 100644 --- a/docs/cookbook/dynamic-configuration/01_Basics/03_Integrations.md +++ b/docs/cookbook/dynamic-configuration/01_Basics/03_Integrations.md @@ -2,7 +2,7 @@ Dynamic configuration requires the use of `integrations-next` feature flag, to allow arrays of integrations. In this we will load integrations of various types. This is all built on the previous examples. -`docker run -v ${PWD}/:/etc/grafana grafana/agentctl:latest template-parse /etc/grafana/03_config.yml` +`docker run -v ${PWD}/:/etc/grafana grafana/agentctl:latest template-parse file:///etc/grafana/03_config.yml` ## Dynamic Configuration diff --git a/docs/cookbook/dynamic-configuration/01_Basics/03_assets/agent-1.yml b/docs/cookbook/dynamic-configuration/01_Basics/03_assets/agent-1.yml index 9ccde139a590..186ed83dd358 100644 --- a/docs/cookbook/dynamic-configuration/01_Basics/03_assets/agent-1.yml +++ b/docs/cookbook/dynamic-configuration/01_Basics/03_assets/agent-1.yml @@ -11,7 +11,5 @@ metrics: username: 12345 password: secretpassword integrations: - node_exporter: - enabled: true - agent: - enabled: true \ No newline at end of file + node_exporter: {} + agent: {} \ No newline at end of file diff --git a/docs/cookbook/dynamic-configuration/01_Basics/04_Logs_and_Traces.md b/docs/cookbook/dynamic-configuration/01_Basics/04_Logs_and_Traces.md index 5d3c2c52a718..855fd521f413 100644 --- a/docs/cookbook/dynamic-configuration/01_Basics/04_Logs_and_Traces.md +++ b/docs/cookbook/dynamic-configuration/01_Basics/04_Logs_and_Traces.md @@ -2,7 +2,7 @@ Logs and Traces can also be templated. This is built ontop of the previous examples. -`docker run -v ${PWD}/:/etc/grafana grafana/agentctl:latest template-parse /etc/grafana/04_config.yml` +`docker run -v ${PWD}/:/etc/grafana grafana/agentctl:latest template-parse file:///etc/grafana/04_config.yml` ## Dynamic Configuration diff --git a/docs/cookbook/dynamic-configuration/01_Basics/04_assets/agent-1.yml b/docs/cookbook/dynamic-configuration/01_Basics/04_assets/agent-1.yml index 9ccde139a590..186ed83dd358 100644 --- a/docs/cookbook/dynamic-configuration/01_Basics/04_assets/agent-1.yml +++ b/docs/cookbook/dynamic-configuration/01_Basics/04_assets/agent-1.yml @@ -11,7 +11,5 @@ metrics: username: 12345 password: secretpassword integrations: - node_exporter: - enabled: true - agent: - enabled: true \ No newline at end of file + node_exporter: {} + agent: {} \ No newline at end of file diff --git a/docs/cookbook/dynamic-configuration/02_Templates/01_Looping.md b/docs/cookbook/dynamic-configuration/02_Templates/01_Looping.md index 47f07ebb228c..1f15d38086fd 100644 --- a/docs/cookbook/dynamic-configuration/02_Templates/01_Looping.md +++ b/docs/cookbook/dynamic-configuration/02_Templates/01_Looping.md @@ -2,7 +2,7 @@ The templating is based on the excellent [gomplate](https://docs.gomplate.ca/) library. Currently using a custom fork to allow loading gomplate as a library in addition to some new commands. This will NOT try to cover the full range of gomplate, would recommend reading the documentation for full knowledge. -`docker run -v ${PWD}/:/etc/grafana grafana/agentctl:latest template-parse /etc/grafana/01_config.yml` +`docker run -v ${PWD}/:/etc/grafana grafana/agentctl:latest template-parse file:///etc/grafana/01_config.yml` ## Looping diff --git a/docs/cookbook/dynamic-configuration/02_Templates/02_Datasources.md b/docs/cookbook/dynamic-configuration/02_Templates/02_Datasources.md index c6b3b81889e2..036e60d60587 100644 --- a/docs/cookbook/dynamic-configuration/02_Templates/02_Datasources.md +++ b/docs/cookbook/dynamic-configuration/02_Templates/02_Datasources.md @@ -2,7 +2,7 @@ Datasources are a powerful concept in gomplate. They allow you to reach out to other files, systems and resources to pull data. -`docker run -v ${PWD}/:/etc/grafana grafana/agentctl:latest template-parse /etc/grafana/02_config.yml` +`docker run -v ${PWD}/:/etc/grafana grafana/agentctl:latest template-parse file:///etc/grafana/02_config.yml` ## Config diff --git a/docs/cookbook/dynamic-configuration/02_Templates/03_Datasource_and_Objects.md b/docs/cookbook/dynamic-configuration/02_Templates/03_Datasource_and_Objects.md index e59452eabaa5..0a0bfd1bd138 100644 --- a/docs/cookbook/dynamic-configuration/02_Templates/03_Datasource_and_Objects.md +++ b/docs/cookbook/dynamic-configuration/02_Templates/03_Datasource_and_Objects.md @@ -2,7 +2,7 @@ Datasources can also access objects. -`docker run -v ${PWD}/:/etc/grafana grafana/agentctl:latest template-parse /etc/grafana/03_config.yml` +`docker run -v ${PWD}/:/etc/grafana grafana/agentctl:latest template-parse file:///etc/grafana/03_config.yml` ## Config diff --git a/go.mod b/go.mod index cd470f6147f8..1e9ce318f1c7 100644 --- a/go.mod +++ b/go.mod @@ -23,11 +23,15 @@ require ( github.com/gorilla/mux v1.8.0 github.com/grafana/dskit v0.0.0-20211011144203-3a88ec0b675f github.com/grafana/loki v1.6.2-0.20211021114919-0ae0d4da122d - github.com/hashicorp/consul/api v1.11.0 + github.com/hairyhenderson/go-fsimpl v0.0.0-20211102185733-857ee891b38d + github.com/hairyhenderson/gomplate/v3 v3.0.0 + github.com/hashicorp/consul/api v1.12.0 github.com/hashicorp/go-cleanhttp v0.5.2 + github.com/hashicorp/go-multierror v1.1.1 github.com/infinityworks/github-exporter v0.0.0-20201016091012-831b72461034 + github.com/johannesboyne/gofakes3 v0.0.0-20210819161434-5c8dfcfe5310 github.com/jsternberg/zap-logfmt v1.2.0 - github.com/lib/pq v1.10.1 + github.com/lib/pq v1.10.2 github.com/miekg/dns v1.1.43 github.com/mitchellh/reflectwalk v1.0.2 github.com/ncabatoff/process-exporter v0.7.5 @@ -94,8 +98,11 @@ require ( require ( cloud.google.com/go v0.97.0 // indirect - cloud.google.com/go/pubsub v1.5.0 // indirect + cloud.google.com/go/pubsub v1.16.0 // indirect + cloud.google.com/go/storage v1.18.2 // indirect + github.com/Azure/azure-pipeline-go v0.2.3 // indirect github.com/Azure/azure-sdk-for-go v58.2.0+incompatible // indirect + github.com/Azure/azure-storage-blob-go v0.14.0 // indirect github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect github.com/Azure/go-autorest v14.2.0+incompatible // indirect github.com/Azure/go-autorest/autorest v0.11.21 // indirect @@ -110,12 +117,25 @@ require ( github.com/Masterminds/sprig/v3 v3.2.2 // indirect github.com/Microsoft/go-winio v0.5.1 // indirect github.com/Microsoft/hcsshim v0.9.1 // indirect + github.com/ProtonMail/go-crypto v0.0.0-20210920160938-87db9fbc61c7 // indirect + github.com/Shopify/ejson v1.3.1 // indirect github.com/StackExchange/wmi v1.2.1 // indirect + github.com/acomagu/bufpipe v1.0.3 // indirect github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 // indirect github.com/alecthomas/units v0.0.0-20210927113745-59d0afb8317a // indirect github.com/apache/thrift v0.15.0 // indirect github.com/armon/go-metrics v0.3.9 // indirect - github.com/aws/aws-sdk-go v1.42.9 // indirect + github.com/armon/go-radix v1.0.0 // indirect + github.com/aws/aws-sdk-go v1.42.23 // indirect + github.com/aws/aws-sdk-go-v2 v1.9.2 // indirect + github.com/aws/aws-sdk-go-v2/config v1.8.3 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.4.3 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.6.0 // indirect + github.com/aws/aws-sdk-go-v2/internal/ini v1.2.4 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.3.2 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.4.2 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.7.2 // indirect + github.com/aws/smithy-go v1.8.0 // indirect github.com/beevik/ntp v0.3.0 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bits-and-blooms/bitset v1.2.0 // indirect @@ -123,6 +143,7 @@ require ( github.com/bmatcuk/doublestar v1.2.2 // indirect github.com/buger/jsonparser v1.1.1 // indirect github.com/c2h5oh/datasize v0.0.0-20200112174442-28bbd4740fee // indirect + github.com/cenkalti/backoff/v3 v3.2.2 // indirect github.com/cenkalti/backoff/v4 v4.1.2 // indirect github.com/census-instrumentation/opencensus-proto v0.3.0 // indirect github.com/cespare/xxhash/v2 v2.1.2 // indirect @@ -149,21 +170,27 @@ require ( github.com/docker/go v1.5.1-1.0.20160303222718-d30aec9fd63c // indirect github.com/docker/go-metrics v0.0.1 // indirect github.com/docker/go-units v0.4.0 // indirect + github.com/docker/libkv v0.2.2-0.20180912205406-458977154600 // indirect github.com/dustin/go-humanize v1.0.0 // indirect + github.com/dustin/gojson v0.0.0-20160307161227-2e71ec9dd5ad // indirect github.com/eapache/go-resiliency v1.2.0 // indirect github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 // indirect github.com/eapache/queue v1.1.0 // indirect github.com/edsrzf/mmap-go v1.0.0 // indirect github.com/ema/qdisc v0.0.0-20200603082823-62d0308e3e00 // indirect + github.com/emirpasic/gods v1.12.0 // indirect github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021 // indirect github.com/envoyproxy/protoc-gen-validate v0.6.1 // indirect github.com/euank/go-kmsg-parser v2.0.0+incompatible // indirect github.com/evanphx/json-patch v4.9.0+incompatible // indirect - github.com/fatih/color v1.12.0 // indirect + github.com/fatih/color v1.13.0 // indirect github.com/felixge/fgprof v0.9.1 // indirect github.com/felixge/httpsnoop v1.0.2 // indirect github.com/fsnotify/fsnotify v1.5.1 // indirect github.com/fvbommel/sortorder v1.0.2 // indirect + github.com/go-git/gcfg v1.5.0 // indirect + github.com/go-git/go-billy/v5 v5.3.1 // indirect + github.com/go-git/go-git/v5 v5.4.2 // indirect github.com/go-kit/kit v0.12.0 // indirect github.com/go-ole/go-ole v1.2.6 // indirect github.com/go-resty/resty/v2 v2.1.1-0.20191201195748-d7b97669fe48 // indirect @@ -175,7 +202,7 @@ require ( github.com/gofrs/uuid v4.0.0+incompatible // indirect github.com/gogo/googleapis v1.4.1 // indirect github.com/gogo/status v1.1.0 // indirect - github.com/golang-jwt/jwt/v4 v4.0.0 // indirect + github.com/golang-jwt/jwt/v4 v4.1.0 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/snappy v0.0.4 // indirect github.com/gomodule/redigo v2.0.0+incompatible // indirect @@ -185,25 +212,37 @@ require ( github.com/google/gofuzz v1.1.0 // indirect github.com/google/pprof v0.0.0-20211008130755-947d60d73cc0 // indirect github.com/google/uuid v1.3.0 // indirect + github.com/google/wire v0.5.0 // indirect github.com/googleapis/gax-go/v2 v2.1.1 // indirect github.com/googleapis/gnostic v0.5.4 // indirect github.com/gophercloud/gophercloud v0.22.0 // indirect + github.com/gosimple/slug v1.12.0 // indirect + github.com/gosimple/unidecode v1.0.1 // indirect github.com/grobie/gomemcache v0.0.0-20201204163352-08d7c80fcac6 // indirect github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect github.com/grpc-ecosystem/grpc-gateway v1.16.0 // indirect - github.com/hashicorp/errwrap v1.0.0 // indirect + github.com/hairyhenderson/toml v0.4.2-0.20210923231440-40456b8e66cf // indirect + github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-envparse v0.0.0-20200406174449-d9cfd743a15e // indirect github.com/hashicorp/go-hclog v0.16.2 // indirect github.com/hashicorp/go-immutable-radix v1.3.1 // indirect github.com/hashicorp/go-msgpack v0.5.5 // indirect - github.com/hashicorp/go-multierror v1.1.1 // indirect + github.com/hashicorp/go-plugin v1.4.3 // indirect + github.com/hashicorp/go-retryablehttp v0.7.0 // indirect github.com/hashicorp/go-rootcerts v1.0.2 // indirect + github.com/hashicorp/go-secure-stdlib/mlock v0.1.1 // indirect + github.com/hashicorp/go-secure-stdlib/parseutil v0.1.1 // indirect + github.com/hashicorp/go-secure-stdlib/strutil v0.1.1 // indirect github.com/hashicorp/go-sockaddr v1.0.2 // indirect github.com/hashicorp/go-uuid v1.0.2 // indirect + github.com/hashicorp/go-version v1.3.0 // indirect github.com/hashicorp/golang-lru v0.5.4 // indirect github.com/hashicorp/hcl v1.0.0 // indirect - github.com/hashicorp/memberlist v0.2.4 // indirect - github.com/hashicorp/serf v0.9.5 // indirect + github.com/hashicorp/memberlist v0.3.0 // indirect + github.com/hashicorp/serf v0.9.6 // indirect + github.com/hashicorp/vault/api v1.3.0 // indirect + github.com/hashicorp/vault/sdk v0.3.0 // indirect + github.com/hashicorp/yamux v0.0.0-20190923154419-df201c70410d // indirect github.com/hetznercloud/hcloud-go v1.32.0 // indirect github.com/hodgesds/perf-utils v0.4.0 // indirect github.com/hpcloud/tail v1.0.0 // indirect @@ -215,17 +254,20 @@ require ( github.com/influxdata/go-syslog/v3 v3.0.1-0.20201128200927-a1889d947b48 // indirect github.com/influxdata/telegraf v1.16.3 // indirect github.com/jaegertracing/jaeger v1.28.0 // indirect + github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect github.com/jcmturner/aescts/v2 v2.0.0 // indirect github.com/jcmturner/dnsutils/v2 v2.0.0 // indirect github.com/jcmturner/gofork v1.0.0 // indirect github.com/jcmturner/gokrb5/v8 v8.4.2 // indirect github.com/jcmturner/rpc/v2 v2.0.3 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect + github.com/joho/godotenv v1.4.0 // indirect github.com/josharian/native v0.0.0-20200817173448-b6b71def0850 // indirect github.com/jpillora/backoff v1.0.0 // indirect github.com/jsimonetti/rtnetlink v0.0.0-20211022192332-93da33804786 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/karrick/godirwalk v1.16.1 // indirect + github.com/kevinburke/ssh_config v1.1.0 // indirect github.com/klauspost/compress v1.13.6 // indirect github.com/knadh/koanf v1.3.2 // indirect github.com/kolo/xmlrpc v0.0.0-20201022064351-38db28db192b // indirect @@ -236,7 +278,8 @@ require ( github.com/linode/linodego v1.1.0 // indirect github.com/lufia/iostat v1.2.1 // indirect github.com/magiconair/properties v1.8.5 // indirect - github.com/mattn/go-colorable v0.1.8 // indirect + github.com/mattn/go-colorable v0.1.9 // indirect + github.com/mattn/go-ieproxy v0.0.1 // indirect github.com/mattn/go-isatty v0.0.14 // indirect github.com/mattn/go-runewidth v0.0.9 // indirect github.com/mattn/go-xmlrpc v0.0.3 // indirect @@ -250,6 +293,7 @@ require ( github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible // indirect github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect + github.com/mitchellh/go-testing-interface v1.0.0 // indirect github.com/mitchellh/mapstructure v1.4.2 // indirect github.com/moby/sys/mount v0.3.0 // indirect github.com/moby/sys/mountinfo v0.5.0 // indirect @@ -286,6 +330,9 @@ require ( github.com/prometheus/exporter-toolkit v0.7.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rs/cors v1.8.0 // indirect + github.com/rs/zerolog v1.26.1 // indirect + github.com/ryanuber/go-glob v1.0.0 // indirect + github.com/ryszard/goskiplist v0.0.0-20150312221310-2dfbae5fcf46 // indirect github.com/safchain/ethtool v0.1.0 // indirect github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da // indirect github.com/satori/go.uuid v1.2.1-0.20181028125025-b2ce2384e17b // indirect @@ -293,6 +340,8 @@ require ( github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 // indirect github.com/seccomp/libseccomp-golang v0.9.1 // indirect github.com/sercand/kuberesolver v2.4.0+incompatible // indirect + github.com/sergi/go-diff v1.2.0 // indirect + github.com/shabbyrobe/gocovmerge v0.0.0-20190829150210-3e036491d500 // indirect github.com/shirou/gopsutil v3.21.8+incompatible // indirect github.com/shopspring/decimal v1.2.0 // indirect github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749 // indirect @@ -312,9 +361,11 @@ require ( github.com/tklauser/numcpus v0.3.0 // indirect github.com/tomnomnom/linkheader v0.0.0-20180905144013-02ca5825eb80 // indirect github.com/uber/jaeger-lib v2.4.1+incompatible // indirect + github.com/ugorji/go/codec v1.2.6 // indirect github.com/vishvananda/netlink v1.1.1-0.20201029203352-d40f9887b852 // indirect github.com/vishvananda/netns v0.0.0-20200728191858-db3c7e526aae // indirect github.com/weaveworks/promrus v1.2.0 // indirect + github.com/xanzy/ssh-agent v0.3.1 // indirect github.com/xdg-go/pbkdf2 v1.0.0 // indirect github.com/xdg-go/scram v1.0.2 // indirect github.com/xdg-go/stringprep v1.0.2 // indirect @@ -324,6 +375,8 @@ require ( github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect github.com/xeipuuv/gojsonschema v1.2.0 // indirect github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d // indirect + github.com/zealic/xignore v0.3.3 // indirect + go.etcd.io/bbolt v1.3.6 // indirect go.etcd.io/etcd v3.3.25+incompatible // indirect go.etcd.io/etcd/api/v3 v3.5.0 // indirect go.etcd.io/etcd/client/pkg/v3 v3.5.0 // indirect @@ -336,13 +389,16 @@ require ( go.uber.org/goleak v1.1.12 // indirect go4.org/intern v0.0.0-20210108033219-3eb7198706b2 // indirect go4.org/unsafe/assume-no-moving-gc v0.0.0-20201222180813-1025295fd063 // indirect - golang.org/x/crypto v0.0.0-20210920023735-84f357641f63 // indirect - golang.org/x/net v0.0.0-20211111160137-58aab5ef257a // indirect + gocloud.dev v0.24.0 // indirect + golang.org/x/crypto v0.0.0-20211215165025-cf75a172585e // indirect + golang.org/x/net v0.0.0-20211209124913-491a49abca63 // indirect golang.org/x/oauth2 v0.0.0-20211005180243-6b3c2da341f1 // indirect golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect - golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b // indirect + golang.org/x/term v0.0.0-20210916214954-140adaaadfaf // indirect golang.org/x/text v0.3.7 // indirect golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac // indirect + golang.org/x/tools v0.1.7 // indirect + golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect gomodules.xyz/jsonpatch/v2 v2.1.0 // indirect google.golang.org/api v0.59.0 // indirect google.golang.org/appengine v1.6.7 // indirect @@ -353,7 +409,9 @@ require ( gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.64.0 // indirect gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 // indirect + gopkg.in/square/go-jose.v2 v2.6.0 // indirect gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect + gopkg.in/warnings.v0 v0.1.2 // indirect inet.af/netaddr v0.0.0-20210903134321-85fa6c94624e // indirect k8s.io/component-base v0.21.0 // indirect k8s.io/kube-openapi v0.0.0-20210305001622-591a79e4bda7 // indirect @@ -421,3 +479,6 @@ replace github.com/jaegertracing/jaeger => github.com/jaegertracing/jaeger v1.27 // Replacement necessary for windows_exporter so that we can use gokit logging and not the old prometheus logging replace github.com/leoluk/perflib_exporter v0.1.0 => github.com/grafana/perflib_exporter v0.1.1-0.20211013152516-e37e14fb8b0a + +// Required until fork merged upstream for dynamic configuration support +replace github.com/hairyhenderson/gomplate/v3 => github.com/mattdurham/gomplate/v3 v3.10.1-0.20220204190650-af65008b9bb1 diff --git a/go.sum b/go.sum index 470d91cfec3a..d2e7a1a48367 100644 --- a/go.sum +++ b/go.sum @@ -1,4 +1,5 @@ bazil.org/fuse v0.0.0-20160811212531-371fbbdaa898/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= +bazil.org/fuse v0.0.0-20180421153158-65cc252bf669/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.37.4/go.mod h1:NHPJ89PdicEuT9hdPXMROBD91xc5uRDxsMtSB16k7hw= @@ -15,19 +16,25 @@ cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6 cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= -cloud.google.com/go v0.60.0/go.mod h1:yw2G51M9IfRboUH61Us8GqCeF1PzPblB823Mn2q2eAU= cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= +cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= +cloud.google.com/go v0.82.0/go.mod h1:vlKccHJGuFBFufnAnuB08dfEH9Y3H7dzDzRECFdC2TA= cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= +cloud.google.com/go v0.88.0/go.mod h1:dnKwfYbP9hQhefiUvpbcAyoGSHUrOxR20JVElLiUvEY= +cloud.google.com/go v0.89.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= +cloud.google.com/go v0.92.2/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= +cloud.google.com/go v0.92.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= +cloud.google.com/go v0.94.0/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= cloud.google.com/go v0.97.0 h1:3DXvAyifywvq64LfkKaMOmkWPS1CikIQdMe2lY9vxU8= cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= @@ -43,42 +50,62 @@ cloud.google.com/go/bigtable v1.3.0/go.mod h1:z5EyKrPE8OQmeg4h5MNdKvuSnI9CCT49Ki 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/firestore v1.5.0/go.mod h1:c4nNYR1qdq7eaZ+jSc5fonrQN2k3M7sWATcYTiakjEo= cloud.google.com/go/firestore v1.6.0/go.mod h1:afJwI0vaXwAG54kI7A//lP/lSPDkQORQuMkv56TxEPU= +cloud.google.com/go/kms v0.1.0/go.mod h1:8Qp8PCAypHg4FdmlyW1QRAv09BGQ9Uzh7JnmIZxPk+c= cloud.google.com/go/kms v1.0.0 h1:YkIeqPXqTAlwXk3Z2/WG0d6h1tqJQjU354WftjEoP9E= +cloud.google.com/go/monitoring v0.1.0/go.mod h1:Hpm3XfzJv+UTiXzCG5Ffp0wijzHTC7Cv4eR7o3x/fEE= 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= cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/pubsub v1.5.0 h1:9cH52jizPUVSSrSe+J16RC9wB0QI7i/cfuCm5UUCcIk= -cloud.google.com/go/pubsub v1.5.0/go.mod h1:ZEwJccE3z93Z2HWvstpri00jOg7oO4UZDtKhwDwqF0w= +cloud.google.com/go/pubsub v1.16.0 h1:N2WVmm3vmoBo8+cbBgwACB8ZKUP/YQvG2ujHx47/oXY= +cloud.google.com/go/pubsub v1.16.0/go.mod h1:6A8EfoWZ/lUvCWStKGwAWauJZSiuV0Mkmu6WilK/TxQ= +cloud.google.com/go/secretmanager v0.1.0/go.mod h1:3nGKHvnzDUVit7U0S9KAKJ4aOsO1xtwRG+7ey5LK1bM= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= cloud.google.com/go/storage v1.3.0/go.mod h1:9IAwXhoyBJ7z9LcAwkj0/7NnPzYaPeZxxVp3zm+5IqA= cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +cloud.google.com/go/storage v1.16.1/go.mod h1:LaNorbty3ehnU3rEjXSNV/NRgQA0O8Y+uh6bPe5UOk4= +cloud.google.com/go/storage v1.18.2 h1:5NQw6tOn3eMm0oE8vTkfjau18kjL79FlMjy/CHTpmoY= +cloud.google.com/go/storage v1.18.2/go.mod h1:AiIj7BWXyhO5gGVmYJ+S8tbkCx3yb0IMjua8Aw4naVM= +cloud.google.com/go/trace v0.1.0/go.mod h1:wxEwsoeRVPbeSkt7ZC9nWCgmoKQRAoySN7XHW2AmI7g= code.cloudfoundry.org/bytefmt v0.0.0-20190710193110-1eb035ffe2b6/go.mod h1:wN/zk7mhREp/oviagqUXY3EwuHhWyOvAdsn5Y4CzOrc= code.cloudfoundry.org/clock v1.0.0/go.mod h1:QD9Lzhd/ux6eNQVUDVRJX/RKTigpewimNYBi7ivZKY8= collectd.org v0.3.0/go.mod h1:A/8DzQBkF6abtvrT2j/AU/4tiBgJWYyh0y/oB/4MlWE= +contrib.go.opencensus.io/exporter/aws v0.0.0-20200617204711-c478e41e60e9/go.mod h1:uu1P0UCM/6RbsMrgPa98ll8ZcHM858i/AD06a9aLRCA= contrib.go.opencensus.io/exporter/prometheus v0.4.0 h1:0QfIkj9z/iVZgK31D9H9ohjjIDApI2GOPScCKwxedbs= contrib.go.opencensus.io/exporter/prometheus v0.4.0/go.mod h1:o7cosnyfuPVK0tB8q0QmaQNhGnptITnPQB+z1+qeFB0= +contrib.go.opencensus.io/exporter/stackdriver v0.13.8/go.mod h1:huNtlWx75MwO7qMs0KrMxPZXzNNWebav1Sq/pm02JdQ= +contrib.go.opencensus.io/integrations/ocsql v0.1.7/go.mod h1:8DsSdjz3F+APR+0z0WkU1aRorQCFfRxvqjUUPMbF3fE= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/AlekSi/pointer v1.1.0 h1:SSDMPcXD9jSl8FPy9cRzoRaMJtm9g9ggGTxecRUbQoI= github.com/AlekSi/pointer v1.1.0/go.mod h1:y7BvfRI3wXPWKXEBhU71nbnIEEZX0QTSB2Bj48UJIZE= github.com/Azure/azure-amqp-common-go/v3 v3.0.0/go.mod h1:SY08giD/XbhTz07tJdpw1SoxQXHPN30+DI3Z04SYqyg= +github.com/Azure/azure-amqp-common-go/v3 v3.1.0/go.mod h1:PBIGdzcO1teYoufTKMcGibdKaYZv4avS+O6LNIp8bq0= +github.com/Azure/azure-amqp-common-go/v3 v3.1.1/go.mod h1:YsDaPfaO9Ub2XeSKdIy2DfwuiQlHQCauHJwSqtrkECI= github.com/Azure/azure-event-hubs-go/v3 v3.2.0/go.mod h1:BPIIJNH/l/fVHYq3Rm6eg4clbrULrQ3q7+icmqHyyLc= github.com/Azure/azure-pipeline-go v0.1.8/go.mod h1:XA1kFWRVhSK+KNFiOhfv83Fv8L9achrP7OxIzeTn1Yg= github.com/Azure/azure-pipeline-go v0.1.9/go.mod h1:XA1kFWRVhSK+KNFiOhfv83Fv8L9achrP7OxIzeTn1Yg= github.com/Azure/azure-pipeline-go v0.2.1/go.mod h1:UGSo8XybXnIGZ3epmeBw7Jdz+HiUVpqIlpz/HKHylF4= github.com/Azure/azure-pipeline-go v0.2.2/go.mod h1:4rQ/NZncSvGqNkkOsNpOU1tgoNuIlp9AfUH5G1tvCHc= +github.com/Azure/azure-pipeline-go v0.2.3 h1:7U9HBg1JFK3jHl5qmo4CTZKFTVgMwdFHMVtCdfBE21U= github.com/Azure/azure-pipeline-go v0.2.3/go.mod h1:x841ezTBIMG6O3lAcl8ATHnsOPVl2bqk7S3ta6S6u4k= github.com/Azure/azure-sdk-for-go v36.2.0+incompatible h1:09cv2WoH0g6jl6m2iT+R9qcIPZKhXEL0sbmLhxP895s= github.com/Azure/azure-sdk-for-go v36.2.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-service-bus-go v0.10.16/go.mod h1:MlkLwGGf1ewcx5jZadn0gUEty+tTg0RaElr6bPf+QhI= github.com/Azure/azure-storage-blob-go v0.6.0/go.mod h1:oGfmITT1V6x//CswqY2gtAHND+xIP64/qL7a5QJix0Y= github.com/Azure/azure-storage-blob-go v0.8.0/go.mod h1:lPI3aLPpuLTeUwh1sViKXFxwl2B6teiRqI0deQUvsw0= github.com/Azure/azure-storage-blob-go v0.13.0/go.mod h1:pA9kNqtjUeQF2zOSu4s//nUdBD+e64lEuc4sVnuOfNs= +github.com/Azure/azure-storage-blob-go v0.14.0 h1:1BCg74AmVdYwO3dlKwtFU1V0wU2PZdREkXvAmZJRUlM= +github.com/Azure/azure-storage-blob-go v0.14.0/go.mod h1:SMqIBi+SuiQH32bvyjngEewEeXoPfKMgWlBDaYf6fck= github.com/Azure/azure-storage-queue-go v0.0.0-20181215014128-6ed74e755687/go.mod h1:K6am8mT+5iFXgingS9LUc7TmbsW6XBw3nxaRyaMyWc8= github.com/Azure/go-amqp v0.12.6/go.mod h1:qApuH6OFTSKZFmCOxccvAv5rLizBQf4v8pRmG138DPo= +github.com/Azure/go-amqp v0.13.0/go.mod h1:qj+o8xPCz9tMSbQ83Vp8boHahuRDl5mkNHyt1xlxUTs= +github.com/Azure/go-amqp v0.13.11/go.mod h1:D5ZrjQqB1dyp1A+G73xeL/kNn7D5qHJIIsNNps7YNmk= +github.com/Azure/go-amqp v0.13.12/go.mod h1:D5ZrjQqB1dyp1A+G73xeL/kNn7D5qHJIIsNNps7YNmk= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= @@ -90,26 +117,35 @@ github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSW github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= github.com/Azure/go-autorest/autorest v0.9.3-0.20191028180845-3492b2aff503/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= github.com/Azure/go-autorest/autorest v0.9.3/go.mod h1:GsRuLYvwzLjjjRoWEIyMUaYq8GNUx2nRB378IPt/1p0= +github.com/Azure/go-autorest/autorest v0.11.3/go.mod h1:JFgpikqFJ/MleTTxwepExTKnFUKKszPS8UavbQYUMuw= github.com/Azure/go-autorest/autorest v0.11.9/go.mod h1:eipySxLmqSyC5s5k1CLupqet0PSENBEDP93LQ9a8QYw= github.com/Azure/go-autorest/autorest v0.11.12/go.mod h1:eipySxLmqSyC5s5k1CLupqet0PSENBEDP93LQ9a8QYw= github.com/Azure/go-autorest/autorest v0.11.17/go.mod h1:eipySxLmqSyC5s5k1CLupqet0PSENBEDP93LQ9a8QYw= +github.com/Azure/go-autorest/autorest v0.11.18/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA= +github.com/Azure/go-autorest/autorest v0.11.20/go.mod h1:o3tqFY+QR40VOlk+pV4d77mORO64jOXSgEnPQgLK6JY= github.com/Azure/go-autorest/autorest v0.11.21 h1:w77zY/9RnUAWcIQyDC0Fc89mCvwftR8F+zsR/OH6enk= github.com/Azure/go-autorest/autorest v0.11.21/go.mod h1:Do/yuMSW/13ayUkcVREpsMHGG+MvV81uzSCFgYPj4tM= github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= github.com/Azure/go-autorest/autorest/adal v0.8.0/go.mod h1:Z6vX6WXXuyieHAXwMj0S6HY6e6wcHn37qQMBQlvY3lc= github.com/Azure/go-autorest/autorest/adal v0.8.1-0.20191028180845-3492b2aff503/go.mod h1:Z6vX6WXXuyieHAXwMj0S6HY6e6wcHn37qQMBQlvY3lc= github.com/Azure/go-autorest/autorest/adal v0.8.1/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= +github.com/Azure/go-autorest/autorest/adal v0.9.0/go.mod h1:/c022QCutn2P7uY+/oQWWNcK9YU+MH96NgK+jErpbcg= github.com/Azure/go-autorest/autorest/adal v0.9.2/go.mod h1:/3SMAM86bP6wC9Ev35peQDUeqFZBMH07vvUOmg4z/fE= github.com/Azure/go-autorest/autorest/adal v0.9.5/go.mod h1:B7KF7jKIeC9Mct5spmyCB/A8CG/sEz1vwIRGv/bbw7A= github.com/Azure/go-autorest/autorest/adal v0.9.11/go.mod h1:nBKAnTomx8gDtl+3ZCJv2v0KACFHWTB2drffI1B68Pk= +github.com/Azure/go-autorest/autorest/adal v0.9.13/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M= github.com/Azure/go-autorest/autorest/adal v0.9.14/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M= +github.com/Azure/go-autorest/autorest/adal v0.9.15/go.mod h1:tGMin8I49Yij6AQ+rvV+Xa/zwxYQB5hmsd6DkfAx2+A= github.com/Azure/go-autorest/autorest/adal v0.9.16 h1:P8An8Z9rH1ldbOLdFpxYorgOt2sywL9V24dAwWHPuGc= github.com/Azure/go-autorest/autorest/adal v0.9.16/go.mod h1:tGMin8I49Yij6AQ+rvV+Xa/zwxYQB5hmsd6DkfAx2+A= github.com/Azure/go-autorest/autorest/azure/auth v0.4.2/go.mod h1:90gmfKdlmKgfjUpnCEpOJzsUEjrWDSLwHIG73tSXddM= github.com/Azure/go-autorest/autorest/azure/auth v0.5.3/go.mod h1:4bJZhUhcq8LB20TruwHbAQsmUs2Xh+QR7utuJpLXX3A= +github.com/Azure/go-autorest/autorest/azure/auth v0.5.8 h1:TzPg6B6fTZ0G1zBf3T54aI7p3cAT6u//TOXGPmFMOXg= github.com/Azure/go-autorest/autorest/azure/auth v0.5.8/go.mod h1:kxyKZTSfKh8OVFWPAgOgQ/frrJgeYQJPyR5fLFmXko4= github.com/Azure/go-autorest/autorest/azure/cli v0.3.1/go.mod h1:ZG5p860J94/0kI9mNJVoIoLgXcirM2gF5i2kWloofxw= github.com/Azure/go-autorest/autorest/azure/cli v0.4.2/go.mod h1:7qkJkT+j6b+hIpzMOwPChJhTqS8VbsqqgULzMNRugoM= +github.com/Azure/go-autorest/autorest/azure/cli v0.4.3 h1:DOhB+nXkF7LN0JfBGB5YtCF6QLK8mLe4psaHF7ZQEKM= +github.com/Azure/go-autorest/autorest/azure/cli v0.4.3/go.mod h1:yAQ2b6eP/CmLPnmLvxtT1ALIY3OR1oFcCqVBi8vHiTc= github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= github.com/Azure/go-autorest/autorest/date v0.2.0/go.mod h1:vcORJHLJEh643/Ioh9+vPmf1Ij9AEBM5FuBIXLmIy0g= github.com/Azure/go-autorest/autorest/date v0.3.0 h1:7gUk1U5M/CQbp9WoqinNzJar+8KY+LPI6wiWrP/myHw= @@ -117,6 +153,7 @@ github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSY github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= github.com/Azure/go-autorest/autorest/mocks v0.3.0/go.mod h1:a8FDP3DYzQ4RYfVAxAN3SVSiiO77gL2j2ronKKP0syM= +github.com/Azure/go-autorest/autorest/mocks v0.4.0/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= github.com/Azure/go-autorest/autorest/mocks v0.4.1 h1:K0laFcLE6VLTOwNgSxaGbUcLPuGXlNkbVvq4cW4nIHk= github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= github.com/Azure/go-autorest/autorest/to v0.3.0/go.mod h1:MgwOyqaIuKdG4TL/2ywSsIWKAfJfgHDo8ObuUk3t5sA= @@ -140,6 +177,7 @@ github.com/DATA-DOG/go-sqlmock v1.4.1 h1:ThlnYciV1iM/V0OSF/dtkqWb6xo5qITT1TJBG1M github.com/DATA-DOG/go-sqlmock v1.4.1/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= github.com/DataDog/datadog-go v0.0.0-20160329135253-cc2f4770f4d6/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= +github.com/GoogleCloudPlatform/cloudsql-proxy v1.24.0/go.mod h1:3tx938GhY4FC+E1KT/jNjDw7Z5qxAEtIiERJ2sXjnII= github.com/HdrHistogram/hdrhistogram-go v1.1.0/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= github.com/HdrHistogram/hdrhistogram-go v1.1.2 h1:5IcZpTvzydCQeHzK4Ef/D5rrSqwxob0t8PQPMybUNFM= github.com/Jeffail/gabs v1.1.0/go.mod h1:6xMvQMK4k33lb7GUUpaAPh6nKMmemQeg5d4gn7/bOXc= @@ -166,6 +204,7 @@ github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugX github.com/Microsoft/go-winio v0.4.17-0.20210211115548-6eac466e5fa3/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= github.com/Microsoft/go-winio v0.4.17-0.20210324224401-5516f17a5958/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= github.com/Microsoft/go-winio v0.4.17/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= +github.com/Microsoft/go-winio v0.5.0/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= github.com/Microsoft/go-winio v0.5.1 h1:aPJp2QD7OOrhO5tQXqQoGSJc+DjDtWTGLOmNyAm6FgY= github.com/Microsoft/go-winio v0.5.1/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= github.com/Microsoft/hcsshim v0.8.6/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= @@ -188,6 +227,9 @@ github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMo github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/OneOfOne/xxhash v1.2.6/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q= +github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7/go.mod h1:z4/9nQmJSSwwds7ejkxaJwO37dru3geImFUdJlaLzQo= +github.com/ProtonMail/go-crypto v0.0.0-20210920160938-87db9fbc61c7 h1:DSqTh6nEes/uO8BlNcGk8PzZsxY2sN9ZL//veWBdTRI= +github.com/ProtonMail/go-crypto v0.0.0-20210920160938-87db9fbc61c7/go.mod h1:z4/9nQmJSSwwds7ejkxaJwO37dru3geImFUdJlaLzQo= github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= @@ -196,6 +238,8 @@ github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdko github.com/SAP/go-hdb v0.12.0/go.mod h1:etBT+FAi1t5k3K3tf5vQTnosgYmhDkRi8jEnQqCnxF0= github.com/SAP/go-hdb v0.14.1/go.mod h1:7fdQLVC2lER3urZLjZCm0AuMQfApof92n3aylBPEkMo= github.com/SermoDigital/jose v0.0.0-20180104203859-803625baeddc/go.mod h1:ARgCUhI1MHQH+ONky/PAtmVHQrP5JlGY0F3poXOp/fA= +github.com/Shopify/ejson v1.3.1 h1:Oawj8bu0IhjvL2W4/wzHJiGRswWTZkOU4RmjJW+JQCg= +github.com/Shopify/ejson v1.3.1/go.mod h1:DBVPSSyVv9/MNElCiAX7BCPWy23HGzrOCnHLV7LWlbs= github.com/Shopify/logrus-bugsnag v0.0.0-20170309145241-6dbc35f2c30d/go.mod h1:HI8ITrYtUY+O+ZhtlqUnD8+KwNPOyugEhfP9fdUIaEQ= github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d h1:UrqY+r/OJnIp5u0s1SbQ8dVfLCZJsnvazdBP5hS4iRs= github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod h1:HI8ITrYtUY+O+ZhtlqUnD8+KwNPOyugEhfP9fdUIaEQ= @@ -215,6 +259,8 @@ github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9 github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= github.com/abdullin/seq v0.0.0-20160510034733-d5467c17e7af/go.mod h1:5Jv4cbFiHJMsVxt52+i0Ha45fjshj6wxYr1r19tB9bw= +github.com/acomagu/bufpipe v1.0.3 h1:fxAGrHZTgQ9w5QqVItgzwj235/uYZYgbXitB+dLupOk= +github.com/acomagu/bufpipe v1.0.3/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4= github.com/aerospike/aerospike-client-go v1.27.0/go.mod h1:zj8LBEnWBDOVEIJt8LvaRvDG5ARAoa5dBeHaB472NRc= github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM= @@ -238,6 +284,8 @@ github.com/alicebob/miniredis/v2 v2.14.3/go.mod h1:gquAfGbzn92jvtrSC69+6zZnwSODV github.com/aliyun/aliyun-oss-go-sdk v2.0.4+incompatible/go.mod h1:T/Aws4fEfogEE9v+HPhhw+CntffsBHJ8nXQCwKr0/g8= github.com/amir/raidman v0.0.0-20170415203553-1ccc43bfb9c9/go.mod h1:eliMa/PW+RDr2QLWRmLH1R1ZA4RInpmvOzDDXtaIZkc= github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= +github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239 h1:kFOfPq6dUM1hTo4JG6LR5AXSUEsOjtdm0kw0FtQtMJA= +github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= github.com/antihax/optional v0.0.0-20180407024304-ca021399b1a6/go.mod h1:V8iCPQYkqmusNa815XgQio277wI47sdRh1dUOLdyC6Q= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/aokoli/goutils v1.0.1/go.mod h1:SijmP0QR8LtwsmDs8Yii5Z/S4trXFGFC2oO5g9DP+DQ= @@ -258,7 +306,9 @@ github.com/armon/go-metrics v0.3.6/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4 github.com/armon/go-metrics v0.3.9 h1:O2sNqxBdvq8Eq5xmzljcYzAORli6RWCvEym4cJf9m18= github.com/armon/go-metrics v0.3.9/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/armon/go-radix v1.0.0 h1:F4z6KzEeeQIMeLFa97iZU6vupzoecKdU5TX24SNppXI= github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= github.com/asaskevich/govalidator v0.0.0-20180319081651-7d2e70ef918f/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= @@ -270,7 +320,9 @@ github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef/go.mod h1:W github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= github.com/aws/aws-sdk-go v1.15.11/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= github.com/aws/aws-sdk-go v1.15.24/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= +github.com/aws/aws-sdk-go v1.15.27/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= github.com/aws/aws-sdk-go v1.15.78/go.mod h1:E3/ieXAlvM0XWO57iftYVDLLvQ824smPP3ATZkfNZeM= +github.com/aws/aws-sdk-go v1.17.4/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.17.7/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.25.48/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= @@ -282,28 +334,50 @@ github.com/aws/aws-sdk-go v1.34.34/go.mod h1:H7NKnBqNVzoTJpGfLrQkkD+ytBA93eiDYi/ github.com/aws/aws-sdk-go v1.35.5/go.mod h1:tlPOdRjfxPBpNIwqDj61rmsnA85v9jc0Ps9+muhnW+k= github.com/aws/aws-sdk-go v1.35.24/go.mod h1:tlPOdRjfxPBpNIwqDj61rmsnA85v9jc0Ps9+muhnW+k= github.com/aws/aws-sdk-go v1.35.31/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= +github.com/aws/aws-sdk-go v1.37.0/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= github.com/aws/aws-sdk-go v1.37.8/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= github.com/aws/aws-sdk-go v1.38.3/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= github.com/aws/aws-sdk-go v1.38.35/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= github.com/aws/aws-sdk-go v1.38.68/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= github.com/aws/aws-sdk-go v1.40.11/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q= +github.com/aws/aws-sdk-go v1.40.34/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q= github.com/aws/aws-sdk-go v1.40.37/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q= github.com/aws/aws-sdk-go v1.41.7/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q= -github.com/aws/aws-sdk-go v1.42.9 h1:8ptAGgA+uC2TUbdvUeOVSfBocIZvGE2NKiLxkAcn1GA= -github.com/aws/aws-sdk-go v1.42.9/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q= +github.com/aws/aws-sdk-go v1.42.23 h1:V0V5hqMEyVelgpu1e4gMPVCJ+KhmscdNxP/NWP1iCOA= +github.com/aws/aws-sdk-go v1.42.23/go.mod h1:gyRszuZ/icHmHAVE4gc/r+cfCmhA1AD+vqfWbgI+eHs= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= github.com/aws/aws-sdk-go-v2 v1.7.0/go.mod h1:tb9wi5s61kTDA5qCkcDbt3KRVV74GGslQkl/DRdX/P4= +github.com/aws/aws-sdk-go-v2 v1.9.0/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4= +github.com/aws/aws-sdk-go-v2 v1.9.2 h1:dUFQcMNZMLON4BOe273pl0filK9RqyQMhCK/6xssL6s= github.com/aws/aws-sdk-go-v2 v1.9.2/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4= +github.com/aws/aws-sdk-go-v2/config v1.7.0/go.mod h1:w9+nMZ7soXCe5nT46Ri354SNhXDQ6v+V5wqDjnZE+GY= +github.com/aws/aws-sdk-go-v2/config v1.8.3 h1:o5583X4qUfuRrOGOgmOcDgvr5gJVSu57NK08cWAhIDk= github.com/aws/aws-sdk-go-v2/config v1.8.3/go.mod h1:4AEiLtAb8kLs7vgw2ZV3p2VZ1+hBavOc84hqxVNpCyw= +github.com/aws/aws-sdk-go-v2/credentials v1.4.0/go.mod h1:dgGR+Qq7Wjcd4AOAW5Rf5Tnv3+x7ed6kETXyS9WCuAY= +github.com/aws/aws-sdk-go-v2/credentials v1.4.3 h1:LTdD5QhK073MpElh9umLLP97wxphkgVC/OjQaEbBwZA= github.com/aws/aws-sdk-go-v2/credentials v1.4.3/go.mod h1:FNNC6nQZQUuyhq5aE5c7ata8o9e4ECGmS4lAXC7o1mQ= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.5.0/go.mod h1:CpNzHK9VEFUCknu50kkB8z58AH2B5DvPP7ea1LHve/Y= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.6.0 h1:9tfxW/icbSu98C2pcNynm5jmDwU3/741F11688B6QnU= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.6.0/go.mod h1:gqlclDEZp4aqJOancXK6TN24aKhT0W0Ae9MHk3wzTMM= +github.com/aws/aws-sdk-go-v2/internal/ini v1.2.2/go.mod h1:BQV0agm+JEhqR+2RT5e1XTFIDcAAV0eW6z2trp+iduw= +github.com/aws/aws-sdk-go-v2/internal/ini v1.2.4 h1:leSJ6vCqtPpTmBIgE7044B1wql1E4n//McF+mEgNrYg= github.com/aws/aws-sdk-go-v2/internal/ini v1.2.4/go.mod h1:ZcBrrI3zBKlhGFNYWvju0I3TR93I7YIgAfy82Fh4lcQ= github.com/aws/aws-sdk-go-v2/service/appconfig v1.4.2/go.mod h1:FZ3HkCe+b10uFZZkFdvf98LHW21k49W8o8J366lqVKY= github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.5.0/go.mod h1:acH3+MQoiMzozT/ivU+DbRg7Ooo2298RdRaWcOv+4vM= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.3.0/go.mod h1:R1KK+vY8AfalhG1AOu5e35pOD2SdoPKQCFLTvnxiohk= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.3.2 h1:r7jel2aa4d9Duys7wEmWqDd5ebpC9w6Kxu6wIjjp18E= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.3.2/go.mod h1:72HRZDLMtmVQiLG2tLfQcaWLCssELvGl+Zf2WVxMmR8= +github.com/aws/aws-sdk-go-v2/service/kms v1.5.0/go.mod h1:w7JuP9Oq1IKMFQPkNe3V6s9rOssXzOVEMNEqK1L1bao= +github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.6.0/go.mod h1:B+7C5UKdVq1ylkI/A6O8wcurFtaux0R1njePNPtKwoA= +github.com/aws/aws-sdk-go-v2/service/ssm v1.10.0/go.mod h1:4dXS5YNqI3SNbetQ7X7vfsMlX6ZnboJA2dulBwJx7+g= +github.com/aws/aws-sdk-go-v2/service/sso v1.4.0/go.mod h1:+1fpWnL96DL23aXPpMGbsmKe8jLTEfbjuQoA4WS1VaA= +github.com/aws/aws-sdk-go-v2/service/sso v1.4.2 h1:pZwkxZbspdqRGzddDB92bkZBoB7lg85sMRE7OqdB3V0= github.com/aws/aws-sdk-go-v2/service/sso v1.4.2/go.mod h1:NBvT9R1MEF+Ud6ApJKM0G+IkPchKS7p7c2YPKwHmBOk= +github.com/aws/aws-sdk-go-v2/service/sts v1.7.0/go.mod h1:0qcSMCyASQPN2sk/1KQLQ2Fh6yq8wm0HSDAimPhzCoM= +github.com/aws/aws-sdk-go-v2/service/sts v1.7.2 h1:ol2Y5DWqnJeKqNd8th7JWzBtqu63xpOfs1Is+n1t8/4= github.com/aws/aws-sdk-go-v2/service/sts v1.7.2/go.mod h1:8EzeIqfWt2wWT4rJVu3f21TfrhJ8AEMzVybRNSb/b4g= github.com/aws/smithy-go v1.5.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E= +github.com/aws/smithy-go v1.8.0 h1:AEwwwXQZtUwP5Mz506FeXXrKBe0jA8gVM+1gEcSRooc= github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E= github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f/go.mod h1:AuiFmCCPBSrqvVMvuqFuk0qogytodnVFVSN5CeJB8Gc= github.com/beevik/ntp v0.2.0/go.mod h1:hIHWr+l3+/clUnF44zdK+CWW7fO8dR5cIylAQ76NRpg= @@ -365,6 +439,9 @@ github.com/cenkalti/backoff v1.0.0/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQ github.com/cenkalti/backoff v2.0.0+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff v2.1.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= +github.com/cenkalti/backoff/v3 v3.0.0/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4rc0ij+ULvLYs= +github.com/cenkalti/backoff/v3 v3.2.2 h1:cfUAAO3yvKMYKPrvhDuHSwQnhZNk/RMHKdZqKTxfm6M= +github.com/cenkalti/backoff/v3 v3.2.2/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4rc0ij+ULvLYs= github.com/cenkalti/backoff/v4 v4.0.2/go.mod h1:eEew/i+1Q6OrCDZh3WiXYv3+nJwBASZ8Bog/87DQnVg= github.com/cenkalti/backoff/v4 v4.1.0/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= @@ -599,6 +676,7 @@ github.com/denisenkom/go-mssqldb v0.0.0-20180620032804-94c9c97e8c9f/go.mod h1:xN github.com/denisenkom/go-mssqldb v0.0.0-20190515213511-eb9f6a1743f3/go.mod h1:zAg7JM8CkOJ43xKXIj7eRO9kmWm/TW578qo+oDO6tuM= github.com/denisenkom/go-mssqldb v0.0.0-20190707035753-2be1aa521ff4/go.mod h1:zAg7JM8CkOJ43xKXIj7eRO9kmWm/TW578qo+oDO6tuM= github.com/denisenkom/go-mssqldb v0.0.0-20191128021309-1d7a30a10f73/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU= +github.com/denisenkom/go-mssqldb v0.9.0/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU= github.com/denisenkom/go-mssqldb v0.10.0/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU= github.com/dennwc/varint v1.0.0 h1:kGNFFSSw8ToIy3obO/kKr8U9GZYUAxQEVuix4zfDWzE= github.com/dennwc/varint v1.0.0/go.mod h1:hnItb35rvZvJrbTALZtY/iQfDs48JKRG1RPpgziApxA= @@ -656,6 +734,8 @@ github.com/docker/go-metrics v0.0.1/go.mod h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHz github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docker/go-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw= github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/docker/libkv v0.2.2-0.20180912205406-458977154600 h1:x0AMRhackzbivKKiEeSMzH6gZmbALPXCBG0ecBmRlco= +github.com/docker/libkv v0.2.2-0.20180912205406-458977154600/go.mod h1:r5hEwHwW8dr0TFBYGCarMNbrQOiwL1xoqDYZ/JqoTK0= github.com/docker/libnetwork v0.8.0-dev.2.0.20181012153825-d7b61745d166/go.mod h1:93m0aTqz6z+g32wla4l4WxTrdtvBRmVzYRkYvasA5Z8= github.com/docker/libtrust v0.0.0-20150114040149-fa567046d9b1/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE= github.com/docker/libtrust v0.0.0-20160708172513-aabc10ec26b7 h1:UhxFibDNY/bfvqU5CAUmr9zpesgbU6SWc8/B4mflAE4= @@ -667,6 +747,8 @@ github.com/duosecurity/duo_api_golang v0.0.0-20190308151101-6c680f768e74/go.mod github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/dustin/gojson v0.0.0-20160307161227-2e71ec9dd5ad h1:Qk76DOWdOp+GlyDKBAG3Klr9cn7N+LcYc82AZ2S7+cA= +github.com/dustin/gojson v0.0.0-20160307161227-2e71ec9dd5ad/go.mod h1:mPKfmRa823oBIgl2r20LeMSpTAteW5j7FLkc0vjmzyQ= github.com/dvsekhvalnov/jose2go v0.0.0-20170216131308-f21a8cedbbae/go.mod h1:7BvyPhdbLxMXIYTFPLsyJRFMsKmOZnQmzh6Gb+uquuM= github.com/dvyukov/go-fuzz v0.0.0-20210103155950-6a8e9d1f2415/go.mod h1:11Gm+ccJnvAhCNLlf5+cS9KjtbaD5I5zaZpFMsTHWTw= github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= @@ -692,6 +774,8 @@ github.com/ema/qdisc v0.0.0-20200603082823-62d0308e3e00 h1:0GHzegkDz/zSrt+Zph1Ou github.com/ema/qdisc v0.0.0-20200603082823-62d0308e3e00/go.mod h1:ix4kG2zvdUd8kEKSW0ZTr1XLks0epFpI4j745DXxlNE= 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/emirpasic/gods v1.12.0 h1:QAUIPSaCu4G+POclxeqb3F+WPpdKqFGlw36+yOzGlrg= +github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= github.com/envoyproxy/go-control-plane v0.0.0-20180919002855-2137d9196328/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= @@ -716,11 +800,12 @@ github.com/evanphx/json-patch v4.5.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLi github.com/evanphx/json-patch v4.9.0+incompatible h1:kLcOMZeuLAJvL2BPWLMIj5oaZQobrkAqrL+WFZwQses= github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch/v5 v5.2.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4= +github.com/evanphx/json-patch/v5 v5.5.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4= github.com/facette/natsort v0.0.0-20181210072756-2cd4dd1e2dcb/go.mod h1:bH6Xx7IW64qjjJq8M2u4dxNaBiDfKK+z/3eGDpXEQhc= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= -github.com/fatih/color v1.12.0 h1:mRhaKNwANqRgUBGKmnI5ZxEk7QXmjQeCcuYFMX2bfcc= -github.com/fatih/color v1.12.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= +github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= +github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fatih/structs v0.0.0-20180123065059-ebf56d35bba7/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo= github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= @@ -730,6 +815,7 @@ github.com/felixge/fgprof v0.9.1/go.mod h1:7/HK6JFtFaARhIljgP2IV8rJLIoHDoOYoUphs github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/felixge/httpsnoop v1.0.2 h1:+nS9g82KMXccJ/wp0zyRW9ZBHFETmMGtkk+2CTTrW4o= github.com/felixge/httpsnoop v1.0.2/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= @@ -738,8 +824,10 @@ github.com/foxcpp/go-mockdns v0.0.0-20201212160233-ede2f9158d15/go.mod h1:tPg4cp github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= github.com/frankban/quicktest v1.4.0/go.mod h1:36zfPVQyHxymz4cH7wlDmVwDrJuljRB60qkgn7rorfQ= +github.com/frankban/quicktest v1.10.0/go.mod h1:ui7WezCLWMWxVWr1GETZY3smRy0G4KWq9vcPtJmFl7Y= github.com/frankban/quicktest v1.10.2/go.mod h1:K+q6oSqb0W0Ininfk863uOk1lMy69l/P6txr3mVT54s= github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= +github.com/frankban/quicktest v1.13.0/go.mod h1:qLE0fzW0VuyUAJgPU19zByoIr0HtCHN/r/VLSOOIySU= github.com/frankban/quicktest v1.14.0 h1:+cqqvzZV87b4adx/5ayVOaYZ2CrvM4ejQvUdBzPPUss= github.com/frankban/quicktest v1.14.0/go.mod h1:NeW+ay9A/U67EYXNFA1nPE8e/tnQv/09mUdL/ijj8og= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= @@ -747,6 +835,7 @@ github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4 github.com/fsnotify/fsnotify v1.5.1 h1:mZcQUHVQUQWoPXXtuf9yuEXKudkV2sx1E06UadKWpgI= github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU= github.com/fsouza/fake-gcs-server v1.7.0/go.mod h1:5XIRs4YvwNbNoz+1JF8j6KLAyDh7RHGAyAK3EP2EsNk= +github.com/fsouza/fake-gcs-server v1.30.1 h1:OBuje/XJiwwzGOuwEhPzZ8s2gF1vDHTZq1X+AhYEqjc= github.com/fullsailor/pkcs7 v0.0.0-20190404230743-d7302db945fa/go.mod h1:KnogPXtdwXqoenmZCw6S+25EAm2MkxbG0deNDu4cbSA= github.com/fvbommel/sortorder v1.0.2 h1:mV4o8B2hKboCdkJm+a7uX/SIpZob4JzUpc5GGnM45eo= github.com/fvbommel/sortorder v1.0.2/go.mod h1:uk88iVf1ovNn1iLfgUVU2F9o5eO30ui720w+kxuqRs0= @@ -758,11 +847,24 @@ github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeME github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32/go.mod h1:GIjDIg/heH5DOkXY3YJ/wNhfHsQHoXGjl8G8amsYQ1I= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.5.0/go.mod h1:Nd6IXA8m5kNZdNEHMBd93KT+mdY3+bewLgRvmCsR2Do= +github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= +github.com/gliderlabs/ssh v0.2.2 h1:6zsha5zo/TWhRhwqCD3+EarCAgZ2yN28ipRnGPnwkI0= +github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= github.com/glinton/ping v0.1.4-0.20200311211934-5ac87da8cd96/go.mod h1:uY+1eqFUyotrQxF1wYFNtMeHp/swbYRsoGzfcPZ8x3o= github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= +github.com/go-asn1-ber/asn1-ber v1.3.1/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0= github.com/go-chi/chi v4.1.0+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= github.com/go-chi/chi/v5 v5.0.0/go.mod h1:BBug9lr0cqtdAhsu6R4AAdvufI0/XBzAQSsUqJpoZOs= +github.com/go-git/gcfg v1.5.0 h1:Q5ViNfGF8zFgyJWPqYwA7qGFoMTEiBmdlkcfRmpIMa4= +github.com/go-git/gcfg v1.5.0/go.mod h1:5m20vg6GwYabIxaOonVkTdrILxQMpEShl1xiMF4ua+E= +github.com/go-git/go-billy/v5 v5.2.0/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= +github.com/go-git/go-billy/v5 v5.3.1 h1:CPiOUAzKtMRvolEKw+bG1PLRpT7D3LIs3/3ey4Aiu34= +github.com/go-git/go-billy/v5 v5.3.1/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= +github.com/go-git/go-git-fixtures/v4 v4.2.1 h1:n9gGL1Ct/yIw+nfsfr8s4+sbhT+Ncu2SubfXjIWgci8= +github.com/go-git/go-git-fixtures/v4 v4.2.1/go.mod h1:K8zd3kDUAykwTdDCr+I0per6Y6vMiRR/nnVTBtavnB0= +github.com/go-git/go-git/v5 v5.4.2 h1:BXyZu9t0VkbiHtqrsvdq39UDhGJTl1h55VW6CSC4aY4= +github.com/go-git/go-git/v5 v5.4.2/go.mod h1:gQ1kArt6d+n+BGd+/B/I74HwRTLhth2+zti4ihgckDc= 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= @@ -778,6 +880,7 @@ github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vb github.com/go-kit/log v0.2.0 h1:7i2K3eKTos3Vc0enKCfnVcgHh2olr/MyfboYq7cAcFw= github.com/go-kit/log v0.2.0/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= github.com/go-ldap/ldap v3.0.2+incompatible/go.mod h1:qfd9rJvER9Q0/D/Sqn1DfHRoBp40uXYvFoEVrNEPqRc= +github.com/go-ldap/ldap/v3 v3.1.10/go.mod h1:5Zun81jBTabRaI8lzN7E1JjyEl1g6zI6u9pd8luAK4Q= 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= @@ -889,8 +992,12 @@ github.com/go-openapi/validate v0.19.12/go.mod h1:Rzou8hA/CBw8donlS6WNEUQupNvUZ0 github.com/go-openapi/validate v0.19.15/go.mod h1:tbn/fdOwYHgrhPBzidZfJC2MIVvs9GA7monOmWBbeCI= github.com/go-openapi/validate v0.20.1/go.mod h1:b60iJT+xNNLfaQJUqLI7946tYiFEOuE9E4k54HpKcJ0= github.com/go-openapi/validate v0.20.2/go.mod h1:e7OJoKNgd0twXZwIn0A43tHbvIcr/rZIVCbJBpTUoY0= +github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.12.1/go.mod h1:IUMDtCfWo/w/mtMfIE/IG2K+Ey3ygWanZIBtBW0W2TM= +github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= github.com/go-playground/universal-translator v0.16.0/go.mod h1:1AnU7NaIRDWWzGEKwgtJRd2xk99HeFyHw3yid4rvQIY= +github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= +github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= github.com/go-redis/redis v6.15.9+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= github.com/go-redis/redis/v8 v8.0.0-beta.10.0.20200905143926-df7fe4e2ce72/go.mod h1:CJP1ZIHwhosNYwIdaHPZK9vHsM3+roNBaZ7U9Of1DXc= github.com/go-redis/redis/v8 v8.2.3/go.mod h1:ysgGY09J/QeDYbu3HikWEIPCwaeOkuNoTgKayTEaEOw= @@ -909,6 +1016,7 @@ github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/me github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/go-test/deep v1.0.1/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/go-test/deep v1.0.2-0.20181118220953-042da051cf31/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= +github.com/go-test/deep v1.0.2/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/go-test/deep v1.0.8 h1:TDsG77qcSprGbC6vTN8OuXp5g+J+b5Pcguhf7Zt61VM= github.com/go-test/deep v1.0.8/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE= github.com/go-zookeeper/zk v1.0.2 h1:4mx0EYENAdX/B/rbunjlt5+4RTA/a9SMHBRuSKdGxPM= @@ -975,8 +1083,9 @@ github.com/gogo/status v1.0.3/go.mod h1:SavQ51ycCLnc7dGyJxp8YAmudx8xqiVrRf+6IXRs github.com/gogo/status v1.1.0 h1:+eIkrewn5q6b30y+g/BJINVVdi2xH7je5MPJ3ZPK3JA= github.com/gogo/status v1.1.0/go.mod h1:BFv9nrluPLmrS0EmGVvLaPNmRosr9KapBYd5/hpY1WM= github.com/golang-jwt/jwt v3.2.1+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= -github.com/golang-jwt/jwt/v4 v4.0.0 h1:RAqyYixv1p7uEnocuy8P1nru5wprCh/MH2BIlW5z5/o= github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= +github.com/golang-jwt/jwt/v4 v4.1.0 h1:XUgk2Ex5veyVFVeLm0xhusUTQybEbexJXrvPNOKkSY0= +github.com/golang-jwt/jwt/v4 v4.1.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang-migrate/migrate/v4 v4.7.0/go.mod h1:Qvut3N4xKWjoH3sokBccML6WyHSnggXm/DvMMnTsQIc= github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= @@ -1062,14 +1171,21 @@ github.com/google/go-jsonnet v0.17.0/go.mod h1:sOcuej3UW1vpPTZOr8L7RQimqai1a57bt github.com/google/go-querystring v0.0.0-20170111101155-53e6ce116135/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= +github.com/google/go-replayers/grpcreplay v1.1.0 h1:S5+I3zYyZ+GQz68OfbURDdt/+cSMqCK1wrvNx7WBzTE= +github.com/google/go-replayers/grpcreplay v1.1.0/go.mod h1:qzAvJ8/wi57zq7gWqaE6AwLM6miiXUQwP1S+I9icmhk= +github.com/google/go-replayers/httpreplay v1.0.0 h1:8SmT8fUYM4nueF+UnXIX8LJxNTb1vpPuknXz+yTWzL4= +github.com/google/go-replayers/httpreplay v1.0.0/go.mod h1:LJhKoTwS5Wy5Ld/peq8dFFG5OfJyHEz7ft+DsTUv25M= github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g= github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian v2.1.1-0.20190517191504-25dcb96d9e51+incompatible h1:xmapqc1AyLoB+ddYT6r04bD9lIjlOqGaREovi0SzFaE= +github.com/google/martian v2.1.1-0.20190517191504-25dcb96d9e51+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.2.1 h1:d8MncMlErDFTwQGBK1xhv026j9kqhvw1Qv9IbWT1VLQ= github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= @@ -1077,25 +1193,30 @@ github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hf 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-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200507031123-427632fa3b1c/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200615235658-03e1cf38a040/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210506205249-923b5ab0fc1a/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210715191844-86eeefc3e471/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20211008130755-947d60d73cc0 h1:zHs+jv3LO743/zFGcByu2KmpbliCU2AhjcGgrdTwSG4= github.com/google/pprof v0.0.0-20211008130755-947d60d73cc0/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/subcommands v1.0.1/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= 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.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/wire v0.5.0 h1:I7ELFeVBr3yfPIcc8+MWvrjk+3VjbcSzoXm3JVa+jD8= +github.com/google/wire v0.5.0/go.mod h1:ngWDr9Qvq3yZA10YrxfyGELY/AFWGVpy9c1LTRi1EoU= github.com/googleapis/gax-go v2.0.2+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= 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= @@ -1119,8 +1240,9 @@ github.com/gophercloud/gophercloud v0.22.0/go.mod h1:wRtmUelyIIv3CSSDI47aUwbs075 github.com/gopherjs/gopherjs v0.0.0-20180825215210-0210a2f0f73c/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gopherjs/gopherjs v0.0.0-20190430165422-3e4dfb77656c/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gopherjs/gopherjs v0.0.0-20191106031601-ce3c9ade29de h1:F7WD09S8QB4LrkEpka0dFPLSotH11HRpCsLIbIcJ7sU= github.com/gopherjs/gopherjs v0.0.0-20191106031601-ce3c9ade29de/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00 h1:l5lAOZEym3oK3SQ2HBHWsJUfbNBiTXJDeW2QDxw9AQ0= +github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= github.com/gorilla/handlers v0.0.0-20150720190736-60c7bfde3e33/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4= @@ -1135,8 +1257,13 @@ github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+ github.com/gorilla/sessions v1.2.1/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gosimple/slug v1.12.0 h1:xzuhj7G7cGtd34NXnW/yF0l+AGNfWqwgh/IXgFy7dnc= +github.com/gosimple/slug v1.12.0/go.mod h1:UiRaFH+GEilHstLUmcBgWcI42viBN7mAb818JrYOeFQ= +github.com/gosimple/unidecode v1.0.1 h1:hZzFTMMqSswvf0LBJZCZgThIZrpDHFXux9KeGmn6T/o= +github.com/gosimple/unidecode v1.0.1/go.mod h1:CP0Cr1Y1kogOtx0bJblKzsVWrqYaqfNOnHzpgWw4Awc= github.com/gotestyourself/gotestyourself v2.2.0+incompatible/go.mod h1:zZKM6oeNM8k+FRljX1mnzVYeS8wiGgQyvST1/GafPbY= github.com/grafana/dnsmasq_exporter v0.2.1-0.20211118155541-751b01d21de9 h1:/ovWD85B27b/xytKaxhP/LvXF8fxWIhEwE55mFpCQsE= github.com/grafana/dnsmasq_exporter v0.2.1-0.20211118155541-751b01d21de9/go.mod h1:Jj5TSVVJE6t8Brq/ZkUbQ1n260dilriL0tWNaHjVDUs= @@ -1188,6 +1315,10 @@ github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFb github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645/go.mod h1:6iZfnjpejD4L/4DwD7NryNaJyCQdzwWwH2MWhCA90Kw= github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed h1:5upAirOpQc1Q53c0bnx2ufif5kANL7bfZWcc6VJWJd8= github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed/go.mod h1:tMWxXQ9wFIaZeTI9F+hmhFiGpFmhOHzyShyFUhRm0H4= +github.com/hairyhenderson/go-fsimpl v0.0.0-20211102185733-857ee891b38d h1:9be+nFIZyC8Tz3T+gy4eK0wqCfXh/X9GeokwVz1zwpo= +github.com/hairyhenderson/go-fsimpl v0.0.0-20211102185733-857ee891b38d/go.mod h1:v6ot3ZgWfrsMmcbmEi3+sb0TXEaUhaYff/EtA+pyS2k= +github.com/hairyhenderson/toml v0.4.2-0.20210923231440-40456b8e66cf h1:I1sbT4ZbIt9i+hB1zfKw2mE8C12TuGxPiW7YmtLbPa4= +github.com/hairyhenderson/toml v0.4.2-0.20210923231440-40456b8e66cf/go.mod h1:jDHmWDKZY6MIIYltYYfW4Rs7hQ50oS4qf/6spSiZAxY= github.com/harlow/kinesis-consumer v0.3.1-0.20181230152818-2f58b136fee0/go.mod h1:dk23l2BruuUzRP8wbybQbPn3J7sZga2QHICCeaEy5rQ= github.com/hashicorp/consul v1.5.1 h1:p7tRmQ4m3ZMYkGQkuyjLXKbdU1weeumgZFqZOvw7o4c= github.com/hashicorp/consul v1.5.1/go.mod h1:QsmgXh2YA9Njv6y3/FHXqHYhsMye++3oBoAZ6SR8R8I= @@ -1198,8 +1329,9 @@ github.com/hashicorp/consul/api v1.7.0/go.mod h1:1NSuaUUkFaJzMasbfq/11wKYWSR67Xn github.com/hashicorp/consul/api v1.8.1/go.mod h1:sDjTOq0yUyv5G4h+BqSea7Fn6BU+XbolEz1952UB+mk= github.com/hashicorp/consul/api v1.9.1/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= github.com/hashicorp/consul/api v1.10.1/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= -github.com/hashicorp/consul/api v1.11.0 h1:Hw/G8TtRvOElqxVIhBzXciiSTbapq8hZ2XKZsXk5ZCE= github.com/hashicorp/consul/api v1.11.0/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= +github.com/hashicorp/consul/api v1.12.0 h1:k3y1FYv6nuKyNTqj6w9gXOx5r5CfLj/k/euUeBXj1OY= +github.com/hashicorp/consul/api v1.12.0/go.mod h1:6pVBMo0ebnYdt2S3H87XhekM/HHrUoTD2XXb/VrZVy0= github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/consul/sdk v0.5.0/go.mod h1:fY08Y9z5SvJqevyZNy6WWPXiG3KwBPAvlcdx16zZ0fM= @@ -1208,8 +1340,9 @@ github.com/hashicorp/consul/sdk v0.7.0/go.mod h1:fY08Y9z5SvJqevyZNy6WWPXiG3KwBPA github.com/hashicorp/consul/sdk v0.8.0 h1:OJtKBtEjboEZvG6AOUdh4Z1Zbyu0WcxQ0qatRrZHTVU= github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms= github.com/hashicorp/errwrap v0.0.0-20141028054710-7554cd9344ce/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA= 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-bexpr v0.1.0/go.mod h1:ANbpTX1oAql27TZkKVeW8p1w8NTdnyzPe/0qqPCKohU= github.com/hashicorp/go-checkpoint v0.0.0-20171009173528-1545e56e46de/go.mod h1:xIwEieBHERyEvaeKF/TcHh1Hu+lxPM+n2vT1+g9I4m4= github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= @@ -1222,13 +1355,16 @@ github.com/hashicorp/go-envparse v0.0.0-20200406174449-d9cfd743a15e/go.mod h1:/N github.com/hashicorp/go-hclog v0.0.0-20180402200405-69ff559dc25f/go.mod h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI= github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI= github.com/hashicorp/go-hclog v0.8.0/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= +github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= +github.com/hashicorp/go-hclog v0.14.1/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-hclog v0.16.2 h1:K4ev2ib4LdQETX5cSZBG0DVLk1jwGqSPXBjdah3veNs= github.com/hashicorp/go-hclog v0.16.2/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-immutable-radix v1.1.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-kms-wrapping/entropy v0.1.0/go.mod h1:d1g9WGtAunDNpek8jUIEJnBlbgKS1N2Q61QkHiZyR1g= github.com/hashicorp/go-memdb v0.0.0-20180223233045-1289e7fffe71/go.mod h1:kbfItVoBJwCfKXDXN4YoAXjxcFVZ7MRrJzyTX6H4giE= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-msgpack v0.5.4/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= @@ -1241,14 +1377,28 @@ github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+l github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/go-plugin v0.0.0-20180331002553-e8d22c780116/go.mod h1:JSqWYsict+jzcj0+xElxyrBQRPNoiWQuddnxArJ7XHQ= github.com/hashicorp/go-plugin v1.0.1/go.mod h1:++UyYGoz3o5w9ZzAdZxtQKrWWP+iqPBn3cQptSMzBuY= +github.com/hashicorp/go-plugin v1.4.3 h1:DXmvivbWD5qdiBts9TpBC7BYL1Aia5sxbRgQB+v6UZM= +github.com/hashicorp/go-plugin v1.4.3/go.mod h1:5fGEH17QVwTTcR0zV7yhDPLLmFX9YSZ38b18Udy6vYQ= github.com/hashicorp/go-retryablehttp v0.0.0-20180531211321-3b087ef2d313/go.mod h1:fXcdFsQoipQa7mwORhKad5jmDCeSy/RCGzWA08PO0lM= github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= github.com/hashicorp/go-retryablehttp v0.5.4/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= +github.com/hashicorp/go-retryablehttp v0.6.6/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= +github.com/hashicorp/go-retryablehttp v0.7.0 h1:eu1EI/mbirUgP5C8hVsTNaGZreBDlYiwC1FZWkvQPQ4= +github.com/hashicorp/go-retryablehttp v0.7.0/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= github.com/hashicorp/go-rootcerts v0.0.0-20160503143440-6bb64b370b90/go.mod h1:o4zcYY1e0GEZI6eSEr+43QDYmuGglw1qSO6qdHUHCgg= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= github.com/hashicorp/go-rootcerts v1.0.1/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= github.com/hashicorp/go-rootcerts v1.0.2 h1:jzhAVGtqPKbwpyCPELlgNWhE1znq+qwJtW5Oi2viEzc= github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= +github.com/hashicorp/go-secure-stdlib/base62 v0.1.1/go.mod h1:EdWO6czbmthiwZ3/PUsDV+UD1D5IRU4ActiaWGwt0Yw= +github.com/hashicorp/go-secure-stdlib/mlock v0.1.1 h1:cCRo8gK7oq6A2L6LICkUZ+/a5rLiRXFMf1Qd4xSwxTc= +github.com/hashicorp/go-secure-stdlib/mlock v0.1.1/go.mod h1:zq93CJChV6L9QTfGKtfBxKqD7BqqXx5O04A/ns2p5+I= +github.com/hashicorp/go-secure-stdlib/parseutil v0.1.1 h1:78ki3QBevHwYrVxnyVeaEz+7WtifHhauYF23es/0KlI= +github.com/hashicorp/go-secure-stdlib/parseutil v0.1.1/go.mod h1:QmrqtbKuxxSWTN3ETMPuB+VtEiBJ/A9XhoYGv8E1uD8= +github.com/hashicorp/go-secure-stdlib/password v0.1.1/go.mod h1:9hH302QllNwu1o2TGYtSk8I8kTAN0ca1EHpwhm5Mmzo= +github.com/hashicorp/go-secure-stdlib/strutil v0.1.1 h1:nd0HIW15E6FG1MsnArYaHfuw9C2zgzM8LxkG5Ty/788= +github.com/hashicorp/go-secure-stdlib/strutil v0.1.1/go.mod h1:gKOamz3EwoIoJq7mlMIRBpVTAUn8qPCrEclOKKWhD3U= +github.com/hashicorp/go-secure-stdlib/tlsutil v0.1.1/go.mod h1:l8slYwnJA26yBz+ErHpp2IRCLr0vuOMGBORIz4rRiAs= github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= github.com/hashicorp/go-sockaddr v1.0.2 h1:ztczhD1jLxIRjVejw8gFomI1BQZOe2WoVOu0SyteCQc= github.com/hashicorp/go-sockaddr v1.0.2/go.mod h1:rB4wwRAUzs07qva3c5SdrY/NEtAUjGlgmH/UkBUC97A= @@ -1261,6 +1411,7 @@ github.com/hashicorp/go-version v0.0.0-20170202080759-03c5bf6be031/go.mod h1:flt github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.2.1-0.20190424083514-192140e6f3e6/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.3.0 h1:McDWVJIU/y+u1BRV06dPaLfLCaT7fUTJLp5r04x7iNw= github.com/hashicorp/go-version v1.3.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= 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= @@ -1275,14 +1426,16 @@ github.com/hashicorp/hil v0.0.0-20160711231837-1e86c6b523c5/go.mod h1:KHvg/R2/dP 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/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY= +github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= github.com/hashicorp/memberlist v0.1.4/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= github.com/hashicorp/memberlist v0.1.5/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= github.com/hashicorp/memberlist v0.2.0/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= github.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= github.com/hashicorp/memberlist v0.2.3/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= -github.com/hashicorp/memberlist v0.2.4 h1:OOhYzSvFnkFQXm1ysE8RjXTHsqSRDyP4emusC9K7DYg= github.com/hashicorp/memberlist v0.2.4/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= +github.com/hashicorp/memberlist v0.3.0 h1:8+567mCcFDnS5ADl7lrpxPMWiFCElyUEeW0gtj34fMA= +github.com/hashicorp/memberlist v0.3.0/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= github.com/hashicorp/net-rpc-msgpackrpc v0.0.0-20151116020338-a14192a58a69/go.mod h1:/z+jUGRBlwVpUZfjute9jWaF6/HuhjuFQuL1YXzVD1Q= github.com/hashicorp/raft v1.0.1-0.20190409200437-d9fe23f7d472/go.mod h1:DVSAWItjLjTOkVbSpWQ0j0kUADIvDaCtBxIcbNAQLkI= github.com/hashicorp/raft-boltdb v0.0.0-20150201200839-d1e82c1ec3f1/go.mod h1:pNv7Wc3ycL6F5oOWn+tPGo2gWD4a5X+yp/ntwdKLjRk= @@ -1291,15 +1444,22 @@ github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/J github.com/hashicorp/serf v0.8.5/go.mod h1:UpNcs7fFbpKIyZaUuSW6EPiH+eZC7OuyFD+wc1oal+k= github.com/hashicorp/serf v0.9.0/go.mod h1:YL0HO+FifKOW2u1ke99DGVu1zhcpZzNwrLIqBC7vbYU= github.com/hashicorp/serf v0.9.3/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk= -github.com/hashicorp/serf v0.9.5 h1:EBWvyu9tcRszt3Bxp3KNssBMP1KuHWyO51lz9+786iM= github.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk= +github.com/hashicorp/serf v0.9.6 h1:uuEX1kLR6aoda1TBttmJQKDLZE1Ob7KN0NPdE7EtCDc= +github.com/hashicorp/serf v0.9.6/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= github.com/hashicorp/vault v0.10.3/go.mod h1:KfSyffbKxoVyspOdlaGVjIuwLobi07qD1bAbosPMpP0= github.com/hashicorp/vault-plugin-secrets-kv v0.0.0-20190318174639-195e0e9d07f1/go.mod h1:VJHHT2SC1tAPrfENQeBhLlb5FbZoKZM+oC/ROmEftz0= github.com/hashicorp/vault/api v1.0.4/go.mod h1:gDcqh3WGcR1cpF5AJz/B1UFheUEneMoIospckxBxk6Q= +github.com/hashicorp/vault/api v1.3.0 h1:uDy39PLSvy6gtKyjOCRPizy2QdFiIYSWBR2pxCEzYL8= +github.com/hashicorp/vault/api v1.3.0/go.mod h1:EabNQLI0VWbWoGlA+oBLC8PXmR9D60aUVgQGvangFWQ= github.com/hashicorp/vault/sdk v0.1.13/go.mod h1:B+hVj7TpuQY1Y/GPbCpffmgd+tSEwvhkWnjtSYCaS2M= +github.com/hashicorp/vault/sdk v0.3.0 h1:kR3dpxNkhh/wr6ycaJYqp6AFT/i2xaftbfnwZduTKEY= +github.com/hashicorp/vault/sdk v0.3.0/go.mod h1:aZ3fNuL5VNydQk8GcLJ2TV8YCRVvyaakYkhZRoVuhj0= github.com/hashicorp/vic v1.5.1-0.20190403131502-bbfe86ec9443/go.mod h1:bEpDU35nTu0ey1EXjwNwPjI9xErAsoOCmcMb9GKvyxo= github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= +github.com/hashicorp/yamux v0.0.0-20190923154419-df201c70410d h1:W+SIwDdl3+jXWeidYySAgzytE3piq6GumXeBjFBG67c= +github.com/hashicorp/yamux v0.0.0-20190923154419-df201c70410d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= github.com/hetznercloud/hcloud-go v1.32.0 h1:7zyN2V7hMlhm3HZdxOarmOtvzKvkcYKjM0hcwYMQZz0= github.com/hetznercloud/hcloud-go v1.32.0/go.mod h1:XX/TQub3ge0yWR2yHWmnDVIrB+MQbda1pHxkUmDlUME= github.com/hodgesds/perf-utils v0.0.8/go.mod h1:F6TfvsbtrF88i++hou29dTXlI2sfsJv+gRZDtmTJkAs= @@ -1356,6 +1516,8 @@ github.com/jackc/pgx v3.6.0+incompatible/go.mod h1:0ZGrqGqkRlliWnWB4zKnWtjbSWbGk github.com/jaegertracing/jaeger v1.27.0 h1:gcemni8e+twGuS0dUn3k/zKKalammUPK7mP+jpyM4e4= github.com/jaegertracing/jaeger v1.27.0/go.mod h1:2NUmMwXOSOIrx6gwCgBvnK59yVXzQiqBUfD4tGowl2E= github.com/jarcoal/httpmock v0.0.0-20180424175123-9c70cfe4a1da/go.mod h1:ks+b9deReOc7jgqp+e7LuFiCBH6Rm5hL32cLcEAArb4= +github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= +github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jcmturner/aescts/v2 v2.0.0 h1:9YKLH6ey7H4eDBXW8khjYslgyqG2xZikXP0EQFKrle8= github.com/jcmturner/aescts/v2 v2.0.0/go.mod h1:AiaICIRyfYg35RUkr8yESTqvSy7csK90qZ5xfvvsoNs= github.com/jcmturner/dnsutils/v2 v2.0.0 h1:lltnkeZGL0wILNvrNiVCR6Ro5PGU/SeBvVO/8c/iPbo= @@ -1372,6 +1534,8 @@ github.com/jefferai/jsonx v0.0.0-20160721235117-9cc31c3135ee/go.mod h1:N0t2vlmpe github.com/jessevdk/go-flags v0.0.0-20180331124232-1c38ed7ad0cc/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4= +github.com/jhump/protoreflect v1.6.0 h1:h5jfMVslIg6l29nsMs0D8Wj17RDVdNYti0vDN/PZZoE= +github.com/jhump/protoreflect v1.6.0/go.mod h1:eaTn3RZAmMBcV0fifFvlm6VHNz3wSkYyXYWUh7ymB74= github.com/jinzhu/gorm v0.0.0-20170222002820-5409931a1bb8 h1:CZkYfurY6KGhVtlalI4QwQ6T0Cu6iuY3e0x5RLu96WE= github.com/jinzhu/gorm v0.0.0-20170222002820-5409931a1bb8/go.mod h1:Vla75njaFJ8clLU1W44h34PjIkijhjHIYnZxMqCdxqo= github.com/jinzhu/inflection v0.0.0-20170102125226-1c35d901db3d h1:jRQLvyVGL+iVtDElaEIDdKwpPqUIZJfzkNLV34htpEc= @@ -1387,8 +1551,11 @@ github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGw github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/joefitzgerald/rainbow-reporter v0.1.0/go.mod h1:481CNgqmVHQZzdIbN52CupLJyoVwB10FQ/IQlF1pdL8= github.com/joeshaw/multierror v0.0.0-20140124173710-69b34d4ec901/go.mod h1:Z86h9688Y0wesXCyonoVr47MasHilkuLMqGhRZ4Hpak= -github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc= +github.com/johannesboyne/gofakes3 v0.0.0-20210819161434-5c8dfcfe5310 h1:CwSccv4SFVzhShEoWx3W4dyiWHwvLEL3lJbw+YIrQYg= +github.com/johannesboyne/gofakes3 v0.0.0-20210819161434-5c8dfcfe5310/go.mod h1:LIAXxPvcUXwOcTIj9LSNSUpE9/eMHalTWxsP/kmWxQI= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= +github.com/joho/godotenv v1.4.0 h1:3l4+N6zfMWnkbPEXKng2o2/MR5mSwTrBih4ZEkkz1lg= +github.com/joho/godotenv v1.4.0/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= 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/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= @@ -1438,18 +1605,23 @@ github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0Lh github.com/karrick/godirwalk v1.16.1 h1:DynhcF+bztK8gooS0+NDJFrdNZjJ3gzVzC545UNA9iw= github.com/karrick/godirwalk v1.16.1/go.mod h1:j4mkqPuvaLI8mp1DroR3P6ad7cyYd4c1qeJ3RV7ULlk= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= +github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= +github.com/kevinburke/ssh_config v1.1.0 h1:pH/t1WS9NzT8go394IqZeJTMHVm6Cr6ZJ6AQ+mdNo/o= +github.com/kevinburke/ssh_config v1.1.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= github.com/keybase/go-crypto v0.0.0-20180614160407-5114a9a81e1b/go.mod h1:ghbZscTyKdM07+Fw3KSi0hcJm+AlEUWj8QLlPtijN/M= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= 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.5/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.10.10/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.0/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.12/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.13/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.13.1/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= +github.com/klauspost/compress v1.13.5/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= github.com/klauspost/compress v1.13.6 h1:P76CopJELS0TiO2mebmnzgWaajssP/EszplttgQxcgc= github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= github.com/klauspost/cpuid v1.2.3/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= @@ -1491,6 +1663,7 @@ github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0/go.mod h1:vmVJ0l/dxyfGW6Fm github.com/leanovate/gopter v0.2.4/go.mod h1:gNcbPWNEWRe4lm+bycKqxUYoH5uoVje5SkOJ3uoLer8= github.com/leesper/go_rng v0.0.0-20190531154944-a612b043e353/go.mod h1:N0SVk0uhy+E1PZ3C9ctsPRlvOPAFPkCNlcPBDkt0N3U= github.com/leodido/go-urn v1.1.0/go.mod h1:+cyI34gQWZcE1eQU7NVgKkkzdXDQHr1dBMtdAPozLkw= +github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= github.com/leodido/ragel-machinery v0.0.0-20181214104525-299bdde78165 h1:bCiVCRCs1Heq84lurVinUPy19keqGEe4jh5vtK37jcg= github.com/leodido/ragel-machinery v0.0.0-20181214104525-299bdde78165/go.mod h1:WZxr2/6a/Ar9bMDc2rN/LJrE/hF6bXE4LPyDSIxwAfg= github.com/lib/pq v0.0.0-20150723085316-0dad96c0b94f/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= @@ -1498,8 +1671,9 @@ github.com/lib/pq v0.0.0-20180523175426-90697d60dd84/go.mod h1:5WUZQaWbwv1U+lTRe github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.3.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/lib/pq v1.10.1 h1:6VXZrLU0jHBYyAqrSPa+MgPfnSvTPuMgK+k0o5kVFWo= github.com/lib/pq v1.10.1/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/lib/pq v1.10.2 h1:AqzbZs4ZoCBp+GtejcpCpcxM3zlSMx29dXbUSeVtJb8= +github.com/lib/pq v1.10.2/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de h1:9TO3cAIGXtEhnIaL+V+BEER86oLrvS+kWobKpbJuye0= github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= @@ -1533,17 +1707,23 @@ github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJ github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= github.com/marstr/guid v1.1.0/go.mod h1:74gB1z2wpxxInTG6yaqA7KrtM0NZ+RbrcqDvYHefzho= +github.com/matryer/is v1.2.0 h1:92UTHpy8CDwaJ08GqLDzhhuixiBUUD1p3AU6PHddz4A= +github.com/matryer/is v1.2.0/go.mod h1:2fLPjFQM9rhQ15aVEtbuwhJinnOqrmgXPNdZsdwlWXA= github.com/matryer/moq v0.0.0-20190312154309-6cfb0558e1bd/go.mod h1:9ELz6aaclSIGnZBoaSLZ3NAl1VTufbOrXBPvtcy6WiQ= +github.com/mattdurham/gomplate/v3 v3.10.1-0.20220204190650-af65008b9bb1 h1:ks59H2rltT3Jepz1ea6YQsiM7/0t9lOnunQ7wMOA/hM= +github.com/mattdurham/gomplate/v3 v3.10.1-0.20220204190650-af65008b9bb1/go.mod h1:ytaz30hj1x0cltIl2cjkzI65ijBwKwitvKt+3rsWbRc= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.8 h1:c1ghPdyEDarC70ftn0y+A/Ee++9zz8ljHG1b13eJ0s8= github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.9 h1:sqDoxXbdeALODt0DAeJCVp38ps9ZogZEAXjus69YV3U= +github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-ieproxy v0.0.0-20190610004146-91bb50d98149/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc= github.com/mattn/go-ieproxy v0.0.0-20190702010315-6dee0af9227d/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc= github.com/mattn/go-ieproxy v0.0.0-20191113090002-7c0f6868bffe/go.mod h1:pYabZ6IHcRpFh7vIaLfK7rdcWgFEb3SFJ6/gNWuh88E= +github.com/mattn/go-ieproxy v0.0.1 h1:qiyop7gCflfhwCzGyeT0gro3sF9AIg9HU98JORTkqfI= github.com/mattn/go-ieproxy v0.0.1/go.mod h1:pYabZ6IHcRpFh7vIaLfK7rdcWgFEb3SFJ6/gNWuh88E= 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= @@ -2044,12 +2224,18 @@ github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/cors v1.8.0 h1:P2KMzcFwrPoSjkF1WLRPsp3UMLyql8L4v9hQpVeK5so= github.com/rs/cors v1.8.0/go.mod h1:EBwu+T5AvHOcXwvZIkQFjUN6s8Czyqw12GL/Y0tUyRM= github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= +github.com/rs/xid v1.3.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= +github.com/rs/zerolog v1.26.1 h1:/ihwxqH+4z8UxyI70wM1z9yCvkWcfz/a3mj48k/Zngc= +github.com/rs/zerolog v1.26.1/go.mod h1:/wSSJWX7lVrsOwlbyTRSOJvqRlc+WjWlfes+CiJ+tmc= 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/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/ryanuber/go-glob v0.0.0-20170128012129-256dc444b735/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= +github.com/ryanuber/go-glob v1.0.0 h1:iQh3xXAumdQ+4Ufa5b25cRpC5TYKlno6hsv6Cb3pkBk= github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= +github.com/ryszard/goskiplist v0.0.0-20150312221310-2dfbae5fcf46 h1:GHRpF1pTW19a8tTFrMLUcfWwyC0pnifVo2ClaLq+hP8= +github.com/ryszard/goskiplist v0.0.0-20150312221310-2dfbae5fcf46/go.mod h1:uAQ5PCi+MFsC7HjREoAz1BU+Mq60+05gifQSsHSDG/8= github.com/safchain/ethtool v0.0.0-20190326074333-42ed695e3de8/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4= github.com/safchain/ethtool v0.0.0-20200218184317-f459e2d13664/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4= github.com/safchain/ethtool v0.1.0 h1:SsRnt87qssm3RltLJze6kM+4fs32twq6mZEcBxbDMVg= @@ -2075,8 +2261,12 @@ github.com/sercand/kuberesolver v2.1.0+incompatible/go.mod h1:lWF3GL0xptCB/vCiJP github.com/sercand/kuberesolver v2.4.0+incompatible h1:WE2OlRf6wjLxHwNkkFLQGaZcVLEXjMjBPjjEU5vksH8= github.com/sercand/kuberesolver v2.4.0+incompatible/go.mod h1:lWF3GL0xptCB/vCiJPl/ZshwPsX/n4Y7u0CW9E7aQIQ= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= -github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= 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/shabbyrobe/gocovmerge v0.0.0-20180507124511-f6ea450bfb63/go.mod h1:n+VKSARF5y/tS9XFSP7vWDfS+GUC5vs/YT7M5XDTUEM= +github.com/shabbyrobe/gocovmerge v0.0.0-20190829150210-3e036491d500 h1:WnNuhiq+FOY3jNj6JXFT+eLN3CQ/oPIsDPRanvwsmbI= +github.com/shabbyrobe/gocovmerge v0.0.0-20190829150210-3e036491d500/go.mod h1:+njLrG5wSeoG4Ds61rFgEzKvenR2UHbjMoDHsczxly0= github.com/shirou/gopsutil v0.0.0-20181107111621-48177ef5f880/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= github.com/shirou/gopsutil v2.20.8+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= github.com/shirou/gopsutil v2.20.9+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= @@ -2133,6 +2323,8 @@ github.com/soundcloud/go-runit v0.0.0-20150630195641-06ad41a06c4a/go.mod h1:LeFC github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/afero v1.2.0/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= +github.com/spf13/afero v1.2.1/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4= github.com/spf13/afero v1.3.4/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= @@ -2251,12 +2443,16 @@ github.com/uber/jaeger-lib v2.4.1+incompatible h1:td4jdvLcExb4cBISKIpHuGoVXh+dVK github.com/uber/jaeger-lib v2.4.1+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= +github.com/ugorji/go v1.2.6/go.mod h1:anCg0y61KIhDlPZmnH+so+RQbysYVyDko0IMgJv0Nn0= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= +github.com/ugorji/go/codec v1.2.6 h1:7kbGefxLoDBuYXOms4yD7223OpNMMPNPZxXk5TvFcyQ= +github.com/ugorji/go/codec v1.2.6/go.mod h1:V6TCNZ4PHqoHGFZuSG1W8nrCzzdgA2DozYxWFFpvxTw= github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/urfave/cli v1.22.4/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= @@ -2292,6 +2488,9 @@ github.com/willf/bitset v1.1.11/go.mod h1:83CECat5yLh5zVOf4P1ErAgKA5UDvKtgyUABdr github.com/wvanbergen/kafka v0.0.0-20171203153745-e2edea948ddf/go.mod h1:nxx7XRXbR9ykhnC8lXqQyJS0rfvJGxKyKw/sT1YOttg= github.com/wvanbergen/kazoo-go v0.0.0-20180202103751-f72d8611297a/go.mod h1:vQQATAGxVK20DC1rRubTJbZDDhhpA4QfU02pMdPxGO4= github.com/xanzy/go-gitlab v0.15.0/go.mod h1:8zdQa/ri1dfn8eS3Ir1SyfvOKlw7WBJ8DVThkpGiXrs= +github.com/xanzy/ssh-agent v0.3.0/go.mod h1:3s9xbODqPuuhK9JV1R321M/FlMZSBvE5aY6eAcqrDh0= +github.com/xanzy/ssh-agent v0.3.1 h1:AmzO1SSWxw73zxFZPRwaMN1MohDw8UyHnmuxyceTEGo= +github.com/xanzy/ssh-agent v0.3.1/go.mod h1:QIE4lCeL7nkC25x+yA3LBIYfwCc1TFziCtG7cBAac6w= github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c= github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= github.com/xdg-go/scram v1.0.2 h1:akYIkZ28e6A96dkWNJQu3nmCzH3YfwMPQExUYDaRv7w= @@ -2329,6 +2528,8 @@ github.com/yuin/gopher-lua v0.0.0-20200816102855-ee81675732da/go.mod h1:E1AXubJB github.com/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43/go.mod h1:aX5oPXxHm3bOH+xeAttToC8pqch2ScQN/JoXYupl6xs= github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50/go.mod h1:NUSPSUX/bi6SeDMUh6brw0nXpxHnc96TguQh0+r/ssA= github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f/go.mod h1:GlGEuHIJweS1mbCqG+7vt2nvWLzLLnRHbXz5JKd/Qbg= +github.com/zealic/xignore v0.3.3 h1:EpLXUgZY/JEzFkTc+Y/VYypzXtNz+MSOMVCGW5Q4CKQ= +github.com/zealic/xignore v0.3.3/go.mod h1:lhS8V7fuSOtJOKsvKI7WfsZE276/7AYEqokv3UiqEAU= gitlab.com/nyarla/go-crypt v0.0.0-20160106005555-d9a5dc2b789b/go.mod h1:T3BPAOm2cqquPa0MKWeNkmOM5RQsRhkrwMWonFMN7fE= go.elastic.co/apm v1.5.0/go.mod h1:OdB9sPtM6Vt7oz3VXt7+KR96i9li74qrxBGHTQygFvk= go.elastic.co/apm v1.11.0/go.mod h1:qoOSi09pnzJDh5fKnfY7bPmQgl8yl2tULdOu03xhui0= @@ -2342,6 +2543,7 @@ go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.5-0.20200615073812-232d8fc87f50/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= +go.etcd.io/bbolt v1.3.6 h1:/ecaJf0sk1l4l6V4awd65v2C3ILy7MSj+s/x1ADCIMU= go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= go.etcd.io/etcd v0.0.0-20190709142735-eb7dd97135a5/go.mod h1:N0RPWo9FXJYZQI4BTkDtQylrstIigYHeR18ONnyTufk= go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= @@ -2378,6 +2580,7 @@ go.mongodb.org/mongo-driver v1.5.3/go.mod h1:gRXCHX4Jo7J0IJ1oDQyUxF7jfy19UfxniMS go.mongodb.org/mongo-driver v1.7.1 h1:jwqTeEM3x6L9xDXrCxN0Hbg7vdGfPBOTIkr0+/LYZDA= go.mongodb.org/mongo-driver v1.7.1/go.mod h1:Q4oFMbo1+MSNqICAdYMlC/zSTrwCogR4R8NzkI+yfU8= go.mozilla.org/pkcs7 v0.0.0-20200128120323-432b2356ecb1/go.mod h1:SNgMg+EgDFwmvSmLRTNKC5fegJjB7v23qTQ0XLGUNHk= +go.opencensus.io v0.15.0/go.mod h1:UffZAU+4sDEINUGP/B7UfBBkq4fqLu9zXAX7ke6CHW0= go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= @@ -2386,6 +2589,7 @@ go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +go.opencensus.io v0.22.6/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opentelemetry.io/collector/model v0.30.0/go.mod h1:PcHNnM+RUl0uD8VkSn93PO78N7kQYhfqpI/eki57pl4= @@ -2435,6 +2639,8 @@ go.uber.org/zap v1.14.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.14.1/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc= go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= 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= +go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= go.uber.org/zap v1.19.1 h1:ue41HOKd1vGURxrmeKIgELGb3jPW9DMUDGtsinblHwI= go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= go4.org/intern v0.0.0-20210108033219-3eb7198706b2 h1:VFTf+jjIgsldaz/Mr00VaCSswHJrI2hIjQygE/W4IMg= @@ -2442,6 +2648,8 @@ go4.org/intern v0.0.0-20210108033219-3eb7198706b2/go.mod h1:vLqJ+12kCw61iCWsPto0 go4.org/unsafe/assume-no-moving-gc v0.0.0-20201222175341-b30ae309168e/go.mod h1:FftLjUGFEDu5k8lt0ddY+HcrH/qU/0qk+H8j9/nTl3E= go4.org/unsafe/assume-no-moving-gc v0.0.0-20201222180813-1025295fd063 h1:1tk03FUNpulq2cuWpXZWj649rwJpk0d20rxWiopKRmc= go4.org/unsafe/assume-no-moving-gc v0.0.0-20201222180813-1025295fd063/go.mod h1:FftLjUGFEDu5k8lt0ddY+HcrH/qU/0qk+H8j9/nTl3E= +gocloud.dev v0.24.0 h1:cNtHD07zQQiv02OiwwDyVMuHmR7iQt2RLkzoAgz7wBs= +gocloud.dev v0.24.0/go.mod h1:uA+als++iBX5ShuG4upQo/3Zoz49iIPlYUWHV5mM8w8= golang.org/x/crypto v0.0.0-20171113213409-9f005a07e0d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180505025534-4ec37c66abab/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180608092829-8ac0e0d97ce4/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -2449,6 +2657,7 @@ golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnf golang.org/x/crypto v0.0.0-20181009213950-7c1a557ab941/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/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-20190320223903-b7391e95e576/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= @@ -2482,15 +2691,19 @@ golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20201112155050-0c6587e931a9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201117144127-c1f2f97bffc9/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20201208171446-5f87f3452ae9/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20201216223049-8b5274cf687f/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/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-20210314154223-e6e6c4f2bb5b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= 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-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20210920023735-84f357641f63 h1:kETrAMYZq6WVGPa8IIixL0CaEcIUNi+1WX7grUoi3y8= golang.org/x/crypto v0.0.0-20210920023735-84f357641f63/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20211215165025-cf75a172585e h1:1SzTfNOXwIS2oWiMF+6qu0OUDKb0dauo6MoDUQyu+yU= +golang.org/x/crypto v0.0.0-20211215165025-cf75a172585e/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -2536,7 +2749,9 @@ golang.org/x/mod v0.3.1-0.20200828183125-ce943fd02449/go.mod h1:s0Qsj1ACt9ePp/hM golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180530234432-1e491301e022/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= 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= @@ -2550,6 +2765,7 @@ golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/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-20190310074541-c10a0554eabf/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-20190320064053-1272bf9dcd53/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190403144856-b630fd6fe46b/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -2606,7 +2822,9 @@ golang.org/x/net v0.0.0-20210224082022-3d97a244fca7/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210324051636-2c4c8ecb7826/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= +golang.org/x/net v0.0.0-20210326060303-6b1517762897/go.mod h1:uSPa2vr4CLtc/ILN5odXGNXS6mhrKVzTaCXzk9m6W3k= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= @@ -2618,8 +2836,8 @@ golang.org/x/net v0.0.0-20210825183410-e898025ed96a/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20210903162142-ad29c8ab022f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210917221730-978cfadd31cf/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211020060615-d418f374d309/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211111160137-58aab5ef257a h1:c83jeVQW0KGKNaKBRfelNYNHaev+qawl9yaA825s8XE= -golang.org/x/net v0.0.0-20211111160137-58aab5ef257a/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211209124913-491a49abca63 h1:iocB37TsdFuN6IBRZ+ry36wrkoV51/tl5vOWqkcPGvY= +golang.org/x/net v0.0.0-20211209124913-491a49abca63/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/oauth2 v0.0.0-20170807180024-9a379c6b3e95/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181106182150-f42d05182288/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -2631,6 +2849,7 @@ golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4Iltr golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210126194326-f9ce19ea3013/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210210192628-66670185b0cd/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= @@ -2774,6 +2993,7 @@ golang.org/x/sys v0.0.0-20210123111255-9b0068b26619/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210216163648-f7da38b97c65/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210223095934-7937bea0104d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -2786,6 +3006,7 @@ golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210502180810-71e4cd670f79/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210503080704-8803ae5d1324/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-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -2800,8 +3021,10 @@ golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210816074244-15123e1e1f71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210831042530-f4d43177bf5e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210906170528-6f6e22806c34/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210917161153-d61c044b1678/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211020174200-9d6173849985/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211023085530-d6a326fbbf70/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -2811,8 +3034,8 @@ golang.org/x/sys v0.0.0-20211117180635-dee7805ff2e1/go.mod h1:oPkhp1MJrh7nUepCBc 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-20210615171337-6886f2dfbf5b h1:9zKuko04nR4gjZ4+DNjHqRlAJqbJETHwiNKDqTfOjfE= -golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.0.0-20210916214954-140adaaadfaf h1:Ihq/mm/suC88gF8WFcVwk+OV6Tq+wyA1O0E5UEvDglI= +golang.org/x/term v0.0.0-20210916214954-140adaaadfaf/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -2846,6 +3069,7 @@ golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20190125232054-d66bd3c5d5a6/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/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-20190308174544-00c44ba9c14f/go.mod h1:25r3+/G6/xytQM8iWZKq3Hn0kr0rgFKPUNVEL/dr3z4= 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= @@ -2853,6 +3077,7 @@ golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3 golang.org/x/tools v0.0.0-20190329151228-23e29df326fe/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190416151739-9c9e1878f421/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190420181800-aa740d480789/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190422233926-fe54fb35175b/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190425222832-ad9eeb80039a/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= @@ -2867,6 +3092,7 @@ golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190706070813-72ffa07ba3db/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= golang.org/x/tools v0.0.0-20190813034749-528a2984e271/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190829051458-42f498d34c4d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190920225731-5eefd052ad72/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -2911,8 +3137,6 @@ golang.org/x/tools v0.0.0-20200522201501-cb1345f3a375/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20200616133436-c1934b75d054/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/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-20200626171337-aa94e735be7f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200706234117-b22de6825cf7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200721032237-77f530d86f9a/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= @@ -2926,6 +3150,7 @@ golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= @@ -2973,6 +3198,7 @@ google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz513 google.golang.org/api v0.32.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= +google.golang.org/api v0.37.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= google.golang.org/api v0.39.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= @@ -2984,10 +3210,12 @@ google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59t google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= +google.golang.org/api v0.52.0/go.mod h1:Him/adpjt0sxtkWViy0b6xyKW/SD71CwdJ7HqJo7SrU= google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= +google.golang.org/api v0.58.0/go.mod h1:cAbP2FsxoGVNwtgNAmmn3y5G1TWAiVYRmg4yku3lv+E= google.golang.org/api v0.59.0 h1:fPfFO7gttlXYo2ALuD3HxJzh8vaF++4youI0BkFL6GE= google.golang.org/api v0.59.0/go.mod h1:sT2boj7M9YJxZzgeZqXogmhfmRWDtPzT31xkieUbuZU= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= @@ -3001,6 +3229,7 @@ google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCID google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/cloud v0.0.0-20151119220103-975617b05ea8/go.mod h1:0H1ncTHf11KCFhTc/+EFRbzSCOZx+VUbRMk55Yv5MYk= +google.golang.org/genproto v0.0.0-20170818010345-ee236bd376b0/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180518175338-11a468237815/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180608181217-32ee49c4dd80/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= @@ -3040,8 +3269,6 @@ google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1m google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20200527145253-8367513e4ece/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -google.golang.org/genproto v0.0.0-20200626011028-ee7919e894b5/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200707001353-8e8330bf89df/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200710124503-20a17af7bd0e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200724131911-43cab4749ae7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= @@ -3055,6 +3282,8 @@ google.golang.org/genproto v0.0.0-20201110150050-8816d57aaa9a/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210126160654-44e461bb6506/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= @@ -3063,28 +3292,35 @@ google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= google.golang.org/genproto v0.0.0-20210429181445-86c259c2b4ab/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= +google.golang.org/genproto v0.0.0-20210517163617-5e0236093d7a/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210721163202-f1cecdd8b78a/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210722135532-667f2b7c528f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210825212027-de86158e7fda/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210917145530-b395a37504d4/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211008145708-270636b82663/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211016002631-37fc39342514/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211020151524-b7c3a969101a/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211112145013-271947fe86fd h1:8jqRgiTTWyKMDOM2AvhjA5dZLBSKXg1yFupPRBV/4fQ= google.golang.org/genproto v0.0.0-20211112145013-271947fe86fd/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/grpc v0.0.0-20160317175043-d3ddb4469d5a/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v0.0.0-20180920234847-8997b5fa0873/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio= google.golang.org/grpc v1.0.5/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= +google.golang.org/grpc v1.8.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.12.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= @@ -3194,9 +3430,12 @@ gopkg.in/rethinkdb/rethinkdb-go.v6 v6.2.1/go.mod h1:WbjuEoo1oadwzQ4apSDU+JTvmllE gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/square/go-jose.v2 v2.5.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/square/go-jose.v2 v2.6.0 h1:NGk74WTnPKBNUhNzQX7PYcTLUjoq7mzKk2OKbvwk2iI= +gopkg.in/square/go-jose.v2 v2.6.0/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/tomb.v1 v1.0.0-20140529071818-c131134a1947/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= 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/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= @@ -3276,6 +3515,8 @@ modernc.org/mathutil v1.1.1/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6 modernc.org/memory v1.0.1/go.mod h1:NSjvC08+g3MLOpcAxQbdctcThAEX4YlJ20WWHYEhvRg= modernc.org/sqlite v1.7.4/go.mod h1:xse4RHCm8Fzw0COf5SJqAyiDrVeDwAQthAS1V/woNIA= modernc.org/tcl v1.4.1/go.mod h1:8YCvzidU9SIwkz7RZwlCWK61mhV8X9UwfkRDRp7y5e0= +nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= +nhooyr.io/websocket v1.8.7/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= diff --git a/pkg/config/config.go b/pkg/config/config.go index 8f23089c3522..e47d2b9f49ab 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -221,7 +221,7 @@ func (c *Config) RegisterFlags(f *flag.FlagSet) { func LoadFile(filename string, expandEnvVars bool, c *Config) error { buf, err := ioutil.ReadFile(filename) if err != nil { - return errors.Wrap(err, "error reading config file") + return fmt.Errorf("error reading config file %w", err) } return LoadBytes(buf, expandEnvVars, c) } @@ -262,9 +262,24 @@ func LoadRemote(url string, expandEnvVars bool, c *Config) error { } // LoadDynamicConfiguration is used to load configuration from a variety of sources using -// ConfigLoader, this is a templated approach -func LoadDynamicConfiguration(url string, _ bool, c *Config, fs *flag.FlagSet) error { - // will be filled in by future pr +// dynamic loader, this is a templated approach +func LoadDynamicConfiguration(url string, expandvar bool, c *Config) error { + if expandvar { + return errors.New("expand var is not supported when using dynamic configuration, use gomplate env instead") + } + cmf, err := NewDynamicLoader() + if err != nil { + return err + } + err = cmf.LoadConfigByPath(url) + if err != nil { + return err + } + + err = cmf.ProcessConfigs(c) + if err != nil { + return fmt.Errorf("error processing config templates %w", err) + } return nil } @@ -311,11 +326,10 @@ func Load(fs *flag.FlagSet, args []string) (*Config, error) { if features.Enabled(fs, featRemoteConfigs) { return LoadRemote(url, expand, c) } - if features.Enabled(fs, featDynamicConfig) { - if !features.Enabled(fs, featIntegrationsNext) { - panic("integrations-next must be enabled for dynamic configuration to work") - } - return LoadDynamicConfiguration(url, expand, c, fs) + if features.Enabled(fs, featDynamicConfig) && !features.Enabled(fs, featIntegrationsNext) { + return fmt.Errorf("integrations-next must be enabled for dynamic configuration to work") + } else if features.Enabled(fs, featDynamicConfig) { + return LoadDynamicConfiguration(url, expand, c) } return LoadFile(url, expand, c) }) @@ -327,12 +341,15 @@ func load(fs *flag.FlagSet, args []string, loader func(string, bool, *Config) er var ( cfg = DefaultConfig - printVersion bool - file string - configExpandEnv bool + printVersion bool + file string + dynamicConfigPath string + configExpandEnv bool ) fs.StringVar(&file, "config.file", "", "configuration file to load") + fs.StringVar(&dynamicConfigPath, "config.dynamic-config-path", "", "dynamic configuration path that points to a single configuration file supports file:// or s3:// protocols. Must be enabled by -enable-features=dynamic-config,integrations-next") + fs.BoolVar(&printVersion, "version", false, "Print this build's version information") fs.BoolVar(&configExpandEnv, "config.expand-env", false, "Expands ${var} in config according to the values of the environment variables.") cfg.RegisterFlags(fs) @@ -347,7 +364,14 @@ func load(fs *flag.FlagSet, args []string, loader func(string, bool, *Config) er os.Exit(0) } - if file == "" { + if features.Enabled(fs, featDynamicConfig) { + if dynamicConfigPath == "" { + return nil, fmt.Errorf("-config.dynamic-config-path flag required when using dynamic configuration") + } else if err := loader(dynamicConfigPath, configExpandEnv, &cfg); err != nil { + return nil, fmt.Errorf("error loading dynamic configuration file %s: %w", dynamicConfigPath, err) + } + + } else if file == "" { return nil, fmt.Errorf("-config.file flag required") } else if err := loader(file, configExpandEnv, &cfg); err != nil { return nil, fmt.Errorf("error loading config file %s: %w", file, err) @@ -365,12 +389,9 @@ func load(fs *flag.FlagSet, args []string, loader func(string, bool, *Config) er if features.Enabled(fs, featIntegrationsNext) { version = integrationsVersion2 } - // This is due to an odd interaction between dynamic loading and v2 integrations feature, if dynamic loading - // is enabled the cfg version is already set and this will actually override it - if cfg.Integrations.version != integrationsVersion2 && !features.Enabled(fs, featDynamicConfig) { - if err := cfg.Integrations.setVersion(version); err != nil { - return nil, fmt.Errorf("error loading config file %s: %w", file, err) - } + + if err := cfg.Integrations.setVersion(version); err != nil { + return nil, fmt.Errorf("error loading config file %s: %w", file, err) } // Finally, apply defaults to config that wasn't specified by file or flag diff --git a/pkg/config/config_test.go b/pkg/config/config_test.go index 2b472735fa7d..ee282211453b 100644 --- a/pkg/config/config_test.go +++ b/pkg/config/config_test.go @@ -7,6 +7,8 @@ import ( "testing" "time" + "github.com/stretchr/testify/assert" + "github.com/grafana/agent/pkg/metrics" "github.com/grafana/agent/pkg/metrics/instance" "github.com/grafana/agent/pkg/util" @@ -428,3 +430,9 @@ metrics: require.Equal(t, "verysecret", cfg.Metrics.ServiceConfig.Lifecycler.RingConfig.KVStore.Consul.ACLToken) require.Equal(t, "verysecret", cfg.Metrics.ServiceConfig.Lifecycler.RingConfig.KVStore.Etcd.Password) } + +func TestLoadDynamicConfigurationExpandError(t *testing.T) { + err := LoadDynamicConfiguration("", true, nil) + assert.Error(t, err) + assert.True(t, strings.Contains(err.Error(), "expand var is not supported when using dynamic configuration, use gomplate env instead")) +} diff --git a/pkg/config/dynamicconfig.go b/pkg/config/dynamicconfig.go new file mode 100644 index 000000000000..16d2a91d0fe1 --- /dev/null +++ b/pkg/config/dynamicconfig.go @@ -0,0 +1,25 @@ +package config + +// LoaderConfig is used by dynamic configuration +type LoaderConfig struct { + // Sources is used to define sources for variables using gomplate + Sources []Datasource `yaml:"datasources"` + + // TemplatePaths is the "directory" to look for templates in, they will be found and matched to configs but various + // naming conventions. They can be S3/gcp, or file based resources. The directory structure is NOT walked. + TemplatePaths []string `yaml:"template_paths"` + + AgentFilter string `yaml:"agent_filter,omitempty"` + ServerFilter string `yaml:"server_filter,omitempty"` + MetricsFilter string `yaml:"metrics_filter,omitempty"` + MetricsInstanceFilter string `yaml:"metrics_instance_filter,omitempty"` + IntegrationsFilter string `yaml:"integrations_filter,omitempty"` + LogsFilter string `yaml:"logs_filter,omitempty"` + TracesFilter string `yaml:"traces_filter,omitempty"` +} + +// Datasource is used for gomplate and can be used for a variety of resources. +type Datasource struct { + Name string `yaml:"name"` + URL string `yaml:"url"` +} diff --git a/pkg/config/dynamicloader.go b/pkg/config/dynamicloader.go new file mode 100644 index 000000000000..20437d4e9f56 --- /dev/null +++ b/pkg/config/dynamicloader.go @@ -0,0 +1,363 @@ +package config + +import ( + "context" + "fmt" + "io/fs" + "io/ioutil" + "net/url" + "path/filepath" + "strings" + + v2 "github.com/grafana/agent/pkg/integrations/v2" + "github.com/grafana/agent/pkg/logs" + "github.com/grafana/agent/pkg/metrics" + "github.com/grafana/agent/pkg/metrics/instance" + "github.com/grafana/agent/pkg/traces" + "github.com/hairyhenderson/go-fsimpl" + "github.com/hairyhenderson/go-fsimpl/blobfs" + "github.com/hairyhenderson/go-fsimpl/filefs" + "github.com/hairyhenderson/gomplate/v3/data" + "github.com/hairyhenderson/gomplate/v3/loader" + "github.com/hashicorp/go-multierror" + "github.com/weaveworks/common/server" + "gopkg.in/yaml.v2" +) + +// DynamicLoader is used to load configs from a variety of sources and squash them together. +// This is used by the dynamic configuration feature to load configurations from a set of templates and then run them through +// gomplate producing an end result. +type DynamicLoader struct { + loader *loader.ConfigLoader + mux fsimpl.FSMux + cfg *LoaderConfig +} + +// NewDynamicLoader instantiates a new DynamicLoader. +func NewDynamicLoader() (*DynamicLoader, error) { + return &DynamicLoader{ + mux: newFSProvider(), + }, nil +} + +// LoadConfig loads an already created LoaderConfig into the DynamicLoader. +func (c *DynamicLoader) LoadConfig(cfg LoaderConfig) error { + sources := make(map[string]*data.Source) + for _, v := range cfg.Sources { + sourceURL, err := url.Parse(v.URL) + if err != nil { + return err + } + sources[v.Name] = &data.Source{ + URL: sourceURL, + Alias: v.Name, + } + } + // Set Defaults + if cfg.IntegrationsFilter == "" { + cfg.IntegrationsFilter = "integrations-*.yml" + } + if cfg.AgentFilter == "" { + cfg.AgentFilter = "agent-*.yml" + } + if cfg.ServerFilter == "" { + cfg.ServerFilter = "server-*.yml" + } + if cfg.MetricsFilter == "" { + cfg.MetricsFilter = "metrics-*.yml" + } + if cfg.MetricsInstanceFilter == "" { + cfg.MetricsInstanceFilter = "metrics_instances-*.yml" + } + if cfg.LogsFilter == "" { + cfg.LogsFilter = "logs-*.yml" + } + if cfg.TracesFilter == "" { + cfg.TracesFilter = "traces-*.yml" + } + cl := loader.NewConfigLoader(context.Background(), sources) + c.loader = cl + c.cfg = &cfg + return nil +} + +// LoadConfigByPath creates a config based on a path. +func (c *DynamicLoader) LoadConfigByPath(path string) error { + var buf []byte + var err error + switch { + case strings.HasPrefix(path, "file://"): + // It takes some work arounds to parse all windows paths as url so treating it differently now is easier + // otherwise we could parse path and then pivot + stripPath := strings.ReplaceAll(path, "file://", "") + buf, err = ioutil.ReadFile(stripPath) + if err != nil { + return err + } + case strings.HasPrefix(path, "s3://"): + blobURL, err := url.Parse(path) + if err != nil { + return err + } + buf, err = data.ReadBlob(*blobURL) + if err != nil { + return err + } + default: + return fmt.Errorf("config path must start with file:// or s3://, not %s", path) + } + + cl := &LoaderConfig{} + err = yaml.Unmarshal(buf, cl) + if err != nil { + return err + } + return c.LoadConfig(*cl) +} + +// ProcessConfigs loads the configurations in a predetermined order to handle functioning correctly. +func (c *DynamicLoader) ProcessConfigs(cfg *Config) error { + if c.cfg == nil { + return fmt.Errorf("LoadConfig or LoadConfigByPath must be called") + } + var returnErr error + + err := c.processAgent(cfg) + returnErr = errorAppend(returnErr, err) + + serverConfig, err := c.processServer() + returnErr = errorAppend(returnErr, err) + if serverConfig != nil { + cfg.Server = *serverConfig + } + + metricConfig, err := c.processMetrics() + returnErr = errorAppend(returnErr, err) + if metricConfig != nil { + cfg.Metrics = *metricConfig + } + + instancesConfigs, err := c.processMetricInstances() + returnErr = errorAppend(returnErr, err) + cfg.Metrics.Configs = append(cfg.Metrics.Configs, instancesConfigs...) + + logsCfg, err := c.processLogs() + returnErr = errorAppend(returnErr, err) + if logsCfg != nil { + cfg.Logs = logsCfg + } + + traceConfigs, err := c.processTraces() + returnErr = errorAppend(returnErr, err) + if traceConfigs != nil { + cfg.Traces = *traceConfigs + } + + integrations, err := c.processIntegrations() + returnErr = errorAppend(returnErr, err) + + cfg.Integrations.ExtraIntegrations = append(cfg.Integrations.ExtraIntegrations, integrations...) + + return returnErr +} + +func (c *DynamicLoader) processAgent(cfg *Config) error { + var returnError error + found := 0 + for _, path := range c.cfg.TemplatePaths { + filesContents, err := c.retrieveMatchingFileContents(path, c.cfg.AgentFilter, "agent") + returnError = errorAppend(returnError, err) + found = len(filesContents) + found + if len(filesContents) == 1 { + err = LoadBytes([]byte(filesContents[0]), false, cfg) + returnError = errorAppend(returnError, err) + } + } + if found > 1 { + returnError = errorAppend(returnError, fmt.Errorf("found %d agent templates; expected 0 or 1", found)) + } + // If we didnt find anything we still want to unmarshal the cfg to get defaults + if found == 0 { + _ = LoadBytes([]byte("{}"), false, cfg) + } + return returnError +} + +func (c *DynamicLoader) processServer() (*server.Config, error) { + var returnError error + found := 0 + var cfg *server.Config + for _, path := range c.cfg.TemplatePaths { + filesContents, err := c.retrieveMatchingFileContents(path, c.cfg.ServerFilter, "server") + returnError = errorAppend(returnError, err) + found = len(filesContents) + found + if len(filesContents) == 1 { + cfg = &server.Config{} + err = yaml.Unmarshal([]byte(filesContents[0]), cfg) + returnError = errorAppend(returnError, err) + } + } + if found > 1 { + returnError = errorAppend(returnError, fmt.Errorf("found %d server templates; expected 0 or 1", found)) + } + return cfg, returnError +} + +func (c *DynamicLoader) processMetrics() (*metrics.Config, error) { + var returnError error + found := 0 + var cfg *metrics.Config + for _, path := range c.cfg.TemplatePaths { + filesContents, err := c.retrieveMatchingFileContents(path, c.cfg.MetricsFilter, "metrics") + returnError = errorAppend(returnError, err) + found = len(filesContents) + found + if len(filesContents) == 1 { + cfg = &metrics.Config{} + err = yaml.Unmarshal([]byte(filesContents[0]), cfg) + returnError = errorAppend(returnError, err) + } + } + if found > 1 { + returnError = errorAppend(returnError, fmt.Errorf("found %d metrics templates; expected 0 or 1", found)) + } + return cfg, returnError +} + +func (c *DynamicLoader) processMetricInstances() ([]instance.Config, error) { + var returnError error + var configs []instance.Config + for _, path := range c.cfg.TemplatePaths { + filesContents, err := c.retrieveMatchingFileContents(path, c.cfg.MetricsInstanceFilter, "metrics instances") + returnError = errorAppend(returnError, err) + for _, c := range filesContents { + cfg := &instance.Config{} + err = yaml.Unmarshal([]byte(c), cfg) + returnError = errorAppend(returnError, err) + configs = append(configs, *cfg) + } + } + + return configs, returnError +} + +func (c *DynamicLoader) processIntegrations() ([]v2.Config, error) { + var returnError error + var configs []v2.Config + for _, path := range c.cfg.TemplatePaths { + filesContents, err := c.retrieveMatchingFileContents(path, c.cfg.IntegrationsFilter, "integrations") + returnError = errorAppend(returnError, err) + for _, c := range filesContents { + intConfigs, err := unmarshalYamlToExporters(c) + if err != nil { + returnError = errorAppend(returnError, err) + continue + } + configs = append(configs, intConfigs...) + } + } + return configs, returnError +} + +func (c *DynamicLoader) processLogs() (*logs.Config, error) { + var returnError error + found := 0 + var cfg *logs.Config + for _, path := range c.cfg.TemplatePaths { + filesContents, err := c.retrieveMatchingFileContents(path, c.cfg.LogsFilter, "logs") + returnError = errorAppend(returnError, err) + found = len(filesContents) + found + if len(filesContents) == 1 { + cfg = &logs.Config{} + err = yaml.Unmarshal([]byte(filesContents[0]), cfg) + returnError = errorAppend(returnError, err) + } + } + if found > 1 { + returnError = errorAppend(returnError, fmt.Errorf("found %d logs templates; expected 0 or 1", found)) + } + return cfg, returnError +} + +func (c *DynamicLoader) processTraces() (*traces.Config, error) { + var returnError error + found := 0 + var cfg *traces.Config + for _, path := range c.cfg.TemplatePaths { + filesContents, err := c.retrieveMatchingFileContents(path, c.cfg.TracesFilter, "traces") + returnError = errorAppend(returnError, err) + found = len(filesContents) + found + if len(filesContents) == 1 { + cfg = &traces.Config{} + err = yaml.Unmarshal([]byte(filesContents[0]), cfg) + returnError = errorAppend(returnError, err) + } + } + if found > 1 { + returnError = errorAppend(returnError, fmt.Errorf("found %d traces templates; expected 0 or 1", found)) + } + return cfg, returnError +} + +// retrieveMatchingFileContents retrieves the contents of files based on path and pattern +// the pattern is the same as used by filepath.Match. +func (c *DynamicLoader) retrieveMatchingFileContents(path, pattern, name string) ([]string, error) { + var filesContents []string + handler, err := c.mux.Lookup(path) + if err != nil { + return nil, err + } + files, err := fs.ReadDir(handler, ".") + if err != nil { + return nil, err + } + for _, f := range files { + // We don't recurse into directories, mainly due to not wanting to deal with symlinks and other oddities + // its likely we will revisit + if f.IsDir() { + continue + } + matched, err := filepath.Match(pattern, f.Name()) + if err != nil { + return nil, err + } + if matched { + contents, err := fs.ReadFile(handler, f.Name()) + if err != nil { + return nil, err + } + processedConfigString, err := c.loader.GenerateTemplate(name, string(contents)) + if err != nil { + return nil, err + } + filesContents = append(filesContents, processedConfigString) + } + } + return filesContents, nil +} + +// unmarshalYamlToExporters attempts to convert the contents of yaml string into a set of exporters and then return +// those configurations. +func unmarshalYamlToExporters(contents string) ([]v2.Config, error) { + o := &v2.SubsystemOptions{} + err := yaml.Unmarshal([]byte(contents), o) + if err != nil { + return nil, err + } + return o.Configs, nil +} + +func newFSProvider() fsimpl.FSMux { + mux := fsimpl.NewMux() + mux.Add(filefs.FS) + mux.Add(blobfs.FS) + return mux +} + +// errorAppend is a wrapper around multierror.Append that is needed since multierror will create a new error. In this case +// we only want to create a new error if newErr is not nil +func errorAppend(root error, newErr error) error { + if newErr == nil { + return root + } + return multierror.Append(root, newErr) +} diff --git a/pkg/config/dynamicloader_configs_test.go b/pkg/config/dynamicloader_configs_test.go new file mode 100644 index 000000000000..b0659a58d4e9 --- /dev/null +++ b/pkg/config/dynamicloader_configs_test.go @@ -0,0 +1,330 @@ +//nolint:golint,goconst +package config + +import ( + "strings" + "testing" + + "github.com/grafana/agent/pkg/integrations/node_exporter" + + v2 "github.com/grafana/agent/pkg/integrations/v2" + "github.com/grafana/agent/pkg/integrations/windows_exporter" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestConfigMaker(t *testing.T) { + configStr := `wal_directory: /tmp/wal` + tDir := generatePath(t) + writeFile(t, tDir, "metrics-1.yml", configStr) + fileFS := generateFilePath(tDir) + loaderCfg := LoaderConfig{ + Sources: nil, + TemplatePaths: []string{fileFS}, + } + cmf := generateLoader(t, loaderCfg) + configs, err := cmf.processMetrics() + require.NoError(t, err) + assert.NotNil(t, configs) + assert.Equal(t, configs.WALDir, "/tmp/wal") +} + +func TestConfigMakerWithFakeFiles(t *testing.T) { + configStr := `wal_directory: /tmp/wal` + tDir := generatePath(t) + writeFile(t, tDir, "metrics-1.yml", configStr) + writeFile(t, tDir, "fake.yml", configStr) + fileFS := generateFilePath(tDir) + loaderCfg := LoaderConfig{ + Sources: nil, + TemplatePaths: []string{fileFS}, + } + cmf := generateLoader(t, loaderCfg) + configs, err := cmf.processMetrics() + require.NoError(t, err) + assert.NotNil(t, configs) + assert.Equal(t, configs.WALDir, "/tmp/wal") +} + +func TestConfigMakerWithMultipleMetrics(t *testing.T) { + configStr := `wal_directory: /tmp/wal` + tDir := generatePath(t) + writeFile(t, tDir, "metrics-1.yml", configStr) + writeFile(t, tDir, "metrics-2.yml", configStr) + + fileFS := generateFilePath(tDir) + loaderCfg := LoaderConfig{ + Sources: nil, + TemplatePaths: []string{fileFS}, + } + cmf := generateLoader(t, loaderCfg) + _, err := cmf.processMetrics() + assert.Error(t, err) + assert.True(t, strings.Contains(err.Error(), "found 2 metrics templates; expected 0 or 1")) +} + +func TestConfigMakerWithMetricsAndInstances(t *testing.T) { + configStr := `wal_directory: /tmp/wal` + tDir := generatePath(t) + writeFile(t, tDir, "metrics-1.yml", configStr) + writeFile(t, tDir, "metrics_instances-1.yml", "name: t1") + writeFile(t, tDir, "metrics_instances-2.yml", "name: t2") + writeFile(t, tDir, "server-1.yml", ` +http_listen_port: 12345 +log_level: debug +`) + fileFS := generateFilePath(tDir) + + loaderCfg := LoaderConfig{ + Sources: nil, + TemplatePaths: []string{fileFS}, + } + cmf := generateLoader(t, loaderCfg) + cfg := &Config{} + err := cmf.ProcessConfigs(cfg) + require.NoError(t, err) + assert.Len(t, cfg.Metrics.Configs, 2) +} + +func TestConfigMakerWithExporter(t *testing.T) { + configStr := ` +windows_exporter: + enabled_collectors: one,two,three +` + tDir := generatePath(t) + writeFile(t, tDir, "integrations-1.yml", configStr) + fileFS := generateFilePath(tDir) + + loaderCfg := LoaderConfig{ + Sources: nil, + TemplatePaths: []string{fileFS}, + } + cmf := generateLoader(t, loaderCfg) + configs, err := cmf.processIntegrations() + require.NoError(t, err) + assert.Len(t, configs, 1) + wincfg, _ := configs[0].(v2.UpgradedConfig).LegacyConfig() + assert.True(t, wincfg.(*windows_exporter.Config).EnabledCollectors == "one,two,three") +} + +func TestConfigMakerWithMultipleExporter(t *testing.T) { + configStr := ` +windows_exporter: + enabled_collectors: one,two,three + instance: testinstance +node_exporter: + autoscrape: + enable: false +` + tDir := generatePath(t) + writeFile(t, tDir, "integrations-1.yml", configStr) + fileFS := generateFilePath(tDir) + + loaderCfg := LoaderConfig{ + Sources: nil, + TemplatePaths: []string{fileFS}, + } + cmf := generateLoader(t, loaderCfg) + configs, err := cmf.processIntegrations() + require.NoError(t, err) + assert.Len(t, configs, 2) + for _, cfg := range configs { + switch v := cfg.(type) { + default: + t.Errorf("unexpected type %T", v) + case v2.UpgradedConfig: + oldConfig, _ := v.LegacyConfig() + switch oc := oldConfig.(type) { + case *windows_exporter.Config: + assert.True(t, "one,two,three" == oc.EnabledCollectors) + case *node_exporter.Config: + assert.NotNil(t, v) + } + } + } +} + +func TestLoadingFromS3(t *testing.T) { + configStr := ` +windows_exporter: + enabled_collectors: one,two,three + instance: testinstance +` + u := pushFilesToFakeS3(t, "integrations-1.yml", configStr) + s3Url := "s3://mybucket/?region=us-east-1&disableSSL=true&s3ForcePathStyle=true&endpoint=" + u.Host + loaderCfg := LoaderConfig{ + Sources: nil, + TemplatePaths: []string{s3Url}, + } + cmf := generateLoader(t, loaderCfg) + cfg, err := cmf.processIntegrations() + require.NoError(t, err) + assert.Len(t, cfg, 1) + oc, _ := cfg[0].(v2.UpgradedConfig).LegacyConfig() + winCfg := oc.(*windows_exporter.Config) + assert.True(t, winCfg.EnabledCollectors == "one,two,three") +} + +func TestMultiplex(t *testing.T) { + configStr := ` +redis_exporter_configs: +- redis_addr: localhost:6379 + autoscrape: + metric_relabel_configs: + - source_labels: [__address__] + target_label: "banana" + replacement: "apple" +- redis_addr: localhost:6380 +` + tDir := generatePath(t) + writeFile(t, tDir, "integrations-1.yml", configStr) + fileFS := generateFilePath(tDir) + + loaderCfg := LoaderConfig{ + Sources: nil, + TemplatePaths: []string{fileFS}, + } + cmf := generateLoader(t, loaderCfg) + cfg := &Config{} + + err := cmf.ProcessConfigs(cfg) + require.NoError(t, err) + assert.Len(t, cfg.Integrations.ExtraIntegrations, 2) +} + +func TestAgentAddIntegrations(t *testing.T) { + configStr := ` +server: + http_listen_port: 8080 + log_level: debug +metrics: + wal_directory: /tmp/grafana-agent-normal + global: + scrape_interval: 60s + remote_write: + - url: https://www.example.com +integrations: + node_exporter: {} +` + addIntegration := ` +windows_exporter: {} +` + tDir := generatePath(t) + writeFile(t, tDir, "agent-1.yml", configStr) + writeFile(t, tDir, "integrations-windows.yml", addIntegration) + fileFS := generateFilePath(tDir) + loaderCfg := LoaderConfig{ + Sources: nil, + TemplatePaths: []string{fileFS}, + } + cmf := generateLoader(t, loaderCfg) + cfg := &Config{} + err := cmf.ProcessConfigs(cfg) + require.NoError(t, err) + // Since the normal agent uses deferred parsing this is required to load the integration from agent-1.yml + err = cfg.Integrations.setVersion(integrationsVersion2) + require.NoError(t, err) + assert.True(t, cfg.Server.HTTPListenPort == 8080) + assert.True(t, cfg.Server.LogLevel.String() == "debug") + assert.True(t, cfg.Metrics.WALDir == "/tmp/grafana-agent-normal") + assert.True(t, cfg.Metrics.Global.RemoteWrite[0].URL.String() == "https://www.example.com") + assert.False(t, cfg.Integrations.IsZero()) + // ExtraIngrations should be 1 from the integrations-windows.yml + // the node_exporter integration in the agent-1.yml is in the configV2 + assert.Len(t, cfg.Integrations.ExtraIntegrations, 1) + assert.Len(t, cfg.Integrations.configV2.Configs, 2) + +} + +func TestFilterOverrides(t *testing.T) { + agentStr := ` +server: + http_listen_port: 8080 + log_level: debug +metrics: + wal_directory: /tmp/grafana-agent-normal + global: + scrape_interval: 60s + remote_write: + - url: https://www.example.com +integrations: + windows_exporter: {} +` + serverStr := ` +http_listen_port: 1111 +` + metricsStr := ` +wal_directory: /tmp/grafana-agent-normal +global: + scrape_interval: 60s + remote_write: + - url: https://www.example.com +` + metricsInstanceStr := ` +name: t1 +` + integrationStr := ` +node_exporter: {} +` + tracesStr := ` +configs: +- name: test_traces + automatic_logging: + backend: stdout + loki_name: default + spans: true +` + logsStr := ` +configs: +- name: test_logs + positions: + filename: /tmp/positions.yaml + scrape_configs: + - job_name: test + pipeline_stages: + - regex: + source: filename + expression: '\\temp\\Logs\\(?P.+?)\\' +` + tDir := generatePath(t) + writeFile(t, tDir, "a-1.yml", agentStr) + writeFile(t, tDir, "s-1.yml", serverStr) + writeFile(t, tDir, "m-1.yml", metricsStr) + writeFile(t, tDir, "mi-1.yml", metricsInstanceStr) + writeFile(t, tDir, "i-1.yml", integrationStr) + writeFile(t, tDir, "t-1.yml", tracesStr) + writeFile(t, tDir, "l-1.yml", logsStr) + fileFS := generateFilePath(tDir) + loaderCfg := LoaderConfig{ + Sources: nil, + TemplatePaths: []string{fileFS}, + AgentFilter: "a-*.yml", + ServerFilter: "s-*.yml", + MetricsFilter: "m-*.yml", + MetricsInstanceFilter: "mi-*.yml", + IntegrationsFilter: "i-*.yml", + LogsFilter: "l-*.yml", + TracesFilter: "t-*.yml", + } + cmf := generateLoader(t, loaderCfg) + cfg := &Config{} + err := cmf.ProcessConfigs(cfg) + require.NoError(t, err) + // Since the normal agent uses deferred parsing this is required to load the integration from agent-1.yml + err = cfg.Integrations.setVersion(integrationsVersion2) + require.NoError(t, err) + // Test server override + assert.True(t, cfg.Server.HTTPListenPort == 1111) + // Test metric + assert.True(t, cfg.Metrics.WALDir == "/tmp/grafana-agent-normal") + // Test Metric Instances + assert.True(t, cfg.Metrics.Configs[0].Name == "t1") + // Test Integrations + assert.Len(t, cfg.Integrations.ExtraIntegrations, 1) + assert.Len(t, cfg.Integrations.configV2.Configs, 2) + // Test Traces + assert.True(t, cfg.Traces.Configs[0].Name == "test_traces") + // Test Logs + assert.True(t, cfg.Logs.Configs[0].Name == "test_logs") + +} diff --git a/pkg/config/dynamicloader_template_test.go b/pkg/config/dynamicloader_template_test.go new file mode 100644 index 000000000000..2e23a6775896 --- /dev/null +++ b/pkg/config/dynamicloader_template_test.go @@ -0,0 +1,174 @@ +//nolint:golint,goconst +package config + +import ( + "bytes" + "fmt" + "io/ioutil" + "net/http/httptest" + "net/url" + "os" + "path/filepath" + "runtime" + "testing" + + "github.com/stretchr/testify/require" + + "github.com/grafana/agent/pkg/util/subset" + "gopkg.in/yaml.v2" + + _ "github.com/grafana/agent/pkg/integrations/install" + v2 "github.com/grafana/agent/pkg/integrations/v2" + "github.com/grafana/agent/pkg/integrations/windows_exporter" + "github.com/johannesboyne/gofakes3" + "github.com/johannesboyne/gofakes3/backend/s3mem" + "github.com/stretchr/testify/assert" +) + +func TestConfigMakerWithExporterWithTemplate(t *testing.T) { + configStr := ` +windows_exporter: + enabled_collectors: {{ (datasource "vars").value }} + instance: testinstance +` + tDir := generatePath(t) + writeFile(t, tDir, "vars.yaml", "value: banana") + writeFile(t, tDir, "integrations-1.yml", configStr) + fileFS := generateFilePath(tDir) + + loaderCfg := LoaderConfig{ + Sources: []Datasource{{ + Name: "vars", + URL: generateFilePath(filepath.Join(tDir, "vars.yaml")), + }}, + TemplatePaths: []string{fileFS}, + } + cmf := generateLoader(t, loaderCfg) + configs, err := cmf.processIntegrations() + require.NoError(t, err) + assert.Len(t, configs, 1) + wincfg, _ := configs[0].(v2.UpgradedConfig).LegacyConfig() + assert.True(t, wincfg.(*windows_exporter.Config).EnabledCollectors == "banana") +} + +func TestLoadingFromS3LoadingVarsLocally(t *testing.T) { + configStr := ` +windows_exporter: + enabled_collectors: {{ (datasource "vars").value }} + instance: testinstance +` + tDir := generatePath(t) + writeFile(t, tDir, "vars.yaml", "value: banana") + u := pushFilesToFakeS3(t, "integrations-1.yml", configStr) + s3Url := "s3://mybucket/?region=us-east-1&disableSSL=true&s3ForcePathStyle=true&endpoint=" + u.Host + loaderCfg := LoaderConfig{ + Sources: []Datasource{{ + Name: "vars", + URL: fmt.Sprintf("file:///%s", filepath.Join(tDir, "vars.yaml")), + }}, + TemplatePaths: []string{s3Url}, + } + cmf := generateLoader(t, loaderCfg) + cfg, err := cmf.processIntegrations() + require.NoError(t, err) + assert.Len(t, cfg, 1) + oc, _ := cfg[0].(v2.UpgradedConfig).LegacyConfig() + winCfg := oc.(*windows_exporter.Config) + assert.True(t, winCfg.EnabledCollectors == "banana") +} + +func TestLoadingFromS3LoadingVarsLocallyWithRange(t *testing.T) { + configStr := ` +windows_exporter: + enabled_collectors: banana + instance: testinstance + autoscrape: + metric_relabel_configs: {{ range (datasource "vars").value }} + - source_labels: [__address__] + target_label: {{ . }} + replacement: "{{ . }}-value" + {{ end }} +` + tDir := generatePath(t) + writeFile(t, tDir, "vars.yaml", "value: [banana,apple,pear]") + u := pushFilesToFakeS3(t, "integrations-1.yml", configStr) + + s3Url := "s3://mybucket/?region=us-east-1&disableSSL=true&s3ForcePathStyle=true&endpoint=" + u.Host + loaderCfg := LoaderConfig{ + Sources: []Datasource{{ + Name: "vars", + URL: fmt.Sprintf("file:///%s", filepath.Join(tDir, "vars.yaml")), + }}, + TemplatePaths: []string{s3Url}, + } + cmf := generateLoader(t, loaderCfg) + cfg := &Config{} + err := cmf.ProcessConfigs(cfg) + require.NoError(t, err) + assert.Len(t, cfg.Integrations.ExtraIntegrations, 1) + _ = cfg.Integrations.setVersion(integrationsVersion2) + expectBase := ` +integrations: + windows_exporter: + autoscrape: + metric_relabel_configs: + - target_label: banana + - target_label: apple + - target_label: pear +` + outBytes, err := yaml.Marshal(cfg) + require.NoError(t, err) + assert.NoError(t, subset.YAMLAssert([]byte(expectBase), outBytes)) +} + +func writeFile(t *testing.T, directory string, path string, contents string) { + fullpath := filepath.Join(directory, path) + err := ioutil.WriteFile(fullpath, []byte(contents), 0666) + require.NoError(t, err) +} + +func generateLoader(t *testing.T, lc LoaderConfig) *DynamicLoader { + cmf, err := NewDynamicLoader() + require.NoError(t, err) + err = cmf.LoadConfig(lc) + require.NoError(t, err) + return cmf +} + +func generateFilePath(directory string) string { + if runtime.GOOS == "windows" { + // The URL scheme needs an additional / on windows + return fmt.Sprintf("file:///%s", directory) + } + return fmt.Sprintf("file://%s", directory) +} + +func generatePath(t *testing.T) string { + tDir, err := os.MkdirTemp("", "*-test") + require.NoError(t, err) + t.Cleanup(func() { _ = os.RemoveAll(tDir) }) + return tDir +} + +func pushFilesToFakeS3(t *testing.T, filename string, filecontents string) *url.URL { + _ = os.Setenv("AWS_ANON", "true") + t.Cleanup(func() { _ = os.Unsetenv("AWS_ANON") }) + + backend := s3mem.New() + faker := gofakes3.New(backend) + + srv := httptest.NewServer(faker.Server()) + _ = backend.CreateBucket("mybucket") + t.Cleanup(srv.Close) + _, err := backend.PutObject( + "mybucket", + filename, + map[string]string{"Content-Type": "application/yaml"}, + bytes.NewBufferString(filecontents), + int64(len(filecontents)), + ) + assert.NoError(t, err) + u, err := url.Parse(srv.URL) + assert.NoError(t, err) + return u +} diff --git a/pkg/config/integrations.go b/pkg/config/integrations.go index 9cbec36cea44..557574b83d2e 100644 --- a/pkg/config/integrations.go +++ b/pkg/config/integrations.go @@ -36,6 +36,9 @@ type VersionedIntegrations struct { configV1 *v1.ManagerConfig configV2 *v2.SubsystemOptions + + // ExtraIntegrations is used when adding any integrations NOT in the default agent configuration + ExtraIntegrations []v2.Config } var ( @@ -95,8 +98,16 @@ func (c *VersionedIntegrations) setVersion(v integrationsVersion) error { return yaml.UnmarshalStrict(c.raw, c.configV1) case integrationsVersion2: cfg := v2.DefaultSubsystemOptions + // this is needed for dynamic configuration, the unmarshal doesnt work correctly if + // this is not nil. + c.configV1 = nil c.configV2 = &cfg - return yaml.UnmarshalStrict(c.raw, c.configV2) + err := yaml.UnmarshalStrict(c.raw, c.configV2) + if err != nil { + return err + } + c.configV2.Configs = append(c.configV2.Configs, c.ExtraIntegrations...) + return nil default: panic(fmt.Sprintf("unknown integrations version %d", c.version)) } @@ -136,7 +147,7 @@ func NewIntegrations(logger log.Logger, cfg *VersionedIntegrations, globals Inte type v1Integrations struct{ *v1.Manager } -func (s *v1Integrations) ApplyConfig(cfg *VersionedIntegrations, globals IntegrationsGlobals) error { +func (s *v1Integrations) ApplyConfig(cfg *VersionedIntegrations, _ IntegrationsGlobals) error { return s.Manager.ApplyConfig(*cfg.configV1) } diff --git a/pkg/integrations/v2/controller.go b/pkg/integrations/v2/controller.go index 004af87111f4..91072534ecbe 100644 --- a/pkg/integrations/v2/controller.go +++ b/pkg/integrations/v2/controller.go @@ -11,6 +11,8 @@ import ( "strings" "sync" + "github.com/hashicorp/go-multierror" + "github.com/go-kit/log" "github.com/go-kit/log/level" "github.com/gorilla/mux" @@ -198,6 +200,23 @@ func (c *controller) UpdateController(cfg controllerConfig, globals Globals) err c.mut.Lock() defer c.mut.Unlock() + var returnError error + // Check to ensure no duplicate singleton exist + singletonCheck := make(map[string]struct{}) + for _, cfg := range cfg { + if t, ok := RegisteredType(cfg.Name()); ok && t == TypeSingleton { + // Add to the map but if we find it already exists then create an error + if _, ok := singletonCheck[cfg.Name()]; ok { + returnError = multierror.Append(returnError, fmt.Errorf("found multiple instances of singleton integration %s", cfg.Name())) + } else { + singletonCheck[cfg.Name()] = struct{}{} + } + } + } + if returnError != nil { + return returnError + } + integrationIDMap := map[integrationID]struct{}{} integrations := make([]*controlledIntegration, 0, len(cfg)) diff --git a/pkg/integrations/v2/controller_test.go b/pkg/integrations/v2/controller_test.go index 46b1706de47e..5c8654812540 100644 --- a/pkg/integrations/v2/controller_test.go +++ b/pkg/integrations/v2/controller_test.go @@ -2,6 +2,7 @@ package integrations import ( "context" + "strings" "sync" "testing" @@ -133,6 +134,44 @@ func Test_controller_ConfigChanges(t *testing.T) { }) } +func Test_controller_SingletonCheck(t *testing.T) { + + var integrationsWg sync.WaitGroup + var starts atomic.Uint64 + + mockIntegration := FuncIntegration(func(ctx context.Context) error { + integrationsWg.Done() + starts.Inc() + <-ctx.Done() + return nil + }) + c1 := mockConfig{ + NameFunc: func() string { return mockIntegrationName }, + ConfigEqualsFunc: func(Config) bool { return true }, + ApplyDefaultsFunc: func(g Globals) error { return nil }, + IdentifierFunc: func(Globals) (string, error) { + return mockIntegrationName, nil + }, + NewIntegrationFunc: func(log.Logger, Globals) (Integration, error) { + integrationsWg.Add(1) + return mockIntegration, nil + }, + } + configMap := make(map[Config]Type) + configMap[&c1] = TypeSingleton + setRegistered(t, configMap) + cfg := controllerConfig{ + c1, + c1, + } + + globals := Globals{} + _, err := newController(util.TestLogger(t), cfg, globals) + require.Error(t, err) + require.True(t, strings.Contains(err.Error(), "found multiple instances of singleton integration mock")) + +} + type syncController struct { inner *controller applyWg sync.WaitGroup diff --git a/pkg/integrations/v2/register.go b/pkg/integrations/v2/register.go index e6148ca12e2c..06476106e482 100644 --- a/pkg/integrations/v2/register.go +++ b/pkg/integrations/v2/register.go @@ -14,9 +14,10 @@ import ( ) var ( - integrationNames = make(map[string]interface{}) // Cache of field names for uniqueness checking. - configFieldNames = make(map[reflect.Type]string) // Map of registered type to field name - integrationTypes = make(map[reflect.Type]Type) // Map of registered type to Type + integrationNames = make(map[string]interface{}) // Cache of field names for uniqueness checking. + configFieldNames = make(map[reflect.Type]string) // Map of registered type to field name + integrationTypes = make(map[reflect.Type]Type) // Map of registered type to Type + integrationTypeByName = make(map[string]Type) // Map of name to Type // Registered integrations. Registered integrations may be either a Config or // a v1.Config. v1.Configs must have a corresponding upgrader for their type. @@ -52,6 +53,7 @@ func registerIntegration(v interface{}, name string, ty Type, upgrader UpgradeFu configTy := reflect.TypeOf(v) integrationTypes[configTy] = ty + integrationTypeByName[name] = ty configFieldNames[configTy] = name upgraders[name] = upgrader } @@ -107,6 +109,7 @@ func setRegistered(t *testing.T, cc map[Config]Type) { clear := func() { integrationNames = make(map[string]interface{}) integrationTypes = make(map[reflect.Type]Type) + integrationTypeByName = make(map[string]Type) configFieldNames = make(map[reflect.Type]string) registered = registered[:0] upgraders = make(map[string]UpgradeFunc) @@ -125,22 +128,32 @@ func setRegistered(t *testing.T, cc map[Config]Type) { func Registered() []Config { res := make([]Config, 0, len(registered)) for _, r := range registered { - switch v := r.(type) { - case Config: - res = append(res, cloneValue(v).(Config)) - case v1.Config: - mut, ok := upgraders[v.Name()] - if !ok || mut == nil { - panic(fmt.Sprintf("Could not find transformer for legacy integration %T", r)) - } - res = append(res, mut(cloneValue(r).(v1.Config), common.MetricsConfig{})) - default: - panic(fmt.Sprintf("unexpected type %T", r)) - } + res = append(res, cloneConfig(r)) } return res } +// RegisteredType returns the integrations.Type for config +func RegisteredType(name string) (Type, bool) { + t, ok := integrationTypeByName[name] + return t, ok +} + +func cloneConfig(r interface{}) Config { + switch v := r.(type) { + case Config: + return cloneValue(v).(Config) + case v1.Config: + mut, ok := upgraders[v.Name()] + if !ok || mut == nil { + panic(fmt.Sprintf("Could not find transformer for legacy integration %T", r)) + } + return mut(cloneValue(r).(v1.Config), common.MetricsConfig{}) + default: + panic(fmt.Sprintf("unexpected type %T", r)) + } +} + func cloneValue(in interface{}) interface{} { return reflect.New(reflect.TypeOf(in).Elem()).Interface() } From 4c2e07720022a655a0ffa45b05829b26d216145c Mon Sep 17 00:00:00 2001 From: mattdurham Date: Fri, 25 Feb 2022 09:55:52 -0500 Subject: [PATCH 06/19] Dyn main merge (#1423) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update node_exporter dependency to v1.3.1 (#1228) * Add node_exporter to depcheck * update weaveworks/common dependency * map current release flags and changed defaults * documentation * revert accidental checkin * print out flags when node_exporter test fails to assist debugging * oops, i introduced some flags from master by mistake * Introduce experimental integrations revamp (#1198) * [dev.multiple-integrations] Enable present integrations by default, deprecate enabled field (#1062) * integrations: default to enabled by default * document deprecation of enabled * pkg/integrations: support *_configs field for integrations (#1130) Creates the basic code to unmarshal integrations from a YAML field called _configs, which is a slice of that integration. Note that this is NOT wired up to the integrations manager yet, and trying to run the agent with more than one integration of the same type will likely cause problems. * [dev.multiple-integrations] Prototype new integrations subsystem (#1142) * wip: prototype new integrations subsystem * implement Controller with basic logic for Integration and UpdateIntegration * Implement HTTPIntegration for Controller * decouple controller and subsystem * don't have controller implement integration slightly less smelly now * multiplexer integration * rely on boilerplate for multiplexing for now generics would be nice here * remove multiplex_integration.go Also a little code smelly. Instead of having integrations that run other integrations, I'm going to fall back to having only one controller. * introduce Subsystem, unexport Controller start wiring up things to Subsystem * introduce v2 agent integration to use for testing * start wiring metrics integrations * rename Options to Globals call a spade a spade * add subsystem options to globals * remove dead code * metricsutils: calculate self-scraping based on globals * complete HTTP target API * working example with agent integration * appease the linter * don't return an error when context to cancel an integration is closed * once again i am asking the linter to forgive my typos * fix bug where labels from individual targets were getting dropped at the API endpoint * pkg/config: fix broken test * finish unit tests for integrations v2 controller * metricsutil/metricshandler_integration: make job name unique Before this change, the job name would have collided when using multiple instances of the same integration. * ensure that global subsystem labels are injected into targets * integrations/v2: Infer target hostname from SD API host (#1175) * [dev.multiple-integrations] integrations/v2: allow shimming between v1 and v2 integrations. (#1179) * integrations/v2: allow shimming between v1 and v2 integrations. Shimming is done by changing how the integration registration works; a new RegisterDynamic was added that allows for creating Configs at runtime. Here be dragons; this should be removed whenever we no longer have a need for it. * fix lint * pkg/integrations/v2: use "RegisterLegacy" instead of a generic mechanism * fine, I won't add the deprecation notice if it will make the linter sad * pkg/integrations: re-align (#1181) This commit reverts 69ba2ddfa9483cc8ac6e010dd7abccd319580c80 in favor of allowing the new subsystem to handle multiple instances of integrations. This commit also removes the wal_truncate_frequency field from integrations as it is the only field from old integrations that does not have a current counterpart. * [dev.multiple-integrations] Hide integrations/v2 behind a feature flag (#1185) * feature flag wip * dynamically switch between integrations v1 and v2 default to v1. * pkg/integrations/versionselector to file in pkg/config * pkg/config: fix defaults for Integrations * pkg/config: use more generic way to unmarshal differently based on flag * add missing godoc comment * more comments * switch to deferred unmarshaling * remove unused Config field * simplify completeUnmarshal * do not perform lazy deferred unmarshaling * enable cadvisor by default * switch to using real feature flag * fix postgres_exporter * Merge main into dev.multiple-integrations (#1184) * Fix typo (#1141) * Traces: Improved pod association in PromSD processor (#1137) * Improve k8s pod association * Add tests * Changelog * typo * Add prom_sd_pod_association * Extend tests for pod associations * Docs for pod association config * Lint fixes * Move to unreleased * Add instrumentation recommendations * Remove uncessary constants * Improve tests * remote config with http(s) provider (#1143) * sample remote config code with http provider * use t.TempDir() in unit test * no need to clean up after T.TempDir() * use NewClientFromConfig and make caller responsible for calling SetDirectory * handle nil HTTPClientConfig * remove blank identifier assignment * pass basic auth command line flags for remote config * address pr nits * add expiremental flag * set loader inline * update changelog * add remote config section in docs * pr comment updates * announce patch releases for cve-2021-41090 (#1152) * Merge patch release to main (#1153) * Add secret type to sensitive values * Break out config tests to their own implementation. Also remove username has a sensitive value. * Update changelog * Fix failing test * Scrub secrets when marshaling instance configs * update for v0.21 * Updated changes from the merge. * Remove changelog * Scrub out receivers has ***receivers_scrubber***:null * obscure etcd/consul credentials * Update pkg/traces/config_test.go Co-authored-by: Robert Fratto * Update pkg/config/config.go * go fmt * Change to using custom object and return * Fix bad merge * [v0.21.2] toggle config endpoint (#19) * disable /-/config endpoint by default * disable scraping api get endpoint as well * fix new test * add test and rename flag Co-authored-by: Robert Fratto * Update version to v0.21.2 * Update defaults.go * fix /-/config endpoint * also fix non-pointer config bug * temporarily disable linting for release * fix lint errors Co-authored-by: Matt Durham Co-authored-by: Robert Lankford * Fix POSTGRES_EXPORTER_DATA_SOURCE_NAME usage for postgres_exporter (#1162) * Fix POSTGRES_EXPORTER_DATA_SOURCE_NAME usage for postgres_exporter A recent change broke the usage of POSTGRES_EXPORTER_DATA_SOURCE_NAME for the postgres_exporter. As the incorrect variable was checked in the if clause, it always raises an error. * changelog: keep feature -> enhancement -> bugfix order * postgres_exporter: add regression test Co-authored-by: f11r Co-authored-by: Robert Fratto * Fix syntax error in Jsonnet logs helper method (#1174) Signed-off-by: Nick Pillitteri * cAdvisor Integration (#1081) * Add cadvisor module * Begin creating common config for cadvisor * Don't export internal state * Finish config options for cadvisor * Set config options, and implement cAdvisor collectors * Linting * Buildflags for cadvisor only in linux * I R LEArN Build Tags * Don't zero value the zero value * Offload sketchy global var manipulation to the integrations Run func * Remove unused collectors * Lint * Create generic stub integration and use it for cadvisor * Lint * Final refactor of cAdvisor config for unsupported platforms. Pared down stub integrations. * Lint * Docs for cadvisor config * Update changelog * Update pkg/integrations/stub_integration.go Co-authored-by: Robert Fratto * Reorder changelog * Instance key clarity * Inclusive naming * Finish name changes Keep default disable metric list in sync with upstream Idiomatic golang * Hardcode disabled metrics for cadvisor Co-authored-by: Robert Fratto * Remove log-level flag from systemd unit file (#1177) * Upgrade to OTel v0.40.0 (#1176) * Upgrade to OTel v0.40.0 * Changelog * Add factories check * go mod tidy * config/features: create package to standardize experimental features (#1170) * config/features: create package to standardize experiemental features This commit introduces a new package, pkg/config/features, which allows defining a set of features and validating whether flags associated with those features are allowed to be set. Closes #1163 * update documentation (also s/enabled-features/enable-features) * Fix typo * Update pkg/config/features/features.go Co-authored-by: Robert Lankford Co-authored-by: Robert Lankford * enable cadvisor by default * switch to using real feature flag * fix postgres_exporter Co-authored-by: Ursula Kallio <73951760+osg-grafana@users.noreply.github.com> Co-authored-by: Mario Co-authored-by: Robert Lankford Co-authored-by: Matt Durham Co-authored-by: f11r Co-authored-by: f11r Co-authored-by: Nick Pillitteri <56quarters@users.noreply.github.com> Co-authored-by: Ryan Geyer Co-authored-by: Juraci Paixão Kröhling Co-authored-by: Robert Lankford * Revert "Merge main into dev.multiple-integrations (#1184)" (#1189) This reverts commit ad76ec54f9a781fc83d3e7001808c887f37833ff. * [dev.multiple-integrations] Revert breaking changes to existing integrations (#1191) * revert breaking changes to integrations v1 This commit reverts #1062 in favor of making breaking changes directly in integrations-next instead. The part of #1181 to remove `wal_truncate_frequency` has also been reverted. As part of this change, the enabled field is removed from the v2 common metrics configs, and v2 integrations can no longer be disabled. v2 integrations can only be disabled by removing them from the YAML. * integrations/v2: remove stale reference to ErrDisabled (fix typo too) * integrations/v2: bring in common config decoupling * [dev.multiple-integrations] Introduce autoscraper (#1195) * pkg/integrations/v2: introduce self-scraping * linting * [dev.multiple-integrations] Multiple instances of integrations (#1196) * multiple instances of integrations opt in relevant v1 integrations into supporting multiple instances * shims should check for instance key override * Document integrations-next (#1197) * document integrations-next * remove json tags since they make markdown unhappy * changelog * s/Run/RunIntegration * remove stale comment about integrations.controller purpose * create dedicated run method for instanceScraper * s/expoter/exporter/g * Document why an autoscrape.Scraper manages a set of per-instance scrapers * spell out prerequisite instead of pre-req * use go.uber.org/atomic to make the code a little easier to follow * remove started callback for running integration * use smaller interface for autoscrape Co-authored-by: Ursula Kallio <73951760+osg-grafana@users.noreply.github.com> Co-authored-by: Mario Co-authored-by: Robert Lankford Co-authored-by: Matt Durham Co-authored-by: f11r Co-authored-by: f11r Co-authored-by: Nick Pillitteri <56quarters@users.noreply.github.com> Co-authored-by: Ryan Geyer Co-authored-by: Juraci Paixão Kröhling Co-authored-by: Robert Lankford * Fix panic when using 'stdout' in automatic logging (#1233) * integrations-next: fix bug where v2 integrations were not being strictly unmarshaled (#1235) * Remove jsonnet vendor folders (#1222) * remove jsonnet vendor This adds all vendor folders into .gitignore and removes cached vendor files from the repository. Closes #1221 * Update scripts and instructions for jsonnet vendor removal * `make example-dashboards` will now also run `jb install` * k3d environment instructions now include `jb install` * smoke-test.bash will now run `jb install` prior to `tk apply` * Fix link to k3d example in DEVELOPERS.md (#1242) Signed-off-by: Paschalis Tsilias * Fix node_exporter upgrade docs (#1239) * Fix panic in automatic logging with stdout backend (#1243) * pkg/util: support custom yaml.Unmarshaler implementations for util.UnmarshalYAMLMerged (#1244) It's common for config types to have implement yaml.Unmarshaler for: * Applying defaults * Applying extra logic post-unmarshal If these config types were unmarshaled through util.UnmarshalYAMLMerged, the yaml.Unmarshaler implementation would never complete successfully, preventing the post-unmarshal logic from running. This issue was introduced in #1192, but went unnoticed until #1228 implemented yaml.Unmarshaler to perform field migrations. #1240 reported the issue. This commit fixes the bug by performing a second non-strict unmarshal to ensure that all input values unmarshal successfully, with the exception of unmarshal errors unrelated to unrecognized field names. This is hacky, but it's worthwhile noting that util.UnmarshalYAMLMerged is a temporary workaround needed for the integrations-next migration, and will eventually be removed. * Update k3d example grafana/grafonnet-lib version (#1246) Signed-off-by: Paschalis Tsilias * Create an e2e framework with support for running tests against k8s (#1234) * e2e: create an e2e framework with support for running tests against a k3d cluster * add new E2E drone job * E2E tests should pass when doing a release * sign drone.yml again * move e2e lint to different step that has golangci-lint installed * upgrade golangci-lint and go for e2e test * e2e: add gcc * E2E: install build-essential to get a working full gcc env * :( * e2e: support running from inside of docker * fix lint error * address review feedback * Operator: fix bug where /-/ready and /-/healthy always returned 404 (#1252) * operator: fix bug where /-/ready and /-/healthy always returned 404 controller-runtime must have at least one ready/healthy check for the endpoints to exist * fix lint error, use healthz.Ping * Make scraping-svc use the new `metrics:` key (#1259) Signed-off-by: Paschalis Tsilias * update prometheus dependency (#1260) * corrected typo (#1265) * Use RELEASE_TAG to choose between `:main` and `:latest` docker tags (#1264) * Use RELEASE_TAG to choose between `:main` and `:latest` docker tags Signed-off-by: Paschalis Tsilias * Use :main tag for images in smoke test Signed-off-by: Paschalis Tsilias * Set IMAGE_BRANCH_TAG env var in drone and actions pipelines Signed-off-by: Paschalis Tsilias * Remove quotes from Makefile variable Signed-off-by: Paschalis Tsilias * Remove force_release action Signed-off-by: Paschalis Tsilias * prepare for v0.22.0 release (#1266) * prepare for v0.22.0 release * remove E2E pipeline * Add basic testing framework for operator (#1268) * remove dedicated go.mod for e2e/ * move e2e/k8s to pkg/util/k8s * Migrate operator tests to pkg/util/k8s * remove dedicated e2e tests * allow skipping TestCluster in pkg/util/k8s * remove e2e/ * fix bad merge * fix order of make env args for windows * actually declare referenced docker volume * introduce pkg/util/subset for asserting subset of objects * refactor operator so it's testable * define basic integration test for operator * fix lint errors * fix invalid address in operator test config * Update release-note.md (#1267) * Set scrape User-Agent header during init (#1274) Signed-off-by: Paschalis Tsilias * Upgrade to Go 1.17 (#1278) * Upgrade to 1.17.6 in go.mod and Dockerfiles * Update CHANGELOG.md to mention the update * Update Go version in drone/actions pipelines * Update go.mod, go.sum files via * Re-sign drone.yml * Remove leading newline causing drone build to fail * Bump golangci-lint image to a version using Go 1.17 * Re-attempt to solve linter issue with new golangci-lint image * Remove suffix of exclude rules * Clean previous Go version before unpacking Go 1.17 * Also clean up previous Go versions in other steps * fix typo (#1284) * Use custom Go version in agent-operator Dockerfile (#1286) Signed-off-by: Paschalis Tsilias * pkg/operator: refactor resource hierarchy discovery (#1271) * pkg/operator: refactor resource hierarchy discovery This commit moves common logic related to discovering the resource hierarchy to pkg/operator/hierarchy. This new package requires less boilerplate, which the reconciler is updated to take advantage of. * remove unused code * test construction of resource hierarchy * add missing build constraints * small extra cleanup to use pointer package * review feedback * update agent-build-image for go 1.17 (#1287) (also use a consistent base image tag instead of latest) * Skip non-ready entries when listing instances (#1289) * Skip non-ready instances in LoadInstances() Signed-off-by: Paschalis Tsilias * Add changelog entry Co-authored-by: Robert Fratto * Fix panic in prom_sd_processor when address is empty (#1279) * Fix panic in prom_sd_processor when address is empty * Fix panic in prom_sd_processor when address is empty * Fix docs * Add test case * Lint * Move to unreleased * Operator: generate proxy_url for remote_write (#1298) * operator: generate proxy_url for remote_write * fix weird indentation in test * Use log format in traces subsystem (#1272) * Use log format in traces subsystem * Changelog * Undo unwanted change * Fix changelog entry * integrations-next: Add extra_labels to inject extra labels for an integration (#1312) * integrations-next: Add extra_labels to inject extra labels for an integration. * separate tests * Fix anchor link on operator docs (#1302) Signed-off-by: Paschalis Tsilias * updated config URL (#1304) The existing URL returns a 404: https://grafana.com/docs/agent/latest/getting-started/configuration/_index.md Updated to https://grafana.com/docs/agent/latest/configuration/ * Fix typo in node_exporter (#1325) * Allow remote_write URL credentials (#1329) * Bypass Prometheus password redaction Signed-off-by: Paschalis Tsilias * Add inline secret in existing test Signed-off-by: Paschalis Tsilias * Add changelog entry * Add to scrubbed testcase as well Signed-off-by: Paschalis Tsilias * Stop appending duplicate exemplars (#1316) * Add memExemplar in stripeSeries as first iteration Signed-off-by: Paschalis Tsilias * Add test for skipped duplicate exemplars; Simplify conditional Signed-off-by: Paschalis Tsilias * Add changelog entry; discard test errors * Move changelog entry Signed-off-by: Paschalis Tsilias * Add Benchmark for AppendExemplar Signed-off-by: Paschalis Tsilias * Discard error on added benchmark Signed-off-by: Paschalis Tsilias * Use original exemplar struct instead of custom memExemplar Signed-off-by: Paschalis Tsilias * Surround benchmark loop with start/stop timers and close test storage Signed-off-by: Paschalis Tsilias * Add comment about prepopulating exemplars on WAL startup Signed-off-by: Paschalis Tsilias * Wire in the totalAppendedExemplars metric Signed-off-by: Paschalis Tsilias * Make comment more discoverable Signed-off-by: Paschalis Tsilias * Make sure we're recording exemplars for non-nil series ref only Signed-off-by: Paschalis Tsilias * integrations-next: wait for integrations to exit after stopping them (#1318) * integrations-next: wait for integrations to exit after stopping them * fix lint errors * minor refactor * integrations-next: stop holding config mutex for entire reload * make controller.run authoritative over running integrations * fix log line * move running integrations into a dedicated worker pool * operator/hierarchy: stop using field selector when listing Secrets & ConfigMaps (#1340) The initial implementation of hierarchy.KeySelector injected a FieldSelector when listing Secrets and ConfigMaps to immediately return the single object being queried for. This causes a problem with the client generated by the controller-runtime framework, where the client is wrapped in a cache and field indexer (where only the namespace is indexed by default). This commit avoids using the field selector and the index lookup. The resulting behavior aligns more closely with discovering other resources in the hierarchy (i.e., ServiceMonitors), where the List call is also insufficient and needs post-processing via Matches to find the final list of resources. Given the controller-runtime client uses an informer for reads, all relevant Secrets and ConfigMaps are already in-memory anyway, and using the index for a faster List is a bit of an over-optimization at the moment. * Add dependabot to update go modules and github actions. (#1217) Signed-off-by: Tom Wilkie * smoke framework refactor (#1326) * Agent smoke test (#1291) * convert smoke script to go program * update build for agent-smoke * fix pr comments * use existing log helper package * refactor context cancel * update exit codes * use ticker * prefer oklog/run instead of errgroup * use nop logger * refactor task interface * remove functional options * log.With for task loggers * move smoke to tools * build smoke image, push to internal registry * move crow to tools * add gcr_admin secret * fix link to crow * add smoke libsonnet and use in local k3d smoke test * add deletePodBySelectorTask * scale smoke-test replica down after local test * refactor smoke Options to Config * update duration usage message * add some basic unit tests * newlines * pass mutation frequency and chaos frequency from smoke script * pull crow image from gcr * update smoke script * move monitoring to smoke libsonnet * move additional smoke resources needed in deployment tools * reference libsonnet files from grafana-agent dep * make drone * fix images in smoke script * get rid of extVars * update k3d example environment to reference etcd from new location * update smoke docker builds to use go1.17 * use pointer.Int64 * refactor smoke jsonnet (#1296) * add policy rule for list and delete pods (#1319) * refactor smoke.new function to take config object (#1327) * Apply suggestions from code review * Update production/tanka/grafana-agent/smoke/crow/main.libsonnet * Update production/tanka/grafana-agent/smoke/main.libsonnet * Update example/k3d/scripts/smoke-test.bash Co-authored-by: Robert Lankford * readme update (#1338) Co-authored-by: Robert Fratto * Correct link to the configuration (#1036) Co-authored-by: Robert Fratto * Add stale check Github Action (#1345) * Add a stale check GH action to run every 24 hours * remove old stale.yml file * add permissions to action * update the stale message to clarify when the stale label will get removed * Update .github/workflows/stale.yml * stale action: fix missing indent (#1346) * Fix mssql issue (#1351) * Add K8s Events integration (#1330) * Add K8s eventhandler integration (#1310) * Add docs and sample manifests to eventhandler integration (#1328) * Wait for cache to flush before returning * Clarify eventhandler docs (#1334) * Clarify docs * Update CHANGELOG.md * Review changes (#1349) * stale action: fix typo in label exemptions (#1347) * update withVolumesMixin for agent jsonnet (#1358) Signed-off-by: Robbie Lankford * Configure cluster label using logs client external_labels param (#1357) * Configure cluster label using logs client external_labels param * Update CHANGELOG.md * add password file and basic auth round tripper in crow (#1361) * add password file and basic auth round tripper in crow * add ca-certificates in crow image * add orgID flag * update help text * default send_exemplars to true in remote_write (#1352) Signed-off-by: Robbie Lankford * Update eventhandler labels (#1368) * Update eventhandler integration labels * Update CHANGELOG * Remove unnecessary kind label * update changelog (#1374) Remove BUGFIX entries that fix a bug introduced by main (i.e., bugs which were never part of a release) * Prepare for release of v0.23.0 (#1377) * Update version references * Fix fat-fingered delete; Remove mention of upgrade Go * RFC: Design in the open (#1055) * rfc: first draft of RFC0001 * add placeholder for PR * update PR link * Update docs/rfcs/0001-designing-in-the-open.md Co-authored-by: Robert Lankford * Update docs/rfcs/0001-designing-in-the-open.md Co-authored-by: Robert Lankford * clarify "designing in the open" is best-effort * update 0001 * fix dead link in production/README.md * add recommended sections for RFC proposals * describe the process for approving a proposal * ignore RFC template in link checker * Update docs/rfcs/0001-designing-in-the-open.md Co-authored-by: Richard Hartmann * Update docs/rfcs/0001-designing-in-the-open.md Co-authored-by: Richard Hartmann * do my nitty 80-char line length limit change * indent pros/cons to a single section * document process for superseding RFCs * remove RFC mutability requirement * add extra flavor around not recommending google docs * require Google Doc -> RFC conversion * move new files Co-authored-by: Robert Lankford Co-authored-by: Richard Hartmann * Add Grafana Labs SECURITY.md (#1356) Signed-off-by: Richard Hartmann * Add readiness check to metrics component (#1369) * PR Base Signed-off-by: Paschalis Tsilias * Fix autoscrape's mockInstance Signed-off-by: Paschalis Tsilias * Wire in atomic readiness check Co-authored-by: Robert Fratto * Add CHANGELOG.md entry Signed-off-by: Paschalis Tsilias Co-authored-by: Robert Fratto * Reference page to download windows installer (#1372) Fixes #1366 * fix typo in node_exporter_config (#1389) which should be `privileged` instead of `priviliged` * Add option for Operator to pass arguments to GrafanaAgent #1227 (#1248) * 1250 oauth2 tracing (#1386) * Add oauth support for trace Otel trace exporter via opentelemetry-collector-contrib oauth2clientauthextension * start extensions on collector instance startup fix decoding to otelconfig build extensions add oauth extension to service map * Update traces config documentation * lint fixes * fix godoc comments * pass exporter index directly to exporter name generator * PR feedback; Update Changelog * sort extensions when sorting pipelines for testing determinism * README: Fix link to agent logo (#1396) * update MAINTAINERS.md (#1402) * add smoke alerts to mixin; move local alerts into examples dir (#1397) * add smoke alerts to mixin; move local alerts into examples dir * add podPrefix for smoke test * podPrefix in libsonnet config * [RFC] Integrations in Grafana Agent Operator (#1224) * rfc: integrations in grafana agent operator Supersedes #883 * add missing links * Apply suggestions from code review Co-authored-by: Florian Klink Co-authored-by: Robert Lankford * clarify how many daemonsets/deployments/service/secrets are created * add example of defining secrets * try defining integrations * s/IntegrationsMonitor/IntegrationMonitor/g * simplify proposal * add alternatives * remove old reference to `hasMetrics` field * document example generated agent configuration file * assign ID RFC-0002 * add missing PR link Co-authored-by: Florian Klink Co-authored-by: Robert Lankford * add fake rw endpoint to smoke program (#1405) * fix alerts typo (#1407) * continuous delivery for smoke images (#1408) Signed-off-by: Robbie Lankford * fix continuous delivery job errors (#1409) Signed-off-by: Robbie Lankford * [operator] - Use _file variants for basic auth credentials. (#1411) * use password_file alternatives in operator config * update tests * reduce smoke alert noise (#1412) * reduce smoke alert noise Signed-off-by: Robbie Lankford * Update production/grafana-agent-mixin/alerts.libsonnet Co-authored-by: Robert Fratto * update cpu check comment Signed-off-by: Robbie Lankford * add minimum load threshold to cpu alert Co-authored-by: Robert Fratto * Clarify usage of instanceNamespaceSelector (#1413) * RFC-0001: Add status to RFC (#1391) * rfc-0001: add rules for when RFC PRs should be merged * use status field instead of merge to indicating state * Parametrize logs DaemonSet K8s manifests (#1420) * Parametrize logs daemonset K8s manifests * Update CHANGELOG.md * Extend linting configuration file (#1421) * Add depguard linter to reject packages we tend to avoid * Replace golint with revive, since golint is deprecated * Remove interfacer, which is deprecated with no replacement * Add makezero linter to detect misuse of make with append * Add tenv to prefer t.Setenv over os.Setenv in tests * Add whitespace to report unnecessary blank lines * Ignore test files for errcheck In addition to the above, the following changes were made: * Remove settings that just re-set default values, instead pointing to the website to retrieve defaults. * Simplify the errcheck rule to only include functions we actually need to ignore. * Main merge changes Co-authored-by: Robert Fratto Co-authored-by: Ursula Kallio <73951760+osg-grafana@users.noreply.github.com> Co-authored-by: Mario Co-authored-by: Robert Lankford Co-authored-by: f11r Co-authored-by: f11r Co-authored-by: Nick Pillitteri <56quarters@users.noreply.github.com> Co-authored-by: Ryan Geyer Co-authored-by: Juraci Paixão Kröhling Co-authored-by: Robert Lankford Co-authored-by: Paschalis Tsilias Co-authored-by: Patrick Koenig Co-authored-by: DataPoints Co-authored-by: Alex <52292902+alexrudd2@users.noreply.github.com> Co-authored-by: Robert Fratto Co-authored-by: melGL <81323402+melgl@users.noreply.github.com> Co-authored-by: Tom Wilkie Co-authored-by: Joseph Woodward Co-authored-by: hanif Co-authored-by: Richard Hartmann Co-authored-by: laiwei Co-authored-by: Sam Co-authored-by: Chris Knutson Co-authored-by: Florian Klink Co-authored-by: Craig Peterson <192540+captncraig@users.noreply.github.com> --- .drone/drone.yml | 25 +- .github/dependabot.yml | 11 + .github/stale.yml | 26 -- .github/workflows/markdown.links.config.json | 3 + .github/workflows/publish.yml | 4 +- .github/workflows/stale.yml | 38 ++ .gitignore | 1 + .golangci.yml | 131 +++--- CHANGELOG.md | 36 +- MAINTAINERS.md | 13 +- Makefile | 22 +- README.md | 2 +- SECURITY.md | 20 + cmd/agent/entrypoint.go | 8 +- cmd/agentctl/main.go | 1 - docs/README.md | 27 +- docs/rfcs/0000-template.md | 6 + docs/rfcs/0001-designing-in-the-open.md | 160 +++++++ docs/rfcs/0002-integrations-in-operator.md | 300 +++++++++++++ docs/user/README.md | 21 + docs/{ => user}/_index.md | 0 docs/{ => user}/api/_index.md | 0 docs/{ => user}/assets/logo_and_name.png | Bin docs/{ => user}/configuration/_index.md | 0 .../configuration/integrations/_index.md | 0 .../integrations/cadvisor-config.md | 0 .../integrations/consul-exporter-config.md | 0 .../integrations/dnsmasq-exporter-config.md | 0 .../elasticsearch-exporter-config.md | 0 .../integrations/github-exporter-config.md | 0 .../integrations/integrations-next/_index.md | 173 +++++++ .../integrations-next/eventhandler-config.md | 301 +++++++++++++ .../integrations/kafka-exporter-config.md | 0 .../integrations/memcached-exporter-config.md | 0 .../integrations/mongodb_exporter-config.md | 0 .../integrations/mysqld-exporter-config.md | 0 .../integrations/node-exporter-config.md | 6 +- .../integrations/postgres-exporter-config.md | 0 .../integrations/process-exporter-config.md | 4 +- .../integrations/redis-exporter-config.md | 0 .../integrations/statsd-exporter-config.md | 0 .../integrations/windows-exporter-config.md | 0 docs/{ => user}/configuration/logs-config.md | 0 .../configuration/metrics-config.md | 0 .../{ => user}/configuration/server-config.md | 0 .../{ => user}/configuration/traces-config.md | 25 ++ docs/{ => user}/getting-started/_index.md | 2 +- .../getting-started/create-config-file.md | 4 +- .../install-agent-on-windows.md | 8 +- docs/{ => user}/operation-guide/_index.md | 0 docs/{ => user}/operator/_index.md | 0 .../operator/add-custom-scrape-jobs.md | 0 docs/{ => user}/operator/architecture.md | 0 .../operator/custom-resource-quickstart.md | 4 +- docs/{ => user}/operator/getting-started.md | 4 +- .../operator/helm-getting-started.md | 0 docs/{ => user}/scraping-service/_index.md | 0 docs/{ => user}/upgrade-guide/_index.md | 0 example/k3d/README.md | 11 +- example/k3d/environment/main.jsonnet | 2 +- example/k3d/jsonnetfile.lock.json | 4 +- example/k3d/scripts/smoke-test.bash | 49 +- example/k3d/smoke/main.jsonnet | 61 ++- example/k3d/smoke/monitoring/main.jsonnet | 1 + go.mod | 8 +- go.sum | 14 +- pkg/config/config.go | 4 +- pkg/config/config_test.go | 27 +- pkg/config/dynamicloader_configs_test.go | 2 - pkg/config/dynamicloader_template_test.go | 4 +- pkg/crow/crow.go | 26 +- pkg/integrations/cadvisor/common.go | 2 +- .../dnsmasq_exporter/dnsmasq_exporter.go | 2 +- .../github_exporter/github_exporter.go | 3 +- pkg/integrations/install/install.go | 1 + pkg/integrations/manager_test.go | 12 +- .../memcached_exporter/memcached_exporter.go | 2 +- .../mongodb_exporter/mongodb_exporter.go | 1 - .../postgres_exporter/postgres_test.go | 1 - .../redis_exporter/redis_exporter.go | 4 +- .../redis_exporter/redis_exporter_test.go | 2 - pkg/integrations/v2/autoscrape/autoscrape.go | 4 +- .../v2/autoscrape/autoscrape_test.go | 14 +- pkg/integrations/v2/common/metrics.go | 2 + pkg/integrations/v2/controller.go | 177 ++------ .../v2/controller_metricsintegration_test.go | 39 +- pkg/integrations/v2/controller_test.go | 55 +-- .../v2/eventhandler/eventhandler.go | 424 ++++++++++++++++++ .../v2/eventhandler/eventhandler_test.go | 24 + .../v2/eventhandler/integration.go | 69 +++ .../eventhandler/testdata/eventhandler.cache | 1 + .../metricshandler_integration.go | 5 + .../metricshandler_integration_test.go | 82 ++++ pkg/integrations/v2/subsystem_test.go | 1 - pkg/integrations/v2/workers.go | 122 +++++ .../windows_exporter_windows.go | 2 +- pkg/metrics/agent.go | 22 + pkg/metrics/agent_test.go | 4 + pkg/metrics/cluster/cluster.go | 5 +- pkg/metrics/cluster/config_watcher_test.go | 1 - pkg/metrics/http_test.go | 20 +- pkg/metrics/instance/configstore/api_test.go | 1 + pkg/metrics/instance/configstore/remote.go | 4 +- pkg/metrics/instance/host_filter.go | 1 - pkg/metrics/instance/instance.go | 16 +- .../instance/instance_integration_test.go | 1 - pkg/metrics/instance/instance_test.go | 1 - pkg/metrics/instance/manager.go | 1 + pkg/metrics/instance/manager_test.go | 8 + pkg/metrics/instance/marshal.go | 2 + pkg/metrics/instance/marshal_test.go | 10 +- pkg/metrics/instance/noop.go | 5 + pkg/metrics/wal/series.go | 47 +- pkg/metrics/wal/wal.go | 46 +- pkg/metrics/wal/wal_test.go | 62 +++ .../apis/monitoring/v1alpha1/types.go | 5 + pkg/operator/build_hierarchy.go | 2 +- pkg/operator/build_hierarchy_test.go | 27 +- pkg/operator/clientutil/merge.go | 9 +- pkg/operator/config/config_test.go | 8 +- pkg/operator/config/fs_importer.go | 1 - pkg/operator/config/metrics_templates_test.go | 4 +- .../component/metrics/remote_write.libsonnet | 4 +- pkg/operator/defaults.go | 1 + pkg/operator/hierarchy/selector.go | 2 - pkg/operator/reconciler_logs.go | 2 + pkg/operator/reconciler_metrics.go | 2 + pkg/operator/resources_logs.go | 1 + pkg/operator/resources_metrics.go | 6 + .../automaticloggingprocessor/factory.go | 2 +- pkg/traces/config.go | 125 +++++- pkg/traces/config_test.go | 243 +++++++++- pkg/traces/instance.go | 54 ++- pkg/traces/internal/traceutils/server.go | 4 +- pkg/traces/noopreceiver/factory.go | 1 + pkg/traces/promsdprocessor/factory.go | 2 +- pkg/traces/remotewriteexporter/exporter.go | 2 +- .../remotewriteexporter/exporter_test.go | 10 +- pkg/traces/remotewriteexporter/factory.go | 2 +- pkg/traces/servicegraphprocessor/factory.go | 2 +- pkg/traces/servicegraphprocessor/processor.go | 1 - .../servicegraphprocessor/processor_test.go | 1 - pkg/traces/traces.go | 20 +- pkg/traces/traces_test.go | 4 +- pkg/util/logger.go | 17 +- pkg/util/strings.go | 15 + pkg/util/trigger_test.go | 1 - production/README.md | 4 +- .../grafana-agent-mixin/alerts.libsonnet | 115 +++++ production/grafanacloud-install.sh | 2 +- production/kubernetes/agent-bare.yaml | 2 +- production/kubernetes/agent-loki.yaml | 8 +- production/kubernetes/agent-traces.yaml | 2 +- .../kubernetes/build/lib/version.libsonnet | 2 +- .../build/templates/loki/main.jsonnet | 2 +- production/kubernetes/install-bare.sh | 2 +- .../monitoring.grafana.com_grafanaagents.yaml | 5 + .../smoke}/avalanche/main.libsonnet | 0 .../grafana-agent/smoke}/crow/main.libsonnet | 6 +- .../grafana-agent/smoke}/etcd/main.libsonnet | 0 .../tanka/grafana-agent/smoke/main.libsonnet | 68 +++ .../tanka/grafana-agent/v1/main.libsonnet | 4 +- .../grafana-agent/v2/internal/base.libsonnet | 4 +- .../v2/internal/syncer.libsonnet | 2 +- .../tanka/grafana-agent/v2/main.libsonnet | 7 +- tools/crow/.gitignore | 1 + .../crow}/Dockerfile | 4 +- .../crow}/Dockerfile.buildx | 5 +- .../crow}/README.md | 0 .../grafana-agent-crow => tools/crow}/main.go | 0 tools/smoke/.gitignore | 1 + tools/smoke/Dockerfile | 23 + tools/smoke/Dockerfile.buildx | 32 ++ tools/smoke/internal/smoke.go | 151 +++++++ tools/smoke/internal/tasks.go | 101 +++++ tools/smoke/internal/tasks_test.go | 144 ++++++ tools/smoke/main.go | 49 ++ 177 files changed, 3653 insertions(+), 580 deletions(-) create mode 100644 .github/dependabot.yml delete mode 100644 .github/stale.yml create mode 100644 .github/workflows/stale.yml create mode 100644 SECURITY.md create mode 100644 docs/rfcs/0000-template.md create mode 100644 docs/rfcs/0001-designing-in-the-open.md create mode 100644 docs/rfcs/0002-integrations-in-operator.md create mode 100644 docs/user/README.md rename docs/{ => user}/_index.md (100%) rename docs/{ => user}/api/_index.md (100%) rename docs/{ => user}/assets/logo_and_name.png (100%) rename docs/{ => user}/configuration/_index.md (100%) rename docs/{ => user}/configuration/integrations/_index.md (100%) rename docs/{ => user}/configuration/integrations/cadvisor-config.md (100%) rename docs/{ => user}/configuration/integrations/consul-exporter-config.md (100%) rename docs/{ => user}/configuration/integrations/dnsmasq-exporter-config.md (100%) rename docs/{ => user}/configuration/integrations/elasticsearch-exporter-config.md (100%) rename docs/{ => user}/configuration/integrations/github-exporter-config.md (100%) create mode 100644 docs/user/configuration/integrations/integrations-next/_index.md create mode 100644 docs/user/configuration/integrations/integrations-next/eventhandler-config.md rename docs/{ => user}/configuration/integrations/kafka-exporter-config.md (100%) rename docs/{ => user}/configuration/integrations/memcached-exporter-config.md (100%) rename docs/{ => user}/configuration/integrations/mongodb_exporter-config.md (100%) rename docs/{ => user}/configuration/integrations/mysqld-exporter-config.md (100%) rename docs/{ => user}/configuration/integrations/node-exporter-config.md (99%) rename docs/{ => user}/configuration/integrations/postgres-exporter-config.md (100%) rename docs/{ => user}/configuration/integrations/process-exporter-config.md (98%) rename docs/{ => user}/configuration/integrations/redis-exporter-config.md (100%) rename docs/{ => user}/configuration/integrations/statsd-exporter-config.md (100%) rename docs/{ => user}/configuration/integrations/windows-exporter-config.md (100%) rename docs/{ => user}/configuration/logs-config.md (100%) rename docs/{ => user}/configuration/metrics-config.md (100%) rename docs/{ => user}/configuration/server-config.md (100%) rename docs/{ => user}/configuration/traces-config.md (91%) rename docs/{ => user}/getting-started/_index.md (99%) rename docs/{ => user}/getting-started/create-config-file.md (97%) rename docs/{ => user}/getting-started/install-agent-on-windows.md (86%) rename docs/{ => user}/operation-guide/_index.md (100%) rename docs/{ => user}/operator/_index.md (100%) rename docs/{ => user}/operator/add-custom-scrape-jobs.md (100%) rename docs/{ => user}/operator/architecture.md (100%) rename docs/{ => user}/operator/custom-resource-quickstart.md (96%) rename docs/{ => user}/operator/getting-started.md (97%) rename docs/{ => user}/operator/helm-getting-started.md (100%) rename docs/{ => user}/scraping-service/_index.md (100%) rename docs/{ => user}/upgrade-guide/_index.md (100%) create mode 100644 pkg/integrations/v2/eventhandler/eventhandler.go create mode 100644 pkg/integrations/v2/eventhandler/eventhandler_test.go create mode 100644 pkg/integrations/v2/eventhandler/integration.go create mode 100644 pkg/integrations/v2/eventhandler/testdata/eventhandler.cache create mode 100644 pkg/integrations/v2/metricsutils/metricshandler_integration_test.go create mode 100644 pkg/integrations/v2/workers.go create mode 100644 pkg/util/strings.go rename {example/k3d/lib => production/tanka/grafana-agent/smoke}/avalanche/main.libsonnet (100%) rename {example/k3d/lib => production/tanka/grafana-agent/smoke}/crow/main.libsonnet (77%) rename {example/k3d/lib => production/tanka/grafana-agent/smoke}/etcd/main.libsonnet (100%) create mode 100644 production/tanka/grafana-agent/smoke/main.libsonnet create mode 100644 tools/crow/.gitignore rename {cmd/grafana-agent-crow => tools/crow}/Dockerfile (57%) rename {cmd/grafana-agent-crow => tools/crow}/Dockerfile.buildx (81%) rename {cmd/grafana-agent-crow => tools/crow}/README.md (100%) rename {cmd/grafana-agent-crow => tools/crow}/main.go (100%) create mode 100644 tools/smoke/.gitignore create mode 100644 tools/smoke/Dockerfile create mode 100644 tools/smoke/Dockerfile.buildx create mode 100644 tools/smoke/internal/smoke.go create mode 100644 tools/smoke/internal/tasks.go create mode 100644 tools/smoke/internal/tasks_test.go create mode 100644 tools/smoke/main.go diff --git a/.drone/drone.yml b/.drone/drone.yml index f9c7a9f5d9c5..5f294b0e0eb3 100644 --- a/.drone/drone.yml +++ b/.drone/drone.yml @@ -16,7 +16,7 @@ trigger: steps: - name: lint - image: golangci/golangci-lint:v1.43 + image: golangci/golangci-lint:v1.44 commands: - apt-get update -y && apt-get install -y libsystemd-dev - make lint @@ -53,7 +53,7 @@ steps: - tar -C /usr/local -xzf go1.17.6.linux-amd64.tar.gz - rm go1.17.6.linux-amd64.tar.gz - export PATH=$PATH:/usr/local/go/bin - - make cmd/agent/agent cmd/agentctl/agentctl cmd/agent-operator/agent-operator cmd/grafana-agent-crow/grafana-agent-crow + - make cmd/agent/agent cmd/agentctl/agentctl cmd/agent-operator/agent-operator tools/crow/grafana-agent-crow tools/smoke/grafana-agent-smoke - make K8S_USE_DOCKER_NETWORK=1 DRONE=true BUILD_IN_CONTAINER=false test depends_on: - Lint @@ -113,7 +113,11 @@ steps: from_secret: DOCKER_LOGIN DOCKER_PASSWORD: from_secret: DOCKER_PASSWORD + GCR_CREDS: + from_secret: gcr_admin commands: + - mkdir -p $HOME/.docker + - printenv GCR_CREDS > $HOME/.docker/config.json - docker login -u $DOCKER_LOGIN -p $DOCKER_PASSWORD - apk update && apk add make bash wget git qemu - wget -q https://github.com/docker/buildx/releases/download/v0.5.1/buildx-v0.5.1.linux-amd64 @@ -128,6 +132,7 @@ steps: - make DRONE=true CROSS_BUILD=true BUILD_IN_CONTAINER=true RELEASE_BUILD=true agentctl-image - make DRONE=true CROSS_BUILD=true BUILD_IN_CONTAINER=true RELEASE_BUILD=true agent-operator-image - make DRONE=true CROSS_BUILD=true BUILD_IN_CONTAINER=true RELEASE_BUILD=true grafana-agent-crow-image + - make DRONE=true CROSS_BUILD=true BUILD_IN_CONTAINER=true RELEASE_BUILD=true agent-smoke-image - docker buildx rm multiarch depends_on: @@ -156,6 +161,7 @@ steps: image: alpine commands: - apk update && apk add git + - echo "$(sh ./tools/image-tag)" > .tag-only - echo "grafana/agent:$(sh ./tools/image-tag)" > .image-tag - name: Update Deployment Tools image: us.gcr.io/kubernetes-dev/drone/plugins/updater @@ -174,6 +180,11 @@ steps: "file_path": "ksonnet/environments/platform-observability/waves/agent.libsonnet", "jsonnet_key": "dev_canary", "jsonnet_value_file": ".image-tag" + }, + { + "file_path": "ksonnet/environments/agent-smoke-test/dev-us-central-0.agent-smoke-test/main.jsonnet", + "jsonnet_key": "image_tag", + "jsonnet_value_file": ".tag-only" } ] } @@ -243,6 +254,14 @@ get: path: secret/data/common/gcr name: .dockerconfigjson +--- +kind: secret +name: gcr_admin + +get: + name: .dockerconfigjson + path: infra/data/ci/gcr-admin + --- kind: secret name: gh_token @@ -252,6 +271,6 @@ get: name: pat --- kind: signature -hmac: 87a9a23731884dac8e0b5c3ee0fa2b5cef9d7fa490fcad649f7783f6ea9d2d32 +hmac: 76ba44a90ab332caf4cd3bc11529e7ea674d4706ab8b4928b17b8c7dcda8abea ... diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 000000000000..98a246f1c51a --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,11 @@ +version: 2 +updates: + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "weekly" + - package-ecosystem: "gomod" + directory: "/" + schedule: + interval: "daily" + open-pull-requests-limit: 2 diff --git a/.github/stale.yml b/.github/stale.yml deleted file mode 100644 index f5c917302d5e..000000000000 --- a/.github/stale.yml +++ /dev/null @@ -1,26 +0,0 @@ -# Days without any activity until an issue is labeled as stale -daysUntilStale: 30 - -# Days after having the stale label that the issue will be closed -daysUntilClose: 7 - -# Labels that prevent issues from being marked as stale -exemptLabels: - - keepalive - - proposal - - outdated-dependency - - dev-branch - -# Label to use to identify a stale issue -staleLabel: stale - -# Comment to post when marking an issue as stale. Leave as false -# to disable. -markComment: > - This issue has been automatically marked as stale because it has not had any - activity in the past 30 days. It will be closed in 7 days if no further - activity occurs. Thank you for your contributions. - -# Comment to post when closing a stale issue. Leave as -# false to disable. -closeComment: false diff --git a/.github/workflows/markdown.links.config.json b/.github/workflows/markdown.links.config.json index 1c42ecb1d4bf..28863d7bdd71 100644 --- a/.github/workflows/markdown.links.config.json +++ b/.github/workflows/markdown.links.config.json @@ -1,5 +1,8 @@ { "ignorePatterns": [ + { + "pattern": "^https://github.com/grafana/agent/pull/XXXX$" + }, { "pattern": "^http://prometheus.k3d.localhost:30080" }, diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index dc164698cd2a..ac94e4297517 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -5,7 +5,7 @@ on: branches: - main paths: - - 'docs/**' + - 'docs/user/**' jobs: sync: @@ -21,7 +21,7 @@ jobs: branch: master host: github.com github_pat: '${{ secrets.GH_BOT_ACCESS_TOKEN }}' - source_folder: docs + source_folder: docs/user target_folder: content/docs/agent/latest - shell: bash run: | diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml new file mode 100644 index 000000000000..a1820c9c004b --- /dev/null +++ b/.github/workflows/stale.yml @@ -0,0 +1,38 @@ +name: Stale check +on: + workflow_dispatch: {} + schedule: + - cron: '0 0 * * *' +permissions: + issues: write + pull-requests: write +jobs: + stale: + runs-on: ubuntu-latest + steps: + - uses: actions/stale@v4 + with: + days-before-stale: 30 + days-before-close: 7 + stale-issue-message: > + This issue has been automatically marked as stale because it has + not had any activity in the past 30 days. + + The next time this stale check runs, the stale label will be + removed if there is new activity. The issue will be closed in 7 + days if there is no new activity. + + Thank you for your contributions! + stale-pr-message: > + This PR has been automatically marked as stale because it has not + had any activity in the past 30 days. + + The next time this stale check runs, the stale label will be + removed if there is new activity. The issue will be closed in 7 + days if there is no new activity. + + Thank you for your contributions! + stale-issue-label: stale + stale-pr-label: stale + exempt-issue-labels: keepalive,proposal,outdated-dependency,dev-branch + exempt-pr-labels: keepalive,proposal,outdated-dependency,dev-branch diff --git a/.gitignore b/.gitignore index fb39d6a8c73f..37ebb2fe7c3e 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ /.pkg /.cache /.vscode +/.eventcache vendor /cmd/agent/agent diff --git a/.golangci.yml b/.golangci.yml index 565377a1ae63..994a45adccb6 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,74 +1,83 @@ -# This file contains all available configuration options -# with their default values. +# Full list of configuration options: https://golangci-lint.run/usage/configuration/ -# options for analysis running run: - # default concurrency is a available CPU number - concurrency: 16 - - # timeout for analysis, e.g. 30s, 5m, default is 1m timeout: 5m - # exit code when at least one issue was found, default is 1 - issues-exit-code: 1 - - # include test files or not, default is true - tests: true - - # list of build2 tags, all linters use it. Default is empty list. - build-tags: - - # which dirs to skip: they won't be analyzed; - # can use regexp here: generated.*, regexp is applied on full path; - # default value is empty list, but next dirs are always skipped independently - # from this option's value: - # vendor$, third_party$, testdata$, examples$, Godeps$, builtin$ - skip-dirs: - # which files to skip: they will be analyzed, but issues from them - # won't be reported. Default value is empty list, but there is - # no need to include all autogenerated files, we confidently recognize - # autogenerated files. If it's not please let us know. - skip-files: -# output configuration options output: - # colored-line-number|line-number|json|tab|checkstyle, default is "colored-line-number" - format: colored-line-number - - # print lines of code with issue, default is true - print-issued-lines: true - - # print linter name in the end of issue text, default is true - print-linter-name: true + sort-results: true linters: enable: - - deadcode - - errcheck - - goconst - - gofmt - - goimports - - golint - - gosimple - - ineffassign - - megacheck - - misspell - - structcheck - - unconvert - - unparam - - varcheck - - govet - - unused # new from here. - - interfacer - - typecheck + - deadcode # Report on unused code + - errcheck # Report unchecked errors + - goconst # Find repeated strings that could be replaced by constant + - gofmt # Check whether code was gofmt-ed + - goimports # Check imports were formatted with gofmt + - revive # Broad set of rules; replaces deprecated golint + - gosimple # Check whether code can be simplified + - ineffassign # Detect when assignment to variable is never used + - misspell # Report on commonly misspelled English words + - structcheck # Report on unused struct fields + - unconvert # Remove unnecessary type conversions + - unparam # Detect unused function parameters + - varcheck # Find unused global variables/constants + - govet # `go vet` + - unused # Detect unused constants/variables/functions/types + - typecheck # Ensure code typechecks + - depguard # Allow/denylist specific imports + - makezero # Detect misuse of make with non-zero length and append + - tenv # Use testing.(*T).Setenv instead of os.Setenv + - whitespace # Report unnecessary blank lines issues: - # golangci-lint excludes some stuff we want by default (i.e., proper go-style comments). - # We exclude the defaults and then manually exclude the subset of defaults we truly don't - # care about. + # We want to use our own exclusion rules and ignore all the defaults. exclude-use-default: false + exclude-rules: + # It's fine if tests ignore errors. + - path: _test.go + linters: + - errcheck + exclude: - # EXC0001 errcheck: Almost all programs ignore errors on these functions - # and in most cases it's ok. This is copied from the golangci-lint defaults - # mut modified to include go-kit logging. - - Error return value of .((os\.)?std(out|err)\..*|.*Close|.*Flush|os\.Remove(All)?|.*print(f|ln)?|os\.(Un)?Setenv|.*\.Log). is not checked + # Ignoring errors on Close, Log, and removing files is OK in most cases. + - "Error return value of `(.*\\.Close|.*\\.Log|os.Remove)` is not checked" + # Packages for integrations are named matching their upstream counterpart, + # which almost always have underscores. + - "var-naming: don't use an underscore in package name" + +# Linter settings options: https://golangci-lint.run/usage/linters/ +linters-settings: + depguard: + # We want to report errors on stdlib packages, not just third party modules + include-go-root: true + + packages-with-error-message: + - sync/atomic: "Use go.uber.org/atomic instead of sync/atomic" + - github.com/pkg/errors: "Use errors instead of github.com/pkg/errors" + - github.com/go-kit/kit/log: "Use github.com/go-kit/log instead of github.com/go-kit/kit/log" + - golang.org/x/sync/errgroup: "Use github.com/oklog/run instead of golang.org/x/sync/errgroup" + + whitespace: + # While there normally shouldn't be extra redundant leading/trailing + # whitespace, if statement conditions and function headers that cross + # multiple lines are an exception. + # + # if true || + # false { + # + # // ... ^ must have empty line above + # } + # + # func foo( + # a int, + # ) { + # + # // ... ^ must have empty line above + # } + # + # This helps readers easily separate where the multi-line if/function ends + # at a glance. + multi-if: true + multi-func: true + diff --git a/CHANGELOG.md b/CHANGELOG.md index 7d9e511b42d4..abce075e8858 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,30 @@ # Main (unreleased) +- [ENHANCEMENT] opentelemetry trace exporters can now be configured to support Oauth utilizing + the opentelemetry-collector-contrib oauth2clientauthextension. (@canuteson) + +- [ENHANCEMENT] Strengthen readiness check for metrics instances. (@tpaschalis) + +- [ENHANCEMENT] Parameterize namespace field in sample K8s logs manifests (@hjet) + +- [ENCHANCEMENT] (EXPERIMENTAL) Add support for dynamic configurations (@mattdurham) + +- [BUGFIX] Enforce singletons for v2 integrations (@mattdurham) + +- [FEATURE] Added config read API support to GrafanaAgent Custom Resource Definition. + +# v0.23.0 (2022-01-13) + - [ENHANCEMENT] Go 1.17 is now used for all builds of the Agent. (@tpaschalis) -- [ENHANCEMENT] Introduce EXPERIMENTAL support for dynamic configuration. (@mattdurham) +- [ENHANCEMENT] integrations-next: Add `extra_labels` to add a custom set of + labels to integration targets. (@rfratto) + +- [ENHANCEMENT] The agent no longer appends duplicate exemplars. (@tpaschalis) + +- [ENHANCEMENT] Added Kubernetes eventhandler integration (@hjet) + +- [ENHANCEMENT] Enables sending of exemplars over remote write by default. (@rlankfo) - [BUGFIX] Fixed issue where Grafana Agent may panic if there is a very large WAL loading while old WALs are being deleted or the `/agent/api/v1/targets` @@ -13,12 +35,24 @@ - [BUGFIX] Operator: Add missing proxy_url field from generated remote_write configs. (@rfratto) +- [BUGFIX] Honor the specified log format in the traces subsystem (@mapno) + +- [BUGFIX] Fix typo in node_exporter for runit_service_dir. (@mattdurham) + +- [BUGFIX] Allow inlining credentials in remote_write url. (@tpaschalis) + +- [BUGFIX] integrations-next: Wait for integrations to stop when starting new + instances or shutting down (@rfratto). + +- [BUGFIX] Fix issue with windows_exporter mssql collector crashing the agent. (@mattdurham) + # v0.22.0 (2022-01-13) This release has deprecations. Please read [DEPRECATION] entries and consult the [upgrade guide](https://github.com/grafana/agent/blob/main/docs/upgrade-guide/_index.md) for detailed information. + - [FEATURE] (beta) Enable experimental config urls for fetching remote configs. Currently, only HTTP/S is supported. Pass the `-enable-features=remote-configs` flag to turn this on. (@rlankfo) diff --git a/MAINTAINERS.md b/MAINTAINERS.md index bb26074b6254..13e7d43fb6a3 100644 --- a/MAINTAINERS.md +++ b/MAINTAINERS.md @@ -1,8 +1,13 @@ -Robert Fratto ( / @rfratto) is the main/default maintainer, some parts of the codebase have other maintainers: +The following people are the primary maintainers of the project: -* `pkg` - * `traces`: Joe Elliott ( / @joe-elliott), Mario Rodriguez (/ @mapno) - * `integrations`: Gabriel Antunes ( / @gaantunes), Ryan Geyer ( / @rgeyer) +* Robert Fratto ( / @rfratto) +* Matt Durham ( / @mattdurham) +* Robbie Lankford ( / @rlankfo) + +Some parts of the codebase have other maintainers: + +* `pkg/traces`: Joe Elliott ( / @joe-elliott), Mario Rodriguez (/ @mapno) +* `pkg/integrations`: Gabriel Antunes ( / @gaantunes), Ryan Geyer ( / @rgeyer) For the sake of brevity, not all subtrees are explicitly listed. Due to the size of this repository, the natural changes in focus of maintainers over time, diff --git a/Makefile b/Makefile index 8454824a028b..fbe0c4902aa9 100644 --- a/Makefile +++ b/Makefile @@ -19,6 +19,9 @@ IMAGE_BRANCH_TAG = latest endif DRONE ?= false +# INTERNAL_REGISTRY used for pushing images to grafana internal registry +INTERNAL_REGISTRY ?= us.gcr.io/kubernetes-dev + # TARGETPLATFORM is specifically called from `docker buildx --platform`, this is mainly used when pushing docker image manifests, normal generally means NON DRONE builds TARGETPLATFORM ?=normal @@ -180,7 +183,8 @@ all: protos agent agentctl agent: cmd/agent/agent agentctl: cmd/agentctl/agentctl agent-operator: cmd/agent-operator/agent-operator -grafana-agent-crow: cmd/grafana-agent-crow/grafana-agent-crow +agent-smoke: tools/smoke/grafana-agent-smoke +grafana-agent-crow: tools/crow/grafana-agent-crow # In general DRONE variable should overwrite any other options, if DRONE is not set then fallback to normal behavior @@ -196,10 +200,16 @@ cmd/agent-operator/agent-operator: cmd/agent-operator/main.go $(ALL_CGO_BUILD_FLAGS) ; $(seego) build $(CGO_FLAGS) -o $@ ./$(@D) $(NETGO_CHECK) -cmd/grafana-agent-crow/grafana-agent-crow: cmd/grafana-agent-crow/main.go +tools/crow/grafana-agent-crow: tools/crow/main.go + $(ALL_CGO_BUILD_FLAGS) ; $(seego) build $(CGO_FLAGS) -o $@ ./$(@D) + $(NETGO_CHECK) + +tools/smoke/grafana-agent-smoke: tools/smoke/main.go $(ALL_CGO_BUILD_FLAGS) ; $(seego) build $(CGO_FLAGS) -o $@ ./$(@D) $(NETGO_CHECK) + + agent-image: $(docker-build) -t $(IMAGE_PREFIX)/agent:$(IMAGE_BRANCH_TAG) -t $(IMAGE_PREFIX)/agent:$(IMAGE_TAG) -f cmd/agent/$(DOCKERFILE) . agentctl-image: @@ -207,13 +217,16 @@ agentctl-image: agent-operator-image: $(docker-build) -t $(IMAGE_PREFIX)/agent-operator:$(IMAGE_BRANCH_TAG) -t $(IMAGE_PREFIX)/agent-operator:$(IMAGE_TAG) -f cmd/agent-operator/$(DOCKERFILE) . grafana-agent-crow-image: - $(docker-build) -t $(IMAGE_PREFIX)/agent-crow:$(IMAGE_BRANCH_TAG) -t $(IMAGE_PREFIX)/agent-crow:$(IMAGE_TAG) -f cmd/grafana-agent-crow/$(DOCKERFILE) . + $(docker-build) -t $(INTERNAL_REGISTRY)/$(IMAGE_PREFIX)/agent-crow:$(IMAGE_BRANCH_TAG) -t $(INTERNAL_REGISTRY)/$(IMAGE_PREFIX)/agent-crow:$(IMAGE_TAG) -f tools/crow/$(DOCKERFILE) . +agent-smoke-image: + $(docker-build) -t $(INTERNAL_REGISTRY)/$(IMAGE_PREFIX)/agent-smoke:$(IMAGE_BRANCH_TAG) -t $(INTERNAL_REGISTRY)/$(IMAGE_PREFIX)/agent-smoke:$(IMAGE_TAG) -f tools/smoke/$(DOCKERFILE) . install: CGO_ENABLED=1 go install $(CGO_FLAGS) ./cmd/agent CGO_ENABLED=0 go install $(GO_FLAGS) ./cmd/agentctl CGO_ENABLED=0 go install $(GO_FLAGS) ./cmd/agent-operator - CGO_ENABLED=0 go install $(GO_FLAGS) ./cmd/grafana-agent-crow + CGO_ENABLED=0 go install $(GO_FLAGS) ./tools/crow + CGO_ENABLED=0 go install $(GO_FLAGS) ./tools/smoke ####################### # Development targets # @@ -306,7 +319,6 @@ endif dist/agent-freebsd-amd64: seego $(call SetBuildVarsConditional,freebsd); $(seego) build $(CGO_FLAGS) -o $@ ./cmd/agent - ####################### # BEGIN AGENTCTL DIST # ####################### diff --git a/README.md b/README.md index 11350cb4bbdd..279dfe9db148 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -

Grafana Agent logo

+

Grafana Agent logo

Grafana Agent is a telemetry collector for sending metrics, logs, and trace data to the opinionated Grafana observability stack. It works best diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 000000000000..06123c276aa5 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,20 @@ +# Reporting security issues + +If you think you have found a security vulnerability, please send a report to [security@grafana.com](mailto:security@grafana.com). This address can be used for all of Grafana Labs's open source and commercial products (including but not limited to Grafana, Grafana Cloud, Grafana Enterprise, and grafana.com). We can accept only vulnerability reports at this address. + +Please encrypt your message to us; please use our PGP key. The key fingerprint is: + +F988 7BEA 027A 049F AE8E 5CAA D125 8932 BE24 C5CA + +The key is available from [keyserver.ubuntu.com](https://keyserver.ubuntu.com/pks/lookup?search=0xF9887BEA027A049FAE8E5CAAD1258932BE24C5CA&fingerprint=on&op=index). + +Grafana Labs will send you a response indicating the next steps in handling your report. After the initial reply to your report, the security team will keep you informed of the progress towards a fix and full announcement, and may ask for additional information or guidance. + +**Important:** We ask you to not disclose the vulnerability before it has been fixed and announced, unless you received a response from the Grafana Labs security team that you can do so. + +## Security announcements + +We maintain a category on the community site called [Security Announcements](https://community.grafana.com/c/support/security-announcements), +where we will post a summary, remediation, and mitigation details for any patch containing security fixes. + +You can also subscribe to email updates to this category if you have a grafana.com account and sign on to the community site or track updates via an [RSS feed](https://community.grafana.com/c/support/security-announcements.rss). diff --git a/cmd/agent/entrypoint.go b/cmd/agent/entrypoint.go index a7d77277cb7e..7ef69f5c1bbb 100644 --- a/cmd/agent/entrypoint.go +++ b/cmd/agent/entrypoint.go @@ -85,7 +85,7 @@ func NewEntrypoint(logger *util.Logger, cfg *config.Config, reloader Reloader) ( return nil, err } - ep.tempoTraces, err = traces.New(ep.lokiLogs, ep.promMetrics.InstanceManager(), prometheus.DefaultRegisterer, cfg.Traces, cfg.Server.LogLevel.Logrus) + ep.tempoTraces, err = traces.New(ep.lokiLogs, ep.promMetrics.InstanceManager(), prometheus.DefaultRegisterer, cfg.Traces, cfg.Server.LogLevel.Logrus, cfg.Server.LogFormat) if err != nil { return nil, err } @@ -196,6 +196,12 @@ func (ep *Entrypoint) wire(mux *mux.Router, grpc *grpc.Server) { }) mux.HandleFunc("/-/ready", func(w http.ResponseWriter, r *http.Request) { + if !ep.promMetrics.Ready() { + w.WriteHeader(http.StatusServiceUnavailable) + fmt.Fprint(w, "Metrics are not ready yet.\n") + + return + } w.WriteHeader(http.StatusOK) fmt.Fprintf(w, "Agent is Ready.\n") }) diff --git a/cmd/agentctl/main.go b/cmd/agentctl/main.go index dc76546e753d..a19eb9b70b35 100644 --- a/cmd/agentctl/main.go +++ b/cmd/agentctl/main.go @@ -478,7 +478,6 @@ config that may be used with this agent.`, } func templateDryRunCmd() *cobra.Command { - cmd := &cobra.Command{ Use: "template-parse [directory]", Short: "dry run dynamic configuration", diff --git a/docs/README.md b/docs/README.md index 51c262484e4c..88efe6babd4f 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,21 +1,10 @@ -+++ -draft = "True" -+++ +# Grafana Agent Documentation -

Grafana Agent logo

+This directory contains documentation for Grafana Agent. It is split into two +parts: -Grafana Agent is an telemetry collector for sending metrics, logs, -and trace data to the opinionated Grafana observability stack. It works best -with: - -* [Grafana Cloud](https://grafana.com/products/cloud/) -* [Grafana Enterprise Stack](https://grafana.com/products/enterprise/) -* OSS deployments of [Grafana Loki](https://grafana.com/oss/loki/), [Prometheus](https://prometheus.io/), [Cortex](https://cortexmetrics.io/), and [Grafana Tempo](https://grafana.com/oss/tempo/) - - -- Grafana Agent uses less memory on average than Prometheus – by doing less - (only focusing on `remote_write`-related functionality). -- Grafana Agent allows for deploying multiple instances of the Agent in a - cluster and only scraping metrics from targets that are running on the same host. - This allows for distributing memory requirements across the cluster - rather than pressurizing a single node. +* `user/`: Documentation for users. This directory is hosted on + [grafana.com/docs/agent](https://grafana.com/docs/agent/latest/) and we + recommend interacting with it there instead of viewing the markdown on + Github. +* `rfcs/`: RFCs for proposals relating to Grafana Agent. diff --git a/docs/rfcs/0000-template.md b/docs/rfcs/0000-template.md new file mode 100644 index 000000000000..bbc01019c3ab --- /dev/null +++ b/docs/rfcs/0000-template.md @@ -0,0 +1,6 @@ +# Title + +* Date: YYYY-MM-DD +* Author: Full Name (@github_username) +* PR: [grafana/agent#XXXX](https://github.com/grafana/agent/pull/XXXX) +* Status: Draft diff --git a/docs/rfcs/0001-designing-in-the-open.md b/docs/rfcs/0001-designing-in-the-open.md new file mode 100644 index 000000000000..bccf3a527f40 --- /dev/null +++ b/docs/rfcs/0001-designing-in-the-open.md @@ -0,0 +1,160 @@ +# Designing in the Open + +* Date: 2021-11-02 +* Author: Robert Fratto (@rfratto) +* PR: [grafana/agent#1055](https://github.com/grafana/agent/pull/1055) +* Status: Implemented + +## Summary + +Many open source projects start behind closed doors, where it's designed, +prototyped, and tested before being released publicly. This can be true +regardless of why the project is being made; even personal side projects likely +start by someone designing alone. + +Meanwhile, many open source projects might want to create a community of +developers. Much of the beauty of succesful open source projects originates +from the varied backgrounds of its contributors: different people with +different use cases combining together to make a widely useful piece of +software. + +However, even with an intent to foster a community of developers, it's natural +to accidentally build a habit from the closed-door design process. Even when +once-private proposals are made public, potential external contributors can +find themselves simply as spectators: + +* Initial design is gated to core maintainers, in particular if they all work + for the same company. This leaves less room for new people to help out. +* New concerns are less impactful if the proposal already receieved core + maintainer consensus. +* Historical proposals with context and discussions become hard to find. + +I believe it takes a deliberate inversion of process to foster community +participation. This document proposes how Grafana Agent will utilize public +spaces for its primary home for future design proposals. + +## Goals + +* Outline options for proposing changes to Grafana Agent +* Lower the barrier to entry for interested parties to become maintainers + +## Non-Goals + +* Enforce that every change originates from a fully public proposal or + discussion. While all maintainers and contributors will be encouraged to + design openly, there may be legal, security, privacy, or business reasons + that prevent some or all context from being made public. + +* Be overly prescriptive: too many rules can hinder adoption of a process. This + document outlines intention, not hard policy. + +## Proposal + +Public proposals may take one of two forms: + +* Issue proposals +* RFC PR proposals (e.g., this document) + +### Issues + +Issues are the quickest path towards proposing a change. Issue proposals must +be opened at the [grafana/agent issues page](https://github.com/grafana/agent/issues). + +There are no strict set of rules for issue-based proposals, but authors are +recommended to prefix the issue title with `Proposal:` so it may be found more +easily. + +### RFC PRs + +RFC PR proposals must at least: + +* Be placed in the `docs/rfcs` folder of the `grafana/agent` repository +* Have a lowercase filename in hyphen-case with an `.md` extension +* Prefix the filename with the RFC ID + * ID `xxxx` may be initially used until the final ID is known +* Contain valid markdown +* Start with the title of the proposal +* Contain a bullet point list of metadata of: + * The date the proposal was written + * The list of authors, with their names and GitHub usernames + * The PR where the proposal was posted + * The status of the proposal + +`0000-template.md` contains a template to use for writing proposals that +conforms to these rules. + +The remainder of the proposal may be formatted however the author wishes. Some +example sections in the RFC may be: + +* Summary: What is the background that lead to this proposal? +* Goals: What are the main goals of the proposal? +* Non-Goals: What _aren't_ the main goals of the proposal? +* Proposal: What is the proposal? +* Pros/Cons: + * Pros: What are the upsides to this proposal? + * Cons: What are the downsides to this proposal? +* Considered Alternatives: Why is this proposal the best path forward? What + were the alternatives? +* Open Questions: What questions still need to be answered? +* Prior Art: What was this proposal based on, if anything? + +#### RFC Status + +The "Status" field of an RFC must be one of the following: + +* Draft: This RFC is a work-in-progress and may change +* Implemented: Relevant code for this RFC has been merged to the main branch +* Deprecated: This RFC is no longer relevant to the current state of the + project + +RFCs may be merged in Draft state as work on them progresses. The _Draft_ state +is intended to signal to readers that an RFC is in flux. Once all relevant code +for an RFC is merged to main, the RFC may move to the _Implemented_ status. +RFCs without code, such as this RFC, may immediately be set as Implemented. + +If, for any reason, an RFC becomes no longer relevant (deprecated by another +RFC, code removed, etc.), its status should move to Deprecated. + +#### RFC Review + +RFCs should be opened as a PR to grafana/agent, ideally prefixed in the PR +title with `RFC:` to easily identify it amongst other PRs. + +### Google Docs Proposals + +Google Docs may be useful for early feedback rounds during a proposal. However, +it is not recommended for the permanent home of a proposal: + +* Change and comment history may not be available to all viewers. + +* The file owner may delete the proposal, leading to a gap in historical + context. + +Google Docs proposals will be permitted if linked to from an issue proposal. +Google Doc proposals must be converted into an RFC proposal prior to formally +accepting the proposal. Enforcing this ensures that historical context is +recorded, though it is still not ideal as it discards comment history. + +## Accepting Proposals + +All readers are encouraged to engage in reviewing proposals. However, whether a +proposal is accepted is determined by [rough consensus][] of the Grafana Agent +governance team. External contributors may eventually be invited to [join the +governance team][governance] if they have a history of making ongoing +contributions to the project or community. + +## Considered alternatives + +A few existing public proposal processes have been examined for inspiration: + +* [IETF's RFCs](https://www.ietf.org/standards/rfcs/) +* [Rust's RFCs](https://github.com/rust-lang/rfcs) +* [Joyent's Requests for Discussions](https://github.com/joyent/rfd) +* [OpenTelemetry's OTEPs](https://github.com/open-telemetry/oteps) +* [Kubernetes Enhancement Proposals (KEPs)](https://github.com/kubernetes/enhancements) + +All of these processes are similar, but in the end, the current objective is to +start collecting proposals publicly rather than to be prescriptive yet. + +[rough consensus]: https://github.com/grafana/agent/blob/main/GOVERNANCE.md#technical-decisions +[governance]: https://github.com/grafana/agent/blob/main/GOVERNANCE.md#team-members diff --git a/docs/rfcs/0002-integrations-in-operator.md b/docs/rfcs/0002-integrations-in-operator.md new file mode 100644 index 000000000000..1572097d013b --- /dev/null +++ b/docs/rfcs/0002-integrations-in-operator.md @@ -0,0 +1,300 @@ +# Integrations in Grafana Agent Operator + +* Date: 2022-01-04 +* Author: Robert Fratto (@rfratto) +* PR: [grafana/agent#1224](https://github.com/grafana/agent/pull/1224) +* Status: Draft + +## Background + +Grafana Agent includes support for integrations, which are intended as +"batteries-included" features to assist with collecting telemetry data. With +the `integrations-next` feature enabled, there are multiple types of +integrations: + +* Integrations that generate metrics (i.e., `node_exporter`) +* Integrations that generate logs (i.e., `eventhandler`) +* Integrations that generate other types of telemetry are planned (i.e., an + upcoming `app_o11y_receiver`) + +Generically, an integration is a specialized telemetry collector for some +system under observation. For example, a `redis` integration collects telemetry +for Redis. Integrations can generate any combination of Prometheus metrics, +Grafana Loki logs, or Grafana Tempo traces. + +This document proposes adding a way to add support for all current and future +integrations into the Grafana Agent Operator. + +This proposal supersedes [#883][], which was the first attempt at designing the +feature. This proposal takes advantage of the lessons I've learned and +minimizes the implementation effort. + +## Goals + +* Allow Grafana Agent Operator to deploy integrations +* Allow deployed integrations to write telemetry data +* Support integrations that must exist on every machine (i.e., `node_exporter`) +* Minimize development effort for creating new integrations + +## Non-Goals + +* Support externally collecting metrics from integrations + +## Proposal + +At a high level, the proposal is to: + +* Define a new `Integration` CRD which specifies a single instance of an + integration to run. +* Update `GrafanaAgent` to discover `Integration`s and run integrations. + +## Architecture + +### Running integrations + +The new CRD, Integration, will be used for supporting all current integrations. +The spec of Integration primarily revolves around three fields: + +* `name`: The name of the integration (e.g., `node_exporter`, `mysqld_exporter`) +* `type`: Information about the integration being deployed +* `config`: YAML configuration block for the integration + +The `type` field is an object with the following fields: + +* `allNodes`: True when the `name` integration should run on all Kubernetes + Nodes. +* `unique`: True when the `name` integration must be unique across a + GrafanaAgent resource hierarchy. + +> Example of a valid integration: +> +> ```yaml +> apiVersion: monitoring.grafana.com/v1alpha1 +> kind: Integration +> metadata: +> name: mysql +> namespace: default +> spec: +> name: mysqld_exporter +> type: +> allNodes: false # optional; false is default +> unique: false # optional; false is default +> config: +> data_source_name: root@(mysql.default:3306)/ +> disable_collectors: [slave_status] +> ``` + +GrafanaAgent will be updated to discover Integrations as part of its resource +hierarchy. During reconcile, the following Kubernetes objects will be deployed: + +* One DaemonSet and Secret if there is at least one integration in the resource + hierarchy where `type.allNodes` is true. + +* One Deployment and Secret if there is at least one integration in the + resource hierarchy where `type.allNodes` is false. + +Secrets hold the generated Grafana Agent configuration; a Secret is used as +integration configs may contain credentials. + +**NOTE**: As this functionality depends on [#1198][], integration pods will +always be deployed with the experimental feature flag +`-enable-feature=integrations-next` enabled. This also means that operator +support for integrations requires a release of the agent where that +experimental feature is available. + +### Integration validation + +The initial implementation of integrations support will have no knowledge of +what integrations exist. As a result, the `spec.type` and `spec.config` fields +for an Integration MUST be configured correctly for an integration to work. +Users must refer to documentation to discover how `type` should be configured +for their specific integration, and what settings are valid for the `config` +block. Configuration errors will only surface as runtime errors from the +deployed agent. + +Future versions of the Operator may: + +* Add knowledge for some integrations and validate `type` and `config` + accordingly (though breaking changes to the config at the Agent level may + introduce extra complexity to this). + +* Update the `status` field of the root GrafanaAgent resource during reconcile + to expose any reconcile or runtime errors. + +### Additional settings for the Integration CRD + +Some integrations may require changes to the deployed Pods to function +properly. Integrations will additionally support declaring `volumes`, +`volumeMounts`, `secrets` and `configMaps`. These fields will be merged with +the fields of the same name from the root GrafanaAgent resource when creating +integration pods: + +> ```yaml +> apiVersion: monitoring.grafana.com/v1alpha1 +> kind: Integration +> metadata: +> name: kafka +> namespace: default +> spec: +> name: kafka_exporter +> config: | +> ca_file: /etc/grafana-agent/secrets/kafka-ca-file +> # ... +> # Same "secrets" field present in GrafanaAgent.spec, where each secret +> # is loaded from the same namespace and gets exposed at +> # /etc/grafana-agent/secrets/ +> secrets: [kafka-ca-file] +> ``` + +### Sending telemetry from integrations + +Because the operator will not have any knowledge about individual integrations, it +also doesn't know how integrations generate telemetry data. Users must manally +configure an integration to send its data to the appropriate instance. + +Users can refer to MetricsInstances and LogsInstance from the same resource +hierarchy by `/` in their integration configs. This +configuring `autoscrape` for collecting metrics from an exporter-based +integration. + +Given the following following resource hierarchy: + +> ```yaml +> apiVersion: monitoring.grafana.com/v1alpha1 +> kind: GrafanaAgent +> metadata: +> name: grafana-agent-example +> namespace: default +> labels: +> app: grafana-agent-example +> spec: +> metrics: +> instanceSelector: +> matchLabels: +> agent: grafana-agent-example +> integrations: +> instanceSelector: +> matchLabels: +> agent: grafana-agent-example +> --- +> apiVersion: monitoring.grafana.com/v1alpha1 +> kind: MetricsInstance +> metadata: +> name: primary +> namespace: default +> labels: +> app: grafana-agent-example +> spec: +> remoteWrite: +> - url: http://prometheus:9090/api/v1/write +> --- +> apiVersion: monitoring.grafana.com/v1alpha1 +> kind: Integration +> metadata: +> name: mysql +> namespace: default +> labels: +> app: grafana-agent-example +> spec: +> name: mysqld_exporter +> config: +> autoscrape: +> enable: true +> # MetricsInstance / to send metrics to +> metrics_instance: default/primary +> data_source_name: root@(mysql.default:3306)/ +> disable_collectors: [slave_status] +> ``` + +the Operator would generate the following agent config: + +```yaml +metrics: + configs: + - name: default/primary + remote_write: + - url: http://prometheus:9090/api/v1/write +integrations: + mysqld_exporter_configs: + - autoscrape: + enable: true + metrics_instance: default/primary + data_source_name: root@(mysql.default:3306)/ + disable_collectors: [slave_status] +``` + +All integrations support some way of self-collecting their telemetry data. In +the future, Integrations that support metrics could support being collected by +an external source (i.e., a MetricsInstance). This is out of scope of this +proposal, as we are focusing on lowest-common-denominator support for all +integrations first. + +Note that the Integration config above is only contextually valid: it is only +valid if it is part of a resource hierarchy where a `default/primary` +MetricsInstance exists. This makes it impossible for an Integration to be fully +validated indepently of the resource hierarchy where it is discovered. + +## Pros/Cons + +Despite its limitations, this specific implementation is proposed for its +simplicity. Its issues with validation can be resolved in the future without +needing to change the CRD or introduce new CRDs. + +Pros: + +* Works for all known integrations +* Supports future work for custom validation logic +* No changes needed to support future integrations +* You do not have to update the operator to use new integrations + +Cons: + +* Users must know use documentation to configure `type` and `config` properly. +* Without validation, configuration errors can be hard to debug. +* An Integration may be discovered as part of two resource hierarchies, but + refer to a MetricsInstance that exists in one hierarchy but not the other. + +## Alternatives considered + +### Do nothing + +Instead of adding support for integrations, users could be expected to deploy +exporters though custom means (i.e., a `node_exporter` Helm chart + +ServiceMonitor). + +Pros: + +* Requires no additional effort to implement +* Metrics can be scraped by any MetricsInstance +* Feels like a natural fit for Kubernetes' deployment model + +Cons: + +* Prevents non-exporter integrations from working (i.e., `eventhandler` has no + separate container that can be run indepently) +* Prevents us from making agent-specific changes on top of exporters +* Requires different documentation for people using the node_exporter + integration vs deploying the actual node_exporter + +### One CRD per integration + +Instead of a generic CRD, we could have CRD per supported integration. + +Pros: + +* Allows creating Kubernetes-specific config schemas for integrations +* Can be validated at the CRD level + +Cons: + +* Operator must be updated whenever a new integration is added +* Adds extra development effort for creating new integrations +* Requires custom config mapping code for each integration +* Breaking changes to Grafana Agent can break the translation of the CRD to + Agent config. + * This is true for the current proposal, but in the current proposal you can + fix the error in the Integration resource, while a custom CRD would need a + new operator version to fix the translation. + +[#883]: https://github.com/grafana/agent/issues/883 +[#1198]: https://github.com/grafana/agent/pull/1198 diff --git a/docs/user/README.md b/docs/user/README.md new file mode 100644 index 000000000000..51c262484e4c --- /dev/null +++ b/docs/user/README.md @@ -0,0 +1,21 @@ ++++ +draft = "True" ++++ + +

Grafana Agent logo

+ +Grafana Agent is an telemetry collector for sending metrics, logs, +and trace data to the opinionated Grafana observability stack. It works best +with: + +* [Grafana Cloud](https://grafana.com/products/cloud/) +* [Grafana Enterprise Stack](https://grafana.com/products/enterprise/) +* OSS deployments of [Grafana Loki](https://grafana.com/oss/loki/), [Prometheus](https://prometheus.io/), [Cortex](https://cortexmetrics.io/), and [Grafana Tempo](https://grafana.com/oss/tempo/) + + +- Grafana Agent uses less memory on average than Prometheus – by doing less + (only focusing on `remote_write`-related functionality). +- Grafana Agent allows for deploying multiple instances of the Agent in a + cluster and only scraping metrics from targets that are running on the same host. + This allows for distributing memory requirements across the cluster + rather than pressurizing a single node. diff --git a/docs/_index.md b/docs/user/_index.md similarity index 100% rename from docs/_index.md rename to docs/user/_index.md diff --git a/docs/api/_index.md b/docs/user/api/_index.md similarity index 100% rename from docs/api/_index.md rename to docs/user/api/_index.md diff --git a/docs/assets/logo_and_name.png b/docs/user/assets/logo_and_name.png similarity index 100% rename from docs/assets/logo_and_name.png rename to docs/user/assets/logo_and_name.png diff --git a/docs/configuration/_index.md b/docs/user/configuration/_index.md similarity index 100% rename from docs/configuration/_index.md rename to docs/user/configuration/_index.md diff --git a/docs/configuration/integrations/_index.md b/docs/user/configuration/integrations/_index.md similarity index 100% rename from docs/configuration/integrations/_index.md rename to docs/user/configuration/integrations/_index.md diff --git a/docs/configuration/integrations/cadvisor-config.md b/docs/user/configuration/integrations/cadvisor-config.md similarity index 100% rename from docs/configuration/integrations/cadvisor-config.md rename to docs/user/configuration/integrations/cadvisor-config.md diff --git a/docs/configuration/integrations/consul-exporter-config.md b/docs/user/configuration/integrations/consul-exporter-config.md similarity index 100% rename from docs/configuration/integrations/consul-exporter-config.md rename to docs/user/configuration/integrations/consul-exporter-config.md diff --git a/docs/configuration/integrations/dnsmasq-exporter-config.md b/docs/user/configuration/integrations/dnsmasq-exporter-config.md similarity index 100% rename from docs/configuration/integrations/dnsmasq-exporter-config.md rename to docs/user/configuration/integrations/dnsmasq-exporter-config.md diff --git a/docs/configuration/integrations/elasticsearch-exporter-config.md b/docs/user/configuration/integrations/elasticsearch-exporter-config.md similarity index 100% rename from docs/configuration/integrations/elasticsearch-exporter-config.md rename to docs/user/configuration/integrations/elasticsearch-exporter-config.md diff --git a/docs/configuration/integrations/github-exporter-config.md b/docs/user/configuration/integrations/github-exporter-config.md similarity index 100% rename from docs/configuration/integrations/github-exporter-config.md rename to docs/user/configuration/integrations/github-exporter-config.md diff --git a/docs/user/configuration/integrations/integrations-next/_index.md b/docs/user/configuration/integrations/integrations-next/_index.md new file mode 100644 index 000000000000..6c33d869638b --- /dev/null +++ b/docs/user/configuration/integrations/integrations-next/_index.md @@ -0,0 +1,173 @@ ++++ +title = "(Beta) Integrations Revamp" +weight = 100 ++++ + +# (Beta) Integrations Revamp + +Release v0.22.0 of Grafana Agent includes experimental support for a revamped +integrations subsystem. The integrations subsystem is the second oldest part of +Grafana Agent, and has started to feel out of place as we built out the +project. + +The revamped integrations subsystem can be enabled by passing +`integrations-next` to the `-enable-features` command line flag. As an +experimental feature, there are no stability guarantees, and it may receive a +higher frequency of breaking changes than normal. + +The revamped integrations subsystem has the following benefits over the +original subsystem: + +* Integrations can opt in to supporting multiple instances. For example, you + may now run any number of `redis_exporter` integrations, where before you + could only have one per agent. Integrations such as `node_exporter` still + only support a single instance, as it wouldn't make sense to have multiple + instances of those. + +* Autoscrape (previously called "self-scraping"), when enabled, now supports + sending metrics for an integration directly to a running metrics instance. + This allows you configuring an integration to send to a specific Prometheus + remote_write endpoint. + +* A new service discovery HTTP API is included. This can be used with + Prometheus' [http_sd_config][http_sd_config]. The API returns extra labels + for integrations that previously were only availble when autoscraping, such + as `agent_hostname`. + +* Integrations that aren't Prometheus exporters may now be added, such as + integrations that generate logs or traces. + +[http_sd_config]: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#http_sd_config + +## Config changes + +The revamp contains a number of breaking changes to the config. The schema of the +`integrations` key in the config file is now the following: + +```yaml +integrations: + # Controls settings for integrations that generate metrics. + metrics: + # Controls default settings for autoscrape. Individual instances of + # integrations inherit the defaults and may override them. + autoscrape: + # Enables autoscrape of integrations. + [enable: | default = true] + + # Specifies the metrics instance name to send metrics to. Instance + # names are located at metrics.configs[].name from the top-level config. + # The instance must exist. + # + # As it is common to use the name "default" for your primary instance, + # we assume the same here. + [metrics_instance: | default = "default"] + + # Autoscrape interval and timeout. Defaults are inherited from the global + # section of the top-level metrics config. + [scrape_interval: | default = ] + [scrape_timeout: | default = ] + + # Override settings for agent to self-communivate for autoscrape. This is + # currently required if you are using TLS for the agent server. This field is + # temporary and will be removed in the near future once autoscrape can work # + # without using the network. + # + # Settings are omitted for brevity, but the schema is from: + # https://github.com/prometheus/common/blob/2af6d036253eee1a9a08c6ddf6be6d67537bcdff/config/http_config.go#L177 + client_config: + # + + # Configs for integrations which do not support multiple instances. + [agent: ] + [cadvisor: ] + [node_exporter: ] + [process_exporter: ] + [statsd_exporter: ] + [windows_exporter: ] + [eventhandler: ] + + # Configs for integrations that do support multiple instances. Note that + # these must be arrays. + consul_exporter_configs: + [- ...] + + dnsmasq_exporter_configs: + [- ...] + + elasticsearch_exporter_configs: + [- ...] + + github_exporter_configs: + [- ...] + + kafka_exporter_configs: + [- ...] + + memcached_exporter_configs: + [- ...] + + mongodb_exporter_configs: + [- ...] + + mysqld_exporter_configs: + [- ...] + + postgres_exporter_configs: + [- ...] + + redis_exporter_configs: + [- ...] +``` + +## Integrations changes + +Integrations no longer support an `enabled` field; they are enabled by being +defined in the YAML. To disable an integration, comment it out or remove it. + +Metrics-based integrations now use this common set of options: + +```yaml +# Provide an explicit value to uniquely identify this instance of the +# integration. If not provided, a reasonable default will be inferred based +# on the integration. +# +# The value here must be unique across all instances of the same integration. +[instance: ] + +# Override autoscrape defaults for this integration. +autoscrape: + # Enables autoscrape of integrations. + [enable: | default = ] + + # Specifies the metrics instance name to send metrics to. + [metrics_instance: | default = ] + + # Autoscrape interval and timeout. + [scrape_interval: | default = ] + [scrape_timeout: | default = ] + +# An optional extra set of labels to add to metrics from the integration target. These +# labels are only exposed via the integration service discovery HTTP API and +# added when autoscrape is used. They will not be found directly on the metrics +# page for an integration. +extra_labels: + [ : ... ] +``` + +The old set of common options have been removed and do not work when the revamp +is being used: + +```yaml +# OLD SCHEMA: NO LONGER SUPPORTED + +[enabled: | default = false] +[instance: ] +[scrape_integration: | default = ] +[scrape_interval: | default = ] +[scrape_timeout: | default = ] +[wal_truncate_frequency: | default = "60m"] +relabel_configs: + [- ...] +metric_relabel_configs: + [ - ...] +``` diff --git a/docs/user/configuration/integrations/integrations-next/eventhandler-config.md b/docs/user/configuration/integrations/integrations-next/eventhandler-config.md new file mode 100644 index 000000000000..a06ef02a2907 --- /dev/null +++ b/docs/user/configuration/integrations/integrations-next/eventhandler-config.md @@ -0,0 +1,301 @@ ++++ +title = "eventhandler_config" ++++ + +# eventhandler_config (beta) + +`eventhandler_config` configures the Kubernetes eventhandler integration. This integration watches [Event](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#event-v1-core) resources in a Kubernetes cluster and forwards them as log entries to a Loki sink. + +On restart, the integration will look for a cache file (configured using `cache_path`) that stores the last shipped event. This file is optional, and if present, will be used to avoid double-shipping events if Agent or the integration restarts. Kubernetes expires events after 60 minutes, so events older than 60 minutes ago will never be shipped. + +To use the cache feature and maintain state in a Kubernetes environment, a [StatefulSet](https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/) must be used. Sample manifests are provided at the bottom of this doc. Please adjust these according to your deployment preferences. You can also use a Deployment, however the presence of the cache file will not be guaranteed and the integration may ship duplicate entries in the event of a restart. Loki does not yet support entry deduplication for the A->B->A case, so further deduplication can only take place at the Grafana / front-end layer (Grafana Explore does provide some deduplication features for Loki datasources). + +This integration uses Grafana Agent's embedded Loki-compatible `logs` subsystem to ship entries, and a logs client and sink must be configured to use the integration. Please see the sample Agent config below for an example configuration. [Pipelines](https://grafana.com/docs/loki/latest/clients/promtail/pipelines/) and relabel configuration are not yet supported, but these features will be added soon. You should use the `job=eventhandler cluster=...` labels to query your events (you can then use LogQL on top of the result set). + +If not running the integration in-cluster, the integration will use `kubeconfig_path` to search for a valid Kubeconfig file, defaulting to a kubeconfig in the user's home directory. If running in-cluster, the appropriate `ServiceAccount` and Roles must be defined. Sample manifests are provided below. + +Configuration reference: + +```yaml + ## Eventhandler hands watched events off to promtail using a promtail + ## client channel. This parameter configures how long to wait (in seconds) on the channel + ## before abandoning and moving on. + [send_timeout: | default = 60] + + ## Configures the path to a kubeconfig file. If not set, will fall back to using + ## an in-cluster config. If this fails, will fall back to checking the user's home + ## directory for a kubeconfig. + [kubeconfig_path: ] + + ## Path to a cache file that will store the last timestamp for a shipped event and events + ## shipped for that timestamp. Used to prevent double-shipping on integration restart. + [cache_path: | default = "./.eventcache/eventhandler.cache"] + + ## Name of logs subsystem instance to hand log entries off to. + [logs_instance: | default = "default"] + + ## K8s informer resync interval (seconds). You should use defaults here unless you are + ## familiar with K8s informers. + [informer_resync: | default = 120] + + ## The integration will flush the last event shipped out to disk every flush_interval seconds. + [flush_interval: | default = 10] + + ## If you would like to limit events to a given namespace, use this parameter. + [namespace: ] +``` + +Sample agent config: + +```yaml +server: + http_listen_port: 12345 + log_level: info + +integrations: + eventhandler: + cache_path: "/etc/eventhandler/eventhandler.cache" + +logs: + configs: + - name: default + clients: + - url: https://logs-prod-us-central1.grafana.net/api/prom/push + basic_auth: + username: YOUR_LOKI_USER + password: YOUR_LOKI_API_KEY + external_labels: + cluster: "cloud" + job: "integrations/kubernetes/eventhandler" + positions: + filename: /tmp/positions0.yaml + ## The following stanza is optional and used to configure another client to forward + ## Agent's logs to Loki in a K8s environment (using the manifests found below) + - name: eventhandler_logs + clients: + - url: https://logs-prod-us-central1.grafana.net/api/prom/push + basic_auth: + username: YOUR_LOKI_USER + password: YOUR_LOKI_API_KEY + scrape_configs: + - job_name: eventhandler_logs + kubernetes_sd_configs: + - role: pod + pipeline_stages: + - docker: {} + relabel_configs: + - source_labels: + - __meta_kubernetes_pod_node_name + target_label: __host__ + - action: keep + regex: grafana-agent-eventhandler-* + source_labels: + - __meta_kubernetes_pod_name + - action: labelmap + regex: __meta_kubernetes_pod_label_(.+) + - action: replace + replacement: $1 + source_labels: + - __meta_kubernetes_pod_name + target_label: job + - action: replace + source_labels: + - __meta_kubernetes_namespace + target_label: namespace + - action: replace + source_labels: + - __meta_kubernetes_pod_name + target_label: pod + - action: replace + source_labels: + - __meta_kubernetes_pod_container_name + target_label: container + - replacement: /var/log/pods/*$1/*.log + separator: / + source_labels: + - __meta_kubernetes_pod_uid + - __meta_kubernetes_pod_container_name + target_label: __path__ + positions: + filename: /tmp/positions1.yaml +``` + +Be sure to replace the Loki credentials with the appropriate values. + +Sample StatefulSet manifests. Please adjust these according to your needs: + +```yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: grafana-agent-eventhandler + namespace: default +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: grafana-agent-eventhandler +rules: +- apiGroups: + - "" + resources: + - events + verbs: + - get + - list + - watch +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: grafana-agent-eventhandler +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: grafana-agent-eventhandler +subjects: +- kind: ServiceAccount + name: grafana-agent-eventhandler + namespace: default +--- +apiVersion: v1 +kind: Service +metadata: + name: grafana-agent-eventhandler-svc +spec: + ports: + - port: 12345 + name: http-metrics + clusterIP: None + selector: + name: grafana-agent-eventhandler +--- +kind: ConfigMap +metadata: + name: grafana-agent-eventhandler + namespace: default +apiVersion: v1 +data: + agent.yaml: | + server: + http_listen_port: 12345 + log_level: info + + integrations: + eventhandler: + cache_path: "/etc/eventhandler/eventhandler.cache" + + logs: + configs: + - name: default + clients: + - url: https://logs-prod-us-central1.grafana.net/api/prom/push + basic_auth: + username: YOUR_LOKI_USER + password: YOUR_LOKI_API_KEY + external_labels: + cluster: "cloud" + job: "integrations/kubernetes/eventhandler" + positions: + filename: /tmp/positions0.yaml + - name: eventhandler_logs + clients: + - url: https://logs-prod-us-central1.grafana.net/api/prom/push + basic_auth: + username: YOUR_LOKI_USER + password: YOUR_LOKI_API_KEY + scrape_configs: + - job_name: eventhandler_logs + kubernetes_sd_configs: + - role: pod + pipeline_stages: + - docker: {} + relabel_configs: + - source_labels: + - __meta_kubernetes_pod_node_name + target_label: __host__ + - action: keep + regex: grafana-agent-eventhandler-* + source_labels: + - __meta_kubernetes_pod_name + - action: labelmap + regex: __meta_kubernetes_pod_label_(.+) + - action: replace + replacement: $1 + source_labels: + - __meta_kubernetes_pod_name + target_label: job + - action: replace + source_labels: + - __meta_kubernetes_namespace + target_label: namespace + - action: replace + source_labels: + - __meta_kubernetes_pod_name + target_label: pod + - action: replace + source_labels: + - __meta_kubernetes_pod_container_name + target_label: container + - replacement: /var/log/pods/*$1/*.log + separator: / + source_labels: + - __meta_kubernetes_pod_uid + - __meta_kubernetes_pod_container_name + target_label: __path__ + positions: + filename: /tmp/positions1.yaml +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: grafana-agent-eventhandler + namespace: default +spec: + serviceName: "grafana-agent-eventhandler-svc" + selector: + matchLabels: + name: grafana-agent-eventhandler + replicas: 1 + template: + metadata: + labels: + name: grafana-agent-eventhandler + spec: + terminationGracePeriodSeconds: 10 + containers: + - name: agent + image: grafana/agent:main + imagePullPolicy: IfNotPresent + args: + - -config.file=/etc/agent/agent.yaml + - -enable-features=integrations-next + command: + - /bin/agent + env: + - name: HOSTNAME + valueFrom: + fieldRef: + fieldPath: spec.nodeName + ports: + - containerPort: 12345 + name: http-metrics + volumeMounts: + - name: grafana-agent + mountPath: /etc/agent + - name: eventhandler-cache + mountPath: /etc/eventhandler + serviceAccount: grafana-agent-eventhandler + volumes: + - configMap: + name: grafana-agent-eventhandler + name: grafana-agent + volumeClaimTemplates: + - metadata: + name: eventhandler-cache + spec: + accessModes: [ "ReadWriteOnce" ] + resources: + requests: + storage: 1Gi +``` diff --git a/docs/configuration/integrations/kafka-exporter-config.md b/docs/user/configuration/integrations/kafka-exporter-config.md similarity index 100% rename from docs/configuration/integrations/kafka-exporter-config.md rename to docs/user/configuration/integrations/kafka-exporter-config.md diff --git a/docs/configuration/integrations/memcached-exporter-config.md b/docs/user/configuration/integrations/memcached-exporter-config.md similarity index 100% rename from docs/configuration/integrations/memcached-exporter-config.md rename to docs/user/configuration/integrations/memcached-exporter-config.md diff --git a/docs/configuration/integrations/mongodb_exporter-config.md b/docs/user/configuration/integrations/mongodb_exporter-config.md similarity index 100% rename from docs/configuration/integrations/mongodb_exporter-config.md rename to docs/user/configuration/integrations/mongodb_exporter-config.md diff --git a/docs/configuration/integrations/mysqld-exporter-config.md b/docs/user/configuration/integrations/mysqld-exporter-config.md similarity index 100% rename from docs/configuration/integrations/mysqld-exporter-config.md rename to docs/user/configuration/integrations/mysqld-exporter-config.md diff --git a/docs/configuration/integrations/node-exporter-config.md b/docs/user/configuration/integrations/node-exporter-config.md similarity index 99% rename from docs/configuration/integrations/node-exporter-config.md rename to docs/user/configuration/integrations/node-exporter-config.md index 6ce79fbab36a..e8cc2a776940 100644 --- a/docs/configuration/integrations/node-exporter-config.md +++ b/docs/user/configuration/integrations/node-exporter-config.md @@ -26,7 +26,7 @@ docker run \ -v "/proc:/host/proc:ro,rslave" \ -v /tmp/agent:/etc/agent \ -v /path/to/config.yaml:/etc/agent-config/agent.yaml \ - grafana/agent:v0.22.0 \ + grafana/agent:v0.23.0 \ --config.file=/etc/agent-config/agent.yaml ``` @@ -66,14 +66,14 @@ metadata: name: agent spec: containers: - - image: grafana/agent:v0.22.0 + - image: grafana/agent:v0.23.0 name: agent args: - --config.file=/etc/agent-config/agent.yaml securityContext: capabilities: add: ["SYS_TIME"] - priviliged: true + privileged: true runAsUser: 0 volumeMounts: - name: rootfs diff --git a/docs/configuration/integrations/postgres-exporter-config.md b/docs/user/configuration/integrations/postgres-exporter-config.md similarity index 100% rename from docs/configuration/integrations/postgres-exporter-config.md rename to docs/user/configuration/integrations/postgres-exporter-config.md diff --git a/docs/configuration/integrations/process-exporter-config.md b/docs/user/configuration/integrations/process-exporter-config.md similarity index 98% rename from docs/configuration/integrations/process-exporter-config.md rename to docs/user/configuration/integrations/process-exporter-config.md index 55b6d35c1f31..bfd352452ed1 100644 --- a/docs/configuration/integrations/process-exporter-config.md +++ b/docs/user/configuration/integrations/process-exporter-config.md @@ -18,7 +18,7 @@ docker run \ -v "/proc:/proc:ro" \ -v /tmp/agent:/etc/agent \ -v /path/to/config.yaml:/etc/agent-config/agent.yaml \ - grafana/agent:v0.22.0 \ + grafana/agent:v0.23.0 \ --config.file=/etc/agent-config/agent.yaml ``` @@ -35,7 +35,7 @@ metadata: name: agent spec: containers: - - image: grafana/agent:v0.22.0 + - image: grafana/agent:v0.23.0 name: agent args: - --config.file=/etc/agent-config/agent.yaml diff --git a/docs/configuration/integrations/redis-exporter-config.md b/docs/user/configuration/integrations/redis-exporter-config.md similarity index 100% rename from docs/configuration/integrations/redis-exporter-config.md rename to docs/user/configuration/integrations/redis-exporter-config.md diff --git a/docs/configuration/integrations/statsd-exporter-config.md b/docs/user/configuration/integrations/statsd-exporter-config.md similarity index 100% rename from docs/configuration/integrations/statsd-exporter-config.md rename to docs/user/configuration/integrations/statsd-exporter-config.md diff --git a/docs/configuration/integrations/windows-exporter-config.md b/docs/user/configuration/integrations/windows-exporter-config.md similarity index 100% rename from docs/configuration/integrations/windows-exporter-config.md rename to docs/user/configuration/integrations/windows-exporter-config.md diff --git a/docs/configuration/logs-config.md b/docs/user/configuration/logs-config.md similarity index 100% rename from docs/configuration/logs-config.md rename to docs/user/configuration/logs-config.md diff --git a/docs/configuration/metrics-config.md b/docs/user/configuration/metrics-config.md similarity index 100% rename from docs/configuration/metrics-config.md rename to docs/user/configuration/metrics-config.md diff --git a/docs/configuration/server-config.md b/docs/user/configuration/server-config.md similarity index 100% rename from docs/configuration/server-config.md rename to docs/user/configuration/server-config.md diff --git a/docs/configuration/traces-config.md b/docs/user/configuration/traces-config.md similarity index 91% rename from docs/configuration/traces-config.md rename to docs/user/configuration/traces-config.md index 83557549a591..f4d8845c5ce6 100644 --- a/docs/configuration/traces-config.md +++ b/docs/user/configuration/traces-config.md @@ -72,6 +72,31 @@ remote_write: # the latter take precedence. [ insecure_skip_verify: | default = false ] + # Configures opentelemetry exporters to use the OpenTelemetry auth extension `oauth2clientauthextension`. + # Can not be used in combination with `basic_auth`. + # See https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/extension/oauth2clientauthextension/README.md + oauth2: + # Configures the TLS settings specific to the oauth2 client + # The client identifier issued to the oauth client + [client_id: ] + # The secret string associated with the oauth client + [client_secret: ] + # The resource server's token endpoint URL + [token_url: ] + # Optional, requested permissions associated with the oauth client + [scopes: []] + # Optional, specifies the timeout fetching tokens from the token_url. Default: no timeout + [timeout: ] + tls: + # Disable validation of the server certificate. + [ insecure: | default = false ] + # Path to the CA cert. For a client this verifies the server certificate. If empty uses system root CA. + [ca_file: ] + # Path to the TLS cert to use for TLS required connections + [cert_file: ] + # Path to the TLS key to use for TLS required connections + [key_file: ] + # Controls TLS settings of the exporter's client. See https://github.com/open-telemetry/opentelemetry-collector/blob/v0.21.0/config/configtls/README.md # This should be used only if `insecure` is set to false tls_config: diff --git a/docs/getting-started/_index.md b/docs/user/getting-started/_index.md similarity index 99% rename from docs/getting-started/_index.md rename to docs/user/getting-started/_index.md index 686264eab8c8..e6bd5f445530 100644 --- a/docs/getting-started/_index.md +++ b/docs/user/getting-started/_index.md @@ -26,7 +26,7 @@ See the list of [Community Projects](#community-projects) for the community-driv docker run \ -v /tmp/agent:/etc/agent/data \ -v /path/to/config.yaml:/etc/agent/agent.yaml \ - grafana/agent:v0.22.0 + grafana/agent:v0.23.0 ``` Replace `/tmp/agent` with the folder you wish to store WAL data in. WAL data is diff --git a/docs/getting-started/create-config-file.md b/docs/user/getting-started/create-config-file.md similarity index 97% rename from docs/getting-started/create-config-file.md rename to docs/user/getting-started/create-config-file.md index ae25c58d551a..4b53a44b70b1 100644 --- a/docs/getting-started/create-config-file.md +++ b/docs/user/getting-started/create-config-file.md @@ -58,7 +58,7 @@ source of metrics if you are running multiple Grafana Agents across multiple machines. Full configuration options can be found in the -[configuration reference](../configuration/_index.md). +[configuration reference]({{< relref "../configuration/index.md" >}}). ## Prometheus config/migrating from Prometheus @@ -104,7 +104,7 @@ metrics: ``` Like with integrations, full configuration options can be found in the -[configuration](../configuration/_index.md). +[configuration]({{< relref "../configuration/index.md" >}}). ## Loki Config/Migrating from Promtail diff --git a/docs/getting-started/install-agent-on-windows.md b/docs/user/getting-started/install-agent-on-windows.md similarity index 86% rename from docs/getting-started/install-agent-on-windows.md rename to docs/user/getting-started/install-agent-on-windows.md index a8fc8dbd504c..dbb43d394064 100644 --- a/docs/getting-started/install-agent-on-windows.md +++ b/docs/user/getting-started/install-agent-on-windows.md @@ -5,7 +5,13 @@ weight = 120 # Install Agent on Windows -The installer will install Grafana Agent into the default directory `C:\Program Files\Grafana Agent`. The [windows_exporter integration](https://github.com/prometheus-community/windows_exporter) can be enabled with all default windows_exporter options. +The installer will install Grafana Agent into the default directory `C:\Program Files\Grafana Agent`. +The [windows_exporter integration](https://github.com/prometheus-community/windows_exporter) +can be enabled with all default windows_exporter options. The installer can be +found by either: + +1. Downloading the `grafana-agent-installer.exe` asset from the current [release](https://github.com/grafana/agent/releases/latest) page. +2. Downloading the `grafana-agent-installer.exe` asset directly from https://github.com/grafana/agent/releases/latest/download/grafana-agent-installer.exe. ## Installation diff --git a/docs/operation-guide/_index.md b/docs/user/operation-guide/_index.md similarity index 100% rename from docs/operation-guide/_index.md rename to docs/user/operation-guide/_index.md diff --git a/docs/operator/_index.md b/docs/user/operator/_index.md similarity index 100% rename from docs/operator/_index.md rename to docs/user/operator/_index.md diff --git a/docs/operator/add-custom-scrape-jobs.md b/docs/user/operator/add-custom-scrape-jobs.md similarity index 100% rename from docs/operator/add-custom-scrape-jobs.md rename to docs/user/operator/add-custom-scrape-jobs.md diff --git a/docs/operator/architecture.md b/docs/user/operator/architecture.md similarity index 100% rename from docs/operator/architecture.md rename to docs/user/operator/architecture.md diff --git a/docs/operator/custom-resource-quickstart.md b/docs/user/operator/custom-resource-quickstart.md similarity index 96% rename from docs/operator/custom-resource-quickstart.md rename to docs/user/operator/custom-resource-quickstart.md index 084d1b47a06a..36fdb7c68c16 100644 --- a/docs/operator/custom-resource-quickstart.md +++ b/docs/user/operator/custom-resource-quickstart.md @@ -43,7 +43,7 @@ metadata: labels: app: grafana-agent spec: - image: grafana/agent:v0.22.0 + image: grafana/agent:v0.23.0 logLevel: info serviceAccountName: grafana-agent metrics: @@ -116,7 +116,7 @@ subjects: namespace: default ``` -This creates a ServiceAccount, ClusterRole, and ClusterRoleBinding for the GrafanaAgent resource. It also creates a GrafanaAgent resource and specifies an Agent image version. Finally, the GrafanaAgent resource specifies `MetricsInstance` and `LogsInstance` selectors. These search for MetricsInstances and LogsInstances in the same namespace with labels matching `agent: grafana-agent-metrics` and `agent: grafana-agent-logs`, respectively. It also sets a `cluster: cloud` label for all metrics shipped your Prometheus-compatible endpoint. You should change this label to your desired cluster name. +This creates a ServiceAccount, ClusterRole, and ClusterRoleBinding for the GrafanaAgent resource. It also creates a GrafanaAgent resource and specifies an Agent image version. Finally, the GrafanaAgent resource specifies `MetricsInstance` and `LogsInstance` selectors. These search for MetricsInstances and LogsInstances in the **same namespace** with labels matching `agent: grafana-agent-metrics` and `agent: grafana-agent-logs`, respectively. It also sets a `cluster: cloud` label for all metrics shipped your Prometheus-compatible endpoint. You should change this label to your desired cluster name. To search for MetricsInstances or LogsInstances in a *different* namespace, please use the `instanceNamespaceSelector` field. To learn more about this field, please consult the `GrafanaAgent` [CRD specification](https://github.com/grafana/agent/blob/main/production/operator/crds/monitoring.grafana.com_grafanaagents.yaml#L3789). The full hierarchy of custom resources is as follows: diff --git a/docs/operator/getting-started.md b/docs/user/operator/getting-started.md similarity index 97% rename from docs/operator/getting-started.md rename to docs/user/operator/getting-started.md index 2438a0846534..b2769238524d 100644 --- a/docs/operator/getting-started.md +++ b/docs/user/operator/getting-started.md @@ -72,7 +72,7 @@ spec: serviceAccountName: grafana-agent-operator containers: - name: operator - image: grafana/agent-operator:v0.22.0 + image: grafana/agent-operator:v0.23.0 args: - --kubelet-service=default/kubelet --- @@ -144,7 +144,7 @@ Running locally uses your current kubectl context, and you probably don't want to accidentally deploy a new Grafana Agent to prod. CRDs should be installed on the cluster prior to running locally. If you haven't -done this yet, follow [deploying CustomResourceDefinitions](#deploying-customresourcedefinitions) +done this yet, follow [deploying CustomResourceDefinitions](#step-1-deploy-customresourcedefinitions) first. Afterwards, you can run the operator using `go run`: diff --git a/docs/operator/helm-getting-started.md b/docs/user/operator/helm-getting-started.md similarity index 100% rename from docs/operator/helm-getting-started.md rename to docs/user/operator/helm-getting-started.md diff --git a/docs/scraping-service/_index.md b/docs/user/scraping-service/_index.md similarity index 100% rename from docs/scraping-service/_index.md rename to docs/user/scraping-service/_index.md diff --git a/docs/upgrade-guide/_index.md b/docs/user/upgrade-guide/_index.md similarity index 100% rename from docs/upgrade-guide/_index.md rename to docs/user/upgrade-guide/_index.md diff --git a/example/k3d/README.md b/example/k3d/README.md index e46fb3ffa279..715a10553c5e 100644 --- a/example/k3d/README.md +++ b/example/k3d/README.md @@ -46,7 +46,13 @@ The smoke test environment is used to validate samples end to end. Smoke Test environment is invoked via `/scripts/smoke-test.bash` -This tool will spin up cluster of Grafana Agent, Cortex, Avalanche and [Crow](../../cmd/grafana-agent-crow/README.md) instances. The tool will then periodically kill instances and check for any failed alerts. At the end of the duration (default 3h) it will end the testing. +This tool will spin up cluster of Grafana Agent, Cortex, Avalanche, Smoke and [Crow](../../tools/crow/README.md) instances. The Smoke deployment will then periodically kill instances and check for any failed alerts. At the end of the duration (default 3h) it will end the testing. + +For users who do not have access to the `us.gcr.io/kubernetes-dev` container registry, you will need to build the Smoke and Crow images locally before running the smoke test. + +``` +make grafana-agent-crow-image agent-smoke-image +``` ### What to look for? @@ -70,7 +76,7 @@ If at the end of the test any issues are found they will look similar to the bel ### How to trigger an alert? -Changing the avalanche setting for label_count to 1000, located [here](./lib/avalanche/main.libsonnet). This will ensure the [GrafanaAgentMemHigh](http://prometheus.k3d.localhost:50080/graph?g0.expr=ALERTS%7Balertname%3D%22GrafanaAgentMemHigh%22%7D&g0.tab=1&g0.stacked=0&g0.show_exemplars=0.g0.range_input=1h.) alert exceeds the limit. +Changing the avalanche setting for label_count to 1000, located [here](../../production/tanka/grafana-agent/smoke/avalanche/main.libsonnet). This will ensure the [GrafanaAgentMemHigh](http://prometheus.k3d.localhost:50080/graph?g0.expr=ALERTS%7Balertname%3D%22GrafanaAgentMemHigh%22%7D&g0.tab=1&g0.stacked=0&g0.show_exemplars=0.g0.range_input=1h.) alert exceeds the limit. ![](./assets/trigger_change.png) @@ -84,6 +90,7 @@ By default, a k3d cluster will be created running the following instances - crow-single - serves the single agent - cortex - avalanche - selection of avalanche instances serving traffic +- smoke - scales avalanche replicas and introduces chaos by deleting agent pods during testing Crow instance will check to see if the metrics that were scraped shows up in the prometheus endpoint and then will emit metrics on the success of those metrics. This success/failure result will trigger an alert if it is incorrect. diff --git a/example/k3d/environment/main.jsonnet b/example/k3d/environment/main.jsonnet index e5766fbe46a2..53658d08ae4a 100644 --- a/example/k3d/environment/main.jsonnet +++ b/example/k3d/environment/main.jsonnet @@ -1,6 +1,6 @@ local collector = import 'collector/main.libsonnet'; local default = import 'default/main.libsonnet'; -local etcd = import 'etcd/main.libsonnet'; +local etcd = import 'grafana-agent/smoke/etcd/main.libsonnet'; local agent_cluster = import 'grafana-agent/scraping-svc/main.libsonnet'; local k = import 'ksonnet-util/kausal.libsonnet'; local load_generator = import 'load-generator/main.libsonnet'; diff --git a/example/k3d/jsonnetfile.lock.json b/example/k3d/jsonnetfile.lock.json index 2537becf63bd..0cd970b024a2 100644 --- a/example/k3d/jsonnetfile.lock.json +++ b/example/k3d/jsonnetfile.lock.json @@ -18,8 +18,8 @@ "subdir": "grafonnet" } }, - "version": "0d4f64154ee2024820396aa66841a64d851302b0", - "sum": "1DvaFCCiwjI9624YYhLPdwiEPDvLsrCOES0aBxr7wrM=" + "version": "3626fc4dc2326931c530861ac5bebe39444f6cbf", + "sum": "gF8foHByYcB25jcUOBqP6jxk0OPifQMjPvKY0HaCk6w=" }, { "source": { diff --git a/example/k3d/scripts/smoke-test.bash b/example/k3d/scripts/smoke-test.bash index 36059107d3ce..a0d45a4b023e 100755 --- a/example/k3d/scripts/smoke-test.bash +++ b/example/k3d/scripts/smoke-test.bash @@ -35,14 +35,13 @@ set -euo pipefail # Constants ROOT=$(git rev-parse --show-toplevel) K3D_CLUSTER_NAME="agent-smoke-test" -MUTATION_FREQUENCY="5m" -CHAOS_FREQUENCY="30m" +SKIP_CREATE="" # Variables # Which function will be called ENTRYPOINT="run" -TEST_DURATION="3h" +TEST_DURATION="10800" IMPORT_IMAGES="" while getopts "dt:ish" opt; do @@ -85,18 +84,13 @@ run() { k3d image import -c $K3D_CLUSTER_NAME \ grafana/agent:main \ grafana/agentctl:main \ - grafana/agent-crow:main + us.gcr.io/kubernetes-dev/grafana/agent-crow:main \ + us.gcr.io/kubernetes-dev/grafana/agent-smoke:main fi (cd $ROOT/example/k3d && jb install) tk apply $ROOT/example/k3d/smoke --dangerous-auto-approve - echo "--- Spawning background tasks" - mutation_loop & - MUTATION_PID=$! - chaos_loop & - CHAOS_PID=$! - # Immediately create a job to sync configs so our two Agent deployments # are synced up as closely as possible. kubectl --context=k3d-$K3D_CLUSTER_NAME --namespace=smoke \ @@ -106,10 +100,11 @@ run() { echo "Your environment is now running for the next $TEST_DURATION." echo "Grafana URL: http://grafana.k3d.localhost:50080" echo "Prometheus URL: http://prometheus.k3d.localhost:50080" + echo "Check smoke test logs: " + echo " kubectl logs --namespace=smoke -f deployment/smoke-test" sleep $TEST_DURATION - echo "--- Stopping background tasks" - kill $CHAOS_PID $MUTATION_PID + kubectl scale -n smoke --replicas=0 deployment/smoke-test echo "Smoke tests complete!" echo "Grafana URL: http://grafana.k3d.localhost:50080" @@ -120,35 +115,6 @@ run() { get_results } -# mutation_loop changes the number of replicas of Avalanche servers -# randomly between 0-10 replicas (inclusive) every $MUTATION_FREQUENCY. -mutation_loop() { - while true; do - sleep $MUTATION_FREQUENCY - - NEW_REPLICAS=$(($RANDOM % 11)) - echo "--- Scaling Avalanche to $NEW_REPLICAS replicas" - kubectl --context=k3d-$K3D_CLUSTER_NAME --namespace=smoke \ - scale --replicas=$NEW_REPLICAS deployment/avalanche - done -} - -# chaos loop deletes pods every $CHAOS_FREQUENCY. -chaos_loop() { - while true; do - sleep $CHAOS_FREQUENCY - - echo "--- Force deleting pod/grafana-agent-0" - kubectl --context=k3d-$K3D_CLUSTER_NAME --namespace=smoke \ - delete --grace-period=0 --force pod/grafana-agent-0 - - REPLICA=$(($RANDOM % 3)) - echo "--- Force deleting pod/agent-cluster-$REPLICA" - kubectl --context=k3d-$K3D_CLUSTER_NAME --namespace=smoke \ - delete --grace-period=0 --force pod/grafana-agent-cluster-$REPLICA - done -} - get_results() { NUM_ALERTS=$(curl -s -G \ -H "Host: prometheus.k3d.localhost" \ @@ -156,7 +122,6 @@ get_results() { 'http://localhost:50080/api/v1/query' \ | jq '.data.result | length' \ ) - if test $NUM_ALERTS -ne 0; then echo "FAIL: $NUM_ALERTS alerts found over the last $TEST_DURATION." echo "More information: http://prometheus.k3d.localhost:50080/graph?g0.expr=count_over_time(ALERTS{alertstate%3D%22firing%22}[$TEST_DURATION])" diff --git a/example/k3d/smoke/main.jsonnet b/example/k3d/smoke/main.jsonnet index df4dcf8f4dc2..31e74f5dd65b 100644 --- a/example/k3d/smoke/main.jsonnet +++ b/example/k3d/smoke/main.jsonnet @@ -1,8 +1,9 @@ local monitoring = import './monitoring/main.jsonnet'; -local avalanche = import 'avalanche/main.libsonnet'; local cortex = import 'cortex/main.libsonnet'; -local crow = import 'crow/main.libsonnet'; -local etcd = import 'etcd/main.libsonnet'; +local avalanche = import 'grafana-agent/smoke/avalanche/main.libsonnet'; +local crow = import 'grafana-agent/smoke/crow/main.libsonnet'; +local etcd = import 'grafana-agent/smoke/etcd/main.libsonnet'; +local smoke = import 'grafana-agent/smoke/main.libsonnet'; local gragent = import 'grafana-agent/v2/main.libsonnet'; local k = import 'ksonnet-util/kausal.libsonnet'; @@ -23,6 +24,12 @@ local new_crow(name, selector) = }, }); +local new_smoke(name) = smoke.new(name, namespace='smoke', config={ + mutationFrequency: '5m', + chaosFrequency: '30m', +}); + + local smoke = { ns: namespace.new('smoke'), @@ -39,6 +46,8 @@ local smoke = { metric_interval: 600, }), + smoke_test: new_smoke('smoke-test'), + crows: [ new_crow('crow-single', 'cluster="grafana-agent"'), new_crow('crow-cluster', 'cluster="grafana-agent-cluster"'), @@ -46,7 +55,28 @@ local smoke = { local metric_instances(crow_name) = [{ name: 'crow', - remote_write: [{ url: 'http://cortex/api/prom/push' }], + remote_write: [ + { + url: 'http://cortex/api/prom/push', + write_relabel_configs: [ + { + source_labels: ['__name__'], + regex: 'avalanche_.*', + action: 'drop', + }, + ], + }, + { + url: 'http://smoke-test:19090/api/prom/push', + write_relabel_configs: [ + { + source_labels: ['__name__'], + regex: 'avalanche_.*', + action: 'keep', + }, + ], + }, + ], scrape_configs: [ { job_name: 'crow', @@ -71,7 +101,28 @@ local smoke = { ], }, { name: 'avalanche', - remote_write: [{ url: 'http://cortex/api/prom/push' }], + remote_write: [ + { + url: 'http://cortex/api/prom/push', + write_relabel_configs: [ + { + source_labels: ['__name__'], + regex: 'avalanche_.*', + action: 'drop', + }, + ], + }, + { + url: 'http://smoke-test:19090/api/prom/push', + write_relabel_configs: [ + { + source_labels: ['__name__'], + regex: 'avalanche_.*', + action: 'keep', + }, + ], + }, + ], scrape_configs: [ { job_name: 'avalanche', diff --git a/example/k3d/smoke/monitoring/main.jsonnet b/example/k3d/smoke/monitoring/main.jsonnet index fc226923f448..4e6a7738ec97 100644 --- a/example/k3d/smoke/monitoring/main.jsonnet +++ b/example/k3d/smoke/monitoring/main.jsonnet @@ -11,6 +11,7 @@ local ingress = k.networking.v1beta1.ingress; local rule = k.networking.v1beta1.ingressRule; local path = k.networking.v1beta1.httpIngressPath; + local prometheus_monitoring = import './prometheus_monitoring.libsonnet'; { diff --git a/go.mod b/go.mod index 1e9ce318f1c7..39a302061c3c 100644 --- a/go.mod +++ b/go.mod @@ -33,6 +33,7 @@ require ( github.com/jsternberg/zap-logfmt v1.2.0 github.com/lib/pq v1.10.2 github.com/miekg/dns v1.1.43 + github.com/mitchellh/mapstructure v1.4.2 github.com/mitchellh/reflectwalk v1.0.2 github.com/ncabatoff/process-exporter v0.7.5 github.com/oklog/run v1.1.0 @@ -41,6 +42,7 @@ require ( github.com/open-telemetry/opentelemetry-collector-contrib/exporter/jaegerexporter v0.40.0 github.com/open-telemetry/opentelemetry-collector-contrib/exporter/loadbalancingexporter v0.40.0 github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.40.0 + github.com/open-telemetry/opentelemetry-collector-contrib/extension/oauth2clientauthextension v0.40.0 github.com/open-telemetry/opentelemetry-collector-contrib/processor/attributesprocessor v0.40.0 github.com/open-telemetry/opentelemetry-collector-contrib/processor/spanmetricsprocessor v0.40.0 github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor v0.40.0 @@ -294,7 +296,6 @@ require ( github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/go-testing-interface v1.0.0 // indirect - github.com/mitchellh/mapstructure v1.4.2 // indirect github.com/moby/sys/mount v0.3.0 // indirect github.com/moby/sys/mountinfo v0.5.0 // indirect github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6 // indirect @@ -453,7 +454,7 @@ replace ( github.com/percona/mongodb_exporter => github.com/grafana/mongodb_exporter v0.20.8-0.20211006135645-bef0f0239601 github.com/percona/percona-toolkit => github.com/rlankfo/percona-toolkit v0.0.0-20211028191359-7aada1bf148f github.com/prometheus-community/postgres_exporter => github.com/grafana/postgres_exporter v0.8.1-0.20210722175051-db35d7c2f520 - github.com/prometheus-community/windows_exporter => github.com/grafana/windows_exporter v0.15.1-0.20211019183116-592dfa92f9fd + github.com/prometheus-community/windows_exporter => github.com/grafana/windows_exporter v0.15.1-0.20220202211901-871715ba0b43 github.com/prometheus/mysqld_exporter => github.com/grafana/mysqld_exporter v0.12.2-0.20201015182516-5ac885b2d38a github.com/prometheus/statsd_exporter => github.com/grafana/statsd_exporter v0.18.1-0.20211118164740-8e806158da0b ) @@ -482,3 +483,6 @@ replace github.com/leoluk/perflib_exporter v0.1.0 => github.com/grafana/perflib_ // Required until fork merged upstream for dynamic configuration support replace github.com/hairyhenderson/gomplate/v3 => github.com/mattdurham/gomplate/v3 v3.10.1-0.20220204190650-af65008b9bb1 + +// Required to ensure compatible hashicorp lib is loaded for dynamic configuration, this solves an ambigous import +exclude github.com/hashicorp/vault v0.10.3 diff --git a/go.sum b/go.sum index d2e7a1a48367..c890beb659b0 100644 --- a/go.sum +++ b/go.sum @@ -69,6 +69,8 @@ cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohl cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= cloud.google.com/go/storage v1.16.1/go.mod h1:LaNorbty3ehnU3rEjXSNV/NRgQA0O8Y+uh6bPe5UOk4= +cloud.google.com/go/storage v1.17.0 h1:CDpe3jS3EiD5nGlbtvyA4EUfkF6k9GMrxLR8+hLmoec= +cloud.google.com/go/storage v1.17.0/go.mod h1:0wRtHSM3Npk/QJYdwcpRNVRVJlH2OxyWF9Dws3J+MtE= cloud.google.com/go/storage v1.18.2 h1:5NQw6tOn3eMm0oE8vTkfjau18kjL79FlMjy/CHTpmoY= cloud.google.com/go/storage v1.18.2/go.mod h1:AiIj7BWXyhO5gGVmYJ+S8tbkCx3yb0IMjua8Aw4naVM= cloud.google.com/go/trace v0.1.0/go.mod h1:wxEwsoeRVPbeSkt7ZC9nWCgmoKQRAoySN7XHW2AmI7g= @@ -1290,8 +1292,8 @@ github.com/grafana/statsd_exporter v0.18.1-0.20211118164740-8e806158da0b h1:eFIc github.com/grafana/statsd_exporter v0.18.1-0.20211118164740-8e806158da0b/go.mod h1:N4Z1+iSqc9rnxlT1N8Qn3l65Vzb5t4Uq0jpg8nxyhio= github.com/grafana/tail v0.0.0-20201004203643-7aa4e4a91f03 h1:fGgFrAraMB0BaPfYumu+iulfDXwHm+GFyHA4xEtBqI8= github.com/grafana/tail v0.0.0-20201004203643-7aa4e4a91f03/go.mod h1:GIMXMPB/lRAllP5rVDvcGif87ryO2hgD7tCtHMdHrho= -github.com/grafana/windows_exporter v0.15.1-0.20211019183116-592dfa92f9fd h1:jQ9JCvwdRW32X/LP3ezXT4EnJCirq9bb3l5svQs8j7k= -github.com/grafana/windows_exporter v0.15.1-0.20211019183116-592dfa92f9fd/go.mod h1:zWjLDqyEy3ZEy1LNlR6iUJJgYCoUDJTyUbrjeLUp3ZE= +github.com/grafana/windows_exporter v0.15.1-0.20220202211901-871715ba0b43 h1:gb+wDKb+9r4n3QbMzfudcHDtE9lI+kKjx+98bYphqK4= +github.com/grafana/windows_exporter v0.15.1-0.20220202211901-871715ba0b43/go.mod h1:zWjLDqyEy3ZEy1LNlR6iUJJgYCoUDJTyUbrjeLUp3ZE= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grobie/gomemcache v0.0.0-20201204163352-08d7c80fcac6 h1:vqwzYov9hrRoGAmy61um8mVteOCD0bEbKgXr1mmkTlI= github.com/grobie/gomemcache v0.0.0-20201204163352-08d7c80fcac6/go.mod h1:L69/dBlPQlWkcnU76WgcppK5e4rrxzQdi6LhLnK/ytA= @@ -1447,7 +1449,6 @@ github.com/hashicorp/serf v0.9.3/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKEN github.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk= github.com/hashicorp/serf v0.9.6 h1:uuEX1kLR6aoda1TBttmJQKDLZE1Ob7KN0NPdE7EtCDc= github.com/hashicorp/serf v0.9.6/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= -github.com/hashicorp/vault v0.10.3/go.mod h1:KfSyffbKxoVyspOdlaGVjIuwLobi07qD1bAbosPMpP0= github.com/hashicorp/vault-plugin-secrets-kv v0.0.0-20190318174639-195e0e9d07f1/go.mod h1:VJHHT2SC1tAPrfENQeBhLlb5FbZoKZM+oC/ROmEftz0= github.com/hashicorp/vault/api v1.0.4/go.mod h1:gDcqh3WGcR1cpF5AJz/B1UFheUEneMoIospckxBxk6Q= github.com/hashicorp/vault/api v1.3.0 h1:uDy39PLSvy6gtKyjOCRPizy2QdFiIYSWBR2pxCEzYL8= @@ -1956,6 +1957,8 @@ github.com/open-telemetry/opentelemetry-collector-contrib/exporter/loadbalancing github.com/open-telemetry/opentelemetry-collector-contrib/exporter/loadbalancingexporter v0.40.0/go.mod h1:8gCz0iEj986dJMmKwi/tYo8pdQj/mnBRiRkemi97XGw= github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.40.0 h1:KCRIWJ8cqooPisXKhhoFPmq6Oo5nhb2X0XU/9uW6yAU= github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.40.0/go.mod h1:kbjb5xSL0+VLPOaroPGXV9/aZKfHDx1NEzRGjX55avA= +github.com/open-telemetry/opentelemetry-collector-contrib/extension/oauth2clientauthextension v0.40.0 h1:LAj9r9orM1tLKh+erijFOpmj5D7vk2RiIh73PZtY1Ko= +github.com/open-telemetry/opentelemetry-collector-contrib/extension/oauth2clientauthextension v0.40.0/go.mod h1:KWUGnn6Ud3OS6AotkxSQt0m4U8Hm3QWQdI28cevlnQ8= github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.40.0 h1:FDoxyvSRJumeWNMMtwmyS6qz+5vDogkOAViz7EUvF6s= github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.40.0/go.mod h1:a56dESln9qTQfvLlG4iVrDSVsLzWaFS5363i8sAxqDo= github.com/open-telemetry/opentelemetry-collector-contrib/internal/sharedcomponent v0.40.0 h1:IICNKhsUNFUw9qLmOVj4EkoTS+MYrGqAij+LgEM/f/c= @@ -3024,7 +3027,6 @@ golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210831042530-f4d43177bf5e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210906170528-6f6e22806c34/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210917161153-d61c044b1678/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211020174200-9d6173849985/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211023085530-d6a326fbbf70/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -3215,7 +3217,6 @@ google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6 google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= -google.golang.org/api v0.58.0/go.mod h1:cAbP2FsxoGVNwtgNAmmn3y5G1TWAiVYRmg4yku3lv+E= google.golang.org/api v0.59.0 h1:fPfFO7gttlXYo2ALuD3HxJzh8vaF++4youI0BkFL6GE= google.golang.org/api v0.59.0/go.mod h1:sT2boj7M9YJxZzgeZqXogmhfmRWDtPzT31xkieUbuZU= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= @@ -3310,10 +3311,9 @@ google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEc google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210917145530-b395a37504d4/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210921142501-181ce0d877f6/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211008145708-270636b82663/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211016002631-37fc39342514/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211020151524-b7c3a969101a/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211112145013-271947fe86fd h1:8jqRgiTTWyKMDOM2AvhjA5dZLBSKXg1yFupPRBV/4fQ= google.golang.org/genproto v0.0.0-20211112145013-271947fe86fd/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= diff --git a/pkg/config/config.go b/pkg/config/config.go index e47d2b9f49ab..3cac27a58f5d 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -20,7 +20,6 @@ import ( "github.com/grafana/agent/pkg/util" "github.com/grafana/dskit/kv/consul" "github.com/grafana/dskit/kv/etcd" - "github.com/pkg/errors" "github.com/prometheus/common/config" "github.com/prometheus/common/version" "github.com/stretchr/testify/require" @@ -265,7 +264,7 @@ func LoadRemote(url string, expandEnvVars bool, c *Config) error { // dynamic loader, this is a templated approach func LoadDynamicConfiguration(url string, expandvar bool, c *Config) error { if expandvar { - return errors.New("expand var is not supported when using dynamic configuration, use gomplate env instead") + return fmt.Errorf("expand var is not supported when using dynamic configuration, use gomplate env instead") } cmf, err := NewDynamicLoader() if err != nil { @@ -370,7 +369,6 @@ func load(fs *flag.FlagSet, args []string, loader func(string, bool, *Config) er } else if err := loader(dynamicConfigPath, configExpandEnv, &cfg); err != nil { return nil, fmt.Errorf("error loading dynamic configuration file %s: %w", dynamicConfigPath, err) } - } else if file == "" { return nil, fmt.Errorf("-config.file flag required") } else if err := loader(file, configExpandEnv, &cfg); err != nil { diff --git a/pkg/config/config_test.go b/pkg/config/config_test.go index ee282211453b..8e2c1af4c9ef 100644 --- a/pkg/config/config_test.go +++ b/pkg/config/config_test.go @@ -2,7 +2,7 @@ package config import ( "flag" - "os" + "net/url" "strings" "testing" "time" @@ -12,6 +12,7 @@ import ( "github.com/grafana/agent/pkg/metrics" "github.com/grafana/agent/pkg/metrics/instance" "github.com/grafana/agent/pkg/util" + commonCfg "github.com/prometheus/common/config" "github.com/prometheus/common/model" promCfg "github.com/prometheus/prometheus/config" "github.com/prometheus/prometheus/pkg/labels" @@ -99,7 +100,7 @@ metrics: EvaluationInterval: model.Duration(1 * time.Minute), }, } - _ = os.Setenv("SCRAPE_TIMEOUT", "33s") + t.Setenv("SCRAPE_TIMEOUT", "33s") fs := flag.NewFlagSet("test", flag.ExitOnError) c, err := load(fs, []string{"-config.file", "test"}, func(_ string, _ bool, c *Config) error { @@ -431,6 +432,28 @@ metrics: require.Equal(t, "verysecret", cfg.Metrics.ServiceConfig.Lifecycler.RingConfig.KVStore.Etcd.Password) } +func TestConfig_RemoteWriteDefaults(t *testing.T) { + cfg := ` +metrics: + global: + remote_write: + - name: "foo" + url: "https://test/url"` + + var c Config + err := LoadBytes([]byte(cfg), false, &c) + require.NoError(t, err) + + expected := &promCfg.DefaultRemoteWriteConfig + expected.Name = "foo" + testURL, _ := url.Parse("https://test/url") + expected.URL = &commonCfg.URL{ + URL: testURL, + } + require.Equal(t, expected, c.Metrics.Global.RemoteWrite[0]) + require.True(t, c.Metrics.Global.RemoteWrite[0].SendExemplars) +} + func TestLoadDynamicConfigurationExpandError(t *testing.T) { err := LoadDynamicConfiguration("", true, nil) assert.Error(t, err) diff --git a/pkg/config/dynamicloader_configs_test.go b/pkg/config/dynamicloader_configs_test.go index b0659a58d4e9..70a4318ccd22 100644 --- a/pkg/config/dynamicloader_configs_test.go +++ b/pkg/config/dynamicloader_configs_test.go @@ -233,7 +233,6 @@ windows_exporter: {} // the node_exporter integration in the agent-1.yml is in the configV2 assert.Len(t, cfg.Integrations.ExtraIntegrations, 1) assert.Len(t, cfg.Integrations.configV2.Configs, 2) - } func TestFilterOverrides(t *testing.T) { @@ -326,5 +325,4 @@ configs: assert.True(t, cfg.Traces.Configs[0].Name == "test_traces") // Test Logs assert.True(t, cfg.Logs.Configs[0].Name == "test_logs") - } diff --git a/pkg/config/dynamicloader_template_test.go b/pkg/config/dynamicloader_template_test.go index 2e23a6775896..0fb898ba7dd5 100644 --- a/pkg/config/dynamicloader_template_test.go +++ b/pkg/config/dynamicloader_template_test.go @@ -151,9 +151,7 @@ func generatePath(t *testing.T) string { } func pushFilesToFakeS3(t *testing.T, filename string, filecontents string) *url.URL { - _ = os.Setenv("AWS_ANON", "true") - t.Cleanup(func() { _ = os.Unsetenv("AWS_ANON") }) - + t.Setenv("AWS_ANON", "true") backend := s3mem.New() faker := gofakes3.New(backend) diff --git a/pkg/crow/crow.go b/pkg/crow/crow.go index 0d49a12b7f42..2b670dd1bc8b 100644 --- a/pkg/crow/crow.go +++ b/pkg/crow/crow.go @@ -21,6 +21,7 @@ import ( promapi "github.com/prometheus/client_golang/api/prometheus/v1" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promhttp" + commonCfg "github.com/prometheus/common/config" "github.com/prometheus/common/model" "github.com/weaveworks/common/user" ) @@ -29,8 +30,10 @@ import ( type Config struct { PrometheusAddr string // Base URL of Prometheus server NumSamples int // Number of samples to generate - UserID string // User ID to use when querying. + UserID string // User ID to use for auth when querying. + PasswordFile string // Password File for auth when querying. ExtraSelectors string // Extra selectors for queries, i.e., cluster="prod" + OrgID string // Org ID to inject in X-Org-ScopeID header when querying. // Querying Params @@ -59,8 +62,10 @@ func (c *Config) RegisterFlags(f *flag.FlagSet) { func (c *Config) RegisterFlagsWithPrefix(f *flag.FlagSet, prefix string) { f.StringVar(&c.PrometheusAddr, prefix+"prometheus-addr", DefaultConfig.PrometheusAddr, "Root URL of the Prometheus API to query against") f.IntVar(&c.NumSamples, prefix+"generate-samples", DefaultConfig.NumSamples, "Number of samples to generate when being scraped") - f.StringVar(&c.UserID, prefix+"user-id", DefaultConfig.UserID, "UserID to attach to query. Useful for querying multi-tenated Cortex.") + f.StringVar(&c.UserID, prefix+"user-id", DefaultConfig.UserID, "UserID to use with basic auth.") + f.StringVar(&c.PasswordFile, prefix+"password-file", DefaultConfig.PasswordFile, "Password file to use with basic auth.") f.StringVar(&c.ExtraSelectors, prefix+"extra-selectors", DefaultConfig.ExtraSelectors, "Extra selectors to include in queries, useful for identifying different instances of this job.") + f.StringVar(&c.OrgID, prefix+"org-id", DefaultConfig.OrgID, "Org ID to inject in X-Org-ScopeID header when querying. Useful for querying multi-tenated Cortex directly.") f.DurationVar(&c.QueryTimeout, prefix+"query-timeout", DefaultConfig.QueryTimeout, "timeout for querying") f.DurationVar(&c.QueryDuration, prefix+"query-duration", DefaultConfig.QueryDuration, "time before and after sample to search") @@ -143,18 +148,21 @@ func newCrow(cfg Config) (*Crow, error) { } apiCfg := api.Config{ - Address: cfg.PrometheusAddr, + Address: cfg.PrometheusAddr, + RoundTripper: api.DefaultRoundTripper, } - if cfg.UserID != "" { + if cfg.UserID != "" && cfg.PasswordFile != "" { + apiCfg.RoundTripper = commonCfg.NewBasicAuthRoundTripper(cfg.UserID, "", cfg.PasswordFile, api.DefaultRoundTripper) + } + if cfg.OrgID != "" { apiCfg.RoundTripper = &nethttp.Transport{ RoundTripper: promhttp.RoundTripperFunc(func(req *http.Request) (*http.Response, error) { - _ = user.InjectOrgIDIntoHTTPRequest(user.InjectOrgID(context.Background(), cfg.UserID), req) - return api.DefaultRoundTripper.RoundTrip(req) + _ = user.InjectOrgIDIntoHTTPRequest(user.InjectOrgID(context.Background(), cfg.OrgID), req) + return apiCfg.RoundTripper.RoundTrip(req) }), } - } else { - apiCfg.RoundTripper = &nethttp.Transport{} } + cli, err := api.NewClient(apiCfg) if err != nil { return nil, fmt.Errorf("failed to create prometheus client: %w", err) @@ -285,7 +293,7 @@ func (c *Crow) validate(b *sample) error { }) if err != nil { - level.Error(c.cfg.Log).Log("msg", "failed to query for sample", "query", "err", err) + level.Error(c.cfg.Log).Log("msg", "failed to query for sample", "query", query, "err", err) } else if m, ok := val.(model.Matrix); ok { return c.validateInMatrix(query, b, m) } diff --git a/pkg/integrations/cadvisor/common.go b/pkg/integrations/cadvisor/common.go index 6d5d0b5eb70a..efd5df363860 100644 --- a/pkg/integrations/cadvisor/common.go +++ b/pkg/integrations/cadvisor/common.go @@ -9,7 +9,7 @@ import ( const name = "cadvisor" // DefaultConfig holds the default settings for the cadvisor integration -var DefaultConfig Config = Config{ +var DefaultConfig = Config{ // Common cadvisor config defaults StoreContainerLabels: true, ResctrlInterval: 0, diff --git a/pkg/integrations/dnsmasq_exporter/dnsmasq_exporter.go b/pkg/integrations/dnsmasq_exporter/dnsmasq_exporter.go index 93dd2ee1f837..3f89ec2d842a 100644 --- a/pkg/integrations/dnsmasq_exporter/dnsmasq_exporter.go +++ b/pkg/integrations/dnsmasq_exporter/dnsmasq_exporter.go @@ -11,7 +11,7 @@ import ( ) // DefaultConfig is the default config for dnsmasq_exporter. -var DefaultConfig Config = Config{ +var DefaultConfig = Config{ DnsmasqAddress: "localhost:53", LeasesPath: "/var/lib/misc/dnsmasq.leases", } diff --git a/pkg/integrations/github_exporter/github_exporter.go b/pkg/integrations/github_exporter/github_exporter.go index b9997eb4ee07..268c451a1d55 100644 --- a/pkg/integrations/github_exporter/github_exporter.go +++ b/pkg/integrations/github_exporter/github_exporter.go @@ -15,7 +15,7 @@ import ( ) // DefaultConfig holds the default settings for the github_exporter integration -var DefaultConfig Config = Config{ +var DefaultConfig = Config{ APIURL: "https://api.github.com", } @@ -74,7 +74,6 @@ func init() { // New creates a new github_exporter integration. func New(logger log.Logger, c *Config) (integrations.Integration, error) { - conf := gh_config.Config{} err := conf.SetAPIURL(c.APIURL) if err != nil { diff --git a/pkg/integrations/install/install.go b/pkg/integrations/install/install.go index 504239b80453..5f9145f63616 100644 --- a/pkg/integrations/install/install.go +++ b/pkg/integrations/install/install.go @@ -28,4 +28,5 @@ import ( // _ "github.com/grafana/agent/pkg/integrations/v2/agent" // register agent + _ "github.com/grafana/agent/pkg/integrations/v2/eventhandler" ) diff --git a/pkg/integrations/manager_test.go b/pkg/integrations/manager_test.go index 88325dfb874f..ffd44dbb8100 100644 --- a/pkg/integrations/manager_test.go +++ b/pkg/integrations/manager_test.go @@ -36,8 +36,8 @@ use_hostname_label: true ` var ( cfg ManagerConfig - listenPort int = 12345 - listenHost string = "127.0.0.1" + listenPort = 12345 + listenHost = "127.0.0.1" ) require.NoError(t, yaml.Unmarshal([]byte(cfgText), &cfg)) @@ -66,8 +66,8 @@ test: ` var ( cfg ManagerConfig - listenPort int = 12345 - listenHost string = "127.0.0.1" + listenPort = 12345 + listenHost = "127.0.0.1" ) require.NoError(t, yaml.Unmarshal([]byte(cfgText), &cfg)) @@ -89,8 +89,8 @@ agent: var ( cfg ManagerConfig - listenPort int = 12345 - listenHost string = "127.0.0.1" + listenPort = 12345 + listenHost = "127.0.0.1" ) require.NoError(t, yaml.Unmarshal([]byte(cfgText), &cfg)) diff --git a/pkg/integrations/memcached_exporter/memcached_exporter.go b/pkg/integrations/memcached_exporter/memcached_exporter.go index c117528450bf..93d79871dc09 100644 --- a/pkg/integrations/memcached_exporter/memcached_exporter.go +++ b/pkg/integrations/memcached_exporter/memcached_exporter.go @@ -12,7 +12,7 @@ import ( ) // DefaultConfig is the default config for memcached_exporter. -var DefaultConfig Config = Config{ +var DefaultConfig = Config{ MemcachedAddress: "localhost:11211", Timeout: time.Second, } diff --git a/pkg/integrations/mongodb_exporter/mongodb_exporter.go b/pkg/integrations/mongodb_exporter/mongodb_exporter.go index e666d54c2b34..905ffcef58cc 100644 --- a/pkg/integrations/mongodb_exporter/mongodb_exporter.go +++ b/pkg/integrations/mongodb_exporter/mongodb_exporter.go @@ -20,7 +20,6 @@ type Config struct { // UnmarshalYAML implements yaml.Unmarshaler for Config func (c *Config) UnmarshalYAML(unmarshal func(interface{}) error) error { - type plain Config return unmarshal((*plain)(c)) } diff --git a/pkg/integrations/postgres_exporter/postgres_test.go b/pkg/integrations/postgres_exporter/postgres_test.go index 0b6bbe8963b1..e3a74f7bbc57 100644 --- a/pkg/integrations/postgres_exporter/postgres_test.go +++ b/pkg/integrations/postgres_exporter/postgres_test.go @@ -17,5 +17,4 @@ integrations: ` config.CheckSecret(t, stringCfg, "secret_password_in_uri") config.CheckSecret(t, stringCfg, "secret_password_in_uri_2") - } diff --git a/pkg/integrations/redis_exporter/redis_exporter.go b/pkg/integrations/redis_exporter/redis_exporter.go index 2a71d35c1e44..1661ee5a86ca 100644 --- a/pkg/integrations/redis_exporter/redis_exporter.go +++ b/pkg/integrations/redis_exporter/redis_exporter.go @@ -144,9 +144,7 @@ func New(log log.Logger, c *Config) (integrations.Integration, error) { if (c.TLSClientKeyFile != "") != (c.TLSClientCertFile != "") { return nil, errors.New("TLS client key file and cert file should both be present") - } - if c.TLSClientKeyFile != "" && c.TLSClientCertFile != "" { - + } else if c.TLSClientKeyFile != "" && c.TLSClientCertFile != "" { exporterConfig.ClientKeyFile = c.TLSClientKeyFile exporterConfig.ClientCertFile = c.TLSClientCertFile } diff --git a/pkg/integrations/redis_exporter/redis_exporter_test.go b/pkg/integrations/redis_exporter/redis_exporter_test.go index 49391bae0cbc..2830c0657f40 100644 --- a/pkg/integrations/redis_exporter/redis_exporter_test.go +++ b/pkg/integrations/redis_exporter/redis_exporter_test.go @@ -104,7 +104,6 @@ func TestRedisCases(t *testing.T) { logger := log.NewNopLogger() for _, test := range tt { - t.Run(test.name, func(t *testing.T) { integration, err := New(logger, &test.cfg) @@ -151,7 +150,6 @@ func TestRedisCases(t *testing.T) { require.True(t, exists, "could not find metric %s", metric) } }) - } } diff --git a/pkg/integrations/v2/autoscrape/autoscrape.go b/pkg/integrations/v2/autoscrape/autoscrape.go index a5d986273bd4..70b7fbd89cbd 100644 --- a/pkg/integrations/v2/autoscrape/autoscrape.go +++ b/pkg/integrations/v2/autoscrape/autoscrape.go @@ -19,7 +19,7 @@ import ( ) // DefaultGlobal holds default values for Global. -var DefaultGlobal Global = Global{ +var DefaultGlobal = Global{ Enable: true, MetricsInstance: "default", } @@ -197,8 +197,8 @@ func newInstanceScraper( s InstanceStore, instanceName string, ) *instanceScraper { - ctx, cancel := context.WithCancel(ctx) + ctx, cancel := context.WithCancel(ctx) l = log.With(l, "target_instance", instanceName) sd := discovery.NewManager(ctx, l, discovery.Name("autoscraper/"+instanceName)) diff --git a/pkg/integrations/v2/autoscrape/autoscrape_test.go b/pkg/integrations/v2/autoscrape/autoscrape_test.go index c813b678a5f8..2e9a5e9e73eb 100644 --- a/pkg/integrations/v2/autoscrape/autoscrape_test.go +++ b/pkg/integrations/v2/autoscrape/autoscrape_test.go @@ -3,7 +3,6 @@ package autoscrape import ( "context" "net/http/httptest" - "sync/atomic" "testing" "time" @@ -15,10 +14,10 @@ import ( "github.com/prometheus/prometheus/discovery" "github.com/prometheus/prometheus/pkg/exemplar" "github.com/prometheus/prometheus/pkg/labels" - "github.com/prometheus/prometheus/scrape" "github.com/prometheus/prometheus/storage" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "go.uber.org/atomic" ) // TestAutoscrape is a basic end-to-end test of the autoscraper. @@ -69,15 +68,15 @@ func TestAutoscrape(t *testing.T) { require.NoError(t, wt.Wait(5*time.Second), "timed out waiting for scrape") } -var globalRef uint64 +var globalRef atomic.Uint64 var noOpAppender = mockAppender{ AppendFunc: func(ref uint64, l labels.Labels, t int64, v float64) (uint64, error) { - return atomic.AddUint64(&globalRef, 1), nil + return globalRef.Inc(), nil }, CommitFunc: func() error { return nil }, RollbackFunc: func() error { return nil }, AppendExemplarFunc: func(ref uint64, l labels.Labels, e exemplar.Exemplar) (uint64, error) { - return atomic.AddUint64(&globalRef, 1), nil + return globalRef.Inc(), nil }, } @@ -98,11 +97,8 @@ func (ma *mockAppender) AppendExemplar(ref uint64, l labels.Labels, e exemplar.E } type mockInstance struct { + instance.NoOpInstance app storage.Appender } -func (mi *mockInstance) Run(ctx context.Context) error { return nil } -func (mi *mockInstance) Update(c instance.Config) error { return nil } -func (mi *mockInstance) TargetsActive() map[string][]*scrape.Target { return nil } -func (mi *mockInstance) StorageDirectory() string { return "" } func (mi *mockInstance) Appender(ctx context.Context) storage.Appender { return mi.app } diff --git a/pkg/integrations/v2/common/metrics.go b/pkg/integrations/v2/common/metrics.go index 6a670f47d745..405180846bb4 100644 --- a/pkg/integrations/v2/common/metrics.go +++ b/pkg/integrations/v2/common/metrics.go @@ -2,6 +2,7 @@ package common import ( "github.com/grafana/agent/pkg/integrations/v2/autoscrape" + "github.com/prometheus/prometheus/pkg/labels" ) // MetricsConfig is a set of common options shared by metrics integrations. It @@ -14,6 +15,7 @@ import ( type MetricsConfig struct { Autoscrape autoscrape.Config `yaml:"autoscrape,omitempty"` InstanceKey *string `yaml:"instance,omitempty"` + ExtraLabels labels.Labels `yaml:"extra_labels,omitempty"` } // ApplyDefaults applies defaults to mc. diff --git a/pkg/integrations/v2/controller.go b/pkg/integrations/v2/controller.go index 91072534ecbe..7ecf37fbfe18 100644 --- a/pkg/integrations/v2/controller.go +++ b/pkg/integrations/v2/controller.go @@ -27,20 +27,14 @@ type controllerConfig []Config // controller manages a set of integrations. type controller struct { - logger log.Logger - mut sync.Mutex - cfg controllerConfig - globals Globals + logger log.Logger - integrations []*controlledIntegration // Integrations to run - reloadIntegrations chan struct{} // Inform Controller.Run to re-read integrations + mut sync.Mutex + cfg controllerConfig + globals Globals + integrations []*controlledIntegration // Running integrations - // Next generation value to use for an integration. - gen atomic.Uint64 - - // onUpdateDone is used for testing and will be invoked when integrations - // finish reloading. - onUpdateDone func() + runIntegrations chan []*controlledIntegration // Schedule integrations to run } // newController creates a new Controller. Controller is intended to be @@ -48,8 +42,8 @@ type controller struct { // integrations. func newController(l log.Logger, cfg controllerConfig, globals Globals) (*controller, error) { c := &controller{ - logger: l, - reloadIntegrations: make(chan struct{}, 1), + logger: l, + runIntegrations: make(chan []*controlledIntegration, 1), } if err := c.UpdateController(cfg, globals); err != nil { return nil, err @@ -59,133 +53,40 @@ func newController(l log.Logger, cfg controllerConfig, globals Globals) (*contro // run starts the controller and blocks until ctx is canceled. func (c *controller) run(ctx context.Context) { - defer func() { - level.Debug(c.logger).Log("msg", "stopping all integrations") - - c.mut.Lock() - defer c.mut.Unlock() - - for _, exist := range c.integrations { - exist.Stop() - } - }() - - var currentIntegrations []*controlledIntegration - - updateIntegrations := func() { - // Lock the mutex to prevent another set of integrations from being - // loaded in. - c.mut.Lock() - defer c.mut.Unlock() - level.Debug(c.logger).Log("msg", "updating running integrations", "prev_count", len(currentIntegrations), "new_count", len(c.integrations)) - - newIntegrations := c.integrations - - // Shut down all old integrations. If the integration exists in - // newIntegrations but has a different gen number, then there's a new - // instance to launch. - for _, exist := range currentIntegrations { - var found bool - for _, current := range newIntegrations { - if exist.id == current.id && current.gen == exist.gen { - found = true - break - } - } - if !found { - exist.Stop() - } - } - - var waitStarted sync.WaitGroup - waitStarted.Add(len(newIntegrations)) - - // Now all integrations can be launched. - for _, current := range newIntegrations { - go func(current *controlledIntegration) { - waitStarted.Done() - - err := current.Run(ctx) - if err != nil && !errors.Is(err, errIntegrationRunning) { - level.Warn(c.logger).Log("msg", "integration exited with error", "instance", current.id, "err", err) - } - }(current) - } - - // Wait for all integration goroutines to have been scheduled at least once. - waitStarted.Wait() - - // Finally, store the current list of contolled integrations. - currentIntegrations = newIntegrations - } + pool := newWorkerPool(ctx, c.logger) + defer pool.Close() for { select { case <-ctx.Done(): level.Debug(c.logger).Log("msg", "controller exiting") return - case <-c.reloadIntegrations: - updateIntegrations() - if c.onUpdateDone != nil { - c.onUpdateDone() - } + case newIntegrations := <-c.runIntegrations: + pool.Reload(newIntegrations) + + c.mut.Lock() + c.integrations = newIntegrations + c.mut.Unlock() } } } -// controlledIntegration is a running Integration. -// A running integration is identified uniquely by its id and gen. +// controlledIntegration is a running Integration. A running integration is +// identified uniquely by its id. type controlledIntegration struct { - id integrationID - gen uint64 - - i Integration - c Config // Config that generated i. Used for changing to see if a config changed. - + id integrationID + i Integration + c Config // Config that generated i. Used for changing to see if a config changed. running atomic.Bool - - mut sync.Mutex - stop context.CancelFunc } func (ci *controlledIntegration) Running() bool { return ci.running.Load() } -func (ci *controlledIntegration) Run(ctx context.Context) error { - updatedRunningState := ci.running.CAS(false, true) - if !updatedRunningState { - // The CAS will fail if our integration was already running. - return errIntegrationRunning - } - defer ci.running.Store(false) - - ci.mut.Lock() - ctx, ci.stop = context.WithCancel(ctx) - ci.mut.Unlock() - - // Early optimization: don't do anything if ctx has already been canceled - if ctx.Err() != nil { - return nil - } - return ci.i.RunIntegration(ctx) -} - -var errIntegrationRunning = fmt.Errorf("already running") - -func (ci *controlledIntegration) Stop() { - ci.mut.Lock() - if ci.stop != nil { - ci.stop() - } - ci.mut.Unlock() -} - // integrationID uses a tuple of Name and Identifier to uniquely identify an // integration. -type integrationID struct { - Name, Identifier string -} +type integrationID struct{ Name, Identifier string } func (id integrationID) String() string { return fmt.Sprintf("%s/%s", id.Name, id.Identifier) @@ -279,16 +180,14 @@ NextConfig: // Create a new controlled integration. integrations = append(integrations, &controlledIntegration{ - id: id, - gen: c.gen.Inc(), - i: integration, - c: ic, + id: id, + i: integration, + c: ic, }) } - // Update integrations and inform - c.integrations = integrations - c.reloadIntegrations <- struct{}{} + // Schedule integrations to run + c.runIntegrations <- integrations c.cfg = cfg c.globals = globals @@ -302,9 +201,6 @@ NextConfig: // Handler is expensive to compute and should only be done after reloading the // config. func (c *controller) Handler(prefix string) (http.Handler, error) { - c.mut.Lock() - defer c.mut.Unlock() - var firstErr error saveFirstErr := func(err error) { if firstErr == nil { @@ -314,7 +210,7 @@ func (c *controller) Handler(prefix string) (http.Handler, error) { r := mux.NewRouter() - err := forEachIntegration(c.integrations, prefix, func(ci *controlledIntegration, iprefix string) { + err := c.forEachIntegration(prefix, func(ci *controlledIntegration, iprefix string) { id := ci.id i, ok := ci.i.(HTTPIntegration) @@ -350,20 +246,23 @@ func (c *controller) Handler(prefix string) (http.Handler, error) { // forEachIntegration calculates the prefix for each integration and calls f. // prefix will not end in /. -func forEachIntegration(set []*controlledIntegration, basePrefix string, f func(ci *controlledIntegration, iprefix string)) error { +func (c *controller) forEachIntegration(basePrefix string, f func(ci *controlledIntegration, iprefix string)) error { + c.mut.Lock() + defer c.mut.Unlock() + // Pre-populate a mapping of integration name -> identifier. If there are // two instances of the same integration, we want to ensure unique routing. // // This special logic is done for backwards compatibility with the original // design of integrations. identifiersMap := map[string][]string{} - for _, i := range set { + for _, i := range c.integrations { identifiersMap[i.id.Name] = append(identifiersMap[i.id.Name], i.id.Identifier) } usedPrefixes := map[string]struct{}{} - for _, ci := range set { + for _, ci := range c.integrations { id := ci.id multipleInstances := len(identifiersMap[id.Name]) > 1 @@ -398,8 +297,7 @@ func (c *controller) Targets(ep Endpoint, opts TargetOptions) []*targetGroup { } var mm []prefixedMetricsIntegration - c.mut.Lock() - err := forEachIntegration(c.integrations, ep.Prefix, func(ci *controlledIntegration, iprefix string) { + err := c.forEachIntegration(ep.Prefix, func(ci *controlledIntegration, iprefix string) { // Best effort liveness check. They might stop running when we request // their targets, which is fine, but we should save as much work as we // can. @@ -414,7 +312,6 @@ func (c *controller) Targets(ep Endpoint, opts TargetOptions) []*targetGroup { if err != nil { level.Warn(c.logger).Log("msg", "error when iterating over integrations to get targets", "err", err) } - c.mut.Unlock() var tgs []*targetGroup for _, mi := range mm { @@ -507,8 +404,7 @@ func (c *controller) ScrapeConfigs(prefix string, sdConfig *http_sd.SDConfig) [] } var mm []prefixedMetricsIntegration - c.mut.Lock() - err := forEachIntegration(c.integrations, prefix, func(ci *controlledIntegration, iprefix string) { + err := c.forEachIntegration(prefix, func(ci *controlledIntegration, iprefix string) { if mi, ok := ci.i.(MetricsIntegration); ok { mm = append(mm, prefixedMetricsIntegration{id: ci.id, i: mi, prefix: iprefix}) } @@ -516,7 +412,6 @@ func (c *controller) ScrapeConfigs(prefix string, sdConfig *http_sd.SDConfig) [] if err != nil { level.Warn(c.logger).Log("msg", "error when iterating over integrations to get scrape configs", "err", err) } - c.mut.Unlock() var cfgs []*autoscrape.ScrapeConfig for _, mi := range mm { diff --git a/pkg/integrations/v2/controller_metricsintegration_test.go b/pkg/integrations/v2/controller_metricsintegration_test.go index 6ef0507c06c7..6302c21519fb 100644 --- a/pkg/integrations/v2/controller_metricsintegration_test.go +++ b/pkg/integrations/v2/controller_metricsintegration_test.go @@ -1,6 +1,7 @@ package integrations import ( + "context" "testing" "github.com/go-kit/log" @@ -21,7 +22,7 @@ import ( func Test_controller_MetricsIntegration_Targets(t *testing.T) { integrationWithTarget := func(targetName string) Integration { return mockMetricsIntegration{ - Integration: NoOpIntegration, + Integration: newWaitStartedIntegration(), TargetsFunc: func(Endpoint) []*targetgroup.Group { return []*targetgroup.Group{{ Targets: []model.LabelSet{{model.AddressLabel: model.LabelValue(targetName)}}, @@ -40,6 +41,18 @@ func Test_controller_MetricsIntegration_Targets(t *testing.T) { }), } + // waitIntegrations starts a controller and waits for all of its integrations + // to run. + waitIntegrations := func(t *testing.T, ctrl *controller) { + t.Helper() + _ = newSyncController(t, ctrl) + err := ctrl.forEachIntegration("/", func(ci *controlledIntegration, _ string) { + wsi := ci.i.(mockMetricsIntegration).Integration.(*waitStartedIntegration) + _ = wsi.trigger.WaitContext(context.Background()) + }) + require.NoError(t, err) + } + t.Run("All", func(t *testing.T) { ctrl, err := newController( util.TestLogger(t), @@ -47,7 +60,7 @@ func Test_controller_MetricsIntegration_Targets(t *testing.T) { Globals{}, ) require.NoError(t, err) - _ = newSyncController(t, ctrl) + waitIntegrations(t, ctrl) result := ctrl.Targets(Endpoint{Prefix: "/"}, TargetOptions{}) expect := []*targetGroup{ @@ -64,7 +77,7 @@ func Test_controller_MetricsIntegration_Targets(t *testing.T) { Globals{}, ) require.NoError(t, err) - _ = newSyncController(t, ctrl) + waitIntegrations(t, ctrl) result := ctrl.Targets(Endpoint{Prefix: "/"}, TargetOptions{ Integrations: []string{"a", "b"}, @@ -83,7 +96,7 @@ func Test_controller_MetricsIntegration_Targets(t *testing.T) { Globals{}, ) require.NoError(t, err) - _ = newSyncController(t, ctrl) + waitIntegrations(t, ctrl) result := ctrl.Targets(Endpoint{Prefix: "/"}, TargetOptions{ Integrations: []string{"a"}, @@ -123,9 +136,7 @@ func Test_controller_MetricsIntegration_ScrapeConfig(t *testing.T) { Globals{}, ) require.NoError(t, err) - // NOTE(rfratto): we explicitly don't run the controller here because - // ScrapeConfigs should return the list of scrape targets even when the - // integration isn't running. + _ = newSyncController(t, ctrl) result := ctrl.ScrapeConfigs("/", &http.DefaultSDConfig) expect := []*autoscrape.ScrapeConfig{ @@ -139,6 +150,20 @@ func Test_controller_MetricsIntegration_ScrapeConfig(t *testing.T) { // Tests for controller's utilization of the MetricsIntegration interface. // +type waitStartedIntegration struct { + trigger *util.WaitTrigger +} + +func newWaitStartedIntegration() *waitStartedIntegration { + return &waitStartedIntegration{trigger: util.NewWaitTrigger()} +} + +func (i *waitStartedIntegration) RunIntegration(ctx context.Context) error { + i.trigger.Trigger() + <-ctx.Done() + return nil +} + type mockMetricsIntegration struct { Integration TargetsFunc func(ep Endpoint) []*targetgroup.Group diff --git a/pkg/integrations/v2/controller_test.go b/pkg/integrations/v2/controller_test.go index 5c8654812540..d9f13ad9315d 100644 --- a/pkg/integrations/v2/controller_test.go +++ b/pkg/integrations/v2/controller_test.go @@ -135,7 +135,6 @@ func Test_controller_ConfigChanges(t *testing.T) { } func Test_controller_SingletonCheck(t *testing.T) { - var integrationsWg sync.WaitGroup var starts atomic.Uint64 @@ -169,61 +168,49 @@ func Test_controller_SingletonCheck(t *testing.T) { _, err := newController(util.TestLogger(t), cfg, globals) require.Error(t, err) require.True(t, strings.Contains(err.Error(), "found multiple instances of singleton integration mock")) - } type syncController struct { - inner *controller - applyWg sync.WaitGroup - - stop context.CancelFunc - exitedCh chan struct{} + inner *controller + pool *workerPool } -// newSyncController makes calls to Controller synchronous. newSyncController -// will start running the inner controller and wait for it to update. +// newSyncController pairs an unstarted controller with a manually managed +// worker pool to synchronously apply integrations. func newSyncController(t *testing.T, inner *controller) *syncController { t.Helper() - ctx, cancel := context.WithCancel(context.Background()) - t.Cleanup(func() { - cancel() - }) - sc := &syncController{ - inner: inner, - stop: cancel, - exitedCh: make(chan struct{}), + inner: inner, + pool: newWorkerPool(context.Background(), inner.logger), } - inner.onUpdateDone = sc.applyWg.Done // Inform WG whenever an apply finishes - // There's always immediately ony applied queued from any successfully created controller. - sc.applyWg.Add(1) + // There's always immediately one queued integration set from any + // successfully created controller. + sc.refresh() + return sc +} - go func() { - inner.run(ctx) - close(sc.exitedCh) - }() +func (sc *syncController) refresh() { + sc.inner.mut.Lock() + defer sc.inner.mut.Unlock() - sc.applyWg.Wait() - return sc + newIntegrations := <-sc.inner.runIntegrations + sc.pool.Reload(newIntegrations) + sc.inner.integrations = newIntegrations } func (sc *syncController) UpdateController(c controllerConfig, g Globals) error { - sc.applyWg.Add(1) - - if err := sc.inner.UpdateController(c, g); err != nil { - sc.applyWg.Done() // The wg won't ever be finished now + err := sc.inner.UpdateController(c, g) + if err != nil { return err } - - sc.applyWg.Wait() + sc.refresh() return nil } func (sc *syncController) Stop() { - sc.stop() - <-sc.exitedCh + sc.pool.Close() } const mockIntegrationName = "mock" diff --git a/pkg/integrations/v2/eventhandler/eventhandler.go b/pkg/integrations/v2/eventhandler/eventhandler.go new file mode 100644 index 000000000000..36de2d4732e9 --- /dev/null +++ b/pkg/integrations/v2/eventhandler/eventhandler.go @@ -0,0 +1,424 @@ +// Package eventhandler watches for Kubernetes Event objects and hands them off to +// Agent's Logs subsystem (embedded promtail) +package eventhandler + +import ( + "context" + "encoding/json" + "fmt" + "io/ioutil" + "os" + "path/filepath" + "strings" + "sync" + "time" + + v1 "k8s.io/api/core/v1" + "k8s.io/client-go/informers" + "k8s.io/client-go/kubernetes" + "k8s.io/client-go/rest" + "k8s.io/client-go/tools/cache" + "k8s.io/client-go/tools/clientcmd" + "k8s.io/client-go/util/homedir" + + "github.com/go-kit/log" + "github.com/go-kit/log/level" + "github.com/grafana/agent/pkg/integrations/v2" + "github.com/grafana/agent/pkg/logs" + "github.com/grafana/loki/clients/pkg/promtail/api" + "github.com/grafana/loki/pkg/logproto" + "github.com/prometheus/common/model" +) + +const ( + cacheFileMode = 0600 +) + +// EventHandler watches for Kubernetes Event objects and hands them off to +// Agent's logs subsystem (embedded promtail). +type EventHandler struct { + LogsClient *logs.Logs + LogsInstance string + Log log.Logger + CachePath string + LastEvent *ShippedEvents + InitEvent *ShippedEvents + EventInformer cache.SharedIndexInformer + SendTimeout time.Duration + ticker *time.Ticker + sync.Mutex +} + +// ShippedEvents stores a timestamp and map of event ResourceVersions shipped for that timestamp. +// Used to avoid double-shipping events upon restart. +type ShippedEvents struct { + // shipped event's timestamp + Timestamp time.Time `json:"ts"` + // map of event RVs (resource versions) already "shipped" (handed off) for this timestamp. + // this is to handle the case of a timestamp having multiple events, + // which happens quite frequently. + RvMap map[string]struct{} `json:"resourceVersion"` +} + +func newEventHandler(l log.Logger, globals integrations.Globals, c *Config) (integrations.Integration, error) { + var ( + config *rest.Config + err error + factory informers.SharedInformerFactory + ) + + // Try using KubeconfigPath or inClusterConfig + config, err = clientcmd.BuildConfigFromFlags("", c.KubeconfigPath) + if err != nil { + level.Error(l).Log("msg", "Loading from KubeconfigPath or inClusterConfig failed", "err", err) + // Trying default home location + if home := homedir.HomeDir(); home != "" { + kubeconfigPath := filepath.Join(home, ".kube", "config") + config, err = clientcmd.BuildConfigFromFlags("", kubeconfigPath) + if err != nil { + level.Error(l).Log("msg", "Could not load a kubeconfig", "err", err) + return nil, err + } + } else { + err = fmt.Errorf("could not load a kubeconfig") + return nil, err + } + } + + clientset, err := kubernetes.NewForConfig(config) + if err != nil { + return nil, err + } + + // get an informer + if c.Namespace == "" { + factory = informers.NewSharedInformerFactory(clientset, time.Duration(c.InformerResync)*time.Second) + } else { + factory = informers.NewSharedInformerFactoryWithOptions(clientset, time.Duration(c.InformerResync)*time.Second, informers.WithNamespace(c.Namespace)) + } + + eventInformer := factory.Core().V1().Events().Informer() + + eh := &EventHandler{ + LogsClient: globals.Logs, + LogsInstance: c.LogsInstance, + Log: l, + CachePath: c.CachePath, + EventInformer: eventInformer, + SendTimeout: time.Duration(c.SendTimeout) * time.Second, + } + // set the resource handler fns + eh.initInformer(eventInformer) + eh.ticker = time.NewTicker(time.Duration(c.FlushInterval) * time.Second) + return eh, nil +} + +// Initialize informer by setting event handler fns +func (eh *EventHandler) initInformer(eventsInformer cache.SharedIndexInformer) { + eventsInformer.AddEventHandler(cache.ResourceEventHandlerFuncs{ + AddFunc: eh.addEvent, + UpdateFunc: eh.updateEvent, + DeleteFunc: eh.deleteEvent, + }) +} + +// Handles new event objects +func (eh *EventHandler) addEvent(obj interface{}) { + event, _ := obj.(*v1.Event) + + err := eh.handleEvent(event) + if err != nil { + level.Error(eh.Log).Log("msg", "Error handling event", "err", err, "event", event) + } +} + +// Handles event object updates. Note that this get triggered on informer resyncs and also +// events occurring more than once (in which case .count is incremented) +func (eh *EventHandler) updateEvent(objOld interface{}, objNew interface{}) { + eOld, _ := objOld.(*v1.Event) + eNew, _ := objNew.(*v1.Event) + + if eOld.GetResourceVersion() == eNew.GetResourceVersion() { + // ignore resync updates + level.Debug(eh.Log).Log("msg", "Event RV didn't change, ignoring", "eRV", eNew.ResourceVersion) + return + } + + err := eh.handleEvent(eNew) + if err != nil { + level.Error(eh.Log).Log("msg", "Error handling event", "err", err, "event", eNew) + } +} + +func (eh *EventHandler) handleEvent(event *v1.Event) error { + eventTs := getTimestamp(event) + + // if event is older than the one stored in cache on startup, we've shipped it + if eventTs.Before(eh.InitEvent.Timestamp) { + return nil + } + // if event is equal and is in map, we've shipped it + if eventTs.Equal(eh.InitEvent.Timestamp) { + if _, ok := eh.InitEvent.RvMap[event.ResourceVersion]; ok { + return nil + } + } + + labels, msg, err := eh.extractEvent(event) + if err != nil { + return err + } + + entry := newEntry(msg, eventTs, labels) + ok := eh.LogsClient.Instance(eh.LogsInstance).SendEntry(entry, eh.SendTimeout) + if !ok { + err = fmt.Errorf("msg=%s entry=%s", "error handing entry off to promtail", entry) + return err + } + level.Info(eh.Log).Log("msg", "Shipped entry", "eventRV", event.ResourceVersion, "eventMsg", event.Message) + + // update cache with new "last" event + err = eh.updateLastEvent(event, eventTs) + if err != nil { + return err + } + return nil +} + +// Called when event objects are removed from etcd, can safely ignore this +func (eh *EventHandler) deleteEvent(obj interface{}) { +} + +// extract data from event fields and create labels, etc. +// TODO: ship JSON blobs and allow users to configure using pipelines etc. +// instead of hardcoding labels here +func (eh *EventHandler) extractEvent(event *v1.Event) (model.LabelSet, string, error) { + var ( + msg strings.Builder + labels = make(model.LabelSet) + ) + + obj := event.InvolvedObject + if obj.Name == "" { + return nil, "", fmt.Errorf("no involved object for event") + } + msg.WriteString(fmt.Sprintf("name=%s ", obj.Name)) + + labels[model.LabelName("namespace")] = model.LabelValue(obj.Namespace) + + // we add these fields to the log line to reduce label bloat and cardinality + if obj.Kind != "" { + msg.WriteString(fmt.Sprintf("kind=%s ", obj.Kind)) + } + if event.Action != "" { + msg.WriteString(fmt.Sprintf("action=%s ", event.Action)) + } + if obj.APIVersion != "" { + msg.WriteString(fmt.Sprintf("objectAPIversion=%s ", obj.APIVersion)) + } + if obj.ResourceVersion != "" { + msg.WriteString(fmt.Sprintf("objectRV=%s ", obj.ResourceVersion)) + } + if event.ResourceVersion != "" { + msg.WriteString(fmt.Sprintf("eventRV=%s ", event.ResourceVersion)) + } + if event.ReportingInstance != "" { + msg.WriteString(fmt.Sprintf("reportinginstance=%s ", event.ReportingInstance)) + } + if event.ReportingController != "" { + msg.WriteString(fmt.Sprintf("reportingcontroller=%s ", event.ReportingController)) + } + if event.Source.Component != "" { + msg.WriteString(fmt.Sprintf("sourcecomponent=%s ", event.Source.Component)) + } + if event.Source.Host != "" { + msg.WriteString(fmt.Sprintf("sourcehost=%s ", event.Source.Host)) + } + if event.Reason != "" { + msg.WriteString(fmt.Sprintf("reason=%s ", event.Reason)) + } + if event.Type != "" { + msg.WriteString(fmt.Sprintf("type=%s ", event.Type)) + } + if event.Count != 0 { + msg.WriteString(fmt.Sprintf("count=%d ", event.Count)) + } + + msg.WriteString(fmt.Sprintf("msg=%q", event.Message)) + + return labels, msg.String(), nil +} + +func getTimestamp(event *v1.Event) time.Time { + if !event.LastTimestamp.IsZero() { + return event.LastTimestamp.Time + } + return event.EventTime.Time +} + +func newEntry(msg string, ts time.Time, labels model.LabelSet) api.Entry { + entry := logproto.Entry{Timestamp: ts, Line: msg} + return api.Entry{Labels: labels, Entry: entry} +} + +// maintain "last event" state +func (eh *EventHandler) updateLastEvent(e *v1.Event, eventTs time.Time) error { + eh.Lock() + defer eh.Unlock() + + eventRv := e.ResourceVersion + + if eh.LastEvent == nil { + // startup + eh.LastEvent = &ShippedEvents{Timestamp: eventTs, RvMap: make(map[string]struct{})} + eh.LastEvent.RvMap[eventRv] = struct{}{} + return nil + } + + // if timestamp is the same, add to map + if eh.LastEvent != nil && eventTs.Equal(eh.LastEvent.Timestamp) { + eh.LastEvent.RvMap[eventRv] = struct{}{} + return nil + } + + // if timestamp is different, create a new ShippedEvents struct + eh.LastEvent = &ShippedEvents{Timestamp: eventTs, RvMap: make(map[string]struct{})} + eh.LastEvent.RvMap[eventRv] = struct{}{} + return nil +} + +func (eh *EventHandler) writeOutLastEvent() error { + level.Info(eh.Log).Log("msg", "Flushing last event to disk") + + eh.Lock() + defer eh.Unlock() + + if eh.LastEvent == nil { + level.Info(eh.Log).Log("msg", "No last event to flush, returning") + return nil + } + + temp := eh.CachePath + "-new" + buf, err := json.Marshal(&eh.LastEvent) + if err != nil { + return err + } + + err = ioutil.WriteFile(temp, buf, os.FileMode(cacheFileMode)) + if err != nil { + return err + } + + if err = os.Rename(temp, eh.CachePath); err != nil { + return err + } + level.Info(eh.Log).Log("msg", "Flushed last event to disk") + return nil +} + +// RunIntegration runs the eventhandler integration +func (eh *EventHandler) RunIntegration(ctx context.Context) error { + var wg sync.WaitGroup + + ctx, cancel := context.WithCancel(ctx) + defer cancel() + + // Quick check to make sure logs instance exists + if i := eh.LogsClient.Instance(eh.LogsInstance); i == nil { + level.Error(eh.Log).Log("msg", "Logs instance not configured", "instance", eh.LogsInstance) + cancel() + } + + cacheDir := filepath.Dir(eh.CachePath) + if err := os.MkdirAll(cacheDir, 0755); err != nil { + level.Error(eh.Log).Log("msg", "Failed to create cache dir", "err", err) + cancel() + } + + // cache file to store events shipped (prevents double shipping on restart) + cacheFile, err := os.OpenFile(eh.CachePath, os.O_RDWR|os.O_CREATE, cacheFileMode) + if err != nil { + level.Error(eh.Log).Log("msg", "Failed to open or create cache file", "err", err) + cancel() + } + + // attempt to read last timestamp from cache file into a ShippedEvents struct + initEvent, err := readInitEvent(cacheFile, eh.Log) + if err != nil { + level.Error(eh.Log).Log("msg", "Failed to read last event from cache file", "err", err) + cancel() + } + eh.InitEvent = initEvent + + if err = cacheFile.Close(); err != nil { + level.Error(eh.Log).Log("msg", "Failed to close cache file", "err", err) + cancel() + } + + go func() { + level.Info(eh.Log).Log("msg", "Waiting for cache to sync (initial List of events)") + isSynced := cache.WaitForCacheSync(ctx.Done(), eh.EventInformer.HasSynced) + if !isSynced { + level.Error(eh.Log).Log("msg", "Failed to sync informer cache") + // maybe want to bail here + return + } + level.Info(eh.Log).Log("msg", "Informer cache synced") + }() + + // start the informer + // technically we should prob use the factory here, but since we + // only have one informer atm, this likely doesn't matter + go eh.EventInformer.Run(ctx.Done()) + + // wait for last event to flush before returning + wg.Add(1) + go func() { + defer wg.Done() + eh.runTicker(ctx.Done()) + }() + wg.Wait() + + return nil +} + +// write out last event every FlushInterval +func (eh *EventHandler) runTicker(stopCh <-chan struct{}) { + for { + select { + case <-stopCh: + if err := eh.writeOutLastEvent(); err != nil { + level.Error(eh.Log).Log("msg", "Failed to flush last event", "err", err) + } + return + case <-eh.ticker.C: + if err := eh.writeOutLastEvent(); err != nil { + level.Error(eh.Log).Log("msg", "Failed to flush last event", "err", err) + } + } + } +} + +func readInitEvent(file *os.File, logger log.Logger) (*ShippedEvents, error) { + var ( + initEvent = new(ShippedEvents) + ) + + stat, err := file.Stat() + if err != nil { + return nil, err + } + if stat.Size() == 0 { + level.Info(logger).Log("msg", "Cache file empty, setting zero-valued initEvent") + return initEvent, nil + } + + dec := json.NewDecoder(file) + err = dec.Decode(&initEvent) + if err != nil { + err = fmt.Errorf("could not read init event from cache: %s. Please delete the cache file", err) + return nil, err + } + level.Info(logger).Log("msg", "Loaded init event from cache file", "initEventTime", initEvent.Timestamp) + return initEvent, nil +} diff --git a/pkg/integrations/v2/eventhandler/eventhandler_test.go b/pkg/integrations/v2/eventhandler/eventhandler_test.go new file mode 100644 index 000000000000..8acd5383b8e2 --- /dev/null +++ b/pkg/integrations/v2/eventhandler/eventhandler_test.go @@ -0,0 +1,24 @@ +package eventhandler + +import ( + "os" + "testing" + "time" + + "github.com/go-kit/log" + "github.com/stretchr/testify/require" +) + +func TestCacheLoad(t *testing.T) { + l := log.NewNopLogger() + testTime, _ := time.Parse(time.RFC3339, "2022-01-26T13:39:40-05:00") + expectedEvents := &ShippedEvents{ + Timestamp: testTime, + RvMap: map[string]struct{}{"58588": {}}, + } + cacheFile, err := os.OpenFile("testdata/eventhandler.cache", os.O_RDWR|os.O_CREATE, cacheFileMode) + require.NoError(t, err, "Failed to open test eventhandler cache file") + actualEvents, err := readInitEvent(cacheFile, l) + require.NoError(t, err, "Failed to parse last event from eventhandler cache file") + require.Equal(t, expectedEvents, actualEvents) +} diff --git a/pkg/integrations/v2/eventhandler/integration.go b/pkg/integrations/v2/eventhandler/integration.go new file mode 100644 index 000000000000..880d85bad7a4 --- /dev/null +++ b/pkg/integrations/v2/eventhandler/integration.go @@ -0,0 +1,69 @@ +package eventhandler + +import ( + "github.com/go-kit/log" + "github.com/grafana/agent/pkg/integrations/v2" +) + +// DefaultConfig sets defaults for Config +var DefaultConfig = Config{ + SendTimeout: 60, + CachePath: "./.eventcache/eventhandler.cache", + LogsInstance: "default", + InformerResync: 120, + FlushInterval: 10, +} + +// Config configures the eventhandler integration +type Config struct { + // Eventhandler hands watched events off to promtail using a promtail + // client channel. This parameter configures how long to wait (in seconds) on the channel + // before abandoning and moving on. + SendTimeout int `yaml:"send_timeout,omitempty"` + // Configures the path to a kubeconfig file. If not set, will fall back to using + // an in-cluster config. If this fails, will fall back to checking the user's home + // directory for a kubeconfig. + KubeconfigPath string `yaml:"kubeconfig_path,omitempty"` + // Path to a cache file that will store the last timestamp for a shipped event and events + // shipped for that timestamp. Used to prevent double-shipping on integration restart. + CachePath string `yaml:"cache_path,omitempty"` + // Name of logs subsystem instance to hand log entries off to. + LogsInstance string `yaml:"logs_instance,omitempty"` + // K8s informer resync interval (seconds). You should use defaults here unless you are + // familiar with K8s informers. + InformerResync int `yaml:"informer_resync,omitempty"` + // The integration will flush the last event shipped out to disk every flush_interval seconds. + FlushInterval int `yaml:"flush_interval,omitempty"` + // If you would like to limit events to a given namespace, use this parameter. + Namespace string `yaml:"namespace,omitempty"` +} + +// UnmarshalYAML implements yaml.Unmarshaler for Config +func (c *Config) UnmarshalYAML(unmarshal func(interface{}) error) error { + *c = DefaultConfig + + type plain Config + return unmarshal((*plain)(c)) +} + +// Name returns the name of the integration that this config represents +func (c *Config) Name() string { return "eventhandler" } + +// ApplyDefaults applies runtime-specific defaults to c +func (c *Config) ApplyDefaults(globals integrations.Globals) error { + return nil +} + +// Identifier uniquely identifies this instance of Config +func (c *Config) Identifier(globals integrations.Globals) (string, error) { + return globals.AgentIdentifier, nil +} + +// NewIntegration converts this config into an instance of an integration. +func (c *Config) NewIntegration(l log.Logger, globals integrations.Globals) (integrations.Integration, error) { + return newEventHandler(l, globals, c) +} + +func init() { + integrations.Register(&Config{}, integrations.TypeSingleton) +} diff --git a/pkg/integrations/v2/eventhandler/testdata/eventhandler.cache b/pkg/integrations/v2/eventhandler/testdata/eventhandler.cache new file mode 100644 index 000000000000..dc5814de0843 --- /dev/null +++ b/pkg/integrations/v2/eventhandler/testdata/eventhandler.cache @@ -0,0 +1 @@ +{"ts":"2022-01-26T13:39:40-05:00","resourceVersion":{"58588":{}}} \ No newline at end of file diff --git a/pkg/integrations/v2/metricsutils/metricshandler_integration.go b/pkg/integrations/v2/metricsutils/metricshandler_integration.go index 5aad0504aeab..5edd9c6ac1c2 100644 --- a/pkg/integrations/v2/metricsutils/metricshandler_integration.go +++ b/pkg/integrations/v2/metricsutils/metricshandler_integration.go @@ -26,6 +26,7 @@ func NewMetricsHandlerIntegration( globals integrations.Globals, h http.Handler, ) (integrations.MetricsIntegration, error) { + id, err := c.Identifier(globals) if err != nil { return nil, err @@ -105,6 +106,10 @@ func (i *metricsHandlerIntegration) Targets(ep integrations.Endpoint) []*targetg Source: fmt.Sprintf("%s/%s", i.integrationName, i.instanceID), } + for _, lbl := range i.common.ExtraLabels { + group.Labels[model.LabelName(lbl.Name)] = model.LabelValue(lbl.Value) + } + for _, t := range i.targets { group.Targets = append(group.Targets, model.LabelSet{ model.AddressLabel: model.LabelValue(ep.Host), diff --git a/pkg/integrations/v2/metricsutils/metricshandler_integration_test.go b/pkg/integrations/v2/metricsutils/metricshandler_integration_test.go new file mode 100644 index 000000000000..e084df082cc7 --- /dev/null +++ b/pkg/integrations/v2/metricsutils/metricshandler_integration_test.go @@ -0,0 +1,82 @@ +package metricsutils + +import ( + "fmt" + "net/http" + "net/url" + "testing" + + "github.com/go-kit/log" + "github.com/grafana/agent/pkg/integrations/v2" + "github.com/grafana/agent/pkg/integrations/v2/common" + "github.com/prometheus/common/model" + "github.com/prometheus/prometheus/discovery/targetgroup" + "github.com/prometheus/prometheus/pkg/labels" + "github.com/stretchr/testify/require" +) + +func TestMetricsHandlerIntegration_Targets(t *testing.T) { + globals := integrations.Globals{ + AgentIdentifier: "testagent", + AgentBaseURL: func() *url.URL { + u, err := url.Parse("http://testagent/") + require.NoError(t, err) + return u + }(), + SubsystemOpts: integrations.DefaultSubsystemOptions, + } + + t.Run("Targets", func(t *testing.T) { + var cfg common.MetricsConfig + cfg.ApplyDefaults(globals.SubsystemOpts.Metrics.Autoscrape) + + i, err := NewMetricsHandlerIntegration(nil, fakeConfig{}, cfg, globals, http.NotFoundHandler()) + require.NoError(t, err) + + actual := i.Targets(integrations.Endpoint{Host: "test", Prefix: "/test/"}) + expect := []*targetgroup.Group{{ + Source: "fake/testagent", + Labels: model.LabelSet{ + "instance": "testagent", + "job": "integrations/fake", + "agent_hostname": "testagent", + + "__meta_agent_integration_name": "fake", + "__meta_agent_integration_instance": "testagent", + "__meta_agent_integration_autoscrape": "1", + }, + Targets: []model.LabelSet{{ + "__address__": "test", + "__metrics_path__": "/test/metrics", + }}, + }} + require.Equal(t, expect, actual) + + t.Run("Extra labels", func(t *testing.T) { + cfg := common.MetricsConfig{ + ExtraLabels: labels.FromMap(map[string]string{"foo": "bar", "fizz": "buzz"}), + } + cfg.ApplyDefaults(globals.SubsystemOpts.Metrics.Autoscrape) + + i, err := NewMetricsHandlerIntegration(nil, fakeConfig{}, cfg, globals, http.NotFoundHandler()) + require.NoError(t, err) + actual := i.Targets(integrations.Endpoint{Host: "test", Prefix: "/test/"}) + require.Len(t, actual, 1) + + for _, lbl := range cfg.ExtraLabels { + val, ok := actual[0].Labels[model.LabelName(lbl.Name)] + require.True(t, ok, "target does not have extra label %s", lbl.Name) + require.Equal(t, lbl.Value, string(val), "extra label %s does not match expectation", lbl.Name) + } + }) + }) +} + +type fakeConfig struct{} + +func (fakeConfig) Name() string { return "fake" } +func (fakeConfig) ApplyDefaults(_ integrations.Globals) error { return nil } +func (fakeConfig) Identifier(g integrations.Globals) (string, error) { return g.AgentIdentifier, nil } +func (fakeConfig) NewIntegration(_ log.Logger, _ integrations.Globals) (integrations.Integration, error) { + return nil, fmt.Errorf("not implemented") +} diff --git a/pkg/integrations/v2/subsystem_test.go b/pkg/integrations/v2/subsystem_test.go index 1d9e8cfbd920..71427b15e1f1 100644 --- a/pkg/integrations/v2/subsystem_test.go +++ b/pkg/integrations/v2/subsystem_test.go @@ -52,7 +52,6 @@ func TestSubsystemOptions_Unmarshal(t *testing.T) { for _, tc := range tt { t.Run(tc.name, func(t *testing.T) { - var so SubsystemOptions err := yaml.UnmarshalStrict([]byte(tc.in), &so) diff --git a/pkg/integrations/v2/workers.go b/pkg/integrations/v2/workers.go new file mode 100644 index 000000000000..805cf37a45c0 --- /dev/null +++ b/pkg/integrations/v2/workers.go @@ -0,0 +1,122 @@ +package integrations + +import ( + "context" + "sync" + + "github.com/go-kit/log" + "github.com/go-kit/log/level" +) + +type workerPool struct { + log log.Logger + parentCtx context.Context + + mut sync.Mutex + workers map[*controlledIntegration]worker + + runningWorkers sync.WaitGroup +} + +type worker struct { + ci *controlledIntegration + stop context.CancelFunc + exited chan struct{} +} + +func newWorkerPool(ctx context.Context, l log.Logger) *workerPool { + return &workerPool{ + log: l, + parentCtx: ctx, + + workers: make(map[*controlledIntegration]worker), + } +} + +func (p *workerPool) Reload(newIntegrations []*controlledIntegration) { + p.mut.Lock() + defer p.mut.Unlock() + + level.Debug(p.log).Log("msg", "updating running integrations", "prev_count", len(p.workers), "new_count", len(newIntegrations)) + + // Shut down workers whose integrations have gone away. + var stopped []worker + for ci, w := range p.workers { + var found bool + for _, current := range newIntegrations { + if ci == current { + found = true + break + } + } + if !found { + w.stop() + stopped = append(stopped, w) + } + } + for _, w := range stopped { + // Wait for stopped integrations to fully exit. We do this in a separate + // loop so context cancellations can be handled simultaneously, allowing + // the wait to complete faster. + <-w.exited + } + + // Spawn new workers for integrations that don't have them. + for _, current := range newIntegrations { + if _, workerExists := p.workers[current]; workerExists { + continue + } + // This integration doesn't have an existing worker; schedule a new one. + p.scheduleWorker(current) + } +} + +func (p *workerPool) Close() { + p.mut.Lock() + defer p.mut.Unlock() + + level.Debug(p.log).Log("msg", "stopping all integrations") + + defer p.runningWorkers.Wait() + for _, w := range p.workers { + w.stop() + } +} + +func (p *workerPool) scheduleWorker(ci *controlledIntegration) { + p.runningWorkers.Add(1) + + ctx, cancel := context.WithCancel(p.parentCtx) + + w := worker{ + ci: ci, + stop: cancel, + exited: make(chan struct{}), + } + p.workers[ci] = w + + go func() { + ci.running.Store(true) + + // When the integration stops running, we want to free any of our + // resources that will notify watchers waiting for the worker to stop. + // + // Afterwards, we'll block until we remove ourselves from the map; having + // an worker remove itself on shutdown allows exited integrations to + // re-start when the config is reloaded. + defer func() { + ci.running.Store(false) + close(w.exited) + p.runningWorkers.Done() + + p.mut.Lock() + defer p.mut.Unlock() + delete(p.workers, ci) + }() + + err := ci.i.RunIntegration(ctx) + if err != nil { + level.Error(p.log).Log("msg", "integration exited with error", "id", ci.id, "err", err) + } + }() +} diff --git a/pkg/integrations/windows_exporter/windows_exporter_windows.go b/pkg/integrations/windows_exporter/windows_exporter_windows.go index 52d7b1c36655..275c8aae7355 100644 --- a/pkg/integrations/windows_exporter/windows_exporter_windows.go +++ b/pkg/integrations/windows_exporter/windows_exporter_windows.go @@ -29,7 +29,7 @@ func New(log log.Logger, c *Config) (integrations.Integration, error) { collectorNames = append(collectorNames, key) } sort.Strings(collectorNames) - level.Info(log).Log("msg", "enabled windows_exporter collectors", "collectors", collectorNames) + level.Info(log).Log("msg", "enabled windows_exporter collectors", "collectors", strings.Join(collectorNames, ",")) return integrations.NewCollectorIntegration(c.Name(), integrations.WithCollectors( // Hard-coded 4m timeout to represent the time a series goes stale. diff --git a/pkg/metrics/agent.go b/pkg/metrics/agent.go index f2cc8dfd962e..4a0d026fdd27 100644 --- a/pkg/metrics/agent.go +++ b/pkg/metrics/agent.go @@ -13,6 +13,7 @@ import ( "github.com/go-kit/log" "github.com/go-kit/log/level" "github.com/prometheus/client_golang/prometheus" + "go.uber.org/atomic" "google.golang.org/grpc" "github.com/grafana/agent/pkg/metrics/cluster" @@ -144,6 +145,8 @@ type Agent struct { stopped bool stopOnce sync.Once actor chan func() + + initialBootDone atomic.Bool } // New creates and starts a new Agent. @@ -268,6 +271,7 @@ func (a *Agent) ApplyConfig(cfg Config) error { a.actor <- func() { a.syncInstances(oldConfig, cfg) + a.initialBootDone.Store(true) } a.cfg = cfg @@ -311,6 +315,24 @@ func (a *Agent) run() { } } +// Ready returns true if both the agent and all instances +// spawned by a Manager have completed startup. +func (a *Agent) Ready() bool { + // Wait for the initial load to complete so the instance manager has at least + // the base set of expected instances. + if !a.initialBootDone.Load() { + return false + } + + for _, inst := range a.mm.ListInstances() { + if !inst.Ready() { + return false + } + } + + return true +} + // WireGRPC wires gRPC services into the provided server. func (a *Agent) WireGRPC(s *grpc.Server) { a.cluster.WireGRPC(s) diff --git a/pkg/metrics/agent_test.go b/pkg/metrics/agent_test.go index 4a02a2ef3fb3..53d04e25b67a 100644 --- a/pkg/metrics/agent_test.go +++ b/pkg/metrics/agent_test.go @@ -271,6 +271,10 @@ func (i *fakeInstance) Run(ctx context.Context) error { } } +func (i *fakeInstance) Ready() bool { + return true +} + func (i *fakeInstance) Update(_ instance.Config) error { return instance.ErrInvalidUpdate{ Inner: fmt.Errorf("can't dynamically update fakeInstance"), diff --git a/pkg/metrics/cluster/cluster.go b/pkg/metrics/cluster/cluster.go index 5c94a4a01628..7ca80360fcd1 100644 --- a/pkg/metrics/cluster/cluster.go +++ b/pkg/metrics/cluster/cluster.go @@ -52,6 +52,7 @@ func New( im instance.Manager, validate ValidationFunc, ) (*Cluster, error) { + l = log.With(l, "component", "cluster") var ( @@ -116,9 +117,7 @@ func (c *Cluster) Reshard(ctx context.Context, _ *agentproto.ReshardRequest) (*e } // ApplyConfig applies configuration changes to Cluster. -func (c *Cluster) ApplyConfig( - cfg Config, -) error { +func (c *Cluster) ApplyConfig(cfg Config) error { c.mut.Lock() defer c.mut.Unlock() diff --git a/pkg/metrics/cluster/config_watcher_test.go b/pkg/metrics/cluster/config_watcher_test.go index 5bd02c72aa87..e365cb2f5f3a 100644 --- a/pkg/metrics/cluster/config_watcher_test.go +++ b/pkg/metrics/cluster/config_watcher_test.go @@ -227,7 +227,6 @@ func Test_configWatcher_nextReshard(t *testing.T) { require.FailNow(t, "nextReshard took too long to return") } }) - } type mockConfigManager struct { diff --git a/pkg/metrics/http_test.go b/pkg/metrics/http_test.go index 2e1d4aa759bf..a08f93d46b61 100644 --- a/pkg/metrics/http_test.go +++ b/pkg/metrics/http_test.go @@ -1,7 +1,6 @@ package metrics import ( - "context" "fmt" "net/http" "net/http/httptest" @@ -15,7 +14,6 @@ import ( "github.com/prometheus/common/model" "github.com/prometheus/prometheus/pkg/labels" "github.com/prometheus/prometheus/scrape" - "github.com/prometheus/prometheus/storage" "github.com/stretchr/testify/require" ) @@ -135,26 +133,10 @@ func TestAgent_ListTargetsHandler(t *testing.T) { } type mockInstanceScrape struct { + instance.NoOpInstance tgts map[string][]*scrape.Target } -func (i *mockInstanceScrape) Run(ctx context.Context) error { - <-ctx.Done() - return nil -} - -func (i *mockInstanceScrape) Update(_ instance.Config) error { - return nil -} - func (i *mockInstanceScrape) TargetsActive() map[string][]*scrape.Target { return i.tgts } - -func (i *mockInstanceScrape) StorageDirectory() string { - return "" -} - -func (i *mockInstanceScrape) Appender(ctx context.Context) storage.Appender { - return nil -} diff --git a/pkg/metrics/instance/configstore/api_test.go b/pkg/metrics/instance/configstore/api_test.go index 9dfe0ca9a38c..ba5ab2b550e0 100644 --- a/pkg/metrics/instance/configstore/api_test.go +++ b/pkg/metrics/instance/configstore/api_test.go @@ -151,6 +151,7 @@ remote_write: - url: http://localhost:9009/api/prom/push remote_timeout: 30s name: test-d0f32c + send_exemplars: true basic_auth: username: admin password: SCRUBME diff --git a/pkg/metrics/instance/configstore/remote.go b/pkg/metrics/instance/configstore/remote.go index 712cdf583ce9..9bf01732e9a7 100644 --- a/pkg/metrics/instance/configstore/remote.go +++ b/pkg/metrics/instance/configstore/remote.go @@ -120,8 +120,8 @@ func (r *Remote) ApplyConfig(cfg kv.Config, enable bool) error { if err != nil { return err } - } + if err != nil { return fmt.Errorf("failed to create kv client: %w", err) } @@ -354,8 +354,8 @@ func (r *Remote) all(ctx context.Context, keep func(key string) bool) (<-chan in if r.kv.consul != nil { return r.allConsul(ctx, keep) } - return r.allOther(ctx, keep) + return r.allOther(ctx, keep) } // allConsul is ONLY usable when consul is the keystore. This is a performance improvement in using the client directly diff --git a/pkg/metrics/instance/host_filter.go b/pkg/metrics/instance/host_filter.go index 01099bde45ad..aca92e1c6cac 100644 --- a/pkg/metrics/instance/host_filter.go +++ b/pkg/metrics/instance/host_filter.go @@ -88,7 +88,6 @@ func (f *HostFilter) PatchSD(scrapes []*config.ScrapeConfig) { } } } - } // SetRelabels updates the relabeling rules used by the HostFilter. diff --git a/pkg/metrics/instance/instance.go b/pkg/metrics/instance/instance.go index 86d9a713924e..e488781575b5 100644 --- a/pkg/metrics/instance/instance.go +++ b/pkg/metrics/instance/instance.go @@ -30,12 +30,16 @@ import ( "github.com/prometheus/prometheus/scrape" "github.com/prometheus/prometheus/storage" "github.com/prometheus/prometheus/storage/remote" + "go.uber.org/atomic" "gopkg.in/yaml.v2" ) func init() { remote.UserAgent = fmt.Sprintf("GrafanaAgent/%s", build.Version) scrape.UserAgent = fmt.Sprintf("GrafanaAgent/%s", build.Version) + + // default remote_write send_exemplars to true + config.DefaultRemoteWriteConfig.SendExemplars = true } var ( @@ -237,6 +241,9 @@ type Instance struct { remoteStore *remote.Storage storage storage.Storage + // ready is set to true after the initialization process finishes + ready atomic.Bool + hostFilter *HostFilter logger log.Logger @@ -315,7 +322,7 @@ func (i *Instance) Run(ctx context.Context) error { // The actors defined here are defined in the order we want them to shut down. // Primarily, we want to ensure that the following shutdown order is // maintained: - // 1. The scrape manager stops + // 1. The scrape manager stops // 2. WAL storage is closed // 3. Remote write storage is closed // This is done to allow the instance to write stale markers for all active @@ -383,6 +390,7 @@ func (i *Instance) Run(ctx context.Context) error { } level.Debug(i.logger).Log("msg", "running instance", "name", cfg.Name) + i.ready.Store(true) err := rg.Run() if err != nil { level.Error(i.logger).Log("msg", "agent instance stopped with error", "err", err) @@ -443,6 +451,12 @@ func (i *Instance) initialize(ctx context.Context, reg prometheus.Registerer, cf return nil } +// Ready returns true if the Instance has been initialized and is ready +// to start scraping and delivering metrics. +func (i *Instance) Ready() bool { + return i.ready.Load() +} + // Update accepts a new Config for the Instance and will dynamically update any // running Prometheus components with the new values from Config. Update will // return an ErrInvalidUpdate if the Update could not be applied. diff --git a/pkg/metrics/instance/instance_integration_test.go b/pkg/metrics/instance/instance_integration_test.go index 67776026dcde..c15be5a55d04 100644 --- a/pkg/metrics/instance/instance_integration_test.go +++ b/pkg/metrics/instance/instance_integration_test.go @@ -244,7 +244,6 @@ remote_write: [] require.EqualError(t, err, tc.expect) }) } - } func loadConfig(t *testing.T, s string) Config { diff --git a/pkg/metrics/instance/instance_test.go b/pkg/metrics/instance/instance_test.go index 0f79bd073c58..4e3815df6728 100644 --- a/pkg/metrics/instance/instance_test.go +++ b/pkg/metrics/instance/instance_test.go @@ -139,7 +139,6 @@ func TestConfig_ApplyDefaults_Validations(t *testing.T) { for _, tc := range tt { t.Run(tc.name, func(t *testing.T) { - // Copy the input and all of its slices input := cfg diff --git a/pkg/metrics/instance/manager.go b/pkg/metrics/instance/manager.go index a622d073b0f2..d3351d4d006f 100644 --- a/pkg/metrics/instance/manager.go +++ b/pkg/metrics/instance/manager.go @@ -61,6 +61,7 @@ type Manager interface { // for the sake of testing from Manager implementations. type ManagedInstance interface { Run(ctx context.Context) error + Ready() bool Update(c Config) error TargetsActive() map[string][]*scrape.Target StorageDirectory() string diff --git a/pkg/metrics/instance/manager_test.go b/pkg/metrics/instance/manager_test.go index ffb8580e0a97..e524592e02fe 100644 --- a/pkg/metrics/instance/manager_test.go +++ b/pkg/metrics/instance/manager_test.go @@ -99,6 +99,7 @@ func TestBasicManager_ApplyConfig(t *testing.T) { type mockInstance struct { RunFunc func(ctx context.Context) error + ReadyFunc func() bool UpdateFunc func(c Config) error TargetsActiveFunc func() map[string][]*scrape.Target StorageDirectoryFunc func() string @@ -112,6 +113,13 @@ func (m mockInstance) Run(ctx context.Context) error { panic("RunFunc not provided") } +func (m mockInstance) Ready() bool { + if m.ReadyFunc != nil { + return m.ReadyFunc() + } + panic("ReadyFunc not provided") +} + func (m mockInstance) Update(c Config) error { if m.UpdateFunc != nil { return m.UpdateFunc(c) diff --git a/pkg/metrics/instance/marshal.go b/pkg/metrics/instance/marshal.go index 652b7862c233..d142d172a1a9 100644 --- a/pkg/metrics/instance/marshal.go +++ b/pkg/metrics/instance/marshal.go @@ -37,6 +37,8 @@ func MarshalConfigToWriter(c *Config, w io.Writer, scrubSecrets bool) error { switch v := in.(type) { case config_util.Secret: return true, string(v), nil + case *config_util.URL: + return true, v.String(), nil default: return false, nil, nil } diff --git a/pkg/metrics/instance/marshal_test.go b/pkg/metrics/instance/marshal_test.go index 0f91c70bf8b8..7b5356d26de5 100644 --- a/pkg/metrics/instance/marshal_test.go +++ b/pkg/metrics/instance/marshal_test.go @@ -44,9 +44,10 @@ scrape_configs: username: admin password: foobar remote_write: -- url: http://localhost:9009/api/prom/push +- url: http://admin:verysecret@localhost:9009/api/prom/push remote_timeout: 30s name: test-d0f32c + send_exemplars: true basic_auth: username: admin password: verysecret @@ -96,9 +97,10 @@ scrape_configs: username: admin password: SCRUBME remote_write: -- url: http://localhost:9009/api/prom/push +- url: http://username:SCRUBURL@localhost:9009/api/prom/push remote_timeout: 30s name: test-d0f32c + send_exemplars: true basic_auth: username: admin password: SCRUBME @@ -122,7 +124,9 @@ remote_flush_deadline: 1m0s ` scrub := func(in string) string { - return strings.ReplaceAll(in, "SCRUBME", "") + in = strings.ReplaceAll(in, "SCRUBME", "") + in = strings.ReplaceAll(in, "SCRUBURL", "xxxxx") + return in } t.Run("direct marshal", func(t *testing.T) { diff --git a/pkg/metrics/instance/noop.go b/pkg/metrics/instance/noop.go index f668ceedc43e..76d459e19507 100644 --- a/pkg/metrics/instance/noop.go +++ b/pkg/metrics/instance/noop.go @@ -17,6 +17,11 @@ func (NoOpInstance) Run(ctx context.Context) error { return nil } +// Ready implements Instance. +func (NoOpInstance) Ready() bool { + return true +} + // Update implements Instance. func (NoOpInstance) Update(_ Config) error { return nil diff --git a/pkg/metrics/wal/series.go b/pkg/metrics/wal/series.go index fd1de2effd9b..35bda48e2974 100644 --- a/pkg/metrics/wal/series.go +++ b/pkg/metrics/wal/series.go @@ -3,6 +3,7 @@ package wal import ( "sync" + "github.com/prometheus/prometheus/pkg/exemplar" "github.com/prometheus/prometheus/pkg/intern" "github.com/prometheus/prometheus/pkg/labels" ) @@ -97,10 +98,11 @@ const ( // // This code is copied from the Prometheus TSDB. type stripeSeries struct { - size int - series []map[uint64]*memSeries - hashes []seriesHashmap - locks []stripeLock + size int + series []map[uint64]*memSeries + hashes []seriesHashmap + exemplars []map[uint64]*exemplar.Exemplar + locks []stripeLock } type stripeLock struct { @@ -112,10 +114,11 @@ type stripeLock struct { func newStripeSeries() *stripeSeries { stripeSize := defaultStripeSize s := &stripeSeries{ - size: stripeSize, - series: make([]map[uint64]*memSeries, stripeSize), - hashes: make([]seriesHashmap, stripeSize), - locks: make([]stripeLock, stripeSize), + size: stripeSize, + series: make([]map[uint64]*memSeries, stripeSize), + hashes: make([]seriesHashmap, stripeSize), + exemplars: make([]map[uint64]*exemplar.Exemplar, stripeSize), + locks: make([]stripeLock, stripeSize), } for i := range s.series { @@ -124,6 +127,9 @@ func newStripeSeries() *stripeSeries { for i := range s.hashes { s.hashes[i] = seriesHashmap{} } + for i := range s.exemplars { + s.exemplars[i] = map[uint64]*exemplar.Exemplar{} + } return s } @@ -171,6 +177,10 @@ func (s *stripeSeries) gc(mint int64) map[uint64]struct{} { delete(s.series[i], series.ref) s.hashes[j].del(seriesHash, series.ref) + // Since the series is gone, we'll also delete + // the latest stored exemplar. + delete(s.exemplars[i], series.ref) + if i != j { s.locks[j].Unlock() } @@ -216,6 +226,27 @@ func (s *stripeSeries) set(hash uint64, series *memSeries) { s.locks[i].Unlock() } +func (s *stripeSeries) getLatestExemplar(id uint64) *exemplar.Exemplar { + i := id & uint64(s.size-1) + + s.locks[i].RLock() + exemplar := s.exemplars[i][id] + s.locks[i].RUnlock() + + return exemplar +} + +func (s *stripeSeries) setLatestExemplar(id uint64, exemplar *exemplar.Exemplar) { + i := id & uint64(s.size-1) + + // Make sure that's a valid series id and record its latest exemplar + s.locks[i].Lock() + if s.series[i][id] != nil { + s.exemplars[i][id] = exemplar + } + s.locks[i].Unlock() +} + func (s *stripeSeries) iterator() *stripeSeriesIterator { return &stripeSeriesIterator{s} } diff --git a/pkg/metrics/wal/wal.go b/pkg/metrics/wal/wal.go index b5e8c3b7372a..91bc79fb6418 100644 --- a/pkg/metrics/wal/wal.go +++ b/pkg/metrics/wal/wal.go @@ -10,7 +10,6 @@ import ( "github.com/go-kit/log" "github.com/go-kit/log/level" - "github.com/pkg/errors" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/prometheus/pkg/exemplar" "github.com/prometheus/prometheus/pkg/labels" @@ -164,7 +163,7 @@ func NewStorage(logger log.Logger, registerer prometheus.Registerer, path string if err := storage.replayWAL(); err != nil { level.Warn(storage.logger).Log("msg", "encountered WAL read error, attempting repair", "err", err) if err := w.Repair(err); err != nil { - return nil, errors.Wrap(err, "repair corrupted WAL") + return nil, fmt.Errorf("repair corrupted WAL: %w", err) } } @@ -182,13 +181,13 @@ func (w *Storage) replayWAL() error { level.Info(w.logger).Log("msg", "replaying WAL, this may take a while", "dir", w.wal.Dir()) dir, startFrom, err := wal.LastCheckpoint(w.wal.Dir()) if err != nil && err != record.ErrNotFound { - return errors.Wrap(err, "find last checkpoint") + return fmt.Errorf("find last checkpoint: %w", err) } if err == nil { sr, err := wal.NewSegmentsReader(dir) if err != nil { - return errors.Wrap(err, "open checkpoint") + return fmt.Errorf("open checkpoint: %w", err) } defer func() { if err := sr.Close(); err != nil { @@ -199,7 +198,7 @@ func (w *Storage) replayWAL() error { // A corrupted checkpoint is a hard error for now and requires user // intervention. There's likely little data that can be recovered anyway. if err := w.loadWAL(wal.NewReader(sr)); err != nil { - return errors.Wrap(err, "backfill checkpoint") + return fmt.Errorf("backfill checkpoint: %w", err) } startFrom++ level.Info(w.logger).Log("msg", "WAL checkpoint loaded") @@ -208,14 +207,14 @@ func (w *Storage) replayWAL() error { // Find the last segment. _, last, err := wal.Segments(w.wal.Dir()) if err != nil { - return errors.Wrap(err, "finding WAL segments") + return fmt.Errorf("finding WAL segments: %w", err) } // Backfill segments from the most recent checkpoint onwards. for i := startFrom; i <= last; i++ { s, err := wal.OpenReadSegment(wal.SegmentName(w.wal.Dir(), i)) if err != nil { - return errors.Wrap(err, fmt.Sprintf("open WAL segment: %d", i)) + return fmt.Errorf("open WAL segment %d: %w", i, err) } sr := wal.NewSegmentBufReader(s) @@ -262,7 +261,7 @@ func (w *Storage) loadWAL(r *wal.Reader) (err error) { series, err = dec.Series(rec, series) if err != nil { errCh <- &wal.CorruptionErr{ - Err: errors.Wrap(err, "decode series"), + Err: fmt.Errorf("decode series: %w", err), Segment: r.Segment(), Offset: r.Offset(), } @@ -274,7 +273,7 @@ func (w *Storage) loadWAL(r *wal.Reader) (err error) { samples, err = dec.Samples(rec, samples) if err != nil { errCh <- &wal.CorruptionErr{ - Err: errors.Wrap(err, "decode samples"), + Err: fmt.Errorf("decode samples: %w", err), Segment: r.Segment(), Offset: r.Offset(), } @@ -282,10 +281,12 @@ func (w *Storage) loadWAL(r *wal.Reader) (err error) { decoded <- samples case record.Tombstones, record.Exemplars: // We don't care about decoding tombstones or exemplars + // TODO: If decide to decode exemplars, we should make sure to prepopulate + // stripeSeries.exemplars in the next block by using setLatestExemplar. continue default: errCh <- &wal.CorruptionErr{ - Err: errors.Errorf("invalid record type %v", dec.Type(rec)), + Err: fmt.Errorf("invalid record type %v", dec.Type(rec)), Segment: r.Segment(), Offset: r.Offset(), } @@ -351,7 +352,7 @@ func (w *Storage) loadWAL(r *wal.Reader) (err error) { } if r.Err() != nil { - return errors.Wrap(r.Err(), "read records") + return fmt.Errorf("read records: %w", r.Err()) } return nil @@ -391,14 +392,14 @@ func (w *Storage) Truncate(mint int64) error { first, last, err := wal.Segments(w.wal.Dir()) if err != nil { - return errors.Wrap(err, "get segment range") + return fmt.Errorf("get segment range: %w", err) } // Start a new segment, so low ingestion volume instance don't have more WAL // than needed. err = w.wal.NextSegment() if err != nil { - return errors.Wrap(err, "next segment") + return fmt.Errorf("next segment: %w", err) } last-- // Never consider last segment for checkpoint. @@ -424,7 +425,7 @@ func (w *Storage) Truncate(mint int64) error { return ok } if _, err = wal.Checkpoint(w.logger, w.wal, first, last, keep, mint); err != nil { - return errors.Wrap(err, "create checkpoint") + return fmt.Errorf("create checkpoint: %w", err) } if err := w.wal.Truncate(last + 1); err != nil { // If truncating fails, we'll just try again at the next checkpoint. @@ -571,11 +572,11 @@ func (a *appender) Append(ref uint64, l labels.Labels, t int64, v float64) (uint // equivalent validation code in the TSDB's headAppender. l = l.WithoutEmpty() if len(l) == 0 { - return 0, errors.Wrap(tsdb.ErrInvalidSample, "empty labelset") + return 0, fmt.Errorf("empty labelset: %w", tsdb.ErrInvalidSample) } if lbl, dup := l.HasDuplicateLabelNames(); dup { - return 0, errors.Wrap(tsdb.ErrInvalidSample, fmt.Sprintf(`label name "%s" is not unique`, lbl)) + return 0, fmt.Errorf("label name %q is not unique: %w", lbl, tsdb.ErrInvalidSample) } var created bool @@ -631,7 +632,7 @@ func (a *appender) AppendExemplar(ref uint64, _ labels.Labels, e exemplar.Exempl e.Labels = e.Labels.WithoutEmpty() if lbl, dup := e.Labels.HasDuplicateLabelNames(); dup { - return 0, errors.Wrap(tsdb.ErrInvalidExemplar, fmt.Sprintf(`label name "%s" is not unique`, lbl)) + return 0, fmt.Errorf("label name %q is not unique: %w", lbl, tsdb.ErrInvalidExemplar) } // Exemplar label length does not include chars involved in text rendering such as quotes @@ -646,6 +647,16 @@ func (a *appender) AppendExemplar(ref uint64, _ labels.Labels, e exemplar.Exempl } } + // Check for duplicate vs last stored exemplar for this series, and discard those. + // Otherwise, record the current exemplar as the latest. + // Prometheus returns 0 when encountering duplicates, so we do the same here. + prevExemplar := a.w.series.getLatestExemplar(ref) + if prevExemplar != nil && prevExemplar.Equals(e) { + // Duplicate, don't return an error but don't accept the exemplar. + return 0, nil + } + a.w.series.setLatestExemplar(ref, &e) + a.exemplars = append(a.exemplars, record.RefExemplar{ Ref: ref, T: e.Ts, @@ -653,6 +664,7 @@ func (a *appender) AppendExemplar(ref uint64, _ labels.Labels, e exemplar.Exempl Labels: e.Labels, }) + a.w.metrics.totalAppendedExemplars.Inc() return s.ref, nil } diff --git a/pkg/metrics/wal/wal_test.go b/pkg/metrics/wal/wal_test.go index fccc0a023aa5..a1cad5c4f86d 100644 --- a/pkg/metrics/wal/wal_test.go +++ b/pkg/metrics/wal/wal_test.go @@ -104,6 +104,47 @@ func TestStorage(t *testing.T) { require.Equal(t, expectedExemplars, actualExemplars) } +func TestStorage_DuplicateExemplarsIgnored(t *testing.T) { + walDir, err := ioutil.TempDir(os.TempDir(), "wal") + require.NoError(t, err) + defer os.RemoveAll(walDir) + + s, err := NewStorage(log.NewNopLogger(), nil, walDir) + require.NoError(t, err) + + app := s.Appender(context.Background()) + + sRef, err := app.Append(0, labels.Labels{{Name: "a", Value: "1"}}, 0, 0) + require.NoError(t, err, "should not reject valid series") + + // If the Labels, Value or Timestamp are different than the last exemplar, + // then a new one should be appended; Otherwise, it should be skipped. + e := exemplar.Exemplar{Labels: labels.Labels{{Name: "a", Value: "1"}}, Value: 20, Ts: 10, HasTs: true} + _, _ = app.AppendExemplar(sRef, nil, e) + _, _ = app.AppendExemplar(sRef, nil, e) + + e.Labels = labels.Labels{{Name: "b", Value: "2"}} + _, _ = app.AppendExemplar(sRef, nil, e) + _, _ = app.AppendExemplar(sRef, nil, e) + _, _ = app.AppendExemplar(sRef, nil, e) + + e.Value = 42 + _, _ = app.AppendExemplar(sRef, nil, e) + _, _ = app.AppendExemplar(sRef, nil, e) + + e.Ts = 25 + _, _ = app.AppendExemplar(sRef, nil, e) + _, _ = app.AppendExemplar(sRef, nil, e) + + require.NoError(t, app.Commit()) + collector := walDataCollector{} + replayer := walReplayer{w: &collector} + require.NoError(t, replayer.Replay(s.wal.Dir())) + + // We had 9 calls to AppendExemplar but only 4 of those should have gotten through + require.Equal(t, 4, len(collector.exemplars)) +} + func TestStorage_ExistingWAL(t *testing.T) { walDir, err := ioutil.TempDir(os.TempDir(), "wal") require.NoError(t, err) @@ -331,6 +372,27 @@ func TestStorage_TruncateAfterClose(t *testing.T) { require.Error(t, ErrWALClosed, s.Truncate(0)) } +func BenchmarkAppendExemplar(b *testing.B) { + walDir, _ := ioutil.TempDir(os.TempDir(), "wal") + defer os.RemoveAll(walDir) + + s, _ := NewStorage(log.NewNopLogger(), nil, walDir) + defer s.Close() + app := s.Appender(context.Background()) + sRef, _ := app.Append(0, labels.Labels{{Name: "a", Value: "1"}}, 0, 0) + e := exemplar.Exemplar{Labels: labels.Labels{{Name: "a", Value: "1"}}, Value: 20, Ts: 10, HasTs: true} + + b.StartTimer() + for i := 0; i < b.N; i++ { + e.Ts = int64(i) + _, _ = app.AppendExemplar(sRef, nil, e) + } + b.StopTimer() + + // Actually use appended exemplars in case they get eliminated + _ = app.Commit() +} + type sample struct { ts int64 val float64 diff --git a/pkg/operator/apis/monitoring/v1alpha1/types.go b/pkg/operator/apis/monitoring/v1alpha1/types.go index a9f0b6396694..e97e64e59eeb 100644 --- a/pkg/operator/apis/monitoring/v1alpha1/types.go +++ b/pkg/operator/apis/monitoring/v1alpha1/types.go @@ -150,6 +150,11 @@ type GrafanaAgentSpec struct { // Logs controls the logging subsystem of the Agent and settings unique to // logging-specific pods that are deployed. Logs LogsSubsystemSpec `json:"logs,omitempty"` + + // enableConfigReadAPI enables the read API for viewing currently running + // config port 8080 on the agent. + // +kubebuilder:default=false + EnableConfigReadAPI bool `json:"enableConfigReadAPI,omitempty"` } // ObjectSelector is a set of selectors to use for finding an object in the diff --git a/pkg/operator/build_hierarchy.go b/pkg/operator/build_hierarchy.go index cab0b212644b..663a4ac6551c 100644 --- a/pkg/operator/build_hierarchy.go +++ b/pkg/operator/build_hierarchy.go @@ -236,7 +236,7 @@ func buildSecrets(ctx context.Context, cli client.Client, deploy config.Deployme case *corev1.Secret: rawValue, ok := o.Data[ref.Reference.Secret.Key] if !ok { - return fmt.Errorf("no key %s in Secret %s", ref.Reference.ConfigMap.Key, o.Name) + return fmt.Errorf("no key %s in Secret %s", ref.Reference.Secret.Key, o.Name) } value = string(rawValue) case *corev1.ConfigMap: diff --git a/pkg/operator/build_hierarchy_test.go b/pkg/operator/build_hierarchy_test.go index b77adb761c95..9bc13fca69c1 100644 --- a/pkg/operator/build_hierarchy_test.go +++ b/pkg/operator/build_hierarchy_test.go @@ -19,8 +19,10 @@ import ( "github.com/stretchr/testify/require" v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/labels" + controller "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/client/apiutil" + "sigs.k8s.io/controller-runtime/pkg/manager" ) // Test_buildHierarchy checks that an entire resource hierarchy can be @@ -34,7 +36,7 @@ func Test_buildHierarchy(t *testing.T) { l := util.TestLogger(t) cluster := NewTestCluster(ctx, t, l) - cli := cluster.Client() + cli := newTestControllerClient(t, cluster) resources := k8s.NewResourceSet(l, cluster) defer resources.Stop() @@ -164,3 +166,26 @@ func (w *resourceWalker) Visit(v interface{}) (next structwalk.Visitor) { } return w } + +// newTestControllerClient creates a Kubernetes client which uses a cache and +// index for retrieving objects. This more closely matches the behavior of the +// operator instead of using cluster.Client, which lacks a cache and always +// communicates directly with Kubernetes. +func newTestControllerClient(t *testing.T, cluster *k8s.Cluster) client.Client { + t.Helper() + + ctx, cancel := context.WithCancel(context.Background()) + t.Cleanup(cancel) + + mgr, err := controller.NewManager(cluster.GetConfig(), manager.Options{ + Scheme: cluster.Client().Scheme(), + }) + require.NoError(t, err) + + go func() { + require.NoError(t, mgr.Start(ctx)) + }() + require.True(t, mgr.GetCache().WaitForCacheSync(ctx)) + + return mgr.GetClient() +} diff --git a/pkg/operator/clientutil/merge.go b/pkg/operator/clientutil/merge.go index a5aae204876e..5e43e951a898 100644 --- a/pkg/operator/clientutil/merge.go +++ b/pkg/operator/clientutil/merge.go @@ -4,7 +4,6 @@ import ( "encoding/json" "fmt" - "github.com/pkg/errors" v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/util/strategicpatch" ) @@ -28,21 +27,21 @@ func MergePatchContainers(base, patches []v1.Container) ([]v1.Container, error) // Get the json for the container and the patch containerBytes, err := json.Marshal(container) if err != nil { - return nil, errors.Wrap(err, fmt.Sprintf("failed to marshal json for container %s", container.Name)) + return nil, fmt.Errorf("failed to marshal json for container %s: %w", container.Name, err) } patchBytes, err := json.Marshal(patchContainer) if err != nil { - return nil, errors.Wrap(err, fmt.Sprintf("failed to marshal json for patch container %s", container.Name)) + return nil, fmt.Errorf("failed to marshal json for patch container %s: %w", container.Name, err) } // Calculate the patch result jsonResult, err := strategicpatch.StrategicMergePatch(containerBytes, patchBytes, v1.Container{}) if err != nil { - return nil, errors.Wrap(err, fmt.Sprintf("failed to generate merge patch for %s", container.Name)) + return nil, fmt.Errorf("failed to generate merge patch for %s: %w", container.Name, err) } var patchResult v1.Container if err := json.Unmarshal(jsonResult, &patchResult); err != nil { - return nil, errors.Wrap(err, fmt.Sprintf("failed to unmarshal merged container %s", container.Name)) + return nil, fmt.Errorf("failed to unmarshal merged container %s: %w", container.Name, err) } // Add the patch result and remove the corresponding key from the to do list diff --git a/pkg/operator/config/config_test.go b/pkg/operator/config/config_test.go index ff1efb936bde..5bad6fc9b3e5 100644 --- a/pkg/operator/config/config_test.go +++ b/pkg/operator/config/config_test.go @@ -79,10 +79,10 @@ func TestBuildConfigMetrics(t *testing.T) { basicAuth: username: name: example-secret - key: key + key: uname password: name: example-secret - key: key + key: pword tlsConfig: ca: configMap: @@ -113,8 +113,8 @@ func TestBuildConfigMetrics(t *testing.T) { remote_write: - url: http://localhost:9090/api/v1/write basic_auth: - username: somesecret - password: somesecret + username_file: /var/lib/grafana-agent/secrets/_secrets_default_example_secret_uname + password_file: /var/lib/grafana-agent/secrets/_secrets_default_example_secret_pword tls_config: ca_file: /var/lib/grafana-agent/secrets/_configMaps_default_example_cm_key cert_file: /var/lib/grafana-agent/secrets/_secrets_default_example_secret_key diff --git a/pkg/operator/config/fs_importer.go b/pkg/operator/config/fs_importer.go index 60b73120ced6..2a8044c0c986 100644 --- a/pkg/operator/config/fs_importer.go +++ b/pkg/operator/config/fs_importer.go @@ -30,7 +30,6 @@ func NewFSImporter(f fs.FS, paths []string) *FSImporter { // Import implements jsonnet.Importer. func (i *FSImporter) Import(importedFrom, importedPath string) (contents jsonnet.Contents, foundAt string, err error) { - tryPaths := append([]string{importedFrom}, i.paths...) for _, p := range tryPaths { cleanedPath := path.Clean( diff --git a/pkg/operator/config/metrics_templates_test.go b/pkg/operator/config/metrics_templates_test.go index da437cb462ce..064a05652c90 100644 --- a/pkg/operator/config/metrics_templates_test.go +++ b/pkg/operator/config/metrics_templates_test.go @@ -547,8 +547,8 @@ func TestRemoteWrite(t *testing.T) { expect: util.Untab(` url: http://cortex/api/prom/push basic_auth: - username: secretkey - password: secretkey + username_file: /var/lib/grafana-agent/secrets/_secrets_operator_obj_key + password_file: /var/lib/grafana-agent/secrets/_secrets_operator_obj_key `), }, { diff --git a/pkg/operator/config/templates/component/metrics/remote_write.libsonnet b/pkg/operator/config/templates/component/metrics/remote_write.libsonnet index 38b9553aa9e9..e172211ca226 100644 --- a/pkg/operator/config/templates/component/metrics/remote_write.libsonnet +++ b/pkg/operator/config/templates/component/metrics/remote_write.libsonnet @@ -30,8 +30,8 @@ function(namespace, rw) { basic_auth: ( if rw.BasicAuth != null then { - username: secrets.valueForSecret(namespace, rw.BasicAuth.Username), - password: secrets.valueForSecret(namespace, rw.BasicAuth.Password), + username_file: secrets.pathForSecret(namespace, rw.BasicAuth.Username), + password_file: secrets.pathForSecret(namespace, rw.BasicAuth.Password), } ), diff --git a/pkg/operator/defaults.go b/pkg/operator/defaults.go index 58ee7a517afc..1c53a80ce67a 100644 --- a/pkg/operator/defaults.go +++ b/pkg/operator/defaults.go @@ -20,6 +20,7 @@ var ( "v0.21.1", "v0.21.2", "v0.22.0", + "v0.23.0", // NOTE(rfratto): when performing an upgrade, add the newest version above instead of changing the existing reference. } diff --git a/pkg/operator/hierarchy/selector.go b/pkg/operator/hierarchy/selector.go index 06454e3a8f1e..d2a1493a2ccb 100644 --- a/pkg/operator/hierarchy/selector.go +++ b/pkg/operator/hierarchy/selector.go @@ -5,7 +5,6 @@ import ( "fmt" corev1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/fields" "k8s.io/apimachinery/pkg/labels" "sigs.k8s.io/controller-runtime/pkg/client" ) @@ -79,7 +78,6 @@ var _ Selector = (*KeySelector)(nil) // ApplyToList implements Selector. func (ks *KeySelector) ApplyToList(lo *client.ListOptions) { lo.Namespace = ks.Namespace - lo.FieldSelector = fields.OneTermEqualSelector("metadata.name", ks.Name) } // Matches implements Selector. diff --git a/pkg/operator/reconciler_logs.go b/pkg/operator/reconciler_logs.go index a12e752a5db8..05c973253b99 100644 --- a/pkg/operator/reconciler_logs.go +++ b/pkg/operator/reconciler_logs.go @@ -21,6 +21,7 @@ func (r *reconciler) createLogsConfigurationSecret( d config.Deployment, s assets.SecretStore, ) error { + return r.createTelemetryConfigurationSecret(ctx, l, d, s, config.LogsType) } @@ -31,6 +32,7 @@ func (r *reconciler) createLogsDaemonSet( d config.Deployment, s assets.SecretStore, ) error { + name := fmt.Sprintf("%s-logs", d.Agent.Name) ds, err := generateLogsDaemonSet(r.config, name, d) if err != nil { diff --git a/pkg/operator/reconciler_metrics.go b/pkg/operator/reconciler_metrics.go index 6a52948133b5..1a1ac6fb0da6 100644 --- a/pkg/operator/reconciler_metrics.go +++ b/pkg/operator/reconciler_metrics.go @@ -29,6 +29,7 @@ func (r *reconciler) createMetricsConfigurationSecret( d config.Deployment, s assets.SecretStore, ) error { + return r.createTelemetryConfigurationSecret(ctx, l, d, s, config.MetricsType) } @@ -104,6 +105,7 @@ func (r *reconciler) createMetricsGoverningService( d config.Deployment, s assets.SecretStore, ) error { + svc := generateMetricsStatefulSetService(r.config, d) // Delete the old Secret if one exists and we have no prometheus instances. diff --git a/pkg/operator/resources_logs.go b/pkg/operator/resources_logs.go index 85dc07b6cce9..27617517cd7f 100644 --- a/pkg/operator/resources_logs.go +++ b/pkg/operator/resources_logs.go @@ -19,6 +19,7 @@ func generateLogsDaemonSet( name string, d config.Deployment, ) (*apps_v1.DaemonSet, error) { + d = *d.DeepCopy() if d.Agent.Spec.PortName == "" { diff --git a/pkg/operator/resources_metrics.go b/pkg/operator/resources_metrics.go index 4834fb8e9793..cd282b464969 100644 --- a/pkg/operator/resources_metrics.go +++ b/pkg/operator/resources_metrics.go @@ -109,6 +109,7 @@ func generateMetricsStatefulSet( d config.Deployment, shard int32, ) (*apps_v1.StatefulSet, error) { + d = *d.DeepCopy() // @@ -244,6 +245,11 @@ func generateMetricsStatefulSetSpec( "-reload-port=8081", } + enableConfigReadAPI := d.Agent.Spec.EnableConfigReadAPI + if enableConfigReadAPI { + agentArgs = append(agentArgs, "-config.enable-read-api") + } + // NOTE(rfratto): the Prometheus Operator supports a ListenLocal to prevent a // service from being created. Given the intent is that Agents can connect to // each other, ListenLocal isn't currently supported and we always create a port. diff --git a/pkg/traces/automaticloggingprocessor/factory.go b/pkg/traces/automaticloggingprocessor/factory.go index ac1af7e39c82..c942ba7e6f7d 100644 --- a/pkg/traces/automaticloggingprocessor/factory.go +++ b/pkg/traces/automaticloggingprocessor/factory.go @@ -127,7 +127,7 @@ func createTraceProcessor( cfg config.Processor, nextConsumer consumer.Traces, ) (component.TracesProcessor, error) { - oCfg := cfg.(*Config) + oCfg := cfg.(*Config) return newTraceProcessor(nextConsumer, oCfg.LoggingConfig) } diff --git a/pkg/traces/config.go b/pkg/traces/config.go index f0af4401c8ec..177c46c80aba 100644 --- a/pkg/traces/config.go +++ b/pkg/traces/config.go @@ -10,15 +10,11 @@ import ( "strings" "time" - "github.com/grafana/agent/pkg/logs" - "github.com/grafana/agent/pkg/traces/automaticloggingprocessor" - "github.com/grafana/agent/pkg/traces/noopreceiver" - "github.com/grafana/agent/pkg/traces/promsdprocessor" - "github.com/grafana/agent/pkg/traces/remotewriteexporter" - "github.com/grafana/agent/pkg/traces/servicegraphprocessor" + "github.com/mitchellh/mapstructure" "github.com/open-telemetry/opentelemetry-collector-contrib/exporter/jaegerexporter" "github.com/open-telemetry/opentelemetry-collector-contrib/exporter/loadbalancingexporter" "github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter" + "github.com/open-telemetry/opentelemetry-collector-contrib/extension/oauth2clientauthextension" "github.com/open-telemetry/opentelemetry-collector-contrib/processor/attributesprocessor" "github.com/open-telemetry/opentelemetry-collector-contrib/processor/spanmetricsprocessor" "github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor" @@ -37,6 +33,14 @@ import ( "go.opentelemetry.io/collector/processor/batchprocessor" "go.opentelemetry.io/collector/receiver/otlpreceiver" "go.uber.org/multierr" + + "github.com/grafana/agent/pkg/logs" + "github.com/grafana/agent/pkg/traces/automaticloggingprocessor" + "github.com/grafana/agent/pkg/traces/noopreceiver" + "github.com/grafana/agent/pkg/traces/promsdprocessor" + "github.com/grafana/agent/pkg/traces/remotewriteexporter" + "github.com/grafana/agent/pkg/traces/servicegraphprocessor" + "github.com/grafana/agent/pkg/util" ) const ( @@ -160,6 +164,50 @@ var DefaultRemoteWriteConfig = RemoteWriteConfig{ Format: formatOtlp, } +// TLSClientSetting configures the oauth2client extension TLS; compatible with configtls.TLSClientSetting +type TLSClientSetting struct { + CAFile string `yaml:"ca_file,omitempty"` + CertFile string `yaml:"cert_file,omitempty"` + KeyFile string `yaml:"key_file,omitempty"` + MinVersion string `yaml:"min_version,omitempty"` + MaxVersion string `yaml:"max_version,omitempty"` + Insecure bool `yaml:"insecure"` + InsecureSkipVerify bool `yaml:"insecure_skip_verify"` + ServerNameOverride string `yaml:"server_name_override,omitempty"` +} + +// OAuth2Config configures the oauth2client extension for a remote_write exporter +// compatible with oauth2clientauthextension.Config +type OAuth2Config struct { + ClientID string `yaml:"client_id"` + ClientSecret string `yaml:"client_secret"` + TokenURL string `yaml:"token_url"` + Scopes []string `yaml:"scopes,omitempty"` + TLS TLSClientSetting `yaml:"tls,omitempty"` + Timeout time.Duration `yaml:"timeout,omitempty"` +} + +// Agent uses standard YAML unmarshalling, while the oauth2clientauthextension relies on +// mapstructure without providing YAML labels. `toOtelConfig` marshals `Oauth2Config` to configuration type expected by +// the oauth2clientauthextension Extension Factory +func (c OAuth2Config) toOtelConfig() (*oauth2clientauthextension.Config, error) { + var result *oauth2clientauthextension.Config + decoderConfig := &mapstructure.DecoderConfig{ + MatchName: func(s, t string) bool { return util.CamelToSnake(s) == t }, + Result: &result, + WeaklyTypedInput: true, + DecodeHook: mapstructure.ComposeDecodeHookFunc( + mapstructure.StringToSliceHookFunc(","), + mapstructure.StringToTimeDurationHookFunc(), + ), + } + decoder, _ := mapstructure.NewDecoder(decoderConfig) + if err := decoder.Decode(c); err != nil { + return nil, err + } + return result, nil +} + // RemoteWriteConfig controls the configuration of an exporter type RemoteWriteConfig struct { Endpoint string `yaml:"endpoint,omitempty"` @@ -171,6 +219,7 @@ type RemoteWriteConfig struct { InsecureSkipVerify bool `yaml:"insecure_skip_verify,omitempty"` TLSConfig *prom_config.TLSConfig `yaml:"tls_config,omitempty"` BasicAuth *prom_config.BasicAuth `yaml:"basic_auth,omitempty"` + Oauth2 *OAuth2Config `yaml:"oauth2,omitempty"` Headers map[string]string `yaml:"headers,omitempty"` SendingQueue map[string]interface{} `yaml:"sending_queue,omitempty"` // https://github.com/open-telemetry/opentelemetry-collector/blob/7d7ae2eb34b5d387627875c498d7f43619f37ee3/exporter/exporterhelper/queued_retry.go#L30 RetryOnFailure map[string]interface{} `yaml:"retry_on_failure,omitempty"` // https://github.com/open-telemetry/opentelemetry-collector/blob/7d7ae2eb34b5d387627875c498d7f43619f37ee3/exporter/exporterhelper/queued_retry.go#L54 @@ -181,6 +230,7 @@ func (c *RemoteWriteConfig) UnmarshalYAML(unmarshal func(interface{}) error) err *c = DefaultRemoteWriteConfig type plain RemoteWriteConfig + if err := unmarshal((*plain)(c)); err != nil { return err } @@ -253,6 +303,10 @@ func exporter(rwCfg RemoteWriteConfig) (map[string]interface{}, error) { headers = rwCfg.Headers } + if rwCfg.BasicAuth != nil && rwCfg.Oauth2 != nil { + return nil, fmt.Errorf("Only one auth type may be configured per exporter (basic_auth or oauth2)") + } + if rwCfg.BasicAuth != nil { password := string(rwCfg.BasicAuth.Password) @@ -318,21 +372,21 @@ func exporter(rwCfg RemoteWriteConfig) (map[string]interface{}, error) { return exporter, nil } -func getExporterName(protocol string, format string) (string, error) { +func getExporterName(index int, protocol string, format string) (string, error) { switch format { case formatOtlp: switch protocol { case protocolGRPC: - return "otlp", nil + return fmt.Sprintf("otlp/%d", index), nil case protocolHTTP: - return "otlphttp", nil + return fmt.Sprintf("otlphttp/%d", index), nil default: return "", errors.New("unknown protocol, expected either 'http' or 'grpc'") } case formatJaeger: switch protocol { case protocolGRPC: - return "jaeger", nil + return fmt.Sprintf("jaeger/%d", index), nil default: return "", errors.New("unknown protocol, expected 'grpc'") } @@ -349,16 +403,42 @@ func (c *InstanceConfig) exporters() (map[string]interface{}, error) { if err != nil { return nil, err } - exporterName, err := getExporterName(remoteWriteConfig.Protocol, remoteWriteConfig.Format) + exporterName, err := getExporterName(i, remoteWriteConfig.Protocol, remoteWriteConfig.Format) if err != nil { return nil, err } - exporterName = fmt.Sprintf("%s/%d", exporterName, i) + if remoteWriteConfig.Oauth2 != nil { + exporter["auth"] = map[string]string{"authenticator": getAuthExtensionName(exporterName)} + } exporters[exporterName] = exporter } return exporters, nil } +func getAuthExtensionName(exporterName string) string { + return fmt.Sprintf("oauth2client/%s", strings.Replace(exporterName, "/", "", -1)) +} + +// builds oauth2clientauth extensions required to support RemoteWriteConfigurations. +func (c *InstanceConfig) extensions() (map[string]interface{}, error) { + extensions := map[string]interface{}{} + for i, remoteWriteConfig := range c.RemoteWrite { + if remoteWriteConfig.Oauth2 == nil { + continue + } + exporterName, err := getExporterName(i, remoteWriteConfig.Protocol, remoteWriteConfig.Format) + if err != nil { + return nil, err + } + oauthConfig, err := remoteWriteConfig.Oauth2.toOtelConfig() + if err != nil { + return nil, err + } + extensions[getAuthExtensionName(exporterName)] = oauthConfig + } + return extensions, nil +} + func resolver(config map[string]interface{}) (map[string]interface{}, error) { if len(config) == 0 { return nil, fmt.Errorf("must configure one resolver (dns or static)") @@ -435,6 +515,15 @@ func (c *InstanceConfig) otelConfig() (*config.Config, error) { return nil, errors.New("must have at least one configured receiver") } + extensions, err := c.extensions() + if err != nil { + return nil, err + } + extensionsNames := make([]string, 0, len(extensions)) + for name := range extensions { + extensionsNames = append(extensionsNames, name) + } + exporters, err := c.exporters() if err != nil { return nil, err @@ -603,14 +692,19 @@ func (c *InstanceConfig) otelConfig() (*config.Config, error) { receiversMap := map[string]interface{}(c.Receivers) + otelMapStructure["extensions"] = extensions otelMapStructure["exporters"] = exporters otelMapStructure["processors"] = processors otelMapStructure["receivers"] = receiversMap // pipelines - otelMapStructure["service"] = map[string]interface{}{ + serviceMap := map[string]interface{}{ "pipelines": pipelines, } + if len(extensionsNames) > 0 { + serviceMap["extensions"] = extensionsNames + } + otelMapStructure["service"] = serviceMap factories, err := tracingFactories() if err != nil { @@ -633,7 +727,9 @@ func (c *InstanceConfig) otelConfig() (*config.Config, error) { // tracingFactories() only creates the needed factories. if we decide to add support for a new // processor, exporter, receiver we need to add it here func tracingFactories() (component.Factories, error) { - extensions, err := component.MakeExtensionFactoryMap() + extensions, err := component.MakeExtensionFactoryMap( + oauth2clientauthextension.NewFactory(), + ) if err != nil { return component.Factories{}, err } @@ -717,6 +813,7 @@ func orderProcessors(processors []string, splitPipelines bool) [][]string { processor == "tail_sampling" || processor == "automatic_logging" || processor == "service_graphs" { + foundAt = i break } diff --git a/pkg/traces/config_test.go b/pkg/traces/config_test.go index 07bd508c6b9d..0fd2928234d3 100644 --- a/pkg/traces/config_test.go +++ b/pkg/traces/config_test.go @@ -1059,6 +1059,246 @@ service: exporters: ["jaeger/0", "otlp/1"] processors: [] receivers: ["jaeger"] +`, + }, + { + name: "one exporter with oauth2 and basic auth", + cfg: ` +receivers: + jaeger: + protocols: + grpc: +remote_write: + - endpoint: example.com:12345 + basic_auth: + username: test + password: blerg + oauth2: + client_id: somecclient + client_secret: someclientsecret +`, + expectedError: true, + }, + { + name: "simple oauth2 config", + cfg: ` +receivers: + jaeger: + protocols: + grpc: +remote_write: + - endpoint: example.com:12345 + protocol: http + oauth2: + client_id: someclientid + client_secret: someclientsecret + token_url: https://example.com/oauth2/default/v1/token + scopes: ["api.metrics"] + timeout: 2s +`, + expectedConfig: ` +receivers: + jaeger: + protocols: + grpc: +extensions: + oauth2client/otlphttp0: + client_id: someclientid + client_secret: someclientsecret + token_url: https://example.com/oauth2/default/v1/token + scopes: ["api.metrics"] + timeout: 2s +exporters: + otlphttp/0: + endpoint: example.com:12345 + compression: gzip + retry_on_failure: + max_elapsed_time: 60s + auth: + authenticator: oauth2client/otlphttp0 +service: + extensions: ["oauth2client/otlphttp0"] + pipelines: + traces: + exporters: ["otlphttp/0"] + processors: [] + receivers: ["jaeger"] +`, + }, + { + name: "oauth2 TLS", + cfg: ` +receivers: + jaeger: + protocols: + grpc: +remote_write: + - endpoint: example.com:12345 + protocol: http + oauth2: + client_id: someclientid + client_secret: someclientsecret + token_url: https://example.com/oauth2/default/v1/token + scopes: ["api.metrics"] + timeout: 2s + tls: + insecure: true + ca_file: /var/lib/mycert.pem + cert_file: certfile + key_file: keyfile +`, + expectedConfig: ` +receivers: + jaeger: + protocols: + grpc: +extensions: + oauth2client/otlphttp0: + client_id: someclientid + client_secret: someclientsecret + token_url: https://example.com/oauth2/default/v1/token + scopes: ["api.metrics"] + timeout: 2s + tls: + insecure: true + ca_file: /var/lib/mycert.pem + cert_file: certfile + key_file: keyfile +exporters: + otlphttp/0: + endpoint: example.com:12345 + compression: gzip + retry_on_failure: + max_elapsed_time: 60s + auth: + authenticator: oauth2client/otlphttp0 +service: + extensions: ["oauth2client/otlphttp0"] + pipelines: + traces: + exporters: ["otlphttp/0"] + processors: [] + receivers: ["jaeger"] +`, + }, + { + name: "2 exporters different auth", + cfg: ` +receivers: + jaeger: + protocols: + grpc: +remote_write: + - endpoint: example.com:12345 + protocol: http + oauth2: + client_id: someclientid + client_secret: someclientsecret + token_url: https://example.com/oauth2/default/v1/token + scopes: ["api.metrics"] + timeout: 2s + - endpoint: example.com:12345 + protocol: grpc + oauth2: + client_id: anotherclientid + client_secret: anotherclientsecret + token_url: https://example.com/oauth2/default/v1/token + scopes: ["api.metrics"] + timeout: 2s +`, + expectedConfig: ` +receivers: + jaeger: + protocols: + grpc: +extensions: + oauth2client/otlphttp0: + client_id: someclientid + client_secret: someclientsecret + token_url: https://example.com/oauth2/default/v1/token + scopes: ["api.metrics"] + timeout: 2s + oauth2client/otlp1: + client_id: anotherclientid + client_secret: anotherclientsecret + token_url: https://example.com/oauth2/default/v1/token + scopes: ["api.metrics"] + timeout: 2s +exporters: + otlphttp/0: + endpoint: example.com:12345 + compression: gzip + retry_on_failure: + max_elapsed_time: 60s + auth: + authenticator: oauth2client/otlphttp0 + otlp/1: + endpoint: example.com:12345 + compression: gzip + retry_on_failure: + max_elapsed_time: 60s + auth: + authenticator: oauth2client/otlp1 +service: + extensions: ["oauth2client/otlphttp0", "oauth2client/otlp1"] + pipelines: + traces: + exporters: ["otlphttp/0", "otlp/1"] + processors: [] + receivers: ["jaeger"] +`, + }, + { + name: "exporter with insecure oauth", + cfg: ` +receivers: + jaeger: + protocols: + grpc: +remote_write: + - endpoint: http://example.com:12345 + insecure: true + protocol: http + oauth2: + client_id: someclientid + client_secret: someclientsecret + token_url: https://example.com/oauth2/default/v1/token + scopes: ["api.metrics"] + timeout: 2s + tls: + insecure: true +`, + expectedConfig: ` +receivers: + jaeger: + protocols: + grpc: +extensions: + oauth2client/otlphttp0: + client_id: someclientid + client_secret: someclientsecret + token_url: https://example.com/oauth2/default/v1/token + scopes: ["api.metrics"] + timeout: 2s + tls: + insecure: true +exporters: + otlphttp/0: + endpoint: http://example.com:12345 + tls: + insecure: true + compression: gzip + retry_on_failure: + max_elapsed_time: 60s + auth: + authenticator: oauth2client/otlphttp0 +service: + extensions: ["oauth2client/otlphttp0"] + pipelines: + traces: + exporters: ["otlphttp/0"] + processors: [] + receivers: ["jaeger"] `, }, } @@ -1068,7 +1308,6 @@ service: var cfg InstanceConfig err := yaml.Unmarshal([]byte(tc.cfg), &cfg) require.NoError(t, err) - // check error actualConfig, err := cfg.otelConfig() if tc.expectedError { @@ -1448,7 +1687,9 @@ func sortPipelines(cfg *config.Config) { var ( exp = tracePipeline.Exporters recv = tracePipeline.Receivers + ext = cfg.Service.Extensions ) sort.Slice(exp, func(i, j int) bool { return exp[i].String() > exp[j].String() }) sort.Slice(recv, func(i, j int) bool { return recv[i].String() > recv[j].String() }) + sort.Slice(ext, func(i, j int) bool { return ext[i].String() > ext[j].String() }) } diff --git a/pkg/traces/instance.go b/pkg/traces/instance.go index 36c43b241bc4..4940c0129100 100644 --- a/pkg/traces/instance.go +++ b/pkg/traces/instance.go @@ -6,20 +6,22 @@ import ( "sync" "time" - "github.com/grafana/agent/pkg/build" - "github.com/grafana/agent/pkg/logs" - "github.com/grafana/agent/pkg/metrics/instance" - "github.com/grafana/agent/pkg/traces/automaticloggingprocessor" - "github.com/grafana/agent/pkg/traces/contextkeys" - "github.com/grafana/agent/pkg/util" "github.com/prometheus/client_golang/prometheus" "go.opencensus.io/stats/view" "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/config" "go.opentelemetry.io/collector/service/external/builder" + "go.opentelemetry.io/collector/service/external/extensions" "go.opentelemetry.io/otel/metric" "go.opentelemetry.io/otel/trace" "go.uber.org/zap" + + "github.com/grafana/agent/pkg/build" + "github.com/grafana/agent/pkg/logs" + "github.com/grafana/agent/pkg/metrics/instance" + "github.com/grafana/agent/pkg/traces/automaticloggingprocessor" + "github.com/grafana/agent/pkg/traces/contextkeys" + "github.com/grafana/agent/pkg/util" ) // Instance wraps the OpenTelemetry collector to enable tracing pipelines @@ -29,9 +31,10 @@ type Instance struct { logger *zap.Logger metricViews []*view.View - exporter builder.Exporters - pipelines builder.BuiltPipelines - receivers builder.Receivers + extensions extensions.Extensions + exporter builder.Exporters + pipelines builder.BuiltPipelines + receivers builder.Receivers } // NewInstance creates and starts an instance of tracing pipelines. @@ -86,6 +89,11 @@ func (i *Instance) stop() { shutdownCtx, cancel := context.WithTimeout(context.Background(), 30*time.Second) defer cancel() + err := i.extensions.NotifyPipelineNotReady() + if err != nil { + i.logger.Error("failed to notify extension of pipeline shutdown", zap.Error(err)) + } + dependencies := []struct { name string shutdown func() error @@ -117,6 +125,15 @@ func (i *Instance) stop() { return i.exporter.ShutdownAll(shutdownCtx) }, }, + { + name: "extensions", + shutdown: func() error { + if i.extensions == nil { + return nil + } + return i.extensions.ShutdownAll(shutdownCtx) + }, + }, } for _, dep := range dependencies { @@ -129,6 +146,7 @@ func (i *Instance) stop() { i.receivers = nil i.pipelines = nil i.exporter = nil + i.extensions = nil } func (i *Instance) buildAndStartPipeline(ctx context.Context, cfg InstanceConfig, logs *logs.Logs, instManager instance.Manager, reg prometheus.Registerer) error { @@ -180,14 +198,26 @@ func (i *Instance) buildAndStartPipeline(ctx context.Context, cfg InstanceConfig MeterProvider: metric.NewNoopMeterProvider(), } + // start extensions + i.extensions, err = extensions.Build(settings, appinfo, otelConfig, factories.Extensions) + if err != nil { + i.logger.Error(fmt.Sprintf("failed to build extensions:%s", err.Error())) + return fmt.Errorf("failed to create extensions builder: %w", err) + } + err = i.extensions.StartAll(ctx, i) + if err != nil { + i.logger.Error(fmt.Sprintf("failed to start extensions:%s", err.Error())) + return fmt.Errorf("failed to start extensions: %w", err) + } + // start exporter i.exporter, err = builder.BuildExporters(settings, appinfo, otelConfig, factories.Exporters) if err != nil { return fmt.Errorf("failed to create exporters builder: %w", err) } - err = i.exporter.StartAll(ctx, i) if err != nil { + i.logger.Error(fmt.Sprintf("failed to start exporter:%s", err.Error())) return fmt.Errorf("failed to start exporters: %w", err) } @@ -213,7 +243,7 @@ func (i *Instance) buildAndStartPipeline(ctx context.Context, cfg InstanceConfig return fmt.Errorf("failed to start receivers: %w", err) } - return nil + return i.extensions.NotifyPipelineReady() } // ReportFatalError implements component.Host @@ -228,7 +258,7 @@ func (i *Instance) GetFactory(component.Kind, config.Type) component.Factory { // GetExtensions implements component.Host func (i *Instance) GetExtensions() map[config.ComponentID]component.Extension { - return nil + return i.extensions.ToMap() } // GetExporters implements component.Host diff --git a/pkg/traces/internal/traceutils/server.go b/pkg/traces/internal/traceutils/server.go index 4f2bf2a3f541..d4ae72cd5700 100644 --- a/pkg/traces/internal/traceutils/server.go +++ b/pkg/traces/internal/traceutils/server.go @@ -23,7 +23,7 @@ import ( "go.opentelemetry.io/otel/metric" "go.opentelemetry.io/otel/trace" "go.uber.org/zap" - "gopkg.in/yaml.v3" + "gopkg.in/yaml.v2" ) // Server is a Tracing testing server that invokes a function every time a span @@ -214,6 +214,7 @@ func newFuncProcessorFactory(callback func(pdata.Traces)) component.ProcessorFac _ config.Processor, next consumer.Traces, ) (component.TracesProcessor, error) { + return &funcProcessor{ Callback: callback, Next: next, @@ -254,6 +255,7 @@ func newNoopExporterFactory() component.ExporterFactory { config.Exporter) ( component.TracesExporter, error) { + return &noopExporter{}, nil }), ) diff --git a/pkg/traces/noopreceiver/factory.go b/pkg/traces/noopreceiver/factory.go index 05d50c7a8cef..1963f525b791 100644 --- a/pkg/traces/noopreceiver/factory.go +++ b/pkg/traces/noopreceiver/factory.go @@ -41,5 +41,6 @@ func createMetricsReceiver( _ config.Receiver, _ consumer.Metrics, ) (component.MetricsReceiver, error) { + return newNoopReceiver(nil, nil, nil), nil } diff --git a/pkg/traces/promsdprocessor/factory.go b/pkg/traces/promsdprocessor/factory.go index 006cf2c4de82..7ae4c80d4ec0 100644 --- a/pkg/traces/promsdprocessor/factory.go +++ b/pkg/traces/promsdprocessor/factory.go @@ -59,8 +59,8 @@ func createTraceProcessor( cfg config.Processor, nextConsumer consumer.Traces, ) (component.TracesProcessor, error) { - oCfg := cfg.(*Config) + oCfg := cfg.(*Config) out, err := yaml.Marshal(oCfg.ScrapeConfigs) if err != nil { return nil, fmt.Errorf("unable to marshal scrapeConfigs interface{} to yaml: %w", err) diff --git a/pkg/traces/remotewriteexporter/exporter.go b/pkg/traces/remotewriteexporter/exporter.go index 1f0cab384fb4..371516314bc1 100644 --- a/pkg/traces/remotewriteexporter/exporter.go +++ b/pkg/traces/remotewriteexporter/exporter.go @@ -157,8 +157,8 @@ func (e *remoteWriteExporter) handleHistogramIntDataPoints(app storage.Appender, if err := e.appendDataPointWithLabels(app, name, bucketSuffix, dataPoint, float64(cumulativeCount), ls); err != nil { return err } - } + return nil } diff --git a/pkg/traces/remotewriteexporter/exporter_test.go b/pkg/traces/remotewriteexporter/exporter_test.go index e50dc88eec9c..c0f6a8639100 100644 --- a/pkg/traces/remotewriteexporter/exporter_test.go +++ b/pkg/traces/remotewriteexporter/exporter_test.go @@ -9,7 +9,6 @@ import ( "github.com/grafana/agent/pkg/metrics/instance" "github.com/prometheus/prometheus/pkg/exemplar" "github.com/prometheus/prometheus/pkg/labels" - "github.com/prometheus/prometheus/scrape" "github.com/prometheus/prometheus/storage" "github.com/stretchr/testify/require" "go.opentelemetry.io/collector/model/pdata" @@ -103,17 +102,10 @@ func (m *mockManager) DeleteConfig(_ string) error { return nil } func (m *mockManager) Stop() {} type mockInstance struct { + instance.NoOpInstance appender *mockAppender } -func (m *mockInstance) Run(_ context.Context) error { return nil } - -func (m *mockInstance) Update(_ instance.Config) error { return nil } - -func (m *mockInstance) TargetsActive() map[string][]*scrape.Target { return nil } - -func (m *mockInstance) StorageDirectory() string { return "" } - func (m *mockInstance) Appender(_ context.Context) storage.Appender { if m.appender == nil { m.appender = &mockAppender{} diff --git a/pkg/traces/remotewriteexporter/factory.go b/pkg/traces/remotewriteexporter/factory.go index 226df1fc8891..790828a368c8 100644 --- a/pkg/traces/remotewriteexporter/factory.go +++ b/pkg/traces/remotewriteexporter/factory.go @@ -49,7 +49,7 @@ func createMetricsExporter( _ component.ExporterCreateSettings, cfg config.Exporter, ) (component.MetricsExporter, error) { - eCfg := cfg.(*Config) + eCfg := cfg.(*Config) return newRemoteWriteExporter(eCfg) } diff --git a/pkg/traces/servicegraphprocessor/factory.go b/pkg/traces/servicegraphprocessor/factory.go index e31dfa7ff85e..8fcdcb6757cf 100644 --- a/pkg/traces/servicegraphprocessor/factory.go +++ b/pkg/traces/servicegraphprocessor/factory.go @@ -60,7 +60,7 @@ func createTracesProcessor( cfg config.Processor, nextConsumer consumer.Traces, ) (component.TracesProcessor, error) { - eCfg := cfg.(*Config) + eCfg := cfg.(*Config) return newProcessor(nextConsumer, eCfg), nil } diff --git a/pkg/traces/servicegraphprocessor/processor.go b/pkg/traces/servicegraphprocessor/processor.go index 5d59044981d0..39ac5197836d 100644 --- a/pkg/traces/servicegraphprocessor/processor.go +++ b/pkg/traces/servicegraphprocessor/processor.go @@ -279,7 +279,6 @@ func (p *processor) consume(trace pdata.Traces) error { ils := ilsSlice.At(j) for k := 0; k < ils.Spans().Len(); k++ { - span := ils.Spans().At(k) switch span.Kind() { diff --git a/pkg/traces/servicegraphprocessor/processor_test.go b/pkg/traces/servicegraphprocessor/processor_test.go index 48119cb533eb..8f70ae0a4625 100644 --- a/pkg/traces/servicegraphprocessor/processor_test.go +++ b/pkg/traces/servicegraphprocessor/processor_test.go @@ -95,7 +95,6 @@ func TestConsumeMetrics(t *testing.T) { require.NoError(t, err) }) } - } func traceSamples(t *testing.T, path string) pdata.Traces { diff --git a/pkg/traces/traces.go b/pkg/traces/traces.go index 0725a47b7ef7..0294aa03ee20 100644 --- a/pkg/traces/traces.go +++ b/pkg/traces/traces.go @@ -12,6 +12,7 @@ import ( zaplogfmt "github.com/jsternberg/zap-logfmt" prom_client "github.com/prometheus/client_golang/prometheus" "github.com/sirupsen/logrus" + "github.com/weaveworks/common/logging" "go.opencensus.io/stats/view" "go.opentelemetry.io/collector/external/obsreportconfig" "go.uber.org/zap" @@ -33,13 +34,13 @@ type Traces struct { } // New creates and starts trace collection. -func New(logsSubsystem *logs.Logs, promInstanceManager instance.Manager, reg prom_client.Registerer, cfg Config, level logrus.Level) (*Traces, error) { +func New(logsSubsystem *logs.Logs, promInstanceManager instance.Manager, reg prom_client.Registerer, cfg Config, level logrus.Level, fmt logging.Format) (*Traces, error) { var leveller logLeveller traces := &Traces{ instances: make(map[string]*Instance), leveller: &leveller, - logger: newLogger(&leveller), + logger: newLogger(&leveller, fmt), reg: reg, promInstanceManager: promInstanceManager, } @@ -109,13 +110,24 @@ func (t *Traces) Stop() { } } -func newLogger(zapLevel zapcore.LevelEnabler) *zap.Logger { +func newLogger(zapLevel zapcore.LevelEnabler, fmt logging.Format) *zap.Logger { config := zap.NewProductionEncoderConfig() config.EncodeTime = func(ts time.Time, encoder zapcore.PrimitiveArrayEncoder) { encoder.AppendString(ts.UTC().Format(time.RFC3339)) } + + var encoder zapcore.Encoder + switch fmt.String() { + case "logfmt": + encoder = zaplogfmt.NewEncoder(config) + case "json": + encoder = zapcore.NewJSONEncoder(config) + default: + encoder = zaplogfmt.NewEncoder(config) + } + logger := zap.New(zapcore.NewCore( - zaplogfmt.NewEncoder(config), + encoder, os.Stdout, zapLevel, ), zap.AddCaller()) diff --git a/pkg/traces/traces_test.go b/pkg/traces/traces_test.go index d289cc7be909..01cde1ff04c0 100644 --- a/pkg/traces/traces_test.go +++ b/pkg/traces/traces_test.go @@ -48,7 +48,7 @@ configs: var loggingLevel logging.Level require.NoError(t, loggingLevel.Set("debug")) - traces, err := New(nil, nil, prometheus.NewRegistry(), cfg, logrus.InfoLevel) + traces, err := New(nil, nil, prometheus.NewRegistry(), cfg, logrus.InfoLevel, logging.Format{}) require.NoError(t, err) t.Cleanup(traces.Stop) @@ -94,7 +94,7 @@ configs: err := dec.Decode(&cfg) require.NoError(t, err) - traces, err := New(nil, nil, prometheus.NewRegistry(), cfg, logrus.DebugLevel) + traces, err := New(nil, nil, prometheus.NewRegistry(), cfg, logrus.DebugLevel, logging.Format{}) require.NoError(t, err) t.Cleanup(traces.Stop) diff --git a/pkg/util/logger.go b/pkg/util/logger.go index bc627c3a0b26..5e90090d718c 100644 --- a/pkg/util/logger.go +++ b/pkg/util/logger.go @@ -29,6 +29,17 @@ func NewLogger(cfg *server.Config) *Logger { return newLogger(cfg, defaultLogger) } +// NewLoggerFromLevel creates a new logger from logging.Level and logging.Format. +func NewLoggerFromLevel(lvl logging.Level, fmt logging.Format) *Logger { + logger, err := makeDefaultLogger(lvl, fmt) + if err != nil { + panic(err) + } + return &Logger{ + l: logger, + } +} + func newLogger(cfg *server.Config, ctor func(*server.Config) (log.Logger, error)) *Logger { l := Logger{makeLogger: ctor} if err := l.ApplyConfig(cfg); err != nil { @@ -52,9 +63,13 @@ func (l *Logger) ApplyConfig(cfg *server.Config) error { } func defaultLogger(cfg *server.Config) (log.Logger, error) { + return makeDefaultLogger(cfg.LogLevel, cfg.LogFormat) +} + +func makeDefaultLogger(lvl logging.Level, fmt logging.Format) (log.Logger, error) { var l log.Logger - l, err := cortex_log.NewPrometheusLogger(cfg.LogLevel, cfg.LogFormat) + l, err := cortex_log.NewPrometheusLogger(lvl, fmt) if err != nil { return nil, err } diff --git a/pkg/util/strings.go b/pkg/util/strings.go new file mode 100644 index 000000000000..0caaadcecbd0 --- /dev/null +++ b/pkg/util/strings.go @@ -0,0 +1,15 @@ +package util + +import ( + "regexp" + "strings" +) + +// CamelToSnake is a helper function for converting CamelCase to Snake Case +func CamelToSnake(str string) string { + var matchFirstCap = regexp.MustCompile("(.)([A-Z][a-z]+)") + var matchAllCap = regexp.MustCompile("([a-z0-9])([A-Z])") + snake := matchFirstCap.ReplaceAllString(str, "${1}_${2}") + snake = matchAllCap.ReplaceAllString(snake, "${1}_${2}") + return strings.ToLower(snake) +} diff --git a/pkg/util/trigger_test.go b/pkg/util/trigger_test.go index 2959ba974d0f..5e8d4f70702a 100644 --- a/pkg/util/trigger_test.go +++ b/pkg/util/trigger_test.go @@ -26,5 +26,4 @@ func TestWaitTrigger(t *testing.T) { err := wt.Wait(time.Second) require.NoError(t, err) }) - } diff --git a/production/README.md b/production/README.md index 4bbb146d4682..a73aca24a288 100644 --- a/production/README.md +++ b/production/README.md @@ -13,7 +13,7 @@ Here are some resources to help you run the Grafana Agent: ## Windows Installation -To run the Windows Installation, download the Windows Installer executable from the [release page](https://github.com/grafana/agent/releases). Then run the installer, this will setup the Agent and run the Agent as a Windows Service. More details can be found in the [Windows Guide](../docs/getting-started/install-agent-on-windows.md) +To run the Windows Installation, download the Windows Installer executable from the [release page](https://github.com/grafana/agent/releases). Then run the installer, this will setup the Agent and run the Agent as a Windows Service. More details can be found in the [Windows Guide](https://grafana.com/docs/agent/latest/getting-started/install-agent-on-windows/) ## Running the Agent with Docker @@ -27,7 +27,7 @@ directory on your host that you want the agent to store its WAL. docker run \ -v /tmp/agent:/etc/agent/data \ -v /path/to/config.yaml:/etc/agent/agent.yaml \ - grafana/agent:v0.22.0 + grafana/agent:v0.23.0 ``` ## Running the Agent locally diff --git a/production/grafana-agent-mixin/alerts.libsonnet b/production/grafana-agent-mixin/alerts.libsonnet index 7f66d672c782..c34836d570f2 100644 --- a/production/grafana-agent-mixin/alerts.libsonnet +++ b/production/grafana-agent-mixin/alerts.libsonnet @@ -65,6 +65,121 @@ local _config = config._config; }, ], }, + { + name: 'GrafanaAgentSmokeChecks', + rules: [ + { + alert: 'GrafanaAgentDown', + expr: ||| + up{ + namespace="agent-smoke-test", + pod=~"grafana-agent-smoke-test-(0|cluster-0|cluster-1|cluster-2)", + } == 0 + |||, + 'for': '5m', + annotations: { + summary: '{{ $labels.job }} is down', + }, + }, + { + alert: 'GrafanaAgentFlapping', + expr: ||| + avg_over_time(up{ + namespace="agent-smoke-test", + pod=~"grafana-agent-smoke-test-(0|cluster-0|cluster-1|cluster-2)", + }[5m]) < 1 + |||, + 'for': '15m', + annotations: { + summary: '{{ $labels.job }} is flapping', + }, + }, + + // Checks that the CPU usage doesn't go too high. This was generated from internal usage where + // every 1,000 active series used roughly 0.0013441% of CPU. This alert only fires if there is a + // minimum load threshold of at least 1000 active series. + { + alert: 'GrafanaAgentCPUHigh', + expr: ||| + (sum by (pod) (rate(container_cpu_usage_seconds_total{cluster=~".+", namespace=~"agent-smoke-test", container=~".+", pod="grafana-agent-smoke-test-cluster-2"}[5m])) + / + (sum by (pod) (agent_wal_storage_active_series{cluster=~".+", namespace=~"agent-smoke-test", container=~".+", pod="grafana-agent-smoke-test-cluster-2"}) / 1000) + > 0.0013441) + and + sum by (pod) (agent_wal_storage_active_series{cluster=~".+", namespace=~"agent-smoke-test", container=~".+", pod="grafana-agent-smoke-test-cluster-2"}) > 1000 + |||, + 'for': '15m', + annotations: { + summary: '{{ $labels.pod }} is using more than 0.0013441 CPU per 1000 series over the last 5 minutes', + }, + }, + + // We assume roughly ~8KB per series. Check that each deployment + // doesn't go too far above this. + // + // We aggregate the memory of the scraping service together since an individual + // node with a really small number of active series will throw this metric off. + { + alert: 'GrafanaAgentMemHigh', + expr: ||| + sum without (pod, instance) (go_memstats_heap_inuse_bytes{job=~"agent-smoke-test/grafana-agent-smoke-test.*"}) / + sum without (pod, instance, instance_group_name) (agent_wal_storage_active_series{job=~"agent-smoke-test/grafana-agent-smoke-test.*"}) / 1e3 > 10 + |||, + 'for': '5m', + annotations: { + summary: '{{ $labels.job }} has used more than 10KB per series for more than 5 minutes', + }, + }, + ], + }, + { + name: 'GrafanaAgentCrowChecks', + rules: [ + { + alert: 'CrowDown', + expr: ||| + up{job=~"agent-smoke-test/crow-.*"} == 0 + |||, + 'for': '5m', + annotations: { + summary: 'Crow {{ $labels.job }} is down.', + }, + }, + { + alert: 'CrowFlapping', + expr: ||| + avg_over_time(up{job=~"agent-smoke-test/crow-.*"}[5m]) < 1 + |||, + 'for': '15m', + annotations: { + summary: 'Crow {{ $labels.job }} is flapping.', + }, + }, + { + alert: 'CrowNotScraped', + expr: ||| + rate(crow_test_samples_total[5m]) == 0 + |||, + 'for': '15m', + annotations: { + summary: 'Crow {{ $labels.job }} is not being scraped.', + }, + }, + { + alert: 'CrowFailures', + expr: ||| + ( + rate(crow_test_sample_results_total{result="success"}[5m]) + / ignoring(result) rate(crow_test_samples_total[5m]) + ) < 1 + |||, + 'for': '15m', + annotations: { + summary: 'Crow {{ $labels.job }} has had failures for at least 5m', + }, + }, + ], + }, ], }, } diff --git a/production/grafanacloud-install.sh b/production/grafanacloud-install.sh index c2d07a53eeea..a4eb2a1a0dfb 100755 --- a/production/grafanacloud-install.sh +++ b/production/grafanacloud-install.sh @@ -50,7 +50,7 @@ PACKAGE_SYSTEM=${PACKAGE_SYSTEM:=} # # Global constants. # -RELEASE_VERSION="0.22.0" +RELEASE_VERSION="0.23.0" RELEASE_URL="https://github.com/grafana/agent/releases/download/v${RELEASE_VERSION}" DEB_URL="${RELEASE_URL}/grafana-agent-${RELEASE_VERSION}-1.${ARCH}.deb" diff --git a/production/kubernetes/agent-bare.yaml b/production/kubernetes/agent-bare.yaml index 2eda70a26a8b..170a6d6b96c6 100644 --- a/production/kubernetes/agent-bare.yaml +++ b/production/kubernetes/agent-bare.yaml @@ -66,7 +66,7 @@ spec: valueFrom: fieldRef: fieldPath: spec.nodeName - image: grafana/agent:v0.22.0 + image: grafana/agent:v0.23.0 imagePullPolicy: IfNotPresent name: agent ports: diff --git a/production/kubernetes/agent-loki.yaml b/production/kubernetes/agent-loki.yaml index cf284912af18..dc59e9241821 100644 --- a/production/kubernetes/agent-loki.yaml +++ b/production/kubernetes/agent-loki.yaml @@ -2,7 +2,7 @@ apiVersion: v1 kind: ServiceAccount metadata: name: grafana-agent-logs - namespace: YOUR_NAMESPACE + namespace: ${NAMESPACE} --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole @@ -37,13 +37,13 @@ roleRef: subjects: - kind: ServiceAccount name: grafana-agent-logs - namespace: YOUR_NAMESPACE + namespace: ${NAMESPACE} --- apiVersion: apps/v1 kind: DaemonSet metadata: name: grafana-agent-logs - namespace: YOUR_NAMESPACE + namespace: ${NAMESPACE} spec: minReadySeconds: 10 selector: @@ -64,7 +64,7 @@ spec: valueFrom: fieldRef: fieldPath: spec.nodeName - image: grafana/agent:v0.22.0 + image: grafana/agent:v0.23.0 imagePullPolicy: IfNotPresent name: agent ports: diff --git a/production/kubernetes/agent-traces.yaml b/production/kubernetes/agent-traces.yaml index 3ad3616f1f3a..47e205914433 100644 --- a/production/kubernetes/agent-traces.yaml +++ b/production/kubernetes/agent-traces.yaml @@ -109,7 +109,7 @@ spec: valueFrom: fieldRef: fieldPath: spec.nodeName - image: grafana/agent:v0.22.0 + image: grafana/agent:v0.23.0 imagePullPolicy: IfNotPresent name: agent ports: diff --git a/production/kubernetes/build/lib/version.libsonnet b/production/kubernetes/build/lib/version.libsonnet index 24f9f8cd67a2..f1fe9c140135 100644 --- a/production/kubernetes/build/lib/version.libsonnet +++ b/production/kubernetes/build/lib/version.libsonnet @@ -1 +1 @@ -'grafana/agent:v0.22.0' +'grafana/agent:v0.23.0' diff --git a/production/kubernetes/build/templates/loki/main.jsonnet b/production/kubernetes/build/templates/loki/main.jsonnet index 82721f6048d7..37cad47952eb 100644 --- a/production/kubernetes/build/templates/loki/main.jsonnet +++ b/production/kubernetes/build/templates/loki/main.jsonnet @@ -2,7 +2,7 @@ local agent = import 'grafana-agent/v1/main.libsonnet'; { agent: - agent.new('grafana-agent-logs', 'YOUR_NAMESPACE') + + agent.new('grafana-agent-logs', '${NAMESPACE}') + agent.withConfigHash(false) + agent.withImages({ agent: (import 'version.libsonnet'), diff --git a/production/kubernetes/install-bare.sh b/production/kubernetes/install-bare.sh index e113a84dfbc1..6a80a5e45229 100644 --- a/production/kubernetes/install-bare.sh +++ b/production/kubernetes/install-bare.sh @@ -25,7 +25,7 @@ check_installed() { check_installed curl check_installed envsubst -MANIFEST_BRANCH=v0.22.0 +MANIFEST_BRANCH=v0.23.0 MANIFEST_URL=${MANIFEST_URL:-https://raw.githubusercontent.com/grafana/agent/${MANIFEST_BRANCH}/production/kubernetes/agent-bare.yaml} NAMESPACE=${NAMESPACE:-default} diff --git a/production/operator/crds/monitoring.grafana.com_grafanaagents.yaml b/production/operator/crds/monitoring.grafana.com_grafanaagents.yaml index f97b968bf855..bb18b7d06ec9 100644 --- a/production/operator/crds/monitoring.grafana.com_grafanaagents.yaml +++ b/production/operator/crds/monitoring.grafana.com_grafanaagents.yaml @@ -2203,6 +2203,11 @@ spec: - name type: object type: array + enableConfigReadAPI: + default: false + description: enableConfigReadAPI enables the read API for viewing + currently running config port 8080 on the agent. + type: boolean image: description: Image, when specified, overrides the image used to run the Agent. It should be specified along with a tag. Version must diff --git a/example/k3d/lib/avalanche/main.libsonnet b/production/tanka/grafana-agent/smoke/avalanche/main.libsonnet similarity index 100% rename from example/k3d/lib/avalanche/main.libsonnet rename to production/tanka/grafana-agent/smoke/avalanche/main.libsonnet diff --git a/example/k3d/lib/crow/main.libsonnet b/production/tanka/grafana-agent/smoke/crow/main.libsonnet similarity index 77% rename from example/k3d/lib/crow/main.libsonnet rename to production/tanka/grafana-agent/smoke/crow/main.libsonnet index 29268714461c..10dbf3d0fa46 100644 --- a/example/k3d/lib/crow/main.libsonnet +++ b/production/tanka/grafana-agent/smoke/crow/main.libsonnet @@ -14,8 +14,9 @@ local volume = k.core.v1.volume; local this = self, _config+:: { - image: 'grafana/agent-crow:latest', + image: 'us.gcr.io/kubernetes-dev/grafana/agent-crow:main', args: {}, + pull_secret: '', } + config, container:: @@ -27,6 +28,7 @@ local volume = k.core.v1.volume; deployment: deployment.new(name, 1, [self.container]) + - deployment.mixin.metadata.withNamespace(namespace), + deployment.mixin.metadata.withNamespace(namespace) + + deployment.spec.template.spec.withImagePullSecrets({ name: this._config.pull_secret }), }, } diff --git a/example/k3d/lib/etcd/main.libsonnet b/production/tanka/grafana-agent/smoke/etcd/main.libsonnet similarity index 100% rename from example/k3d/lib/etcd/main.libsonnet rename to production/tanka/grafana-agent/smoke/etcd/main.libsonnet diff --git a/production/tanka/grafana-agent/smoke/main.libsonnet b/production/tanka/grafana-agent/smoke/main.libsonnet new file mode 100644 index 000000000000..8713e1c46859 --- /dev/null +++ b/production/tanka/grafana-agent/smoke/main.libsonnet @@ -0,0 +1,68 @@ +local k = import 'ksonnet-util/kausal.libsonnet'; +local policyRule = k.rbac.v1.policyRule; +local serviceAccount = k.core.v1.serviceAccount; +local container = k.core.v1.container; +local containerPort = k.core.v1.containerPort; +local deployment = k.apps.v1.deployment; +local service = k.core.v1.service; +local util = k.util; + +{ + new(name='grafana-agent-smoke', namespace='default', config={}):: { + local k = (import 'ksonnet-util/kausal.libsonnet') { _config+:: { namespace: namespace } }, + + local this = self, + + _images:: { + agentsmoke: 'us.gcr.io/kubernetes-dev/grafana/agent-smoke:main', + }, + + _config:: { + mutationFrequency: '5m', + chaosFrequency: '30m', + image: this._images.agentsmoke, + pull_secret: '', + podPrefix: 'grafana-agent', + } + config, + + rbac: + k.util.rbac(name, [ + policyRule.withApiGroups(['apps']) + + policyRule.withResources(['deployments/scale']) + + policyRule.withVerbs(['get', 'update']), + policyRule.withApiGroups(['']) + + policyRule.withResources(['pods']) + + policyRule.withVerbs(['list', 'delete']), + ]) { + service_account+: + serviceAccount.mixin.metadata.withNamespace(namespace), + }, + + container:: + container.new('agent-smoke', this._config.image) + + container.withCommand('/bin/grafana-agent-smoke') + + container.withPorts([ + containerPort.newNamed(name='remote-write', containerPort=19090), + ]) + + container.withArgsMixin(k.util.mapToFlags({ + 'log.level': 'debug', + namespace: namespace, + 'mutation-frequency': this._config.mutationFrequency, + 'chaos-frequency': this._config.chaosFrequency, + 'pod-prefix': this._config.podPrefix, + 'fake-remote-write': true, + })), + + agentsmoke_deployment: + deployment.new(name, 1, [self.container]) + + deployment.mixin.metadata.withNamespace(namespace) + + deployment.mixin.spec.template.spec.withServiceAccount(name) + + deployment.spec.template.spec.withImagePullSecrets({ name: this._config.pull_secret }), + + service: + util.serviceFor(self.agentsmoke_deployment) + + service.mixin.metadata.withNamespace(namespace), + }, + + monitoring: (import './prometheus_monitoring.libsonnet'), +} diff --git a/production/tanka/grafana-agent/v1/main.libsonnet b/production/tanka/grafana-agent/v1/main.libsonnet index 088e09ba87ca..825663ba355d 100644 --- a/production/tanka/grafana-agent/v1/main.libsonnet +++ b/production/tanka/grafana-agent/v1/main.libsonnet @@ -15,8 +15,8 @@ local service = k.core.v1.service; (import './lib/traces.libsonnet') + { _images:: { - agent: 'grafana/agent:v0.22.0', - agentctl: 'grafana/agentctl:v0.22.0', + agent: 'grafana/agent:v0.23.0', + agentctl: 'grafana/agentctl:v0.23.0', }, // new creates a new DaemonSet deployment of the grafana-agent. By default, diff --git a/production/tanka/grafana-agent/v2/internal/base.libsonnet b/production/tanka/grafana-agent/v2/internal/base.libsonnet index 48845de718a0..90afd08ef537 100644 --- a/production/tanka/grafana-agent/v2/internal/base.libsonnet +++ b/production/tanka/grafana-agent/v2/internal/base.libsonnet @@ -10,8 +10,8 @@ function(name='grafana-agent', namespace='') { local this = self, _images:: { - agent: 'grafana/agent:v0.22.0', - agentctl: 'grafana/agentctl:v0.22.0', + agent: 'grafana/agent:v0.23.0', + agentctl: 'grafana/agentctl:v0.23.0', }, _config:: { name: name, diff --git a/production/tanka/grafana-agent/v2/internal/syncer.libsonnet b/production/tanka/grafana-agent/v2/internal/syncer.libsonnet index 15c4fc8bf4b8..044222c2ad98 100644 --- a/production/tanka/grafana-agent/v2/internal/syncer.libsonnet +++ b/production/tanka/grafana-agent/v2/internal/syncer.libsonnet @@ -14,7 +14,7 @@ function( ) { local _config = { api: error 'api must be set', - image: 'grafana/agentctl:v0.22.0', + image: 'grafana/agentctl:v0.23.0', schedule: '*/5 * * * *', configs: [], } + config, diff --git a/production/tanka/grafana-agent/v2/main.libsonnet b/production/tanka/grafana-agent/v2/main.libsonnet index 6b775326ac6d..b659d9d31250 100644 --- a/production/tanka/grafana-agent/v2/main.libsonnet +++ b/production/tanka/grafana-agent/v2/main.libsonnet @@ -1,5 +1,6 @@ local k = import 'ksonnet-util/kausal.libsonnet'; local container = k.core.v1.container; +local podTemplateSpec = k.core.v1.podTemplateSpec.spec; { new(name='grafana-agent', namespace=''):: @@ -24,7 +25,11 @@ local container = k.core.v1.container; withPortsMixin(ports=[]):: { container+:: container.withPortsMixin(ports) }, withVolumeMountsMixin(mounts=[]):: { container+:: container.withVolumeMountsMixin(mounts) }, withVolumesMixin(volumes=[]):: { - controller+: self.controller.mixin.spec.template.spec.withVolumesMixin(volumes), + controller+: { + spec+: { + template+: podTemplateSpec.withVolumesMixin(volumes) + }, + }, }, // Helpers diff --git a/tools/crow/.gitignore b/tools/crow/.gitignore new file mode 100644 index 000000000000..4abc650571dc --- /dev/null +++ b/tools/crow/.gitignore @@ -0,0 +1 @@ +grafana-agent-crow diff --git a/cmd/grafana-agent-crow/Dockerfile b/tools/crow/Dockerfile similarity index 57% rename from cmd/grafana-agent-crow/Dockerfile rename to tools/crow/Dockerfile index ed7e4ba31451..75bd3f6049a8 100644 --- a/cmd/grafana-agent-crow/Dockerfile +++ b/tools/crow/Dockerfile @@ -5,7 +5,9 @@ ARG RELEASE_BUILD=true ARG IMAGE_TAG RUN make clean && make IMAGE_TAG=${IMAGE_TAG} RELEASE_BUILD=${RELEASE_BUILD} BUILD_IN_CONTAINER=false grafana-agent-crow +RUN apt update && apt install ca-certificates FROM debian:buster-slim -COPY --from=build /src/agent/cmd/grafana-agent-crow/grafana-agent-crow /bin/grafana-agent-crow +COPY --from=build /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt +COPY --from=build /src/agent/tools/crow/grafana-agent-crow /bin/grafana-agent-crow ENTRYPOINT ["/bin/grafana-agent-crow"] diff --git a/cmd/grafana-agent-crow/Dockerfile.buildx b/tools/crow/Dockerfile.buildx similarity index 81% rename from cmd/grafana-agent-crow/Dockerfile.buildx rename to tools/crow/Dockerfile.buildx index fa7bf16fc092..f933c0e6b810 100644 --- a/cmd/grafana-agent-crow/Dockerfile.buildx +++ b/tools/crow/Dockerfile.buildx @@ -11,7 +11,7 @@ RUN rm -rf /usr/local/go \ && echo "$GOLANG_DOWNLOAD_SHA256 golang.tar.gz" | sha256sum -c - \ && tar -C /usr/local -xzf golang.tar.gz \ && rm golang.tar.gz - +RUN apt update && apt install ca-certificates COPY . /src/agent WORKDIR /src/agent ARG RELEASE_BUILD=true @@ -20,5 +20,6 @@ ARG IMAGE_TAG RUN make clean && IMAGE_TAG=${IMAGE_TAG} RELEASE_BUILD=${RELEASE_BUILD} BUILD_IN_CONTAINER=false DRONE=true make grafana-agent-crow FROM debian:buster-slim -COPY --from=build /src/agent/cmd/grafana-agent-crow/grafana-agent-crow /bin/grafana-agent-crow +COPY --from=build /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt +COPY --from=build /src/agent/tools/crow/grafana-agent-crow /bin/grafana-agent-crow ENTRYPOINT ["/bin/grafana-agent-crow"] diff --git a/cmd/grafana-agent-crow/README.md b/tools/crow/README.md similarity index 100% rename from cmd/grafana-agent-crow/README.md rename to tools/crow/README.md diff --git a/cmd/grafana-agent-crow/main.go b/tools/crow/main.go similarity index 100% rename from cmd/grafana-agent-crow/main.go rename to tools/crow/main.go diff --git a/tools/smoke/.gitignore b/tools/smoke/.gitignore new file mode 100644 index 000000000000..a85290032261 --- /dev/null +++ b/tools/smoke/.gitignore @@ -0,0 +1 @@ +grafana-agent-smoke diff --git a/tools/smoke/Dockerfile b/tools/smoke/Dockerfile new file mode 100644 index 000000000000..82facd92bce7 --- /dev/null +++ b/tools/smoke/Dockerfile @@ -0,0 +1,23 @@ +FROM golang:1.17.6-buster as build +COPY . /src/agent +WORKDIR /src/agent +ARG RELEASE_BUILD=true +ARG IMAGE_TAG + +# Backports repo required to get a libsystemd version 246 or newer which is required to handle journal +ZSTD compression +RUN echo "deb http://deb.debian.org/debian buster-backports main" >> /etc/apt/sources.list +RUN apt-get update && apt-get install -t buster-backports -qy libsystemd-dev + +RUN make clean && make IMAGE_TAG=${IMAGE_TAG} RELEASE_BUILD=${RELEASE_BUILD} BUILD_IN_CONTAINER=false agent-smoke + +FROM debian:buster-slim + +# Backports repo required to get a libsystemd version 246 or newer which is required to handle journal +ZSTD compression +RUN echo "deb http://deb.debian.org/debian buster-backports main" >> /etc/apt/sources.list +RUN apt-get update && apt-get install -t buster-backports -qy libsystemd-dev && \ + apt-get install -qy tzdata ca-certificates && \ + rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* + +COPY --from=build /src/agent/tools/smoke/grafana-agent-smoke /bin/grafana-agent-smoke + +ENTRYPOINT ["/bin/grafana-agent-smoke"] diff --git a/tools/smoke/Dockerfile.buildx b/tools/smoke/Dockerfile.buildx new file mode 100644 index 000000000000..702a7d926d1f --- /dev/null +++ b/tools/smoke/Dockerfile.buildx @@ -0,0 +1,32 @@ +FROM --platform=$BUILDPLATFORM rfratto/seego:latest as build +ARG TARGETPLATFORM +ARG BUILDPLATFORM + +# Use custom Go version instead of one prepacked in seego +ENV GOLANG_VERSION 1.17.6 +ENV GOLANG_DOWNLOAD_URL https://golang.org/dl/go$GOLANG_VERSION.linux-amd64.tar.gz +ENV GOLANG_DOWNLOAD_SHA256 231654bbf2dab3d86c1619ce799e77b03d96f9b50770297c8f4dff8836fc8ca2 +RUN rm -rf /usr/local/go \ + && curl -fsSL "$GOLANG_DOWNLOAD_URL" -o golang.tar.gz \ + && echo "$GOLANG_DOWNLOAD_SHA256 golang.tar.gz" | sha256sum -c - \ + && tar -C /usr/local -xzf golang.tar.gz \ + && rm golang.tar.gz + +COPY . /src/agent +WORKDIR /src/agent +ARG RELEASE_BUILD=true +ARG IMAGE_TAG + +RUN make clean && IMAGE_TAG=${IMAGE_TAG} RELEASE_BUILD=${RELEASE_BUILD} BUILD_IN_CONTAINER=false DRONE=true make agent-smoke + +FROM debian:buster-slim + +# Backports repo required to get a libsystemd version 246 or newer which is required to handle journal +ZSTD compression +RUN echo "deb http://deb.debian.org/debian buster-backports main" >> /etc/apt/sources.list +RUN apt-get update && apt-get install -t buster-backports -qy libsystemd-dev && \ + apt-get install -qy tzdata ca-certificates libsystemd-dev && \ + rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* + +COPY --from=build /src/agent/tools/smoke/grafana-agent-smoke /bin/grafana-agent-smoke + +ENTRYPOINT ["/bin/grafana-agent-smoke"] diff --git a/tools/smoke/internal/smoke.go b/tools/smoke/internal/smoke.go new file mode 100644 index 000000000000..7914cf3ae2e1 --- /dev/null +++ b/tools/smoke/internal/smoke.go @@ -0,0 +1,151 @@ +package smoke + +import ( + "context" + "flag" + "fmt" + "net/http" + "time" + + "github.com/go-kit/log" + "github.com/go-kit/log/level" + "github.com/oklog/run" + "k8s.io/client-go/kubernetes" + "k8s.io/client-go/tools/clientcmd" +) + +// Smoke is the top level object for a smoke test. +type Smoke struct { + cfg *Config + logger log.Logger + tasks []repeatingTask +} + +// Config struct to pass configuration to the Smoke constructor. +type Config struct { + Kubeconfig string + Namespace string + PodPrefix string + FakeRemoteWrite bool + ChaosFrequency time.Duration + MutationFrequency time.Duration +} + +// RegisterFlags registers flags for the config to the given FlagSet. +func (c *Config) RegisterFlags(f *flag.FlagSet) { + f.StringVar(&c.Namespace, "namespace", DefaultConfig.Namespace, "namespace smoke test should run in") + f.StringVar(&c.Kubeconfig, "kubeconfig", DefaultConfig.Kubeconfig, "absolute path to the kubeconfig file") + f.StringVar(&c.PodPrefix, "pod-prefix", DefaultConfig.PodPrefix, "prefix for grafana agent pods") + f.BoolVar(&c.FakeRemoteWrite, "fake-remote-write", DefaultConfig.FakeRemoteWrite, "remote write endpoint for series which are discarded, useful for testing and not storing metrics") + f.DurationVar(&c.ChaosFrequency, "chaos-frequency", DefaultConfig.ChaosFrequency, "chaos frequency duration") + f.DurationVar(&c.MutationFrequency, "mutation-frequency", DefaultConfig.MutationFrequency, "mutation frequency duration") +} + +// DefaultConfig holds defaults for Smoke settings. +var DefaultConfig = Config{ + Kubeconfig: "", + Namespace: "default", + PodPrefix: "grafana-agent", + FakeRemoteWrite: false, + ChaosFrequency: 30 * time.Minute, + MutationFrequency: 5 * time.Minute, +} + +// New is the constructor for a Smoke object. +func New(logger log.Logger, cfg Config) (*Smoke, error) { + s := &Smoke{ + cfg: &cfg, + logger: logger, + } + if s.logger == nil { + s.logger = log.NewNopLogger() + } + + // use the current context in kubeconfig. this falls back to in-cluster config if kubeconfig is empty + config, err := clientcmd.BuildConfigFromFlags("", cfg.Kubeconfig) + if err != nil { + return nil, err + } + // creates the clientset + clientset, err := kubernetes.NewForConfig(config) + if err != nil { + return nil, err + } + + // add default tasks + s.tasks = append(s.tasks, + repeatingTask{ + Task: &deletePodTask{ + logger: log.With(s.logger, "task", "delete_pod", "pod", "grafana-agent-0"), + clientset: clientset, + namespace: cfg.Namespace, + pod: fmt.Sprintf("%s-0", cfg.PodPrefix), + }, + frequency: cfg.ChaosFrequency, + }, + repeatingTask{ + Task: &deletePodBySelectorTask{ + logger: log.With(s.logger, "task", "delete_pod_by_selector"), + clientset: clientset, + namespace: cfg.Namespace, + selector: fmt.Sprintf("name=%s-cluster", cfg.PodPrefix), + }, + frequency: cfg.ChaosFrequency, + }, + repeatingTask{ + Task: &scaleDeploymentTask{ + logger: log.With(s.logger, "task", "scale_deployment", "deployment", "avalanche"), + clientset: clientset, + namespace: cfg.Namespace, + deployment: "avalanche", + maxReplicas: 11, + minReplicas: 2, + }, + frequency: cfg.MutationFrequency, + }) + + return s, nil +} + +func (s *Smoke) ServeHTTP(rw http.ResponseWriter, _ *http.Request) { + rw.WriteHeader(http.StatusOK) +} + +// Run starts the smoke test and runs the tasks concurrently. +func (s *Smoke) Run(ctx context.Context) error { + var g run.Group + ctx, cancel := context.WithCancel(ctx) + defer cancel() + taskFn := func(t repeatingTask) func() error { + return func() error { + tick := time.NewTicker(t.frequency) + defer tick.Stop() + for { + select { + case <-tick.C: + if err := t.Run(ctx); err != nil { + return err + } + case <-ctx.Done(): + return nil + } + } + } + } + for _, task := range s.tasks { + g.Add(taskFn(task), func(err error) { + cancel() + }) + } + + if s.cfg.FakeRemoteWrite { + level.Info(s.logger).Log("msg", "serving fake remote-write endpoint on :19090") + g.Add(func() error { + return http.ListenAndServe(":19090", s) + }, func(err error) { + cancel() + }) + } + + return g.Run() +} diff --git a/tools/smoke/internal/tasks.go b/tools/smoke/internal/tasks.go new file mode 100644 index 000000000000..3b887d577f77 --- /dev/null +++ b/tools/smoke/internal/tasks.go @@ -0,0 +1,101 @@ +package smoke + +import ( + "context" + "math/rand" + "time" + + "github.com/go-kit/log" + "github.com/go-kit/log/level" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/client-go/kubernetes" + "k8s.io/utils/pointer" +) + +// The Task interface represents some unit of work performed concurrently. +type Task interface { + Run(context.Context) error +} + +type repeatingTask struct { + Task + frequency time.Duration +} + +type deletePodTask struct { + logger log.Logger + clientset kubernetes.Interface + namespace string + pod string +} + +func (t *deletePodTask) Run(ctx context.Context) error { + level.Debug(t.logger).Log("msg", "deleting pod") + if err := t.clientset.CoreV1().Pods(t.namespace).Delete(ctx, t.pod, metav1.DeleteOptions{ + GracePeriodSeconds: pointer.Int64(0), + }); err != nil { + level.Error(t.logger).Log("msg", "failed to delete pod", "err", err) + } + return nil +} + +type scaleDeploymentTask struct { + logger log.Logger + clientset kubernetes.Interface + namespace string + deployment string + maxReplicas int + minReplicas int +} + +func (t *scaleDeploymentTask) Run(ctx context.Context) error { + newReplicas := rand.Intn(t.maxReplicas-t.minReplicas) + t.minReplicas + level.Debug(t.logger).Log("msg", "scaling replicas", "replicas", newReplicas) + + scale, err := t.clientset.AppsV1().Deployments(t.namespace). + GetScale(ctx, t.deployment, metav1.GetOptions{}) + if err != nil { + level.Error(t.logger).Log("msg", "failed to get autoscalingv1.Scale object", "err", err) + return nil + } + + sc := *scale + sc.Spec.Replicas = int32(newReplicas) + _, err = t.clientset.AppsV1().Deployments(t.namespace). + UpdateScale(ctx, t.deployment, &sc, metav1.UpdateOptions{}) + if err != nil { + level.Error(t.logger).Log("msg", "failed to scale deployment", "err", err) + } + return nil +} + +type deletePodBySelectorTask struct { + logger log.Logger + clientset kubernetes.Interface + namespace string + selector string +} + +func (t *deletePodBySelectorTask) Run(ctx context.Context) error { + list, err := t.clientset.CoreV1().Pods(t.namespace).List(ctx, metav1.ListOptions{ + LabelSelector: t.selector, + }) + if err != nil { + level.Error(t.logger).Log("msg", "failed to list pods", "err", err) + return nil + } + + l := len(list.Items) + if l > 0 { + i := rand.Intn(l) + pod := list.Items[i].Name + level.Debug(t.logger).Log("msg", "deleting pod", "pod", pod) + if err := t.clientset.CoreV1().Pods(t.namespace).Delete(ctx, pod, metav1.DeleteOptions{ + GracePeriodSeconds: pointer.Int64(0), + }); err != nil { + level.Error(t.logger).Log("msg", "failed to delete pod", "pod", pod, "err", err) + } + } + + return nil +} diff --git a/tools/smoke/internal/tasks_test.go b/tools/smoke/internal/tasks_test.go new file mode 100644 index 000000000000..76fb1cbd2789 --- /dev/null +++ b/tools/smoke/internal/tasks_test.go @@ -0,0 +1,144 @@ +package smoke + +import ( + "context" + "testing" + + "github.com/go-kit/log" + "k8s.io/client-go/kubernetes" + "k8s.io/client-go/kubernetes/fake" +) + +// Note: these tests are mostly worthless at this point +// but would allow easy debugging of tasks as they become more +// complex. Using https://pkg.go.dev/k8s.io/client-go/testing#ObjectTracker +// to mock responses from the fake client is also possible. + +func Test_deletePodBySelectorTask_Run(t1 *testing.T) { + type fields struct { + logger log.Logger + clientset kubernetes.Interface + namespace string + selector string + } + type args struct { + ctx context.Context + } + tests := []struct { + name string + fields fields + args args + wantErr bool + }{ + { + name: "deletePodBySelectorTask", + fields: fields{ + logger: log.NewNopLogger(), + clientset: fake.NewSimpleClientset(), + namespace: "foo", + selector: "foo=bar", + }, + }, + } + for _, tt := range tests { + t1.Run(tt.name, func(t1 *testing.T) { + t := &deletePodBySelectorTask{ + logger: tt.fields.logger, + clientset: tt.fields.clientset, + namespace: tt.fields.namespace, + selector: tt.fields.selector, + } + if err := t.Run(tt.args.ctx); (err != nil) != tt.wantErr { + t1.Errorf("Run() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} + +func Test_deletePodTask_Run(t1 *testing.T) { + type fields struct { + logger log.Logger + clientset kubernetes.Interface + namespace string + pod string + } + type args struct { + ctx context.Context + } + tests := []struct { + name string + fields fields + args args + wantErr bool + }{ + { + name: "deletePodTask", + fields: fields{ + logger: log.NewNopLogger(), + clientset: fake.NewSimpleClientset(), + namespace: "foo", + pod: "bar", + }, + }, + } + for _, tt := range tests { + t1.Run(tt.name, func(t1 *testing.T) { + t := &deletePodTask{ + logger: tt.fields.logger, + clientset: tt.fields.clientset, + namespace: tt.fields.namespace, + pod: tt.fields.pod, + } + if err := t.Run(tt.args.ctx); (err != nil) != tt.wantErr { + t1.Errorf("Run() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} + +func Test_scaleDeploymentTask_Run(t1 *testing.T) { + type fields struct { + logger log.Logger + clientset kubernetes.Interface + namespace string + deployment string + maxReplicas int + minReplicas int + } + type args struct { + ctx context.Context + } + tests := []struct { + name string + fields fields + args args + wantErr bool + }{ + { + name: "scaleDeploymentTask", + fields: fields{ + logger: log.NewNopLogger(), + clientset: fake.NewSimpleClientset(), + namespace: "foo", + deployment: "bar", + maxReplicas: 11, + minReplicas: 2, + }, + }, + } + for _, tt := range tests { + t1.Run(tt.name, func(t1 *testing.T) { + t := &scaleDeploymentTask{ + logger: tt.fields.logger, + clientset: tt.fields.clientset, + namespace: tt.fields.namespace, + deployment: tt.fields.deployment, + maxReplicas: tt.fields.maxReplicas, + minReplicas: tt.fields.minReplicas, + } + if err := t.Run(tt.args.ctx); (err != nil) != tt.wantErr { + t1.Errorf("Run() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/tools/smoke/main.go b/tools/smoke/main.go new file mode 100644 index 000000000000..568979501b89 --- /dev/null +++ b/tools/smoke/main.go @@ -0,0 +1,49 @@ +package main + +import ( + "context" + "flag" + "os" + "time" + + "github.com/go-kit/log/level" + "github.com/grafana/agent/pkg/util" + smoke "github.com/grafana/agent/tools/smoke/internal" + "github.com/weaveworks/common/logging" +) + +func main() { + var ( + cfg smoke.Config + logLevel logging.Level + logFormat logging.Format + withTimeout time.Duration + ) + + cfg.RegisterFlags(flag.CommandLine) + logLevel.RegisterFlags(flag.CommandLine) + logFormat.RegisterFlags(flag.CommandLine) + flag.DurationVar(&withTimeout, "duration", time.Duration(0), "test duration") + flag.Parse() + + logger := util.NewLoggerFromLevel(logLevel, logFormat) + + ctx := context.Background() + if withTimeout > 0 { + var cancel context.CancelFunc + ctx, cancel = context.WithTimeout(ctx, withTimeout) + defer cancel() + level.Debug(logger).Log("msg", "running with duration", "duration", withTimeout.String()) + } + + level.Info(logger).Log("msg", "starting smoke test") + smokeTest, err := smoke.New(logger, cfg) + if err != nil { + level.Error(logger).Log("msg", "error constructing smoke test", "err", err) + os.Exit(1) + } + if err := smokeTest.Run(ctx); err != nil { + level.Error(logger).Log("msg", "smoke test run failure", "err", err) + os.Exit(1) + } +} From 801d5e8964be3b4f3ecd330f27ae5ce818ecc15a Mon Sep 17 00:00:00 2001 From: mattdurham Date: Fri, 25 Feb 2022 10:26:09 -0500 Subject: [PATCH 07/19] Main merge 2 (#1426) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update node_exporter dependency to v1.3.1 (#1228) * Add node_exporter to depcheck * update weaveworks/common dependency * map current release flags and changed defaults * documentation * revert accidental checkin * print out flags when node_exporter test fails to assist debugging * oops, i introduced some flags from master by mistake * Introduce experimental integrations revamp (#1198) * [dev.multiple-integrations] Enable present integrations by default, deprecate enabled field (#1062) * integrations: default to enabled by default * document deprecation of enabled * pkg/integrations: support *_configs field for integrations (#1130) Creates the basic code to unmarshal integrations from a YAML field called _configs, which is a slice of that integration. Note that this is NOT wired up to the integrations manager yet, and trying to run the agent with more than one integration of the same type will likely cause problems. * [dev.multiple-integrations] Prototype new integrations subsystem (#1142) * wip: prototype new integrations subsystem * implement Controller with basic logic for Integration and UpdateIntegration * Implement HTTPIntegration for Controller * decouple controller and subsystem * don't have controller implement integration slightly less smelly now * multiplexer integration * rely on boilerplate for multiplexing for now generics would be nice here * remove multiplex_integration.go Also a little code smelly. Instead of having integrations that run other integrations, I'm going to fall back to having only one controller. * introduce Subsystem, unexport Controller start wiring up things to Subsystem * introduce v2 agent integration to use for testing * start wiring metrics integrations * rename Options to Globals call a spade a spade * add subsystem options to globals * remove dead code * metricsutils: calculate self-scraping based on globals * complete HTTP target API * working example with agent integration * appease the linter * don't return an error when context to cancel an integration is closed * once again i am asking the linter to forgive my typos * fix bug where labels from individual targets were getting dropped at the API endpoint * pkg/config: fix broken test * finish unit tests for integrations v2 controller * metricsutil/metricshandler_integration: make job name unique Before this change, the job name would have collided when using multiple instances of the same integration. * ensure that global subsystem labels are injected into targets * integrations/v2: Infer target hostname from SD API host (#1175) * [dev.multiple-integrations] integrations/v2: allow shimming between v1 and v2 integrations. (#1179) * integrations/v2: allow shimming between v1 and v2 integrations. Shimming is done by changing how the integration registration works; a new RegisterDynamic was added that allows for creating Configs at runtime. Here be dragons; this should be removed whenever we no longer have a need for it. * fix lint * pkg/integrations/v2: use "RegisterLegacy" instead of a generic mechanism * fine, I won't add the deprecation notice if it will make the linter sad * pkg/integrations: re-align (#1181) This commit reverts 69ba2ddfa9483cc8ac6e010dd7abccd319580c80 in favor of allowing the new subsystem to handle multiple instances of integrations. This commit also removes the wal_truncate_frequency field from integrations as it is the only field from old integrations that does not have a current counterpart. * [dev.multiple-integrations] Hide integrations/v2 behind a feature flag (#1185) * feature flag wip * dynamically switch between integrations v1 and v2 default to v1. * pkg/integrations/versionselector to file in pkg/config * pkg/config: fix defaults for Integrations * pkg/config: use more generic way to unmarshal differently based on flag * add missing godoc comment * more comments * switch to deferred unmarshaling * remove unused Config field * simplify completeUnmarshal * do not perform lazy deferred unmarshaling * enable cadvisor by default * switch to using real feature flag * fix postgres_exporter * Merge main into dev.multiple-integrations (#1184) * Fix typo (#1141) * Traces: Improved pod association in PromSD processor (#1137) * Improve k8s pod association * Add tests * Changelog * typo * Add prom_sd_pod_association * Extend tests for pod associations * Docs for pod association config * Lint fixes * Move to unreleased * Add instrumentation recommendations * Remove uncessary constants * Improve tests * remote config with http(s) provider (#1143) * sample remote config code with http provider * use t.TempDir() in unit test * no need to clean up after T.TempDir() * use NewClientFromConfig and make caller responsible for calling SetDirectory * handle nil HTTPClientConfig * remove blank identifier assignment * pass basic auth command line flags for remote config * address pr nits * add expiremental flag * set loader inline * update changelog * add remote config section in docs * pr comment updates * announce patch releases for cve-2021-41090 (#1152) * Merge patch release to main (#1153) * Add secret type to sensitive values * Break out config tests to their own implementation. Also remove username has a sensitive value. * Update changelog * Fix failing test * Scrub secrets when marshaling instance configs * update for v0.21 * Updated changes from the merge. * Remove changelog * Scrub out receivers has ***receivers_scrubber***:null * obscure etcd/consul credentials * Update pkg/traces/config_test.go Co-authored-by: Robert Fratto * Update pkg/config/config.go * go fmt * Change to using custom object and return * Fix bad merge * [v0.21.2] toggle config endpoint (#19) * disable /-/config endpoint by default * disable scraping api get endpoint as well * fix new test * add test and rename flag Co-authored-by: Robert Fratto * Update version to v0.21.2 * Update defaults.go * fix /-/config endpoint * also fix non-pointer config bug * temporarily disable linting for release * fix lint errors Co-authored-by: Matt Durham Co-authored-by: Robert Lankford * Fix POSTGRES_EXPORTER_DATA_SOURCE_NAME usage for postgres_exporter (#1162) * Fix POSTGRES_EXPORTER_DATA_SOURCE_NAME usage for postgres_exporter A recent change broke the usage of POSTGRES_EXPORTER_DATA_SOURCE_NAME for the postgres_exporter. As the incorrect variable was checked in the if clause, it always raises an error. * changelog: keep feature -> enhancement -> bugfix order * postgres_exporter: add regression test Co-authored-by: f11r Co-authored-by: Robert Fratto * Fix syntax error in Jsonnet logs helper method (#1174) Signed-off-by: Nick Pillitteri * cAdvisor Integration (#1081) * Add cadvisor module * Begin creating common config for cadvisor * Don't export internal state * Finish config options for cadvisor * Set config options, and implement cAdvisor collectors * Linting * Buildflags for cadvisor only in linux * I R LEArN Build Tags * Don't zero value the zero value * Offload sketchy global var manipulation to the integrations Run func * Remove unused collectors * Lint * Create generic stub integration and use it for cadvisor * Lint * Final refactor of cAdvisor config for unsupported platforms. Pared down stub integrations. * Lint * Docs for cadvisor config * Update changelog * Update pkg/integrations/stub_integration.go Co-authored-by: Robert Fratto * Reorder changelog * Instance key clarity * Inclusive naming * Finish name changes Keep default disable metric list in sync with upstream Idiomatic golang * Hardcode disabled metrics for cadvisor Co-authored-by: Robert Fratto * Remove log-level flag from systemd unit file (#1177) * Upgrade to OTel v0.40.0 (#1176) * Upgrade to OTel v0.40.0 * Changelog * Add factories check * go mod tidy * config/features: create package to standardize experimental features (#1170) * config/features: create package to standardize experiemental features This commit introduces a new package, pkg/config/features, which allows defining a set of features and validating whether flags associated with those features are allowed to be set. Closes #1163 * update documentation (also s/enabled-features/enable-features) * Fix typo * Update pkg/config/features/features.go Co-authored-by: Robert Lankford Co-authored-by: Robert Lankford * enable cadvisor by default * switch to using real feature flag * fix postgres_exporter Co-authored-by: Ursula Kallio <73951760+osg-grafana@users.noreply.github.com> Co-authored-by: Mario Co-authored-by: Robert Lankford Co-authored-by: Matt Durham Co-authored-by: f11r Co-authored-by: f11r Co-authored-by: Nick Pillitteri <56quarters@users.noreply.github.com> Co-authored-by: Ryan Geyer Co-authored-by: Juraci Paixão Kröhling Co-authored-by: Robert Lankford * Revert "Merge main into dev.multiple-integrations (#1184)" (#1189) This reverts commit ad76ec54f9a781fc83d3e7001808c887f37833ff. * [dev.multiple-integrations] Revert breaking changes to existing integrations (#1191) * revert breaking changes to integrations v1 This commit reverts #1062 in favor of making breaking changes directly in integrations-next instead. The part of #1181 to remove `wal_truncate_frequency` has also been reverted. As part of this change, the enabled field is removed from the v2 common metrics configs, and v2 integrations can no longer be disabled. v2 integrations can only be disabled by removing them from the YAML. * integrations/v2: remove stale reference to ErrDisabled (fix typo too) * integrations/v2: bring in common config decoupling * [dev.multiple-integrations] Introduce autoscraper (#1195) * pkg/integrations/v2: introduce self-scraping * linting * [dev.multiple-integrations] Multiple instances of integrations (#1196) * multiple instances of integrations opt in relevant v1 integrations into supporting multiple instances * shims should check for instance key override * Document integrations-next (#1197) * document integrations-next * remove json tags since they make markdown unhappy * changelog * s/Run/RunIntegration * remove stale comment about integrations.controller purpose * create dedicated run method for instanceScraper * s/expoter/exporter/g * Document why an autoscrape.Scraper manages a set of per-instance scrapers * spell out prerequisite instead of pre-req * use go.uber.org/atomic to make the code a little easier to follow * remove started callback for running integration * use smaller interface for autoscrape Co-authored-by: Ursula Kallio <73951760+osg-grafana@users.noreply.github.com> Co-authored-by: Mario Co-authored-by: Robert Lankford Co-authored-by: Matt Durham Co-authored-by: f11r Co-authored-by: f11r Co-authored-by: Nick Pillitteri <56quarters@users.noreply.github.com> Co-authored-by: Ryan Geyer Co-authored-by: Juraci Paixão Kröhling Co-authored-by: Robert Lankford * Fix panic when using 'stdout' in automatic logging (#1233) * integrations-next: fix bug where v2 integrations were not being strictly unmarshaled (#1235) * Remove jsonnet vendor folders (#1222) * remove jsonnet vendor This adds all vendor folders into .gitignore and removes cached vendor files from the repository. Closes #1221 * Update scripts and instructions for jsonnet vendor removal * `make example-dashboards` will now also run `jb install` * k3d environment instructions now include `jb install` * smoke-test.bash will now run `jb install` prior to `tk apply` * Fix link to k3d example in DEVELOPERS.md (#1242) Signed-off-by: Paschalis Tsilias * Fix node_exporter upgrade docs (#1239) * Fix panic in automatic logging with stdout backend (#1243) * pkg/util: support custom yaml.Unmarshaler implementations for util.UnmarshalYAMLMerged (#1244) It's common for config types to have implement yaml.Unmarshaler for: * Applying defaults * Applying extra logic post-unmarshal If these config types were unmarshaled through util.UnmarshalYAMLMerged, the yaml.Unmarshaler implementation would never complete successfully, preventing the post-unmarshal logic from running. This issue was introduced in #1192, but went unnoticed until #1228 implemented yaml.Unmarshaler to perform field migrations. #1240 reported the issue. This commit fixes the bug by performing a second non-strict unmarshal to ensure that all input values unmarshal successfully, with the exception of unmarshal errors unrelated to unrecognized field names. This is hacky, but it's worthwhile noting that util.UnmarshalYAMLMerged is a temporary workaround needed for the integrations-next migration, and will eventually be removed. * Update k3d example grafana/grafonnet-lib version (#1246) Signed-off-by: Paschalis Tsilias * Create an e2e framework with support for running tests against k8s (#1234) * e2e: create an e2e framework with support for running tests against a k3d cluster * add new E2E drone job * E2E tests should pass when doing a release * sign drone.yml again * move e2e lint to different step that has golangci-lint installed * upgrade golangci-lint and go for e2e test * e2e: add gcc * E2E: install build-essential to get a working full gcc env * :( * e2e: support running from inside of docker * fix lint error * address review feedback * Operator: fix bug where /-/ready and /-/healthy always returned 404 (#1252) * operator: fix bug where /-/ready and /-/healthy always returned 404 controller-runtime must have at least one ready/healthy check for the endpoints to exist * fix lint error, use healthz.Ping * Make scraping-svc use the new `metrics:` key (#1259) Signed-off-by: Paschalis Tsilias * update prometheus dependency (#1260) * corrected typo (#1265) * Use RELEASE_TAG to choose between `:main` and `:latest` docker tags (#1264) * Use RELEASE_TAG to choose between `:main` and `:latest` docker tags Signed-off-by: Paschalis Tsilias * Use :main tag for images in smoke test Signed-off-by: Paschalis Tsilias * Set IMAGE_BRANCH_TAG env var in drone and actions pipelines Signed-off-by: Paschalis Tsilias * Remove quotes from Makefile variable Signed-off-by: Paschalis Tsilias * Remove force_release action Signed-off-by: Paschalis Tsilias * prepare for v0.22.0 release (#1266) * prepare for v0.22.0 release * remove E2E pipeline * Add basic testing framework for operator (#1268) * remove dedicated go.mod for e2e/ * move e2e/k8s to pkg/util/k8s * Migrate operator tests to pkg/util/k8s * remove dedicated e2e tests * allow skipping TestCluster in pkg/util/k8s * remove e2e/ * fix bad merge * fix order of make env args for windows * actually declare referenced docker volume * introduce pkg/util/subset for asserting subset of objects * refactor operator so it's testable * define basic integration test for operator * fix lint errors * fix invalid address in operator test config * Update release-note.md (#1267) * Set scrape User-Agent header during init (#1274) Signed-off-by: Paschalis Tsilias * Upgrade to Go 1.17 (#1278) * Upgrade to 1.17.6 in go.mod and Dockerfiles * Update CHANGELOG.md to mention the update * Update Go version in drone/actions pipelines * Update go.mod, go.sum files via * Re-sign drone.yml * Remove leading newline causing drone build to fail * Bump golangci-lint image to a version using Go 1.17 * Re-attempt to solve linter issue with new golangci-lint image * Remove suffix of exclude rules * Clean previous Go version before unpacking Go 1.17 * Also clean up previous Go versions in other steps * fix typo (#1284) * Use custom Go version in agent-operator Dockerfile (#1286) Signed-off-by: Paschalis Tsilias * pkg/operator: refactor resource hierarchy discovery (#1271) * pkg/operator: refactor resource hierarchy discovery This commit moves common logic related to discovering the resource hierarchy to pkg/operator/hierarchy. This new package requires less boilerplate, which the reconciler is updated to take advantage of. * remove unused code * test construction of resource hierarchy * add missing build constraints * small extra cleanup to use pointer package * review feedback * update agent-build-image for go 1.17 (#1287) (also use a consistent base image tag instead of latest) * Skip non-ready entries when listing instances (#1289) * Skip non-ready instances in LoadInstances() Signed-off-by: Paschalis Tsilias * Add changelog entry Co-authored-by: Robert Fratto * Fix panic in prom_sd_processor when address is empty (#1279) * Fix panic in prom_sd_processor when address is empty * Fix panic in prom_sd_processor when address is empty * Fix docs * Add test case * Lint * Move to unreleased * Operator: generate proxy_url for remote_write (#1298) * operator: generate proxy_url for remote_write * fix weird indentation in test * Use log format in traces subsystem (#1272) * Use log format in traces subsystem * Changelog * Undo unwanted change * Fix changelog entry * integrations-next: Add extra_labels to inject extra labels for an integration (#1312) * integrations-next: Add extra_labels to inject extra labels for an integration. * separate tests * Fix anchor link on operator docs (#1302) Signed-off-by: Paschalis Tsilias * updated config URL (#1304) The existing URL returns a 404: https://grafana.com/docs/agent/latest/getting-started/configuration/_index.md Updated to https://grafana.com/docs/agent/latest/configuration/ * Fix typo in node_exporter (#1325) * Allow remote_write URL credentials (#1329) * Bypass Prometheus password redaction Signed-off-by: Paschalis Tsilias * Add inline secret in existing test Signed-off-by: Paschalis Tsilias * Add changelog entry * Add to scrubbed testcase as well Signed-off-by: Paschalis Tsilias * Stop appending duplicate exemplars (#1316) * Add memExemplar in stripeSeries as first iteration Signed-off-by: Paschalis Tsilias * Add test for skipped duplicate exemplars; Simplify conditional Signed-off-by: Paschalis Tsilias * Add changelog entry; discard test errors * Move changelog entry Signed-off-by: Paschalis Tsilias * Add Benchmark for AppendExemplar Signed-off-by: Paschalis Tsilias * Discard error on added benchmark Signed-off-by: Paschalis Tsilias * Use original exemplar struct instead of custom memExemplar Signed-off-by: Paschalis Tsilias * Surround benchmark loop with start/stop timers and close test storage Signed-off-by: Paschalis Tsilias * Add comment about prepopulating exemplars on WAL startup Signed-off-by: Paschalis Tsilias * Wire in the totalAppendedExemplars metric Signed-off-by: Paschalis Tsilias * Make comment more discoverable Signed-off-by: Paschalis Tsilias * Make sure we're recording exemplars for non-nil series ref only Signed-off-by: Paschalis Tsilias * integrations-next: wait for integrations to exit after stopping them (#1318) * integrations-next: wait for integrations to exit after stopping them * fix lint errors * minor refactor * integrations-next: stop holding config mutex for entire reload * make controller.run authoritative over running integrations * fix log line * move running integrations into a dedicated worker pool * operator/hierarchy: stop using field selector when listing Secrets & ConfigMaps (#1340) The initial implementation of hierarchy.KeySelector injected a FieldSelector when listing Secrets and ConfigMaps to immediately return the single object being queried for. This causes a problem with the client generated by the controller-runtime framework, where the client is wrapped in a cache and field indexer (where only the namespace is indexed by default). This commit avoids using the field selector and the index lookup. The resulting behavior aligns more closely with discovering other resources in the hierarchy (i.e., ServiceMonitors), where the List call is also insufficient and needs post-processing via Matches to find the final list of resources. Given the controller-runtime client uses an informer for reads, all relevant Secrets and ConfigMaps are already in-memory anyway, and using the index for a faster List is a bit of an over-optimization at the moment. * Add dependabot to update go modules and github actions. (#1217) Signed-off-by: Tom Wilkie * smoke framework refactor (#1326) * Agent smoke test (#1291) * convert smoke script to go program * update build for agent-smoke * fix pr comments * use existing log helper package * refactor context cancel * update exit codes * use ticker * prefer oklog/run instead of errgroup * use nop logger * refactor task interface * remove functional options * log.With for task loggers * move smoke to tools * build smoke image, push to internal registry * move crow to tools * add gcr_admin secret * fix link to crow * add smoke libsonnet and use in local k3d smoke test * add deletePodBySelectorTask * scale smoke-test replica down after local test * refactor smoke Options to Config * update duration usage message * add some basic unit tests * newlines * pass mutation frequency and chaos frequency from smoke script * pull crow image from gcr * update smoke script * move monitoring to smoke libsonnet * move additional smoke resources needed in deployment tools * reference libsonnet files from grafana-agent dep * make drone * fix images in smoke script * get rid of extVars * update k3d example environment to reference etcd from new location * update smoke docker builds to use go1.17 * use pointer.Int64 * refactor smoke jsonnet (#1296) * add policy rule for list and delete pods (#1319) * refactor smoke.new function to take config object (#1327) * Apply suggestions from code review * Update production/tanka/grafana-agent/smoke/crow/main.libsonnet * Update production/tanka/grafana-agent/smoke/main.libsonnet * Update example/k3d/scripts/smoke-test.bash Co-authored-by: Robert Lankford * readme update (#1338) Co-authored-by: Robert Fratto * Correct link to the configuration (#1036) Co-authored-by: Robert Fratto * Add stale check Github Action (#1345) * Add a stale check GH action to run every 24 hours * remove old stale.yml file * add permissions to action * update the stale message to clarify when the stale label will get removed * Update .github/workflows/stale.yml * stale action: fix missing indent (#1346) * Fix mssql issue (#1351) * Add K8s Events integration (#1330) * Add K8s eventhandler integration (#1310) * Add docs and sample manifests to eventhandler integration (#1328) * Wait for cache to flush before returning * Clarify eventhandler docs (#1334) * Clarify docs * Update CHANGELOG.md * Review changes (#1349) * stale action: fix typo in label exemptions (#1347) * update withVolumesMixin for agent jsonnet (#1358) Signed-off-by: Robbie Lankford * Configure cluster label using logs client external_labels param (#1357) * Configure cluster label using logs client external_labels param * Update CHANGELOG.md * add password file and basic auth round tripper in crow (#1361) * add password file and basic auth round tripper in crow * add ca-certificates in crow image * add orgID flag * update help text * default send_exemplars to true in remote_write (#1352) Signed-off-by: Robbie Lankford * Update eventhandler labels (#1368) * Update eventhandler integration labels * Update CHANGELOG * Remove unnecessary kind label * update changelog (#1374) Remove BUGFIX entries that fix a bug introduced by main (i.e., bugs which were never part of a release) * Prepare for release of v0.23.0 (#1377) * Update version references * Fix fat-fingered delete; Remove mention of upgrade Go * RFC: Design in the open (#1055) * rfc: first draft of RFC0001 * add placeholder for PR * update PR link * Update docs/rfcs/0001-designing-in-the-open.md Co-authored-by: Robert Lankford * Update docs/rfcs/0001-designing-in-the-open.md Co-authored-by: Robert Lankford * clarify "designing in the open" is best-effort * update 0001 * fix dead link in production/README.md * add recommended sections for RFC proposals * describe the process for approving a proposal * ignore RFC template in link checker * Update docs/rfcs/0001-designing-in-the-open.md Co-authored-by: Richard Hartmann * Update docs/rfcs/0001-designing-in-the-open.md Co-authored-by: Richard Hartmann * do my nitty 80-char line length limit change * indent pros/cons to a single section * document process for superseding RFCs * remove RFC mutability requirement * add extra flavor around not recommending google docs * require Google Doc -> RFC conversion * move new files Co-authored-by: Robert Lankford Co-authored-by: Richard Hartmann * Add Grafana Labs SECURITY.md (#1356) Signed-off-by: Richard Hartmann * Add readiness check to metrics component (#1369) * PR Base Signed-off-by: Paschalis Tsilias * Fix autoscrape's mockInstance Signed-off-by: Paschalis Tsilias * Wire in atomic readiness check Co-authored-by: Robert Fratto * Add CHANGELOG.md entry Signed-off-by: Paschalis Tsilias Co-authored-by: Robert Fratto * Reference page to download windows installer (#1372) Fixes #1366 * fix typo in node_exporter_config (#1389) which should be `privileged` instead of `priviliged` * Add option for Operator to pass arguments to GrafanaAgent #1227 (#1248) * 1250 oauth2 tracing (#1386) * Add oauth support for trace Otel trace exporter via opentelemetry-collector-contrib oauth2clientauthextension * start extensions on collector instance startup fix decoding to otelconfig build extensions add oauth extension to service map * Update traces config documentation * lint fixes * fix godoc comments * pass exporter index directly to exporter name generator * PR feedback; Update Changelog * sort extensions when sorting pipelines for testing determinism * README: Fix link to agent logo (#1396) * update MAINTAINERS.md (#1402) * add smoke alerts to mixin; move local alerts into examples dir (#1397) * add smoke alerts to mixin; move local alerts into examples dir * add podPrefix for smoke test * podPrefix in libsonnet config * [RFC] Integrations in Grafana Agent Operator (#1224) * rfc: integrations in grafana agent operator Supersedes #883 * add missing links * Apply suggestions from code review Co-authored-by: Florian Klink Co-authored-by: Robert Lankford * clarify how many daemonsets/deployments/service/secrets are created * add example of defining secrets * try defining integrations * s/IntegrationsMonitor/IntegrationMonitor/g * simplify proposal * add alternatives * remove old reference to `hasMetrics` field * document example generated agent configuration file * assign ID RFC-0002 * add missing PR link Co-authored-by: Florian Klink Co-authored-by: Robert Lankford * add fake rw endpoint to smoke program (#1405) * fix alerts typo (#1407) * continuous delivery for smoke images (#1408) Signed-off-by: Robbie Lankford * fix continuous delivery job errors (#1409) Signed-off-by: Robbie Lankford * [operator] - Use _file variants for basic auth credentials. (#1411) * use password_file alternatives in operator config * update tests * reduce smoke alert noise (#1412) * reduce smoke alert noise Signed-off-by: Robbie Lankford * Update production/grafana-agent-mixin/alerts.libsonnet Co-authored-by: Robert Fratto * update cpu check comment Signed-off-by: Robbie Lankford * add minimum load threshold to cpu alert Co-authored-by: Robert Fratto * Clarify usage of instanceNamespaceSelector (#1413) * RFC-0001: Add status to RFC (#1391) * rfc-0001: add rules for when RFC PRs should be merged * use status field instead of merge to indicating state * Parametrize logs DaemonSet K8s manifests (#1420) * Parametrize logs daemonset K8s manifests * Update CHANGELOG.md * Extend linting configuration file (#1421) * Add depguard linter to reject packages we tend to avoid * Replace golint with revive, since golint is deprecated * Remove interfacer, which is deprecated with no replacement * Add makezero linter to detect misuse of make with append * Add tenv to prefer t.Setenv over os.Setenv in tests * Add whitespace to report unnecessary blank lines * Ignore test files for errcheck In addition to the above, the following changes were made: * Remove settings that just re-set default values, instead pointing to the website to retrieve defaults. * Simplify the errcheck rule to only include functions we actually need to ignore. * Merging again! Co-authored-by: Robert Fratto Co-authored-by: Ursula Kallio <73951760+osg-grafana@users.noreply.github.com> Co-authored-by: Mario Co-authored-by: Robert Lankford Co-authored-by: f11r Co-authored-by: f11r Co-authored-by: Nick Pillitteri <56quarters@users.noreply.github.com> Co-authored-by: Ryan Geyer Co-authored-by: Juraci Paixão Kröhling Co-authored-by: Robert Lankford Co-authored-by: Paschalis Tsilias Co-authored-by: Patrick Koenig Co-authored-by: DataPoints Co-authored-by: Alex <52292902+alexrudd2@users.noreply.github.com> Co-authored-by: Robert Fratto Co-authored-by: melGL <81323402+melgl@users.noreply.github.com> Co-authored-by: Tom Wilkie Co-authored-by: Joseph Woodward Co-authored-by: hanif Co-authored-by: Richard Hartmann Co-authored-by: laiwei Co-authored-by: Sam Co-authored-by: Chris Knutson Co-authored-by: Florian Klink Co-authored-by: Craig Peterson <192540+captncraig@users.noreply.github.com> --- go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go.mod b/go.mod index 39a302061c3c..768e6c44439c 100644 --- a/go.mod +++ b/go.mod @@ -54,7 +54,6 @@ require ( github.com/opentracing-contrib/go-stdlib v1.0.0 github.com/opentracing/opentracing-go v1.2.0 github.com/percona/mongodb_exporter v0.0.0-00010101000000-000000000000 - github.com/pkg/errors v0.9.1 github.com/prometheus-community/elasticsearch_exporter v1.2.1 github.com/prometheus-community/postgres_exporter v0.10.0 github.com/prometheus-community/windows_exporter v0.0.0-00010101000000-000000000000 @@ -325,6 +324,7 @@ require ( github.com/percona/exporter_shared v0.7.3 // indirect github.com/percona/percona-toolkit v0.0.0-20210803120725-d14d18a1bfb6 // indirect github.com/pierrec/lz4 v2.6.1+incompatible // indirect + github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/prometheus/client_model v0.2.0 // indirect github.com/prometheus/common/sigv4 v0.1.0 // indirect From 8fac860ddf9d0443aa038f9bd86f10b53ed0cc96 Mon Sep 17 00:00:00 2001 From: mattdurham Date: Fri, 25 Feb 2022 10:58:37 -0500 Subject: [PATCH 08/19] Main merge 2 (#1427) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update node_exporter dependency to v1.3.1 (#1228) * Add node_exporter to depcheck * update weaveworks/common dependency * map current release flags and changed defaults * documentation * revert accidental checkin * print out flags when node_exporter test fails to assist debugging * oops, i introduced some flags from master by mistake * Introduce experimental integrations revamp (#1198) * [dev.multiple-integrations] Enable present integrations by default, deprecate enabled field (#1062) * integrations: default to enabled by default * document deprecation of enabled * pkg/integrations: support *_configs field for integrations (#1130) Creates the basic code to unmarshal integrations from a YAML field called _configs, which is a slice of that integration. Note that this is NOT wired up to the integrations manager yet, and trying to run the agent with more than one integration of the same type will likely cause problems. * [dev.multiple-integrations] Prototype new integrations subsystem (#1142) * wip: prototype new integrations subsystem * implement Controller with basic logic for Integration and UpdateIntegration * Implement HTTPIntegration for Controller * decouple controller and subsystem * don't have controller implement integration slightly less smelly now * multiplexer integration * rely on boilerplate for multiplexing for now generics would be nice here * remove multiplex_integration.go Also a little code smelly. Instead of having integrations that run other integrations, I'm going to fall back to having only one controller. * introduce Subsystem, unexport Controller start wiring up things to Subsystem * introduce v2 agent integration to use for testing * start wiring metrics integrations * rename Options to Globals call a spade a spade * add subsystem options to globals * remove dead code * metricsutils: calculate self-scraping based on globals * complete HTTP target API * working example with agent integration * appease the linter * don't return an error when context to cancel an integration is closed * once again i am asking the linter to forgive my typos * fix bug where labels from individual targets were getting dropped at the API endpoint * pkg/config: fix broken test * finish unit tests for integrations v2 controller * metricsutil/metricshandler_integration: make job name unique Before this change, the job name would have collided when using multiple instances of the same integration. * ensure that global subsystem labels are injected into targets * integrations/v2: Infer target hostname from SD API host (#1175) * [dev.multiple-integrations] integrations/v2: allow shimming between v1 and v2 integrations. (#1179) * integrations/v2: allow shimming between v1 and v2 integrations. Shimming is done by changing how the integration registration works; a new RegisterDynamic was added that allows for creating Configs at runtime. Here be dragons; this should be removed whenever we no longer have a need for it. * fix lint * pkg/integrations/v2: use "RegisterLegacy" instead of a generic mechanism * fine, I won't add the deprecation notice if it will make the linter sad * pkg/integrations: re-align (#1181) This commit reverts 69ba2ddfa9483cc8ac6e010dd7abccd319580c80 in favor of allowing the new subsystem to handle multiple instances of integrations. This commit also removes the wal_truncate_frequency field from integrations as it is the only field from old integrations that does not have a current counterpart. * [dev.multiple-integrations] Hide integrations/v2 behind a feature flag (#1185) * feature flag wip * dynamically switch between integrations v1 and v2 default to v1. * pkg/integrations/versionselector to file in pkg/config * pkg/config: fix defaults for Integrations * pkg/config: use more generic way to unmarshal differently based on flag * add missing godoc comment * more comments * switch to deferred unmarshaling * remove unused Config field * simplify completeUnmarshal * do not perform lazy deferred unmarshaling * enable cadvisor by default * switch to using real feature flag * fix postgres_exporter * Merge main into dev.multiple-integrations (#1184) * Fix typo (#1141) * Traces: Improved pod association in PromSD processor (#1137) * Improve k8s pod association * Add tests * Changelog * typo * Add prom_sd_pod_association * Extend tests for pod associations * Docs for pod association config * Lint fixes * Move to unreleased * Add instrumentation recommendations * Remove uncessary constants * Improve tests * remote config with http(s) provider (#1143) * sample remote config code with http provider * use t.TempDir() in unit test * no need to clean up after T.TempDir() * use NewClientFromConfig and make caller responsible for calling SetDirectory * handle nil HTTPClientConfig * remove blank identifier assignment * pass basic auth command line flags for remote config * address pr nits * add expiremental flag * set loader inline * update changelog * add remote config section in docs * pr comment updates * announce patch releases for cve-2021-41090 (#1152) * Merge patch release to main (#1153) * Add secret type to sensitive values * Break out config tests to their own implementation. Also remove username has a sensitive value. * Update changelog * Fix failing test * Scrub secrets when marshaling instance configs * update for v0.21 * Updated changes from the merge. * Remove changelog * Scrub out receivers has ***receivers_scrubber***:null * obscure etcd/consul credentials * Update pkg/traces/config_test.go Co-authored-by: Robert Fratto * Update pkg/config/config.go * go fmt * Change to using custom object and return * Fix bad merge * [v0.21.2] toggle config endpoint (#19) * disable /-/config endpoint by default * disable scraping api get endpoint as well * fix new test * add test and rename flag Co-authored-by: Robert Fratto * Update version to v0.21.2 * Update defaults.go * fix /-/config endpoint * also fix non-pointer config bug * temporarily disable linting for release * fix lint errors Co-authored-by: Matt Durham Co-authored-by: Robert Lankford * Fix POSTGRES_EXPORTER_DATA_SOURCE_NAME usage for postgres_exporter (#1162) * Fix POSTGRES_EXPORTER_DATA_SOURCE_NAME usage for postgres_exporter A recent change broke the usage of POSTGRES_EXPORTER_DATA_SOURCE_NAME for the postgres_exporter. As the incorrect variable was checked in the if clause, it always raises an error. * changelog: keep feature -> enhancement -> bugfix order * postgres_exporter: add regression test Co-authored-by: f11r Co-authored-by: Robert Fratto * Fix syntax error in Jsonnet logs helper method (#1174) Signed-off-by: Nick Pillitteri * cAdvisor Integration (#1081) * Add cadvisor module * Begin creating common config for cadvisor * Don't export internal state * Finish config options for cadvisor * Set config options, and implement cAdvisor collectors * Linting * Buildflags for cadvisor only in linux * I R LEArN Build Tags * Don't zero value the zero value * Offload sketchy global var manipulation to the integrations Run func * Remove unused collectors * Lint * Create generic stub integration and use it for cadvisor * Lint * Final refactor of cAdvisor config for unsupported platforms. Pared down stub integrations. * Lint * Docs for cadvisor config * Update changelog * Update pkg/integrations/stub_integration.go Co-authored-by: Robert Fratto * Reorder changelog * Instance key clarity * Inclusive naming * Finish name changes Keep default disable metric list in sync with upstream Idiomatic golang * Hardcode disabled metrics for cadvisor Co-authored-by: Robert Fratto * Remove log-level flag from systemd unit file (#1177) * Upgrade to OTel v0.40.0 (#1176) * Upgrade to OTel v0.40.0 * Changelog * Add factories check * go mod tidy * config/features: create package to standardize experimental features (#1170) * config/features: create package to standardize experiemental features This commit introduces a new package, pkg/config/features, which allows defining a set of features and validating whether flags associated with those features are allowed to be set. Closes #1163 * update documentation (also s/enabled-features/enable-features) * Fix typo * Update pkg/config/features/features.go Co-authored-by: Robert Lankford Co-authored-by: Robert Lankford * enable cadvisor by default * switch to using real feature flag * fix postgres_exporter Co-authored-by: Ursula Kallio <73951760+osg-grafana@users.noreply.github.com> Co-authored-by: Mario Co-authored-by: Robert Lankford Co-authored-by: Matt Durham Co-authored-by: f11r Co-authored-by: f11r Co-authored-by: Nick Pillitteri <56quarters@users.noreply.github.com> Co-authored-by: Ryan Geyer Co-authored-by: Juraci Paixão Kröhling Co-authored-by: Robert Lankford * Revert "Merge main into dev.multiple-integrations (#1184)" (#1189) This reverts commit ad76ec54f9a781fc83d3e7001808c887f37833ff. * [dev.multiple-integrations] Revert breaking changes to existing integrations (#1191) * revert breaking changes to integrations v1 This commit reverts #1062 in favor of making breaking changes directly in integrations-next instead. The part of #1181 to remove `wal_truncate_frequency` has also been reverted. As part of this change, the enabled field is removed from the v2 common metrics configs, and v2 integrations can no longer be disabled. v2 integrations can only be disabled by removing them from the YAML. * integrations/v2: remove stale reference to ErrDisabled (fix typo too) * integrations/v2: bring in common config decoupling * [dev.multiple-integrations] Introduce autoscraper (#1195) * pkg/integrations/v2: introduce self-scraping * linting * [dev.multiple-integrations] Multiple instances of integrations (#1196) * multiple instances of integrations opt in relevant v1 integrations into supporting multiple instances * shims should check for instance key override * Document integrations-next (#1197) * document integrations-next * remove json tags since they make markdown unhappy * changelog * s/Run/RunIntegration * remove stale comment about integrations.controller purpose * create dedicated run method for instanceScraper * s/expoter/exporter/g * Document why an autoscrape.Scraper manages a set of per-instance scrapers * spell out prerequisite instead of pre-req * use go.uber.org/atomic to make the code a little easier to follow * remove started callback for running integration * use smaller interface for autoscrape Co-authored-by: Ursula Kallio <73951760+osg-grafana@users.noreply.github.com> Co-authored-by: Mario Co-authored-by: Robert Lankford Co-authored-by: Matt Durham Co-authored-by: f11r Co-authored-by: f11r Co-authored-by: Nick Pillitteri <56quarters@users.noreply.github.com> Co-authored-by: Ryan Geyer Co-authored-by: Juraci Paixão Kröhling Co-authored-by: Robert Lankford * Fix panic when using 'stdout' in automatic logging (#1233) * integrations-next: fix bug where v2 integrations were not being strictly unmarshaled (#1235) * Remove jsonnet vendor folders (#1222) * remove jsonnet vendor This adds all vendor folders into .gitignore and removes cached vendor files from the repository. Closes #1221 * Update scripts and instructions for jsonnet vendor removal * `make example-dashboards` will now also run `jb install` * k3d environment instructions now include `jb install` * smoke-test.bash will now run `jb install` prior to `tk apply` * Fix link to k3d example in DEVELOPERS.md (#1242) Signed-off-by: Paschalis Tsilias * Fix node_exporter upgrade docs (#1239) * Fix panic in automatic logging with stdout backend (#1243) * pkg/util: support custom yaml.Unmarshaler implementations for util.UnmarshalYAMLMerged (#1244) It's common for config types to have implement yaml.Unmarshaler for: * Applying defaults * Applying extra logic post-unmarshal If these config types were unmarshaled through util.UnmarshalYAMLMerged, the yaml.Unmarshaler implementation would never complete successfully, preventing the post-unmarshal logic from running. This issue was introduced in #1192, but went unnoticed until #1228 implemented yaml.Unmarshaler to perform field migrations. #1240 reported the issue. This commit fixes the bug by performing a second non-strict unmarshal to ensure that all input values unmarshal successfully, with the exception of unmarshal errors unrelated to unrecognized field names. This is hacky, but it's worthwhile noting that util.UnmarshalYAMLMerged is a temporary workaround needed for the integrations-next migration, and will eventually be removed. * Update k3d example grafana/grafonnet-lib version (#1246) Signed-off-by: Paschalis Tsilias * Create an e2e framework with support for running tests against k8s (#1234) * e2e: create an e2e framework with support for running tests against a k3d cluster * add new E2E drone job * E2E tests should pass when doing a release * sign drone.yml again * move e2e lint to different step that has golangci-lint installed * upgrade golangci-lint and go for e2e test * e2e: add gcc * E2E: install build-essential to get a working full gcc env * :( * e2e: support running from inside of docker * fix lint error * address review feedback * Operator: fix bug where /-/ready and /-/healthy always returned 404 (#1252) * operator: fix bug where /-/ready and /-/healthy always returned 404 controller-runtime must have at least one ready/healthy check for the endpoints to exist * fix lint error, use healthz.Ping * Make scraping-svc use the new `metrics:` key (#1259) Signed-off-by: Paschalis Tsilias * update prometheus dependency (#1260) * corrected typo (#1265) * Use RELEASE_TAG to choose between `:main` and `:latest` docker tags (#1264) * Use RELEASE_TAG to choose between `:main` and `:latest` docker tags Signed-off-by: Paschalis Tsilias * Use :main tag for images in smoke test Signed-off-by: Paschalis Tsilias * Set IMAGE_BRANCH_TAG env var in drone and actions pipelines Signed-off-by: Paschalis Tsilias * Remove quotes from Makefile variable Signed-off-by: Paschalis Tsilias * Remove force_release action Signed-off-by: Paschalis Tsilias * prepare for v0.22.0 release (#1266) * prepare for v0.22.0 release * remove E2E pipeline * Add basic testing framework for operator (#1268) * remove dedicated go.mod for e2e/ * move e2e/k8s to pkg/util/k8s * Migrate operator tests to pkg/util/k8s * remove dedicated e2e tests * allow skipping TestCluster in pkg/util/k8s * remove e2e/ * fix bad merge * fix order of make env args for windows * actually declare referenced docker volume * introduce pkg/util/subset for asserting subset of objects * refactor operator so it's testable * define basic integration test for operator * fix lint errors * fix invalid address in operator test config * Update release-note.md (#1267) * Set scrape User-Agent header during init (#1274) Signed-off-by: Paschalis Tsilias * Upgrade to Go 1.17 (#1278) * Upgrade to 1.17.6 in go.mod and Dockerfiles * Update CHANGELOG.md to mention the update * Update Go version in drone/actions pipelines * Update go.mod, go.sum files via * Re-sign drone.yml * Remove leading newline causing drone build to fail * Bump golangci-lint image to a version using Go 1.17 * Re-attempt to solve linter issue with new golangci-lint image * Remove suffix of exclude rules * Clean previous Go version before unpacking Go 1.17 * Also clean up previous Go versions in other steps * fix typo (#1284) * Use custom Go version in agent-operator Dockerfile (#1286) Signed-off-by: Paschalis Tsilias * pkg/operator: refactor resource hierarchy discovery (#1271) * pkg/operator: refactor resource hierarchy discovery This commit moves common logic related to discovering the resource hierarchy to pkg/operator/hierarchy. This new package requires less boilerplate, which the reconciler is updated to take advantage of. * remove unused code * test construction of resource hierarchy * add missing build constraints * small extra cleanup to use pointer package * review feedback * update agent-build-image for go 1.17 (#1287) (also use a consistent base image tag instead of latest) * Skip non-ready entries when listing instances (#1289) * Skip non-ready instances in LoadInstances() Signed-off-by: Paschalis Tsilias * Add changelog entry Co-authored-by: Robert Fratto * Fix panic in prom_sd_processor when address is empty (#1279) * Fix panic in prom_sd_processor when address is empty * Fix panic in prom_sd_processor when address is empty * Fix docs * Add test case * Lint * Move to unreleased * Operator: generate proxy_url for remote_write (#1298) * operator: generate proxy_url for remote_write * fix weird indentation in test * Use log format in traces subsystem (#1272) * Use log format in traces subsystem * Changelog * Undo unwanted change * Fix changelog entry * integrations-next: Add extra_labels to inject extra labels for an integration (#1312) * integrations-next: Add extra_labels to inject extra labels for an integration. * separate tests * Fix anchor link on operator docs (#1302) Signed-off-by: Paschalis Tsilias * updated config URL (#1304) The existing URL returns a 404: https://grafana.com/docs/agent/latest/getting-started/configuration/_index.md Updated to https://grafana.com/docs/agent/latest/configuration/ * Fix typo in node_exporter (#1325) * Allow remote_write URL credentials (#1329) * Bypass Prometheus password redaction Signed-off-by: Paschalis Tsilias * Add inline secret in existing test Signed-off-by: Paschalis Tsilias * Add changelog entry * Add to scrubbed testcase as well Signed-off-by: Paschalis Tsilias * Stop appending duplicate exemplars (#1316) * Add memExemplar in stripeSeries as first iteration Signed-off-by: Paschalis Tsilias * Add test for skipped duplicate exemplars; Simplify conditional Signed-off-by: Paschalis Tsilias * Add changelog entry; discard test errors * Move changelog entry Signed-off-by: Paschalis Tsilias * Add Benchmark for AppendExemplar Signed-off-by: Paschalis Tsilias * Discard error on added benchmark Signed-off-by: Paschalis Tsilias * Use original exemplar struct instead of custom memExemplar Signed-off-by: Paschalis Tsilias * Surround benchmark loop with start/stop timers and close test storage Signed-off-by: Paschalis Tsilias * Add comment about prepopulating exemplars on WAL startup Signed-off-by: Paschalis Tsilias * Wire in the totalAppendedExemplars metric Signed-off-by: Paschalis Tsilias * Make comment more discoverable Signed-off-by: Paschalis Tsilias * Make sure we're recording exemplars for non-nil series ref only Signed-off-by: Paschalis Tsilias * integrations-next: wait for integrations to exit after stopping them (#1318) * integrations-next: wait for integrations to exit after stopping them * fix lint errors * minor refactor * integrations-next: stop holding config mutex for entire reload * make controller.run authoritative over running integrations * fix log line * move running integrations into a dedicated worker pool * operator/hierarchy: stop using field selector when listing Secrets & ConfigMaps (#1340) The initial implementation of hierarchy.KeySelector injected a FieldSelector when listing Secrets and ConfigMaps to immediately return the single object being queried for. This causes a problem with the client generated by the controller-runtime framework, where the client is wrapped in a cache and field indexer (where only the namespace is indexed by default). This commit avoids using the field selector and the index lookup. The resulting behavior aligns more closely with discovering other resources in the hierarchy (i.e., ServiceMonitors), where the List call is also insufficient and needs post-processing via Matches to find the final list of resources. Given the controller-runtime client uses an informer for reads, all relevant Secrets and ConfigMaps are already in-memory anyway, and using the index for a faster List is a bit of an over-optimization at the moment. * Add dependabot to update go modules and github actions. (#1217) Signed-off-by: Tom Wilkie * smoke framework refactor (#1326) * Agent smoke test (#1291) * convert smoke script to go program * update build for agent-smoke * fix pr comments * use existing log helper package * refactor context cancel * update exit codes * use ticker * prefer oklog/run instead of errgroup * use nop logger * refactor task interface * remove functional options * log.With for task loggers * move smoke to tools * build smoke image, push to internal registry * move crow to tools * add gcr_admin secret * fix link to crow * add smoke libsonnet and use in local k3d smoke test * add deletePodBySelectorTask * scale smoke-test replica down after local test * refactor smoke Options to Config * update duration usage message * add some basic unit tests * newlines * pass mutation frequency and chaos frequency from smoke script * pull crow image from gcr * update smoke script * move monitoring to smoke libsonnet * move additional smoke resources needed in deployment tools * reference libsonnet files from grafana-agent dep * make drone * fix images in smoke script * get rid of extVars * update k3d example environment to reference etcd from new location * update smoke docker builds to use go1.17 * use pointer.Int64 * refactor smoke jsonnet (#1296) * add policy rule for list and delete pods (#1319) * refactor smoke.new function to take config object (#1327) * Apply suggestions from code review * Update production/tanka/grafana-agent/smoke/crow/main.libsonnet * Update production/tanka/grafana-agent/smoke/main.libsonnet * Update example/k3d/scripts/smoke-test.bash Co-authored-by: Robert Lankford * readme update (#1338) Co-authored-by: Robert Fratto * Correct link to the configuration (#1036) Co-authored-by: Robert Fratto * Add stale check Github Action (#1345) * Add a stale check GH action to run every 24 hours * remove old stale.yml file * add permissions to action * update the stale message to clarify when the stale label will get removed * Update .github/workflows/stale.yml * stale action: fix missing indent (#1346) * Fix mssql issue (#1351) * Add K8s Events integration (#1330) * Add K8s eventhandler integration (#1310) * Add docs and sample manifests to eventhandler integration (#1328) * Wait for cache to flush before returning * Clarify eventhandler docs (#1334) * Clarify docs * Update CHANGELOG.md * Review changes (#1349) * stale action: fix typo in label exemptions (#1347) * update withVolumesMixin for agent jsonnet (#1358) Signed-off-by: Robbie Lankford * Configure cluster label using logs client external_labels param (#1357) * Configure cluster label using logs client external_labels param * Update CHANGELOG.md * add password file and basic auth round tripper in crow (#1361) * add password file and basic auth round tripper in crow * add ca-certificates in crow image * add orgID flag * update help text * default send_exemplars to true in remote_write (#1352) Signed-off-by: Robbie Lankford * Update eventhandler labels (#1368) * Update eventhandler integration labels * Update CHANGELOG * Remove unnecessary kind label * update changelog (#1374) Remove BUGFIX entries that fix a bug introduced by main (i.e., bugs which were never part of a release) * Prepare for release of v0.23.0 (#1377) * Update version references * Fix fat-fingered delete; Remove mention of upgrade Go * RFC: Design in the open (#1055) * rfc: first draft of RFC0001 * add placeholder for PR * update PR link * Update docs/rfcs/0001-designing-in-the-open.md Co-authored-by: Robert Lankford * Update docs/rfcs/0001-designing-in-the-open.md Co-authored-by: Robert Lankford * clarify "designing in the open" is best-effort * update 0001 * fix dead link in production/README.md * add recommended sections for RFC proposals * describe the process for approving a proposal * ignore RFC template in link checker * Update docs/rfcs/0001-designing-in-the-open.md Co-authored-by: Richard Hartmann * Update docs/rfcs/0001-designing-in-the-open.md Co-authored-by: Richard Hartmann * do my nitty 80-char line length limit change * indent pros/cons to a single section * document process for superseding RFCs * remove RFC mutability requirement * add extra flavor around not recommending google docs * require Google Doc -> RFC conversion * move new files Co-authored-by: Robert Lankford Co-authored-by: Richard Hartmann * Add Grafana Labs SECURITY.md (#1356) Signed-off-by: Richard Hartmann * Add readiness check to metrics component (#1369) * PR Base Signed-off-by: Paschalis Tsilias * Fix autoscrape's mockInstance Signed-off-by: Paschalis Tsilias * Wire in atomic readiness check Co-authored-by: Robert Fratto * Add CHANGELOG.md entry Signed-off-by: Paschalis Tsilias Co-authored-by: Robert Fratto * Reference page to download windows installer (#1372) Fixes #1366 * fix typo in node_exporter_config (#1389) which should be `privileged` instead of `priviliged` * Add option for Operator to pass arguments to GrafanaAgent #1227 (#1248) * 1250 oauth2 tracing (#1386) * Add oauth support for trace Otel trace exporter via opentelemetry-collector-contrib oauth2clientauthextension * start extensions on collector instance startup fix decoding to otelconfig build extensions add oauth extension to service map * Update traces config documentation * lint fixes * fix godoc comments * pass exporter index directly to exporter name generator * PR feedback; Update Changelog * sort extensions when sorting pipelines for testing determinism * README: Fix link to agent logo (#1396) * update MAINTAINERS.md (#1402) * add smoke alerts to mixin; move local alerts into examples dir (#1397) * add smoke alerts to mixin; move local alerts into examples dir * add podPrefix for smoke test * podPrefix in libsonnet config * [RFC] Integrations in Grafana Agent Operator (#1224) * rfc: integrations in grafana agent operator Supersedes #883 * add missing links * Apply suggestions from code review Co-authored-by: Florian Klink Co-authored-by: Robert Lankford * clarify how many daemonsets/deployments/service/secrets are created * add example of defining secrets * try defining integrations * s/IntegrationsMonitor/IntegrationMonitor/g * simplify proposal * add alternatives * remove old reference to `hasMetrics` field * document example generated agent configuration file * assign ID RFC-0002 * add missing PR link Co-authored-by: Florian Klink Co-authored-by: Robert Lankford * add fake rw endpoint to smoke program (#1405) * fix alerts typo (#1407) * continuous delivery for smoke images (#1408) Signed-off-by: Robbie Lankford * fix continuous delivery job errors (#1409) Signed-off-by: Robbie Lankford * [operator] - Use _file variants for basic auth credentials. (#1411) * use password_file alternatives in operator config * update tests * reduce smoke alert noise (#1412) * reduce smoke alert noise Signed-off-by: Robbie Lankford * Update production/grafana-agent-mixin/alerts.libsonnet Co-authored-by: Robert Fratto * update cpu check comment Signed-off-by: Robbie Lankford * add minimum load threshold to cpu alert Co-authored-by: Robert Fratto * Clarify usage of instanceNamespaceSelector (#1413) * RFC-0001: Add status to RFC (#1391) * rfc-0001: add rules for when RFC PRs should be merged * use status field instead of merge to indicating state * Parametrize logs DaemonSet K8s manifests (#1420) * Parametrize logs daemonset K8s manifests * Update CHANGELOG.md * Extend linting configuration file (#1421) * Add depguard linter to reject packages we tend to avoid * Replace golint with revive, since golint is deprecated * Remove interfacer, which is deprecated with no replacement * Add makezero linter to detect misuse of make with append * Add tenv to prefer t.Setenv over os.Setenv in tests * Add whitespace to report unnecessary blank lines * Ignore test files for errcheck In addition to the above, the following changes were made: * Remove settings that just re-set default values, instead pointing to the website to retrieve defaults. * Simplify the errcheck rule to only include functions we actually need to ignore. * Merging again! Co-authored-by: Robert Fratto Co-authored-by: Ursula Kallio <73951760+osg-grafana@users.noreply.github.com> Co-authored-by: Mario Co-authored-by: Robert Lankford Co-authored-by: f11r Co-authored-by: f11r Co-authored-by: Nick Pillitteri <56quarters@users.noreply.github.com> Co-authored-by: Ryan Geyer Co-authored-by: Juraci Paixão Kröhling Co-authored-by: Robert Lankford Co-authored-by: Paschalis Tsilias Co-authored-by: Patrick Koenig Co-authored-by: DataPoints Co-authored-by: Alex <52292902+alexrudd2@users.noreply.github.com> Co-authored-by: Robert Fratto Co-authored-by: melGL <81323402+melgl@users.noreply.github.com> Co-authored-by: Tom Wilkie Co-authored-by: Joseph Woodward Co-authored-by: hanif Co-authored-by: Richard Hartmann Co-authored-by: laiwei Co-authored-by: Sam Co-authored-by: Chris Knutson Co-authored-by: Florian Klink Co-authored-by: Craig Peterson <192540+captncraig@users.noreply.github.com> From fc5130d2b8406fa40511e29c7bf28b4bd67086e6 Mon Sep 17 00:00:00 2001 From: mattdurham Date: Fri, 25 Feb 2022 11:16:30 -0500 Subject: [PATCH 09/19] Merge main 2 (#1428) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update node_exporter dependency to v1.3.1 (#1228) * Add node_exporter to depcheck * update weaveworks/common dependency * map current release flags and changed defaults * documentation * revert accidental checkin * print out flags when node_exporter test fails to assist debugging * oops, i introduced some flags from master by mistake * Introduce experimental integrations revamp (#1198) * [dev.multiple-integrations] Enable present integrations by default, deprecate enabled field (#1062) * integrations: default to enabled by default * document deprecation of enabled * pkg/integrations: support *_configs field for integrations (#1130) Creates the basic code to unmarshal integrations from a YAML field called _configs, which is a slice of that integration. Note that this is NOT wired up to the integrations manager yet, and trying to run the agent with more than one integration of the same type will likely cause problems. * [dev.multiple-integrations] Prototype new integrations subsystem (#1142) * wip: prototype new integrations subsystem * implement Controller with basic logic for Integration and UpdateIntegration * Implement HTTPIntegration for Controller * decouple controller and subsystem * don't have controller implement integration slightly less smelly now * multiplexer integration * rely on boilerplate for multiplexing for now generics would be nice here * remove multiplex_integration.go Also a little code smelly. Instead of having integrations that run other integrations, I'm going to fall back to having only one controller. * introduce Subsystem, unexport Controller start wiring up things to Subsystem * introduce v2 agent integration to use for testing * start wiring metrics integrations * rename Options to Globals call a spade a spade * add subsystem options to globals * remove dead code * metricsutils: calculate self-scraping based on globals * complete HTTP target API * working example with agent integration * appease the linter * don't return an error when context to cancel an integration is closed * once again i am asking the linter to forgive my typos * fix bug where labels from individual targets were getting dropped at the API endpoint * pkg/config: fix broken test * finish unit tests for integrations v2 controller * metricsutil/metricshandler_integration: make job name unique Before this change, the job name would have collided when using multiple instances of the same integration. * ensure that global subsystem labels are injected into targets * integrations/v2: Infer target hostname from SD API host (#1175) * [dev.multiple-integrations] integrations/v2: allow shimming between v1 and v2 integrations. (#1179) * integrations/v2: allow shimming between v1 and v2 integrations. Shimming is done by changing how the integration registration works; a new RegisterDynamic was added that allows for creating Configs at runtime. Here be dragons; this should be removed whenever we no longer have a need for it. * fix lint * pkg/integrations/v2: use "RegisterLegacy" instead of a generic mechanism * fine, I won't add the deprecation notice if it will make the linter sad * pkg/integrations: re-align (#1181) This commit reverts 69ba2ddfa9483cc8ac6e010dd7abccd319580c80 in favor of allowing the new subsystem to handle multiple instances of integrations. This commit also removes the wal_truncate_frequency field from integrations as it is the only field from old integrations that does not have a current counterpart. * [dev.multiple-integrations] Hide integrations/v2 behind a feature flag (#1185) * feature flag wip * dynamically switch between integrations v1 and v2 default to v1. * pkg/integrations/versionselector to file in pkg/config * pkg/config: fix defaults for Integrations * pkg/config: use more generic way to unmarshal differently based on flag * add missing godoc comment * more comments * switch to deferred unmarshaling * remove unused Config field * simplify completeUnmarshal * do not perform lazy deferred unmarshaling * enable cadvisor by default * switch to using real feature flag * fix postgres_exporter * Merge main into dev.multiple-integrations (#1184) * Fix typo (#1141) * Traces: Improved pod association in PromSD processor (#1137) * Improve k8s pod association * Add tests * Changelog * typo * Add prom_sd_pod_association * Extend tests for pod associations * Docs for pod association config * Lint fixes * Move to unreleased * Add instrumentation recommendations * Remove uncessary constants * Improve tests * remote config with http(s) provider (#1143) * sample remote config code with http provider * use t.TempDir() in unit test * no need to clean up after T.TempDir() * use NewClientFromConfig and make caller responsible for calling SetDirectory * handle nil HTTPClientConfig * remove blank identifier assignment * pass basic auth command line flags for remote config * address pr nits * add expiremental flag * set loader inline * update changelog * add remote config section in docs * pr comment updates * announce patch releases for cve-2021-41090 (#1152) * Merge patch release to main (#1153) * Add secret type to sensitive values * Break out config tests to their own implementation. Also remove username has a sensitive value. * Update changelog * Fix failing test * Scrub secrets when marshaling instance configs * update for v0.21 * Updated changes from the merge. * Remove changelog * Scrub out receivers has ***receivers_scrubber***:null * obscure etcd/consul credentials * Update pkg/traces/config_test.go Co-authored-by: Robert Fratto * Update pkg/config/config.go * go fmt * Change to using custom object and return * Fix bad merge * [v0.21.2] toggle config endpoint (#19) * disable /-/config endpoint by default * disable scraping api get endpoint as well * fix new test * add test and rename flag Co-authored-by: Robert Fratto * Update version to v0.21.2 * Update defaults.go * fix /-/config endpoint * also fix non-pointer config bug * temporarily disable linting for release * fix lint errors Co-authored-by: Matt Durham Co-authored-by: Robert Lankford * Fix POSTGRES_EXPORTER_DATA_SOURCE_NAME usage for postgres_exporter (#1162) * Fix POSTGRES_EXPORTER_DATA_SOURCE_NAME usage for postgres_exporter A recent change broke the usage of POSTGRES_EXPORTER_DATA_SOURCE_NAME for the postgres_exporter. As the incorrect variable was checked in the if clause, it always raises an error. * changelog: keep feature -> enhancement -> bugfix order * postgres_exporter: add regression test Co-authored-by: f11r Co-authored-by: Robert Fratto * Fix syntax error in Jsonnet logs helper method (#1174) Signed-off-by: Nick Pillitteri * cAdvisor Integration (#1081) * Add cadvisor module * Begin creating common config for cadvisor * Don't export internal state * Finish config options for cadvisor * Set config options, and implement cAdvisor collectors * Linting * Buildflags for cadvisor only in linux * I R LEArN Build Tags * Don't zero value the zero value * Offload sketchy global var manipulation to the integrations Run func * Remove unused collectors * Lint * Create generic stub integration and use it for cadvisor * Lint * Final refactor of cAdvisor config for unsupported platforms. Pared down stub integrations. * Lint * Docs for cadvisor config * Update changelog * Update pkg/integrations/stub_integration.go Co-authored-by: Robert Fratto * Reorder changelog * Instance key clarity * Inclusive naming * Finish name changes Keep default disable metric list in sync with upstream Idiomatic golang * Hardcode disabled metrics for cadvisor Co-authored-by: Robert Fratto * Remove log-level flag from systemd unit file (#1177) * Upgrade to OTel v0.40.0 (#1176) * Upgrade to OTel v0.40.0 * Changelog * Add factories check * go mod tidy * config/features: create package to standardize experimental features (#1170) * config/features: create package to standardize experiemental features This commit introduces a new package, pkg/config/features, which allows defining a set of features and validating whether flags associated with those features are allowed to be set. Closes #1163 * update documentation (also s/enabled-features/enable-features) * Fix typo * Update pkg/config/features/features.go Co-authored-by: Robert Lankford Co-authored-by: Robert Lankford * enable cadvisor by default * switch to using real feature flag * fix postgres_exporter Co-authored-by: Ursula Kallio <73951760+osg-grafana@users.noreply.github.com> Co-authored-by: Mario Co-authored-by: Robert Lankford Co-authored-by: Matt Durham Co-authored-by: f11r Co-authored-by: f11r Co-authored-by: Nick Pillitteri <56quarters@users.noreply.github.com> Co-authored-by: Ryan Geyer Co-authored-by: Juraci Paixão Kröhling Co-authored-by: Robert Lankford * Revert "Merge main into dev.multiple-integrations (#1184)" (#1189) This reverts commit ad76ec54f9a781fc83d3e7001808c887f37833ff. * [dev.multiple-integrations] Revert breaking changes to existing integrations (#1191) * revert breaking changes to integrations v1 This commit reverts #1062 in favor of making breaking changes directly in integrations-next instead. The part of #1181 to remove `wal_truncate_frequency` has also been reverted. As part of this change, the enabled field is removed from the v2 common metrics configs, and v2 integrations can no longer be disabled. v2 integrations can only be disabled by removing them from the YAML. * integrations/v2: remove stale reference to ErrDisabled (fix typo too) * integrations/v2: bring in common config decoupling * [dev.multiple-integrations] Introduce autoscraper (#1195) * pkg/integrations/v2: introduce self-scraping * linting * [dev.multiple-integrations] Multiple instances of integrations (#1196) * multiple instances of integrations opt in relevant v1 integrations into supporting multiple instances * shims should check for instance key override * Document integrations-next (#1197) * document integrations-next * remove json tags since they make markdown unhappy * changelog * s/Run/RunIntegration * remove stale comment about integrations.controller purpose * create dedicated run method for instanceScraper * s/expoter/exporter/g * Document why an autoscrape.Scraper manages a set of per-instance scrapers * spell out prerequisite instead of pre-req * use go.uber.org/atomic to make the code a little easier to follow * remove started callback for running integration * use smaller interface for autoscrape Co-authored-by: Ursula Kallio <73951760+osg-grafana@users.noreply.github.com> Co-authored-by: Mario Co-authored-by: Robert Lankford Co-authored-by: Matt Durham Co-authored-by: f11r Co-authored-by: f11r Co-authored-by: Nick Pillitteri <56quarters@users.noreply.github.com> Co-authored-by: Ryan Geyer Co-authored-by: Juraci Paixão Kröhling Co-authored-by: Robert Lankford * Fix panic when using 'stdout' in automatic logging (#1233) * integrations-next: fix bug where v2 integrations were not being strictly unmarshaled (#1235) * Remove jsonnet vendor folders (#1222) * remove jsonnet vendor This adds all vendor folders into .gitignore and removes cached vendor files from the repository. Closes #1221 * Update scripts and instructions for jsonnet vendor removal * `make example-dashboards` will now also run `jb install` * k3d environment instructions now include `jb install` * smoke-test.bash will now run `jb install` prior to `tk apply` * Fix link to k3d example in DEVELOPERS.md (#1242) Signed-off-by: Paschalis Tsilias * Fix node_exporter upgrade docs (#1239) * Fix panic in automatic logging with stdout backend (#1243) * pkg/util: support custom yaml.Unmarshaler implementations for util.UnmarshalYAMLMerged (#1244) It's common for config types to have implement yaml.Unmarshaler for: * Applying defaults * Applying extra logic post-unmarshal If these config types were unmarshaled through util.UnmarshalYAMLMerged, the yaml.Unmarshaler implementation would never complete successfully, preventing the post-unmarshal logic from running. This issue was introduced in #1192, but went unnoticed until #1228 implemented yaml.Unmarshaler to perform field migrations. #1240 reported the issue. This commit fixes the bug by performing a second non-strict unmarshal to ensure that all input values unmarshal successfully, with the exception of unmarshal errors unrelated to unrecognized field names. This is hacky, but it's worthwhile noting that util.UnmarshalYAMLMerged is a temporary workaround needed for the integrations-next migration, and will eventually be removed. * Update k3d example grafana/grafonnet-lib version (#1246) Signed-off-by: Paschalis Tsilias * Create an e2e framework with support for running tests against k8s (#1234) * e2e: create an e2e framework with support for running tests against a k3d cluster * add new E2E drone job * E2E tests should pass when doing a release * sign drone.yml again * move e2e lint to different step that has golangci-lint installed * upgrade golangci-lint and go for e2e test * e2e: add gcc * E2E: install build-essential to get a working full gcc env * :( * e2e: support running from inside of docker * fix lint error * address review feedback * Operator: fix bug where /-/ready and /-/healthy always returned 404 (#1252) * operator: fix bug where /-/ready and /-/healthy always returned 404 controller-runtime must have at least one ready/healthy check for the endpoints to exist * fix lint error, use healthz.Ping * Make scraping-svc use the new `metrics:` key (#1259) Signed-off-by: Paschalis Tsilias * update prometheus dependency (#1260) * corrected typo (#1265) * Use RELEASE_TAG to choose between `:main` and `:latest` docker tags (#1264) * Use RELEASE_TAG to choose between `:main` and `:latest` docker tags Signed-off-by: Paschalis Tsilias * Use :main tag for images in smoke test Signed-off-by: Paschalis Tsilias * Set IMAGE_BRANCH_TAG env var in drone and actions pipelines Signed-off-by: Paschalis Tsilias * Remove quotes from Makefile variable Signed-off-by: Paschalis Tsilias * Remove force_release action Signed-off-by: Paschalis Tsilias * prepare for v0.22.0 release (#1266) * prepare for v0.22.0 release * remove E2E pipeline * Add basic testing framework for operator (#1268) * remove dedicated go.mod for e2e/ * move e2e/k8s to pkg/util/k8s * Migrate operator tests to pkg/util/k8s * remove dedicated e2e tests * allow skipping TestCluster in pkg/util/k8s * remove e2e/ * fix bad merge * fix order of make env args for windows * actually declare referenced docker volume * introduce pkg/util/subset for asserting subset of objects * refactor operator so it's testable * define basic integration test for operator * fix lint errors * fix invalid address in operator test config * Update release-note.md (#1267) * Set scrape User-Agent header during init (#1274) Signed-off-by: Paschalis Tsilias * Upgrade to Go 1.17 (#1278) * Upgrade to 1.17.6 in go.mod and Dockerfiles * Update CHANGELOG.md to mention the update * Update Go version in drone/actions pipelines * Update go.mod, go.sum files via * Re-sign drone.yml * Remove leading newline causing drone build to fail * Bump golangci-lint image to a version using Go 1.17 * Re-attempt to solve linter issue with new golangci-lint image * Remove suffix of exclude rules * Clean previous Go version before unpacking Go 1.17 * Also clean up previous Go versions in other steps * fix typo (#1284) * Use custom Go version in agent-operator Dockerfile (#1286) Signed-off-by: Paschalis Tsilias * pkg/operator: refactor resource hierarchy discovery (#1271) * pkg/operator: refactor resource hierarchy discovery This commit moves common logic related to discovering the resource hierarchy to pkg/operator/hierarchy. This new package requires less boilerplate, which the reconciler is updated to take advantage of. * remove unused code * test construction of resource hierarchy * add missing build constraints * small extra cleanup to use pointer package * review feedback * update agent-build-image for go 1.17 (#1287) (also use a consistent base image tag instead of latest) * Skip non-ready entries when listing instances (#1289) * Skip non-ready instances in LoadInstances() Signed-off-by: Paschalis Tsilias * Add changelog entry Co-authored-by: Robert Fratto * Fix panic in prom_sd_processor when address is empty (#1279) * Fix panic in prom_sd_processor when address is empty * Fix panic in prom_sd_processor when address is empty * Fix docs * Add test case * Lint * Move to unreleased * Operator: generate proxy_url for remote_write (#1298) * operator: generate proxy_url for remote_write * fix weird indentation in test * Use log format in traces subsystem (#1272) * Use log format in traces subsystem * Changelog * Undo unwanted change * Fix changelog entry * integrations-next: Add extra_labels to inject extra labels for an integration (#1312) * integrations-next: Add extra_labels to inject extra labels for an integration. * separate tests * Fix anchor link on operator docs (#1302) Signed-off-by: Paschalis Tsilias * updated config URL (#1304) The existing URL returns a 404: https://grafana.com/docs/agent/latest/getting-started/configuration/_index.md Updated to https://grafana.com/docs/agent/latest/configuration/ * Fix typo in node_exporter (#1325) * Allow remote_write URL credentials (#1329) * Bypass Prometheus password redaction Signed-off-by: Paschalis Tsilias * Add inline secret in existing test Signed-off-by: Paschalis Tsilias * Add changelog entry * Add to scrubbed testcase as well Signed-off-by: Paschalis Tsilias * Stop appending duplicate exemplars (#1316) * Add memExemplar in stripeSeries as first iteration Signed-off-by: Paschalis Tsilias * Add test for skipped duplicate exemplars; Simplify conditional Signed-off-by: Paschalis Tsilias * Add changelog entry; discard test errors * Move changelog entry Signed-off-by: Paschalis Tsilias * Add Benchmark for AppendExemplar Signed-off-by: Paschalis Tsilias * Discard error on added benchmark Signed-off-by: Paschalis Tsilias * Use original exemplar struct instead of custom memExemplar Signed-off-by: Paschalis Tsilias * Surround benchmark loop with start/stop timers and close test storage Signed-off-by: Paschalis Tsilias * Add comment about prepopulating exemplars on WAL startup Signed-off-by: Paschalis Tsilias * Wire in the totalAppendedExemplars metric Signed-off-by: Paschalis Tsilias * Make comment more discoverable Signed-off-by: Paschalis Tsilias * Make sure we're recording exemplars for non-nil series ref only Signed-off-by: Paschalis Tsilias * integrations-next: wait for integrations to exit after stopping them (#1318) * integrations-next: wait for integrations to exit after stopping them * fix lint errors * minor refactor * integrations-next: stop holding config mutex for entire reload * make controller.run authoritative over running integrations * fix log line * move running integrations into a dedicated worker pool * operator/hierarchy: stop using field selector when listing Secrets & ConfigMaps (#1340) The initial implementation of hierarchy.KeySelector injected a FieldSelector when listing Secrets and ConfigMaps to immediately return the single object being queried for. This causes a problem with the client generated by the controller-runtime framework, where the client is wrapped in a cache and field indexer (where only the namespace is indexed by default). This commit avoids using the field selector and the index lookup. The resulting behavior aligns more closely with discovering other resources in the hierarchy (i.e., ServiceMonitors), where the List call is also insufficient and needs post-processing via Matches to find the final list of resources. Given the controller-runtime client uses an informer for reads, all relevant Secrets and ConfigMaps are already in-memory anyway, and using the index for a faster List is a bit of an over-optimization at the moment. * Add dependabot to update go modules and github actions. (#1217) Signed-off-by: Tom Wilkie * smoke framework refactor (#1326) * Agent smoke test (#1291) * convert smoke script to go program * update build for agent-smoke * fix pr comments * use existing log helper package * refactor context cancel * update exit codes * use ticker * prefer oklog/run instead of errgroup * use nop logger * refactor task interface * remove functional options * log.With for task loggers * move smoke to tools * build smoke image, push to internal registry * move crow to tools * add gcr_admin secret * fix link to crow * add smoke libsonnet and use in local k3d smoke test * add deletePodBySelectorTask * scale smoke-test replica down after local test * refactor smoke Options to Config * update duration usage message * add some basic unit tests * newlines * pass mutation frequency and chaos frequency from smoke script * pull crow image from gcr * update smoke script * move monitoring to smoke libsonnet * move additional smoke resources needed in deployment tools * reference libsonnet files from grafana-agent dep * make drone * fix images in smoke script * get rid of extVars * update k3d example environment to reference etcd from new location * update smoke docker builds to use go1.17 * use pointer.Int64 * refactor smoke jsonnet (#1296) * add policy rule for list and delete pods (#1319) * refactor smoke.new function to take config object (#1327) * Apply suggestions from code review * Update production/tanka/grafana-agent/smoke/crow/main.libsonnet * Update production/tanka/grafana-agent/smoke/main.libsonnet * Update example/k3d/scripts/smoke-test.bash Co-authored-by: Robert Lankford * readme update (#1338) Co-authored-by: Robert Fratto * Correct link to the configuration (#1036) Co-authored-by: Robert Fratto * Add stale check Github Action (#1345) * Add a stale check GH action to run every 24 hours * remove old stale.yml file * add permissions to action * update the stale message to clarify when the stale label will get removed * Update .github/workflows/stale.yml * stale action: fix missing indent (#1346) * Fix mssql issue (#1351) * Add K8s Events integration (#1330) * Add K8s eventhandler integration (#1310) * Add docs and sample manifests to eventhandler integration (#1328) * Wait for cache to flush before returning * Clarify eventhandler docs (#1334) * Clarify docs * Update CHANGELOG.md * Review changes (#1349) * stale action: fix typo in label exemptions (#1347) * update withVolumesMixin for agent jsonnet (#1358) Signed-off-by: Robbie Lankford * Configure cluster label using logs client external_labels param (#1357) * Configure cluster label using logs client external_labels param * Update CHANGELOG.md * add password file and basic auth round tripper in crow (#1361) * add password file and basic auth round tripper in crow * add ca-certificates in crow image * add orgID flag * update help text * default send_exemplars to true in remote_write (#1352) Signed-off-by: Robbie Lankford * Update eventhandler labels (#1368) * Update eventhandler integration labels * Update CHANGELOG * Remove unnecessary kind label * update changelog (#1374) Remove BUGFIX entries that fix a bug introduced by main (i.e., bugs which were never part of a release) * Prepare for release of v0.23.0 (#1377) * Update version references * Fix fat-fingered delete; Remove mention of upgrade Go * RFC: Design in the open (#1055) * rfc: first draft of RFC0001 * add placeholder for PR * update PR link * Update docs/rfcs/0001-designing-in-the-open.md Co-authored-by: Robert Lankford * Update docs/rfcs/0001-designing-in-the-open.md Co-authored-by: Robert Lankford * clarify "designing in the open" is best-effort * update 0001 * fix dead link in production/README.md * add recommended sections for RFC proposals * describe the process for approving a proposal * ignore RFC template in link checker * Update docs/rfcs/0001-designing-in-the-open.md Co-authored-by: Richard Hartmann * Update docs/rfcs/0001-designing-in-the-open.md Co-authored-by: Richard Hartmann * do my nitty 80-char line length limit change * indent pros/cons to a single section * document process for superseding RFCs * remove RFC mutability requirement * add extra flavor around not recommending google docs * require Google Doc -> RFC conversion * move new files Co-authored-by: Robert Lankford Co-authored-by: Richard Hartmann * Add Grafana Labs SECURITY.md (#1356) Signed-off-by: Richard Hartmann * Add readiness check to metrics component (#1369) * PR Base Signed-off-by: Paschalis Tsilias * Fix autoscrape's mockInstance Signed-off-by: Paschalis Tsilias * Wire in atomic readiness check Co-authored-by: Robert Fratto * Add CHANGELOG.md entry Signed-off-by: Paschalis Tsilias Co-authored-by: Robert Fratto * Reference page to download windows installer (#1372) Fixes #1366 * fix typo in node_exporter_config (#1389) which should be `privileged` instead of `priviliged` * Add option for Operator to pass arguments to GrafanaAgent #1227 (#1248) * 1250 oauth2 tracing (#1386) * Add oauth support for trace Otel trace exporter via opentelemetry-collector-contrib oauth2clientauthextension * start extensions on collector instance startup fix decoding to otelconfig build extensions add oauth extension to service map * Update traces config documentation * lint fixes * fix godoc comments * pass exporter index directly to exporter name generator * PR feedback; Update Changelog * sort extensions when sorting pipelines for testing determinism * README: Fix link to agent logo (#1396) * update MAINTAINERS.md (#1402) * add smoke alerts to mixin; move local alerts into examples dir (#1397) * add smoke alerts to mixin; move local alerts into examples dir * add podPrefix for smoke test * podPrefix in libsonnet config * [RFC] Integrations in Grafana Agent Operator (#1224) * rfc: integrations in grafana agent operator Supersedes #883 * add missing links * Apply suggestions from code review Co-authored-by: Florian Klink Co-authored-by: Robert Lankford * clarify how many daemonsets/deployments/service/secrets are created * add example of defining secrets * try defining integrations * s/IntegrationsMonitor/IntegrationMonitor/g * simplify proposal * add alternatives * remove old reference to `hasMetrics` field * document example generated agent configuration file * assign ID RFC-0002 * add missing PR link Co-authored-by: Florian Klink Co-authored-by: Robert Lankford * add fake rw endpoint to smoke program (#1405) * fix alerts typo (#1407) * continuous delivery for smoke images (#1408) Signed-off-by: Robbie Lankford * fix continuous delivery job errors (#1409) Signed-off-by: Robbie Lankford * [operator] - Use _file variants for basic auth credentials. (#1411) * use password_file alternatives in operator config * update tests * reduce smoke alert noise (#1412) * reduce smoke alert noise Signed-off-by: Robbie Lankford * Update production/grafana-agent-mixin/alerts.libsonnet Co-authored-by: Robert Fratto * update cpu check comment Signed-off-by: Robbie Lankford * add minimum load threshold to cpu alert Co-authored-by: Robert Fratto * Clarify usage of instanceNamespaceSelector (#1413) * RFC-0001: Add status to RFC (#1391) * rfc-0001: add rules for when RFC PRs should be merged * use status field instead of merge to indicating state * Parametrize logs DaemonSet K8s manifests (#1420) * Parametrize logs daemonset K8s manifests * Update CHANGELOG.md * Extend linting configuration file (#1421) * Add depguard linter to reject packages we tend to avoid * Replace golint with revive, since golint is deprecated * Remove interfacer, which is deprecated with no replacement * Add makezero linter to detect misuse of make with append * Add tenv to prefer t.Setenv over os.Setenv in tests * Add whitespace to report unnecessary blank lines * Ignore test files for errcheck In addition to the above, the following changes were made: * Remove settings that just re-set default values, instead pointing to the website to retrieve defaults. * Simplify the errcheck rule to only include functions we actually need to ignore. Co-authored-by: Robert Fratto Co-authored-by: Ursula Kallio <73951760+osg-grafana@users.noreply.github.com> Co-authored-by: Mario Co-authored-by: Robert Lankford Co-authored-by: f11r Co-authored-by: f11r Co-authored-by: Nick Pillitteri <56quarters@users.noreply.github.com> Co-authored-by: Ryan Geyer Co-authored-by: Juraci Paixão Kröhling Co-authored-by: Robert Lankford Co-authored-by: Paschalis Tsilias Co-authored-by: Patrick Koenig Co-authored-by: DataPoints Co-authored-by: Alex <52292902+alexrudd2@users.noreply.github.com> Co-authored-by: Robert Fratto Co-authored-by: melGL <81323402+melgl@users.noreply.github.com> Co-authored-by: Tom Wilkie Co-authored-by: Joseph Woodward Co-authored-by: hanif Co-authored-by: Richard Hartmann Co-authored-by: laiwei Co-authored-by: Sam Co-authored-by: Chris Knutson Co-authored-by: Florian Klink Co-authored-by: Craig Peterson <192540+captncraig@users.noreply.github.com> From e21cb89c6c1b6561b68a5272dcdab1167c71c73f Mon Sep 17 00:00:00 2001 From: Matt Durham Date: Fri, 25 Feb 2022 11:28:49 -0500 Subject: [PATCH 10/19] Revert "Dyn main merge (#1423)" This reverts commit 4c2e07720022a655a0ffa45b05829b26d216145c. --- .drone/drone.yml | 25 +- .github/dependabot.yml | 11 - .github/stale.yml | 26 ++ .github/workflows/markdown.links.config.json | 3 - .github/workflows/publish.yml | 4 +- .github/workflows/stale.yml | 38 -- .gitignore | 1 - .golangci.yml | 131 +++--- CHANGELOG.md | 36 +- MAINTAINERS.md | 13 +- Makefile | 22 +- README.md | 2 +- SECURITY.md | 20 - cmd/agent/entrypoint.go | 8 +- cmd/agentctl/main.go | 1 + .../grafana-agent-crow}/Dockerfile | 4 +- .../grafana-agent-crow}/Dockerfile.buildx | 5 +- .../crow => cmd/grafana-agent-crow}/README.md | 0 .../crow => cmd/grafana-agent-crow}/main.go | 0 docs/README.md | 27 +- docs/{user => }/_index.md | 0 docs/{user => }/api/_index.md | 0 docs/{user => }/assets/logo_and_name.png | Bin docs/{user => }/configuration/_index.md | 0 .../configuration/integrations/_index.md | 0 .../integrations/cadvisor-config.md | 0 .../integrations/consul-exporter-config.md | 0 .../integrations/dnsmasq-exporter-config.md | 0 .../elasticsearch-exporter-config.md | 0 .../integrations/github-exporter-config.md | 0 .../integrations/kafka-exporter-config.md | 0 .../integrations/memcached-exporter-config.md | 0 .../integrations/mongodb_exporter-config.md | 0 .../integrations/mysqld-exporter-config.md | 0 .../integrations/node-exporter-config.md | 6 +- .../integrations/postgres-exporter-config.md | 0 .../integrations/process-exporter-config.md | 4 +- .../integrations/redis-exporter-config.md | 0 .../integrations/statsd-exporter-config.md | 0 .../integrations/windows-exporter-config.md | 0 docs/{user => }/configuration/logs-config.md | 0 .../configuration/metrics-config.md | 0 .../{user => }/configuration/server-config.md | 0 .../{user => }/configuration/traces-config.md | 25 -- docs/{user => }/getting-started/_index.md | 2 +- .../getting-started/create-config-file.md | 4 +- .../install-agent-on-windows.md | 8 +- docs/{user => }/operation-guide/_index.md | 0 docs/{user => }/operator/_index.md | 0 .../operator/add-custom-scrape-jobs.md | 0 docs/{user => }/operator/architecture.md | 0 .../operator/custom-resource-quickstart.md | 4 +- docs/{user => }/operator/getting-started.md | 4 +- .../operator/helm-getting-started.md | 0 docs/rfcs/0000-template.md | 6 - docs/rfcs/0001-designing-in-the-open.md | 160 ------- docs/rfcs/0002-integrations-in-operator.md | 300 ------------- docs/{user => }/scraping-service/_index.md | 0 docs/{user => }/upgrade-guide/_index.md | 0 docs/user/README.md | 21 - .../integrations/integrations-next/_index.md | 173 ------- .../integrations-next/eventhandler-config.md | 301 ------------- example/k3d/README.md | 11 +- example/k3d/environment/main.jsonnet | 2 +- example/k3d/jsonnetfile.lock.json | 4 +- .../k3d/lib}/avalanche/main.libsonnet | 0 .../k3d/lib}/crow/main.libsonnet | 6 +- .../k3d/lib}/etcd/main.libsonnet | 0 example/k3d/scripts/smoke-test.bash | 49 +- example/k3d/smoke/main.jsonnet | 61 +-- example/k3d/smoke/monitoring/main.jsonnet | 1 - go.mod | 8 +- go.sum | 14 +- pkg/config/config.go | 4 +- pkg/config/config_test.go | 27 +- pkg/config/dynamicloader_configs_test.go | 2 + pkg/config/dynamicloader_template_test.go | 4 +- pkg/crow/crow.go | 26 +- pkg/integrations/cadvisor/common.go | 2 +- .../dnsmasq_exporter/dnsmasq_exporter.go | 2 +- .../github_exporter/github_exporter.go | 3 +- pkg/integrations/install/install.go | 1 - pkg/integrations/manager_test.go | 12 +- .../memcached_exporter/memcached_exporter.go | 2 +- .../mongodb_exporter/mongodb_exporter.go | 1 + .../postgres_exporter/postgres_test.go | 1 + .../redis_exporter/redis_exporter.go | 4 +- .../redis_exporter/redis_exporter_test.go | 2 + pkg/integrations/v2/autoscrape/autoscrape.go | 4 +- .../v2/autoscrape/autoscrape_test.go | 14 +- pkg/integrations/v2/common/metrics.go | 2 - pkg/integrations/v2/controller.go | 177 ++++++-- .../v2/controller_metricsintegration_test.go | 39 +- pkg/integrations/v2/controller_test.go | 55 ++- .../v2/eventhandler/eventhandler.go | 424 ------------------ .../v2/eventhandler/eventhandler_test.go | 24 - .../v2/eventhandler/integration.go | 69 --- .../eventhandler/testdata/eventhandler.cache | 1 - .../metricshandler_integration.go | 5 - .../metricshandler_integration_test.go | 82 ---- pkg/integrations/v2/subsystem_test.go | 1 + pkg/integrations/v2/workers.go | 122 ----- .../windows_exporter_windows.go | 2 +- pkg/metrics/agent.go | 22 - pkg/metrics/agent_test.go | 4 - pkg/metrics/cluster/cluster.go | 5 +- pkg/metrics/cluster/config_watcher_test.go | 1 + pkg/metrics/http_test.go | 20 +- pkg/metrics/instance/configstore/api_test.go | 1 - pkg/metrics/instance/configstore/remote.go | 4 +- pkg/metrics/instance/host_filter.go | 1 + pkg/metrics/instance/instance.go | 16 +- .../instance/instance_integration_test.go | 1 + pkg/metrics/instance/instance_test.go | 1 + pkg/metrics/instance/manager.go | 1 - pkg/metrics/instance/manager_test.go | 8 - pkg/metrics/instance/marshal.go | 2 - pkg/metrics/instance/marshal_test.go | 10 +- pkg/metrics/instance/noop.go | 5 - pkg/metrics/wal/series.go | 47 +- pkg/metrics/wal/wal.go | 46 +- pkg/metrics/wal/wal_test.go | 62 --- .../apis/monitoring/v1alpha1/types.go | 5 - pkg/operator/build_hierarchy.go | 2 +- pkg/operator/build_hierarchy_test.go | 27 +- pkg/operator/clientutil/merge.go | 9 +- pkg/operator/config/config_test.go | 8 +- pkg/operator/config/fs_importer.go | 1 + pkg/operator/config/metrics_templates_test.go | 4 +- .../component/metrics/remote_write.libsonnet | 4 +- pkg/operator/defaults.go | 1 - pkg/operator/hierarchy/selector.go | 2 + pkg/operator/reconciler_logs.go | 2 - pkg/operator/reconciler_metrics.go | 2 - pkg/operator/resources_logs.go | 1 - pkg/operator/resources_metrics.go | 6 - .../automaticloggingprocessor/factory.go | 2 +- pkg/traces/config.go | 125 +----- pkg/traces/config_test.go | 243 +--------- pkg/traces/instance.go | 54 +-- pkg/traces/internal/traceutils/server.go | 4 +- pkg/traces/noopreceiver/factory.go | 1 - pkg/traces/promsdprocessor/factory.go | 2 +- pkg/traces/remotewriteexporter/exporter.go | 2 +- .../remotewriteexporter/exporter_test.go | 10 +- pkg/traces/remotewriteexporter/factory.go | 2 +- pkg/traces/servicegraphprocessor/factory.go | 2 +- pkg/traces/servicegraphprocessor/processor.go | 1 + .../servicegraphprocessor/processor_test.go | 1 + pkg/traces/traces.go | 20 +- pkg/traces/traces_test.go | 4 +- pkg/util/logger.go | 17 +- pkg/util/strings.go | 15 - pkg/util/trigger_test.go | 1 + production/README.md | 4 +- .../grafana-agent-mixin/alerts.libsonnet | 115 ----- production/grafanacloud-install.sh | 2 +- production/kubernetes/agent-bare.yaml | 2 +- production/kubernetes/agent-loki.yaml | 8 +- production/kubernetes/agent-traces.yaml | 2 +- .../kubernetes/build/lib/version.libsonnet | 2 +- .../build/templates/loki/main.jsonnet | 2 +- production/kubernetes/install-bare.sh | 2 +- .../monitoring.grafana.com_grafanaagents.yaml | 5 - .../tanka/grafana-agent/smoke/main.libsonnet | 68 --- .../tanka/grafana-agent/v1/main.libsonnet | 4 +- .../grafana-agent/v2/internal/base.libsonnet | 4 +- .../v2/internal/syncer.libsonnet | 2 +- .../tanka/grafana-agent/v2/main.libsonnet | 7 +- tools/crow/.gitignore | 1 - tools/smoke/.gitignore | 1 - tools/smoke/Dockerfile | 23 - tools/smoke/Dockerfile.buildx | 32 -- tools/smoke/internal/smoke.go | 151 ------- tools/smoke/internal/tasks.go | 101 ----- tools/smoke/internal/tasks_test.go | 144 ------ tools/smoke/main.go | 49 -- 177 files changed, 580 insertions(+), 3653 deletions(-) delete mode 100644 .github/dependabot.yml create mode 100644 .github/stale.yml delete mode 100644 .github/workflows/stale.yml delete mode 100644 SECURITY.md rename {tools/crow => cmd/grafana-agent-crow}/Dockerfile (57%) rename {tools/crow => cmd/grafana-agent-crow}/Dockerfile.buildx (81%) rename {tools/crow => cmd/grafana-agent-crow}/README.md (100%) rename {tools/crow => cmd/grafana-agent-crow}/main.go (100%) rename docs/{user => }/_index.md (100%) rename docs/{user => }/api/_index.md (100%) rename docs/{user => }/assets/logo_and_name.png (100%) rename docs/{user => }/configuration/_index.md (100%) rename docs/{user => }/configuration/integrations/_index.md (100%) rename docs/{user => }/configuration/integrations/cadvisor-config.md (100%) rename docs/{user => }/configuration/integrations/consul-exporter-config.md (100%) rename docs/{user => }/configuration/integrations/dnsmasq-exporter-config.md (100%) rename docs/{user => }/configuration/integrations/elasticsearch-exporter-config.md (100%) rename docs/{user => }/configuration/integrations/github-exporter-config.md (100%) rename docs/{user => }/configuration/integrations/kafka-exporter-config.md (100%) rename docs/{user => }/configuration/integrations/memcached-exporter-config.md (100%) rename docs/{user => }/configuration/integrations/mongodb_exporter-config.md (100%) rename docs/{user => }/configuration/integrations/mysqld-exporter-config.md (100%) rename docs/{user => }/configuration/integrations/node-exporter-config.md (99%) rename docs/{user => }/configuration/integrations/postgres-exporter-config.md (100%) rename docs/{user => }/configuration/integrations/process-exporter-config.md (98%) rename docs/{user => }/configuration/integrations/redis-exporter-config.md (100%) rename docs/{user => }/configuration/integrations/statsd-exporter-config.md (100%) rename docs/{user => }/configuration/integrations/windows-exporter-config.md (100%) rename docs/{user => }/configuration/logs-config.md (100%) rename docs/{user => }/configuration/metrics-config.md (100%) rename docs/{user => }/configuration/server-config.md (100%) rename docs/{user => }/configuration/traces-config.md (91%) rename docs/{user => }/getting-started/_index.md (99%) rename docs/{user => }/getting-started/create-config-file.md (97%) rename docs/{user => }/getting-started/install-agent-on-windows.md (86%) rename docs/{user => }/operation-guide/_index.md (100%) rename docs/{user => }/operator/_index.md (100%) rename docs/{user => }/operator/add-custom-scrape-jobs.md (100%) rename docs/{user => }/operator/architecture.md (100%) rename docs/{user => }/operator/custom-resource-quickstart.md (96%) rename docs/{user => }/operator/getting-started.md (97%) rename docs/{user => }/operator/helm-getting-started.md (100%) delete mode 100644 docs/rfcs/0000-template.md delete mode 100644 docs/rfcs/0001-designing-in-the-open.md delete mode 100644 docs/rfcs/0002-integrations-in-operator.md rename docs/{user => }/scraping-service/_index.md (100%) rename docs/{user => }/upgrade-guide/_index.md (100%) delete mode 100644 docs/user/README.md delete mode 100644 docs/user/configuration/integrations/integrations-next/_index.md delete mode 100644 docs/user/configuration/integrations/integrations-next/eventhandler-config.md rename {production/tanka/grafana-agent/smoke => example/k3d/lib}/avalanche/main.libsonnet (100%) rename {production/tanka/grafana-agent/smoke => example/k3d/lib}/crow/main.libsonnet (77%) rename {production/tanka/grafana-agent/smoke => example/k3d/lib}/etcd/main.libsonnet (100%) delete mode 100644 pkg/integrations/v2/eventhandler/eventhandler.go delete mode 100644 pkg/integrations/v2/eventhandler/eventhandler_test.go delete mode 100644 pkg/integrations/v2/eventhandler/integration.go delete mode 100644 pkg/integrations/v2/eventhandler/testdata/eventhandler.cache delete mode 100644 pkg/integrations/v2/metricsutils/metricshandler_integration_test.go delete mode 100644 pkg/integrations/v2/workers.go delete mode 100644 pkg/util/strings.go delete mode 100644 production/tanka/grafana-agent/smoke/main.libsonnet delete mode 100644 tools/crow/.gitignore delete mode 100644 tools/smoke/.gitignore delete mode 100644 tools/smoke/Dockerfile delete mode 100644 tools/smoke/Dockerfile.buildx delete mode 100644 tools/smoke/internal/smoke.go delete mode 100644 tools/smoke/internal/tasks.go delete mode 100644 tools/smoke/internal/tasks_test.go delete mode 100644 tools/smoke/main.go diff --git a/.drone/drone.yml b/.drone/drone.yml index 5f294b0e0eb3..f9c7a9f5d9c5 100644 --- a/.drone/drone.yml +++ b/.drone/drone.yml @@ -16,7 +16,7 @@ trigger: steps: - name: lint - image: golangci/golangci-lint:v1.44 + image: golangci/golangci-lint:v1.43 commands: - apt-get update -y && apt-get install -y libsystemd-dev - make lint @@ -53,7 +53,7 @@ steps: - tar -C /usr/local -xzf go1.17.6.linux-amd64.tar.gz - rm go1.17.6.linux-amd64.tar.gz - export PATH=$PATH:/usr/local/go/bin - - make cmd/agent/agent cmd/agentctl/agentctl cmd/agent-operator/agent-operator tools/crow/grafana-agent-crow tools/smoke/grafana-agent-smoke + - make cmd/agent/agent cmd/agentctl/agentctl cmd/agent-operator/agent-operator cmd/grafana-agent-crow/grafana-agent-crow - make K8S_USE_DOCKER_NETWORK=1 DRONE=true BUILD_IN_CONTAINER=false test depends_on: - Lint @@ -113,11 +113,7 @@ steps: from_secret: DOCKER_LOGIN DOCKER_PASSWORD: from_secret: DOCKER_PASSWORD - GCR_CREDS: - from_secret: gcr_admin commands: - - mkdir -p $HOME/.docker - - printenv GCR_CREDS > $HOME/.docker/config.json - docker login -u $DOCKER_LOGIN -p $DOCKER_PASSWORD - apk update && apk add make bash wget git qemu - wget -q https://github.com/docker/buildx/releases/download/v0.5.1/buildx-v0.5.1.linux-amd64 @@ -132,7 +128,6 @@ steps: - make DRONE=true CROSS_BUILD=true BUILD_IN_CONTAINER=true RELEASE_BUILD=true agentctl-image - make DRONE=true CROSS_BUILD=true BUILD_IN_CONTAINER=true RELEASE_BUILD=true agent-operator-image - make DRONE=true CROSS_BUILD=true BUILD_IN_CONTAINER=true RELEASE_BUILD=true grafana-agent-crow-image - - make DRONE=true CROSS_BUILD=true BUILD_IN_CONTAINER=true RELEASE_BUILD=true agent-smoke-image - docker buildx rm multiarch depends_on: @@ -161,7 +156,6 @@ steps: image: alpine commands: - apk update && apk add git - - echo "$(sh ./tools/image-tag)" > .tag-only - echo "grafana/agent:$(sh ./tools/image-tag)" > .image-tag - name: Update Deployment Tools image: us.gcr.io/kubernetes-dev/drone/plugins/updater @@ -180,11 +174,6 @@ steps: "file_path": "ksonnet/environments/platform-observability/waves/agent.libsonnet", "jsonnet_key": "dev_canary", "jsonnet_value_file": ".image-tag" - }, - { - "file_path": "ksonnet/environments/agent-smoke-test/dev-us-central-0.agent-smoke-test/main.jsonnet", - "jsonnet_key": "image_tag", - "jsonnet_value_file": ".tag-only" } ] } @@ -254,14 +243,6 @@ get: path: secret/data/common/gcr name: .dockerconfigjson ---- -kind: secret -name: gcr_admin - -get: - name: .dockerconfigjson - path: infra/data/ci/gcr-admin - --- kind: secret name: gh_token @@ -271,6 +252,6 @@ get: name: pat --- kind: signature -hmac: 76ba44a90ab332caf4cd3bc11529e7ea674d4706ab8b4928b17b8c7dcda8abea +hmac: 87a9a23731884dac8e0b5c3ee0fa2b5cef9d7fa490fcad649f7783f6ea9d2d32 ... diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index 98a246f1c51a..000000000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,11 +0,0 @@ -version: 2 -updates: - - package-ecosystem: "github-actions" - directory: "/" - schedule: - interval: "weekly" - - package-ecosystem: "gomod" - directory: "/" - schedule: - interval: "daily" - open-pull-requests-limit: 2 diff --git a/.github/stale.yml b/.github/stale.yml new file mode 100644 index 000000000000..f5c917302d5e --- /dev/null +++ b/.github/stale.yml @@ -0,0 +1,26 @@ +# Days without any activity until an issue is labeled as stale +daysUntilStale: 30 + +# Days after having the stale label that the issue will be closed +daysUntilClose: 7 + +# Labels that prevent issues from being marked as stale +exemptLabels: + - keepalive + - proposal + - outdated-dependency + - dev-branch + +# Label to use to identify a stale issue +staleLabel: stale + +# Comment to post when marking an issue as stale. Leave as false +# to disable. +markComment: > + This issue has been automatically marked as stale because it has not had any + activity in the past 30 days. It will be closed in 7 days if no further + activity occurs. Thank you for your contributions. + +# Comment to post when closing a stale issue. Leave as +# false to disable. +closeComment: false diff --git a/.github/workflows/markdown.links.config.json b/.github/workflows/markdown.links.config.json index 28863d7bdd71..1c42ecb1d4bf 100644 --- a/.github/workflows/markdown.links.config.json +++ b/.github/workflows/markdown.links.config.json @@ -1,8 +1,5 @@ { "ignorePatterns": [ - { - "pattern": "^https://github.com/grafana/agent/pull/XXXX$" - }, { "pattern": "^http://prometheus.k3d.localhost:30080" }, diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index ac94e4297517..dc164698cd2a 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -5,7 +5,7 @@ on: branches: - main paths: - - 'docs/user/**' + - 'docs/**' jobs: sync: @@ -21,7 +21,7 @@ jobs: branch: master host: github.com github_pat: '${{ secrets.GH_BOT_ACCESS_TOKEN }}' - source_folder: docs/user + source_folder: docs target_folder: content/docs/agent/latest - shell: bash run: | diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml deleted file mode 100644 index a1820c9c004b..000000000000 --- a/.github/workflows/stale.yml +++ /dev/null @@ -1,38 +0,0 @@ -name: Stale check -on: - workflow_dispatch: {} - schedule: - - cron: '0 0 * * *' -permissions: - issues: write - pull-requests: write -jobs: - stale: - runs-on: ubuntu-latest - steps: - - uses: actions/stale@v4 - with: - days-before-stale: 30 - days-before-close: 7 - stale-issue-message: > - This issue has been automatically marked as stale because it has - not had any activity in the past 30 days. - - The next time this stale check runs, the stale label will be - removed if there is new activity. The issue will be closed in 7 - days if there is no new activity. - - Thank you for your contributions! - stale-pr-message: > - This PR has been automatically marked as stale because it has not - had any activity in the past 30 days. - - The next time this stale check runs, the stale label will be - removed if there is new activity. The issue will be closed in 7 - days if there is no new activity. - - Thank you for your contributions! - stale-issue-label: stale - stale-pr-label: stale - exempt-issue-labels: keepalive,proposal,outdated-dependency,dev-branch - exempt-pr-labels: keepalive,proposal,outdated-dependency,dev-branch diff --git a/.gitignore b/.gitignore index 37ebb2fe7c3e..fb39d6a8c73f 100644 --- a/.gitignore +++ b/.gitignore @@ -4,7 +4,6 @@ /.pkg /.cache /.vscode -/.eventcache vendor /cmd/agent/agent diff --git a/.golangci.yml b/.golangci.yml index 994a45adccb6..565377a1ae63 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,83 +1,74 @@ -# Full list of configuration options: https://golangci-lint.run/usage/configuration/ +# This file contains all available configuration options +# with their default values. +# options for analysis running run: + # default concurrency is a available CPU number + concurrency: 16 + + # timeout for analysis, e.g. 30s, 5m, default is 1m timeout: 5m + # exit code when at least one issue was found, default is 1 + issues-exit-code: 1 + + # include test files or not, default is true + tests: true + + # list of build2 tags, all linters use it. Default is empty list. + build-tags: + + # which dirs to skip: they won't be analyzed; + # can use regexp here: generated.*, regexp is applied on full path; + # default value is empty list, but next dirs are always skipped independently + # from this option's value: + # vendor$, third_party$, testdata$, examples$, Godeps$, builtin$ + skip-dirs: + # which files to skip: they will be analyzed, but issues from them + # won't be reported. Default value is empty list, but there is + # no need to include all autogenerated files, we confidently recognize + # autogenerated files. If it's not please let us know. + skip-files: +# output configuration options output: - sort-results: true + # colored-line-number|line-number|json|tab|checkstyle, default is "colored-line-number" + format: colored-line-number + + # print lines of code with issue, default is true + print-issued-lines: true + + # print linter name in the end of issue text, default is true + print-linter-name: true linters: enable: - - deadcode # Report on unused code - - errcheck # Report unchecked errors - - goconst # Find repeated strings that could be replaced by constant - - gofmt # Check whether code was gofmt-ed - - goimports # Check imports were formatted with gofmt - - revive # Broad set of rules; replaces deprecated golint - - gosimple # Check whether code can be simplified - - ineffassign # Detect when assignment to variable is never used - - misspell # Report on commonly misspelled English words - - structcheck # Report on unused struct fields - - unconvert # Remove unnecessary type conversions - - unparam # Detect unused function parameters - - varcheck # Find unused global variables/constants - - govet # `go vet` - - unused # Detect unused constants/variables/functions/types - - typecheck # Ensure code typechecks - - depguard # Allow/denylist specific imports - - makezero # Detect misuse of make with non-zero length and append - - tenv # Use testing.(*T).Setenv instead of os.Setenv - - whitespace # Report unnecessary blank lines + - deadcode + - errcheck + - goconst + - gofmt + - goimports + - golint + - gosimple + - ineffassign + - megacheck + - misspell + - structcheck + - unconvert + - unparam + - varcheck + - govet + - unused # new from here. + - interfacer + - typecheck issues: - # We want to use our own exclusion rules and ignore all the defaults. + # golangci-lint excludes some stuff we want by default (i.e., proper go-style comments). + # We exclude the defaults and then manually exclude the subset of defaults we truly don't + # care about. exclude-use-default: false - exclude-rules: - # It's fine if tests ignore errors. - - path: _test.go - linters: - - errcheck - exclude: - # Ignoring errors on Close, Log, and removing files is OK in most cases. - - "Error return value of `(.*\\.Close|.*\\.Log|os.Remove)` is not checked" - # Packages for integrations are named matching their upstream counterpart, - # which almost always have underscores. - - "var-naming: don't use an underscore in package name" - -# Linter settings options: https://golangci-lint.run/usage/linters/ -linters-settings: - depguard: - # We want to report errors on stdlib packages, not just third party modules - include-go-root: true - - packages-with-error-message: - - sync/atomic: "Use go.uber.org/atomic instead of sync/atomic" - - github.com/pkg/errors: "Use errors instead of github.com/pkg/errors" - - github.com/go-kit/kit/log: "Use github.com/go-kit/log instead of github.com/go-kit/kit/log" - - golang.org/x/sync/errgroup: "Use github.com/oklog/run instead of golang.org/x/sync/errgroup" - - whitespace: - # While there normally shouldn't be extra redundant leading/trailing - # whitespace, if statement conditions and function headers that cross - # multiple lines are an exception. - # - # if true || - # false { - # - # // ... ^ must have empty line above - # } - # - # func foo( - # a int, - # ) { - # - # // ... ^ must have empty line above - # } - # - # This helps readers easily separate where the multi-line if/function ends - # at a glance. - multi-if: true - multi-func: true - + # EXC0001 errcheck: Almost all programs ignore errors on these functions + # and in most cases it's ok. This is copied from the golangci-lint defaults + # mut modified to include go-kit logging. + - Error return value of .((os\.)?std(out|err)\..*|.*Close|.*Flush|os\.Remove(All)?|.*print(f|ln)?|os\.(Un)?Setenv|.*\.Log). is not checked diff --git a/CHANGELOG.md b/CHANGELOG.md index abce075e8858..7d9e511b42d4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,30 +1,8 @@ # Main (unreleased) -- [ENHANCEMENT] opentelemetry trace exporters can now be configured to support Oauth utilizing - the opentelemetry-collector-contrib oauth2clientauthextension. (@canuteson) - -- [ENHANCEMENT] Strengthen readiness check for metrics instances. (@tpaschalis) - -- [ENHANCEMENT] Parameterize namespace field in sample K8s logs manifests (@hjet) - -- [ENCHANCEMENT] (EXPERIMENTAL) Add support for dynamic configurations (@mattdurham) - -- [BUGFIX] Enforce singletons for v2 integrations (@mattdurham) - -- [FEATURE] Added config read API support to GrafanaAgent Custom Resource Definition. - -# v0.23.0 (2022-01-13) - - [ENHANCEMENT] Go 1.17 is now used for all builds of the Agent. (@tpaschalis) -- [ENHANCEMENT] integrations-next: Add `extra_labels` to add a custom set of - labels to integration targets. (@rfratto) - -- [ENHANCEMENT] The agent no longer appends duplicate exemplars. (@tpaschalis) - -- [ENHANCEMENT] Added Kubernetes eventhandler integration (@hjet) - -- [ENHANCEMENT] Enables sending of exemplars over remote write by default. (@rlankfo) +- [ENHANCEMENT] Introduce EXPERIMENTAL support for dynamic configuration. (@mattdurham) - [BUGFIX] Fixed issue where Grafana Agent may panic if there is a very large WAL loading while old WALs are being deleted or the `/agent/api/v1/targets` @@ -35,24 +13,12 @@ - [BUGFIX] Operator: Add missing proxy_url field from generated remote_write configs. (@rfratto) -- [BUGFIX] Honor the specified log format in the traces subsystem (@mapno) - -- [BUGFIX] Fix typo in node_exporter for runit_service_dir. (@mattdurham) - -- [BUGFIX] Allow inlining credentials in remote_write url. (@tpaschalis) - -- [BUGFIX] integrations-next: Wait for integrations to stop when starting new - instances or shutting down (@rfratto). - -- [BUGFIX] Fix issue with windows_exporter mssql collector crashing the agent. (@mattdurham) - # v0.22.0 (2022-01-13) This release has deprecations. Please read [DEPRECATION] entries and consult the [upgrade guide](https://github.com/grafana/agent/blob/main/docs/upgrade-guide/_index.md) for detailed information. - - [FEATURE] (beta) Enable experimental config urls for fetching remote configs. Currently, only HTTP/S is supported. Pass the `-enable-features=remote-configs` flag to turn this on. (@rlankfo) diff --git a/MAINTAINERS.md b/MAINTAINERS.md index 13e7d43fb6a3..bb26074b6254 100644 --- a/MAINTAINERS.md +++ b/MAINTAINERS.md @@ -1,13 +1,8 @@ -The following people are the primary maintainers of the project: +Robert Fratto ( / @rfratto) is the main/default maintainer, some parts of the codebase have other maintainers: -* Robert Fratto ( / @rfratto) -* Matt Durham ( / @mattdurham) -* Robbie Lankford ( / @rlankfo) - -Some parts of the codebase have other maintainers: - -* `pkg/traces`: Joe Elliott ( / @joe-elliott), Mario Rodriguez (/ @mapno) -* `pkg/integrations`: Gabriel Antunes ( / @gaantunes), Ryan Geyer ( / @rgeyer) +* `pkg` + * `traces`: Joe Elliott ( / @joe-elliott), Mario Rodriguez (/ @mapno) + * `integrations`: Gabriel Antunes ( / @gaantunes), Ryan Geyer ( / @rgeyer) For the sake of brevity, not all subtrees are explicitly listed. Due to the size of this repository, the natural changes in focus of maintainers over time, diff --git a/Makefile b/Makefile index fbe0c4902aa9..8454824a028b 100644 --- a/Makefile +++ b/Makefile @@ -19,9 +19,6 @@ IMAGE_BRANCH_TAG = latest endif DRONE ?= false -# INTERNAL_REGISTRY used for pushing images to grafana internal registry -INTERNAL_REGISTRY ?= us.gcr.io/kubernetes-dev - # TARGETPLATFORM is specifically called from `docker buildx --platform`, this is mainly used when pushing docker image manifests, normal generally means NON DRONE builds TARGETPLATFORM ?=normal @@ -183,8 +180,7 @@ all: protos agent agentctl agent: cmd/agent/agent agentctl: cmd/agentctl/agentctl agent-operator: cmd/agent-operator/agent-operator -agent-smoke: tools/smoke/grafana-agent-smoke -grafana-agent-crow: tools/crow/grafana-agent-crow +grafana-agent-crow: cmd/grafana-agent-crow/grafana-agent-crow # In general DRONE variable should overwrite any other options, if DRONE is not set then fallback to normal behavior @@ -200,16 +196,10 @@ cmd/agent-operator/agent-operator: cmd/agent-operator/main.go $(ALL_CGO_BUILD_FLAGS) ; $(seego) build $(CGO_FLAGS) -o $@ ./$(@D) $(NETGO_CHECK) -tools/crow/grafana-agent-crow: tools/crow/main.go - $(ALL_CGO_BUILD_FLAGS) ; $(seego) build $(CGO_FLAGS) -o $@ ./$(@D) - $(NETGO_CHECK) - -tools/smoke/grafana-agent-smoke: tools/smoke/main.go +cmd/grafana-agent-crow/grafana-agent-crow: cmd/grafana-agent-crow/main.go $(ALL_CGO_BUILD_FLAGS) ; $(seego) build $(CGO_FLAGS) -o $@ ./$(@D) $(NETGO_CHECK) - - agent-image: $(docker-build) -t $(IMAGE_PREFIX)/agent:$(IMAGE_BRANCH_TAG) -t $(IMAGE_PREFIX)/agent:$(IMAGE_TAG) -f cmd/agent/$(DOCKERFILE) . agentctl-image: @@ -217,16 +207,13 @@ agentctl-image: agent-operator-image: $(docker-build) -t $(IMAGE_PREFIX)/agent-operator:$(IMAGE_BRANCH_TAG) -t $(IMAGE_PREFIX)/agent-operator:$(IMAGE_TAG) -f cmd/agent-operator/$(DOCKERFILE) . grafana-agent-crow-image: - $(docker-build) -t $(INTERNAL_REGISTRY)/$(IMAGE_PREFIX)/agent-crow:$(IMAGE_BRANCH_TAG) -t $(INTERNAL_REGISTRY)/$(IMAGE_PREFIX)/agent-crow:$(IMAGE_TAG) -f tools/crow/$(DOCKERFILE) . -agent-smoke-image: - $(docker-build) -t $(INTERNAL_REGISTRY)/$(IMAGE_PREFIX)/agent-smoke:$(IMAGE_BRANCH_TAG) -t $(INTERNAL_REGISTRY)/$(IMAGE_PREFIX)/agent-smoke:$(IMAGE_TAG) -f tools/smoke/$(DOCKERFILE) . + $(docker-build) -t $(IMAGE_PREFIX)/agent-crow:$(IMAGE_BRANCH_TAG) -t $(IMAGE_PREFIX)/agent-crow:$(IMAGE_TAG) -f cmd/grafana-agent-crow/$(DOCKERFILE) . install: CGO_ENABLED=1 go install $(CGO_FLAGS) ./cmd/agent CGO_ENABLED=0 go install $(GO_FLAGS) ./cmd/agentctl CGO_ENABLED=0 go install $(GO_FLAGS) ./cmd/agent-operator - CGO_ENABLED=0 go install $(GO_FLAGS) ./tools/crow - CGO_ENABLED=0 go install $(GO_FLAGS) ./tools/smoke + CGO_ENABLED=0 go install $(GO_FLAGS) ./cmd/grafana-agent-crow ####################### # Development targets # @@ -319,6 +306,7 @@ endif dist/agent-freebsd-amd64: seego $(call SetBuildVarsConditional,freebsd); $(seego) build $(CGO_FLAGS) -o $@ ./cmd/agent + ####################### # BEGIN AGENTCTL DIST # ####################### diff --git a/README.md b/README.md index 279dfe9db148..11350cb4bbdd 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -

Grafana Agent logo

+

Grafana Agent logo

Grafana Agent is a telemetry collector for sending metrics, logs, and trace data to the opinionated Grafana observability stack. It works best diff --git a/SECURITY.md b/SECURITY.md deleted file mode 100644 index 06123c276aa5..000000000000 --- a/SECURITY.md +++ /dev/null @@ -1,20 +0,0 @@ -# Reporting security issues - -If you think you have found a security vulnerability, please send a report to [security@grafana.com](mailto:security@grafana.com). This address can be used for all of Grafana Labs's open source and commercial products (including but not limited to Grafana, Grafana Cloud, Grafana Enterprise, and grafana.com). We can accept only vulnerability reports at this address. - -Please encrypt your message to us; please use our PGP key. The key fingerprint is: - -F988 7BEA 027A 049F AE8E 5CAA D125 8932 BE24 C5CA - -The key is available from [keyserver.ubuntu.com](https://keyserver.ubuntu.com/pks/lookup?search=0xF9887BEA027A049FAE8E5CAAD1258932BE24C5CA&fingerprint=on&op=index). - -Grafana Labs will send you a response indicating the next steps in handling your report. After the initial reply to your report, the security team will keep you informed of the progress towards a fix and full announcement, and may ask for additional information or guidance. - -**Important:** We ask you to not disclose the vulnerability before it has been fixed and announced, unless you received a response from the Grafana Labs security team that you can do so. - -## Security announcements - -We maintain a category on the community site called [Security Announcements](https://community.grafana.com/c/support/security-announcements), -where we will post a summary, remediation, and mitigation details for any patch containing security fixes. - -You can also subscribe to email updates to this category if you have a grafana.com account and sign on to the community site or track updates via an [RSS feed](https://community.grafana.com/c/support/security-announcements.rss). diff --git a/cmd/agent/entrypoint.go b/cmd/agent/entrypoint.go index 7ef69f5c1bbb..a7d77277cb7e 100644 --- a/cmd/agent/entrypoint.go +++ b/cmd/agent/entrypoint.go @@ -85,7 +85,7 @@ func NewEntrypoint(logger *util.Logger, cfg *config.Config, reloader Reloader) ( return nil, err } - ep.tempoTraces, err = traces.New(ep.lokiLogs, ep.promMetrics.InstanceManager(), prometheus.DefaultRegisterer, cfg.Traces, cfg.Server.LogLevel.Logrus, cfg.Server.LogFormat) + ep.tempoTraces, err = traces.New(ep.lokiLogs, ep.promMetrics.InstanceManager(), prometheus.DefaultRegisterer, cfg.Traces, cfg.Server.LogLevel.Logrus) if err != nil { return nil, err } @@ -196,12 +196,6 @@ func (ep *Entrypoint) wire(mux *mux.Router, grpc *grpc.Server) { }) mux.HandleFunc("/-/ready", func(w http.ResponseWriter, r *http.Request) { - if !ep.promMetrics.Ready() { - w.WriteHeader(http.StatusServiceUnavailable) - fmt.Fprint(w, "Metrics are not ready yet.\n") - - return - } w.WriteHeader(http.StatusOK) fmt.Fprintf(w, "Agent is Ready.\n") }) diff --git a/cmd/agentctl/main.go b/cmd/agentctl/main.go index a19eb9b70b35..dc76546e753d 100644 --- a/cmd/agentctl/main.go +++ b/cmd/agentctl/main.go @@ -478,6 +478,7 @@ config that may be used with this agent.`, } func templateDryRunCmd() *cobra.Command { + cmd := &cobra.Command{ Use: "template-parse [directory]", Short: "dry run dynamic configuration", diff --git a/tools/crow/Dockerfile b/cmd/grafana-agent-crow/Dockerfile similarity index 57% rename from tools/crow/Dockerfile rename to cmd/grafana-agent-crow/Dockerfile index 75bd3f6049a8..ed7e4ba31451 100644 --- a/tools/crow/Dockerfile +++ b/cmd/grafana-agent-crow/Dockerfile @@ -5,9 +5,7 @@ ARG RELEASE_BUILD=true ARG IMAGE_TAG RUN make clean && make IMAGE_TAG=${IMAGE_TAG} RELEASE_BUILD=${RELEASE_BUILD} BUILD_IN_CONTAINER=false grafana-agent-crow -RUN apt update && apt install ca-certificates FROM debian:buster-slim -COPY --from=build /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt -COPY --from=build /src/agent/tools/crow/grafana-agent-crow /bin/grafana-agent-crow +COPY --from=build /src/agent/cmd/grafana-agent-crow/grafana-agent-crow /bin/grafana-agent-crow ENTRYPOINT ["/bin/grafana-agent-crow"] diff --git a/tools/crow/Dockerfile.buildx b/cmd/grafana-agent-crow/Dockerfile.buildx similarity index 81% rename from tools/crow/Dockerfile.buildx rename to cmd/grafana-agent-crow/Dockerfile.buildx index f933c0e6b810..fa7bf16fc092 100644 --- a/tools/crow/Dockerfile.buildx +++ b/cmd/grafana-agent-crow/Dockerfile.buildx @@ -11,7 +11,7 @@ RUN rm -rf /usr/local/go \ && echo "$GOLANG_DOWNLOAD_SHA256 golang.tar.gz" | sha256sum -c - \ && tar -C /usr/local -xzf golang.tar.gz \ && rm golang.tar.gz -RUN apt update && apt install ca-certificates + COPY . /src/agent WORKDIR /src/agent ARG RELEASE_BUILD=true @@ -20,6 +20,5 @@ ARG IMAGE_TAG RUN make clean && IMAGE_TAG=${IMAGE_TAG} RELEASE_BUILD=${RELEASE_BUILD} BUILD_IN_CONTAINER=false DRONE=true make grafana-agent-crow FROM debian:buster-slim -COPY --from=build /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt -COPY --from=build /src/agent/tools/crow/grafana-agent-crow /bin/grafana-agent-crow +COPY --from=build /src/agent/cmd/grafana-agent-crow/grafana-agent-crow /bin/grafana-agent-crow ENTRYPOINT ["/bin/grafana-agent-crow"] diff --git a/tools/crow/README.md b/cmd/grafana-agent-crow/README.md similarity index 100% rename from tools/crow/README.md rename to cmd/grafana-agent-crow/README.md diff --git a/tools/crow/main.go b/cmd/grafana-agent-crow/main.go similarity index 100% rename from tools/crow/main.go rename to cmd/grafana-agent-crow/main.go diff --git a/docs/README.md b/docs/README.md index 88efe6babd4f..51c262484e4c 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,10 +1,21 @@ -# Grafana Agent Documentation ++++ +draft = "True" ++++ -This directory contains documentation for Grafana Agent. It is split into two -parts: +

Grafana Agent logo

-* `user/`: Documentation for users. This directory is hosted on - [grafana.com/docs/agent](https://grafana.com/docs/agent/latest/) and we - recommend interacting with it there instead of viewing the markdown on - Github. -* `rfcs/`: RFCs for proposals relating to Grafana Agent. +Grafana Agent is an telemetry collector for sending metrics, logs, +and trace data to the opinionated Grafana observability stack. It works best +with: + +* [Grafana Cloud](https://grafana.com/products/cloud/) +* [Grafana Enterprise Stack](https://grafana.com/products/enterprise/) +* OSS deployments of [Grafana Loki](https://grafana.com/oss/loki/), [Prometheus](https://prometheus.io/), [Cortex](https://cortexmetrics.io/), and [Grafana Tempo](https://grafana.com/oss/tempo/) + + +- Grafana Agent uses less memory on average than Prometheus – by doing less + (only focusing on `remote_write`-related functionality). +- Grafana Agent allows for deploying multiple instances of the Agent in a + cluster and only scraping metrics from targets that are running on the same host. + This allows for distributing memory requirements across the cluster + rather than pressurizing a single node. diff --git a/docs/user/_index.md b/docs/_index.md similarity index 100% rename from docs/user/_index.md rename to docs/_index.md diff --git a/docs/user/api/_index.md b/docs/api/_index.md similarity index 100% rename from docs/user/api/_index.md rename to docs/api/_index.md diff --git a/docs/user/assets/logo_and_name.png b/docs/assets/logo_and_name.png similarity index 100% rename from docs/user/assets/logo_and_name.png rename to docs/assets/logo_and_name.png diff --git a/docs/user/configuration/_index.md b/docs/configuration/_index.md similarity index 100% rename from docs/user/configuration/_index.md rename to docs/configuration/_index.md diff --git a/docs/user/configuration/integrations/_index.md b/docs/configuration/integrations/_index.md similarity index 100% rename from docs/user/configuration/integrations/_index.md rename to docs/configuration/integrations/_index.md diff --git a/docs/user/configuration/integrations/cadvisor-config.md b/docs/configuration/integrations/cadvisor-config.md similarity index 100% rename from docs/user/configuration/integrations/cadvisor-config.md rename to docs/configuration/integrations/cadvisor-config.md diff --git a/docs/user/configuration/integrations/consul-exporter-config.md b/docs/configuration/integrations/consul-exporter-config.md similarity index 100% rename from docs/user/configuration/integrations/consul-exporter-config.md rename to docs/configuration/integrations/consul-exporter-config.md diff --git a/docs/user/configuration/integrations/dnsmasq-exporter-config.md b/docs/configuration/integrations/dnsmasq-exporter-config.md similarity index 100% rename from docs/user/configuration/integrations/dnsmasq-exporter-config.md rename to docs/configuration/integrations/dnsmasq-exporter-config.md diff --git a/docs/user/configuration/integrations/elasticsearch-exporter-config.md b/docs/configuration/integrations/elasticsearch-exporter-config.md similarity index 100% rename from docs/user/configuration/integrations/elasticsearch-exporter-config.md rename to docs/configuration/integrations/elasticsearch-exporter-config.md diff --git a/docs/user/configuration/integrations/github-exporter-config.md b/docs/configuration/integrations/github-exporter-config.md similarity index 100% rename from docs/user/configuration/integrations/github-exporter-config.md rename to docs/configuration/integrations/github-exporter-config.md diff --git a/docs/user/configuration/integrations/kafka-exporter-config.md b/docs/configuration/integrations/kafka-exporter-config.md similarity index 100% rename from docs/user/configuration/integrations/kafka-exporter-config.md rename to docs/configuration/integrations/kafka-exporter-config.md diff --git a/docs/user/configuration/integrations/memcached-exporter-config.md b/docs/configuration/integrations/memcached-exporter-config.md similarity index 100% rename from docs/user/configuration/integrations/memcached-exporter-config.md rename to docs/configuration/integrations/memcached-exporter-config.md diff --git a/docs/user/configuration/integrations/mongodb_exporter-config.md b/docs/configuration/integrations/mongodb_exporter-config.md similarity index 100% rename from docs/user/configuration/integrations/mongodb_exporter-config.md rename to docs/configuration/integrations/mongodb_exporter-config.md diff --git a/docs/user/configuration/integrations/mysqld-exporter-config.md b/docs/configuration/integrations/mysqld-exporter-config.md similarity index 100% rename from docs/user/configuration/integrations/mysqld-exporter-config.md rename to docs/configuration/integrations/mysqld-exporter-config.md diff --git a/docs/user/configuration/integrations/node-exporter-config.md b/docs/configuration/integrations/node-exporter-config.md similarity index 99% rename from docs/user/configuration/integrations/node-exporter-config.md rename to docs/configuration/integrations/node-exporter-config.md index e8cc2a776940..6ce79fbab36a 100644 --- a/docs/user/configuration/integrations/node-exporter-config.md +++ b/docs/configuration/integrations/node-exporter-config.md @@ -26,7 +26,7 @@ docker run \ -v "/proc:/host/proc:ro,rslave" \ -v /tmp/agent:/etc/agent \ -v /path/to/config.yaml:/etc/agent-config/agent.yaml \ - grafana/agent:v0.23.0 \ + grafana/agent:v0.22.0 \ --config.file=/etc/agent-config/agent.yaml ``` @@ -66,14 +66,14 @@ metadata: name: agent spec: containers: - - image: grafana/agent:v0.23.0 + - image: grafana/agent:v0.22.0 name: agent args: - --config.file=/etc/agent-config/agent.yaml securityContext: capabilities: add: ["SYS_TIME"] - privileged: true + priviliged: true runAsUser: 0 volumeMounts: - name: rootfs diff --git a/docs/user/configuration/integrations/postgres-exporter-config.md b/docs/configuration/integrations/postgres-exporter-config.md similarity index 100% rename from docs/user/configuration/integrations/postgres-exporter-config.md rename to docs/configuration/integrations/postgres-exporter-config.md diff --git a/docs/user/configuration/integrations/process-exporter-config.md b/docs/configuration/integrations/process-exporter-config.md similarity index 98% rename from docs/user/configuration/integrations/process-exporter-config.md rename to docs/configuration/integrations/process-exporter-config.md index bfd352452ed1..55b6d35c1f31 100644 --- a/docs/user/configuration/integrations/process-exporter-config.md +++ b/docs/configuration/integrations/process-exporter-config.md @@ -18,7 +18,7 @@ docker run \ -v "/proc:/proc:ro" \ -v /tmp/agent:/etc/agent \ -v /path/to/config.yaml:/etc/agent-config/agent.yaml \ - grafana/agent:v0.23.0 \ + grafana/agent:v0.22.0 \ --config.file=/etc/agent-config/agent.yaml ``` @@ -35,7 +35,7 @@ metadata: name: agent spec: containers: - - image: grafana/agent:v0.23.0 + - image: grafana/agent:v0.22.0 name: agent args: - --config.file=/etc/agent-config/agent.yaml diff --git a/docs/user/configuration/integrations/redis-exporter-config.md b/docs/configuration/integrations/redis-exporter-config.md similarity index 100% rename from docs/user/configuration/integrations/redis-exporter-config.md rename to docs/configuration/integrations/redis-exporter-config.md diff --git a/docs/user/configuration/integrations/statsd-exporter-config.md b/docs/configuration/integrations/statsd-exporter-config.md similarity index 100% rename from docs/user/configuration/integrations/statsd-exporter-config.md rename to docs/configuration/integrations/statsd-exporter-config.md diff --git a/docs/user/configuration/integrations/windows-exporter-config.md b/docs/configuration/integrations/windows-exporter-config.md similarity index 100% rename from docs/user/configuration/integrations/windows-exporter-config.md rename to docs/configuration/integrations/windows-exporter-config.md diff --git a/docs/user/configuration/logs-config.md b/docs/configuration/logs-config.md similarity index 100% rename from docs/user/configuration/logs-config.md rename to docs/configuration/logs-config.md diff --git a/docs/user/configuration/metrics-config.md b/docs/configuration/metrics-config.md similarity index 100% rename from docs/user/configuration/metrics-config.md rename to docs/configuration/metrics-config.md diff --git a/docs/user/configuration/server-config.md b/docs/configuration/server-config.md similarity index 100% rename from docs/user/configuration/server-config.md rename to docs/configuration/server-config.md diff --git a/docs/user/configuration/traces-config.md b/docs/configuration/traces-config.md similarity index 91% rename from docs/user/configuration/traces-config.md rename to docs/configuration/traces-config.md index f4d8845c5ce6..83557549a591 100644 --- a/docs/user/configuration/traces-config.md +++ b/docs/configuration/traces-config.md @@ -72,31 +72,6 @@ remote_write: # the latter take precedence. [ insecure_skip_verify: | default = false ] - # Configures opentelemetry exporters to use the OpenTelemetry auth extension `oauth2clientauthextension`. - # Can not be used in combination with `basic_auth`. - # See https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/extension/oauth2clientauthextension/README.md - oauth2: - # Configures the TLS settings specific to the oauth2 client - # The client identifier issued to the oauth client - [client_id: ] - # The secret string associated with the oauth client - [client_secret: ] - # The resource server's token endpoint URL - [token_url: ] - # Optional, requested permissions associated with the oauth client - [scopes: []] - # Optional, specifies the timeout fetching tokens from the token_url. Default: no timeout - [timeout: ] - tls: - # Disable validation of the server certificate. - [ insecure: | default = false ] - # Path to the CA cert. For a client this verifies the server certificate. If empty uses system root CA. - [ca_file: ] - # Path to the TLS cert to use for TLS required connections - [cert_file: ] - # Path to the TLS key to use for TLS required connections - [key_file: ] - # Controls TLS settings of the exporter's client. See https://github.com/open-telemetry/opentelemetry-collector/blob/v0.21.0/config/configtls/README.md # This should be used only if `insecure` is set to false tls_config: diff --git a/docs/user/getting-started/_index.md b/docs/getting-started/_index.md similarity index 99% rename from docs/user/getting-started/_index.md rename to docs/getting-started/_index.md index e6bd5f445530..686264eab8c8 100644 --- a/docs/user/getting-started/_index.md +++ b/docs/getting-started/_index.md @@ -26,7 +26,7 @@ See the list of [Community Projects](#community-projects) for the community-driv docker run \ -v /tmp/agent:/etc/agent/data \ -v /path/to/config.yaml:/etc/agent/agent.yaml \ - grafana/agent:v0.23.0 + grafana/agent:v0.22.0 ``` Replace `/tmp/agent` with the folder you wish to store WAL data in. WAL data is diff --git a/docs/user/getting-started/create-config-file.md b/docs/getting-started/create-config-file.md similarity index 97% rename from docs/user/getting-started/create-config-file.md rename to docs/getting-started/create-config-file.md index 4b53a44b70b1..ae25c58d551a 100644 --- a/docs/user/getting-started/create-config-file.md +++ b/docs/getting-started/create-config-file.md @@ -58,7 +58,7 @@ source of metrics if you are running multiple Grafana Agents across multiple machines. Full configuration options can be found in the -[configuration reference]({{< relref "../configuration/index.md" >}}). +[configuration reference](../configuration/_index.md). ## Prometheus config/migrating from Prometheus @@ -104,7 +104,7 @@ metrics: ``` Like with integrations, full configuration options can be found in the -[configuration]({{< relref "../configuration/index.md" >}}). +[configuration](../configuration/_index.md). ## Loki Config/Migrating from Promtail diff --git a/docs/user/getting-started/install-agent-on-windows.md b/docs/getting-started/install-agent-on-windows.md similarity index 86% rename from docs/user/getting-started/install-agent-on-windows.md rename to docs/getting-started/install-agent-on-windows.md index dbb43d394064..a8fc8dbd504c 100644 --- a/docs/user/getting-started/install-agent-on-windows.md +++ b/docs/getting-started/install-agent-on-windows.md @@ -5,13 +5,7 @@ weight = 120 # Install Agent on Windows -The installer will install Grafana Agent into the default directory `C:\Program Files\Grafana Agent`. -The [windows_exporter integration](https://github.com/prometheus-community/windows_exporter) -can be enabled with all default windows_exporter options. The installer can be -found by either: - -1. Downloading the `grafana-agent-installer.exe` asset from the current [release](https://github.com/grafana/agent/releases/latest) page. -2. Downloading the `grafana-agent-installer.exe` asset directly from https://github.com/grafana/agent/releases/latest/download/grafana-agent-installer.exe. +The installer will install Grafana Agent into the default directory `C:\Program Files\Grafana Agent`. The [windows_exporter integration](https://github.com/prometheus-community/windows_exporter) can be enabled with all default windows_exporter options. ## Installation diff --git a/docs/user/operation-guide/_index.md b/docs/operation-guide/_index.md similarity index 100% rename from docs/user/operation-guide/_index.md rename to docs/operation-guide/_index.md diff --git a/docs/user/operator/_index.md b/docs/operator/_index.md similarity index 100% rename from docs/user/operator/_index.md rename to docs/operator/_index.md diff --git a/docs/user/operator/add-custom-scrape-jobs.md b/docs/operator/add-custom-scrape-jobs.md similarity index 100% rename from docs/user/operator/add-custom-scrape-jobs.md rename to docs/operator/add-custom-scrape-jobs.md diff --git a/docs/user/operator/architecture.md b/docs/operator/architecture.md similarity index 100% rename from docs/user/operator/architecture.md rename to docs/operator/architecture.md diff --git a/docs/user/operator/custom-resource-quickstart.md b/docs/operator/custom-resource-quickstart.md similarity index 96% rename from docs/user/operator/custom-resource-quickstart.md rename to docs/operator/custom-resource-quickstart.md index 36fdb7c68c16..084d1b47a06a 100644 --- a/docs/user/operator/custom-resource-quickstart.md +++ b/docs/operator/custom-resource-quickstart.md @@ -43,7 +43,7 @@ metadata: labels: app: grafana-agent spec: - image: grafana/agent:v0.23.0 + image: grafana/agent:v0.22.0 logLevel: info serviceAccountName: grafana-agent metrics: @@ -116,7 +116,7 @@ subjects: namespace: default ``` -This creates a ServiceAccount, ClusterRole, and ClusterRoleBinding for the GrafanaAgent resource. It also creates a GrafanaAgent resource and specifies an Agent image version. Finally, the GrafanaAgent resource specifies `MetricsInstance` and `LogsInstance` selectors. These search for MetricsInstances and LogsInstances in the **same namespace** with labels matching `agent: grafana-agent-metrics` and `agent: grafana-agent-logs`, respectively. It also sets a `cluster: cloud` label for all metrics shipped your Prometheus-compatible endpoint. You should change this label to your desired cluster name. To search for MetricsInstances or LogsInstances in a *different* namespace, please use the `instanceNamespaceSelector` field. To learn more about this field, please consult the `GrafanaAgent` [CRD specification](https://github.com/grafana/agent/blob/main/production/operator/crds/monitoring.grafana.com_grafanaagents.yaml#L3789). +This creates a ServiceAccount, ClusterRole, and ClusterRoleBinding for the GrafanaAgent resource. It also creates a GrafanaAgent resource and specifies an Agent image version. Finally, the GrafanaAgent resource specifies `MetricsInstance` and `LogsInstance` selectors. These search for MetricsInstances and LogsInstances in the same namespace with labels matching `agent: grafana-agent-metrics` and `agent: grafana-agent-logs`, respectively. It also sets a `cluster: cloud` label for all metrics shipped your Prometheus-compatible endpoint. You should change this label to your desired cluster name. The full hierarchy of custom resources is as follows: diff --git a/docs/user/operator/getting-started.md b/docs/operator/getting-started.md similarity index 97% rename from docs/user/operator/getting-started.md rename to docs/operator/getting-started.md index b2769238524d..2438a0846534 100644 --- a/docs/user/operator/getting-started.md +++ b/docs/operator/getting-started.md @@ -72,7 +72,7 @@ spec: serviceAccountName: grafana-agent-operator containers: - name: operator - image: grafana/agent-operator:v0.23.0 + image: grafana/agent-operator:v0.22.0 args: - --kubelet-service=default/kubelet --- @@ -144,7 +144,7 @@ Running locally uses your current kubectl context, and you probably don't want to accidentally deploy a new Grafana Agent to prod. CRDs should be installed on the cluster prior to running locally. If you haven't -done this yet, follow [deploying CustomResourceDefinitions](#step-1-deploy-customresourcedefinitions) +done this yet, follow [deploying CustomResourceDefinitions](#deploying-customresourcedefinitions) first. Afterwards, you can run the operator using `go run`: diff --git a/docs/user/operator/helm-getting-started.md b/docs/operator/helm-getting-started.md similarity index 100% rename from docs/user/operator/helm-getting-started.md rename to docs/operator/helm-getting-started.md diff --git a/docs/rfcs/0000-template.md b/docs/rfcs/0000-template.md deleted file mode 100644 index bbc01019c3ab..000000000000 --- a/docs/rfcs/0000-template.md +++ /dev/null @@ -1,6 +0,0 @@ -# Title - -* Date: YYYY-MM-DD -* Author: Full Name (@github_username) -* PR: [grafana/agent#XXXX](https://github.com/grafana/agent/pull/XXXX) -* Status: Draft diff --git a/docs/rfcs/0001-designing-in-the-open.md b/docs/rfcs/0001-designing-in-the-open.md deleted file mode 100644 index bccf3a527f40..000000000000 --- a/docs/rfcs/0001-designing-in-the-open.md +++ /dev/null @@ -1,160 +0,0 @@ -# Designing in the Open - -* Date: 2021-11-02 -* Author: Robert Fratto (@rfratto) -* PR: [grafana/agent#1055](https://github.com/grafana/agent/pull/1055) -* Status: Implemented - -## Summary - -Many open source projects start behind closed doors, where it's designed, -prototyped, and tested before being released publicly. This can be true -regardless of why the project is being made; even personal side projects likely -start by someone designing alone. - -Meanwhile, many open source projects might want to create a community of -developers. Much of the beauty of succesful open source projects originates -from the varied backgrounds of its contributors: different people with -different use cases combining together to make a widely useful piece of -software. - -However, even with an intent to foster a community of developers, it's natural -to accidentally build a habit from the closed-door design process. Even when -once-private proposals are made public, potential external contributors can -find themselves simply as spectators: - -* Initial design is gated to core maintainers, in particular if they all work - for the same company. This leaves less room for new people to help out. -* New concerns are less impactful if the proposal already receieved core - maintainer consensus. -* Historical proposals with context and discussions become hard to find. - -I believe it takes a deliberate inversion of process to foster community -participation. This document proposes how Grafana Agent will utilize public -spaces for its primary home for future design proposals. - -## Goals - -* Outline options for proposing changes to Grafana Agent -* Lower the barrier to entry for interested parties to become maintainers - -## Non-Goals - -* Enforce that every change originates from a fully public proposal or - discussion. While all maintainers and contributors will be encouraged to - design openly, there may be legal, security, privacy, or business reasons - that prevent some or all context from being made public. - -* Be overly prescriptive: too many rules can hinder adoption of a process. This - document outlines intention, not hard policy. - -## Proposal - -Public proposals may take one of two forms: - -* Issue proposals -* RFC PR proposals (e.g., this document) - -### Issues - -Issues are the quickest path towards proposing a change. Issue proposals must -be opened at the [grafana/agent issues page](https://github.com/grafana/agent/issues). - -There are no strict set of rules for issue-based proposals, but authors are -recommended to prefix the issue title with `Proposal:` so it may be found more -easily. - -### RFC PRs - -RFC PR proposals must at least: - -* Be placed in the `docs/rfcs` folder of the `grafana/agent` repository -* Have a lowercase filename in hyphen-case with an `.md` extension -* Prefix the filename with the RFC ID - * ID `xxxx` may be initially used until the final ID is known -* Contain valid markdown -* Start with the title of the proposal -* Contain a bullet point list of metadata of: - * The date the proposal was written - * The list of authors, with their names and GitHub usernames - * The PR where the proposal was posted - * The status of the proposal - -`0000-template.md` contains a template to use for writing proposals that -conforms to these rules. - -The remainder of the proposal may be formatted however the author wishes. Some -example sections in the RFC may be: - -* Summary: What is the background that lead to this proposal? -* Goals: What are the main goals of the proposal? -* Non-Goals: What _aren't_ the main goals of the proposal? -* Proposal: What is the proposal? -* Pros/Cons: - * Pros: What are the upsides to this proposal? - * Cons: What are the downsides to this proposal? -* Considered Alternatives: Why is this proposal the best path forward? What - were the alternatives? -* Open Questions: What questions still need to be answered? -* Prior Art: What was this proposal based on, if anything? - -#### RFC Status - -The "Status" field of an RFC must be one of the following: - -* Draft: This RFC is a work-in-progress and may change -* Implemented: Relevant code for this RFC has been merged to the main branch -* Deprecated: This RFC is no longer relevant to the current state of the - project - -RFCs may be merged in Draft state as work on them progresses. The _Draft_ state -is intended to signal to readers that an RFC is in flux. Once all relevant code -for an RFC is merged to main, the RFC may move to the _Implemented_ status. -RFCs without code, such as this RFC, may immediately be set as Implemented. - -If, for any reason, an RFC becomes no longer relevant (deprecated by another -RFC, code removed, etc.), its status should move to Deprecated. - -#### RFC Review - -RFCs should be opened as a PR to grafana/agent, ideally prefixed in the PR -title with `RFC:` to easily identify it amongst other PRs. - -### Google Docs Proposals - -Google Docs may be useful for early feedback rounds during a proposal. However, -it is not recommended for the permanent home of a proposal: - -* Change and comment history may not be available to all viewers. - -* The file owner may delete the proposal, leading to a gap in historical - context. - -Google Docs proposals will be permitted if linked to from an issue proposal. -Google Doc proposals must be converted into an RFC proposal prior to formally -accepting the proposal. Enforcing this ensures that historical context is -recorded, though it is still not ideal as it discards comment history. - -## Accepting Proposals - -All readers are encouraged to engage in reviewing proposals. However, whether a -proposal is accepted is determined by [rough consensus][] of the Grafana Agent -governance team. External contributors may eventually be invited to [join the -governance team][governance] if they have a history of making ongoing -contributions to the project or community. - -## Considered alternatives - -A few existing public proposal processes have been examined for inspiration: - -* [IETF's RFCs](https://www.ietf.org/standards/rfcs/) -* [Rust's RFCs](https://github.com/rust-lang/rfcs) -* [Joyent's Requests for Discussions](https://github.com/joyent/rfd) -* [OpenTelemetry's OTEPs](https://github.com/open-telemetry/oteps) -* [Kubernetes Enhancement Proposals (KEPs)](https://github.com/kubernetes/enhancements) - -All of these processes are similar, but in the end, the current objective is to -start collecting proposals publicly rather than to be prescriptive yet. - -[rough consensus]: https://github.com/grafana/agent/blob/main/GOVERNANCE.md#technical-decisions -[governance]: https://github.com/grafana/agent/blob/main/GOVERNANCE.md#team-members diff --git a/docs/rfcs/0002-integrations-in-operator.md b/docs/rfcs/0002-integrations-in-operator.md deleted file mode 100644 index 1572097d013b..000000000000 --- a/docs/rfcs/0002-integrations-in-operator.md +++ /dev/null @@ -1,300 +0,0 @@ -# Integrations in Grafana Agent Operator - -* Date: 2022-01-04 -* Author: Robert Fratto (@rfratto) -* PR: [grafana/agent#1224](https://github.com/grafana/agent/pull/1224) -* Status: Draft - -## Background - -Grafana Agent includes support for integrations, which are intended as -"batteries-included" features to assist with collecting telemetry data. With -the `integrations-next` feature enabled, there are multiple types of -integrations: - -* Integrations that generate metrics (i.e., `node_exporter`) -* Integrations that generate logs (i.e., `eventhandler`) -* Integrations that generate other types of telemetry are planned (i.e., an - upcoming `app_o11y_receiver`) - -Generically, an integration is a specialized telemetry collector for some -system under observation. For example, a `redis` integration collects telemetry -for Redis. Integrations can generate any combination of Prometheus metrics, -Grafana Loki logs, or Grafana Tempo traces. - -This document proposes adding a way to add support for all current and future -integrations into the Grafana Agent Operator. - -This proposal supersedes [#883][], which was the first attempt at designing the -feature. This proposal takes advantage of the lessons I've learned and -minimizes the implementation effort. - -## Goals - -* Allow Grafana Agent Operator to deploy integrations -* Allow deployed integrations to write telemetry data -* Support integrations that must exist on every machine (i.e., `node_exporter`) -* Minimize development effort for creating new integrations - -## Non-Goals - -* Support externally collecting metrics from integrations - -## Proposal - -At a high level, the proposal is to: - -* Define a new `Integration` CRD which specifies a single instance of an - integration to run. -* Update `GrafanaAgent` to discover `Integration`s and run integrations. - -## Architecture - -### Running integrations - -The new CRD, Integration, will be used for supporting all current integrations. -The spec of Integration primarily revolves around three fields: - -* `name`: The name of the integration (e.g., `node_exporter`, `mysqld_exporter`) -* `type`: Information about the integration being deployed -* `config`: YAML configuration block for the integration - -The `type` field is an object with the following fields: - -* `allNodes`: True when the `name` integration should run on all Kubernetes - Nodes. -* `unique`: True when the `name` integration must be unique across a - GrafanaAgent resource hierarchy. - -> Example of a valid integration: -> -> ```yaml -> apiVersion: monitoring.grafana.com/v1alpha1 -> kind: Integration -> metadata: -> name: mysql -> namespace: default -> spec: -> name: mysqld_exporter -> type: -> allNodes: false # optional; false is default -> unique: false # optional; false is default -> config: -> data_source_name: root@(mysql.default:3306)/ -> disable_collectors: [slave_status] -> ``` - -GrafanaAgent will be updated to discover Integrations as part of its resource -hierarchy. During reconcile, the following Kubernetes objects will be deployed: - -* One DaemonSet and Secret if there is at least one integration in the resource - hierarchy where `type.allNodes` is true. - -* One Deployment and Secret if there is at least one integration in the - resource hierarchy where `type.allNodes` is false. - -Secrets hold the generated Grafana Agent configuration; a Secret is used as -integration configs may contain credentials. - -**NOTE**: As this functionality depends on [#1198][], integration pods will -always be deployed with the experimental feature flag -`-enable-feature=integrations-next` enabled. This also means that operator -support for integrations requires a release of the agent where that -experimental feature is available. - -### Integration validation - -The initial implementation of integrations support will have no knowledge of -what integrations exist. As a result, the `spec.type` and `spec.config` fields -for an Integration MUST be configured correctly for an integration to work. -Users must refer to documentation to discover how `type` should be configured -for their specific integration, and what settings are valid for the `config` -block. Configuration errors will only surface as runtime errors from the -deployed agent. - -Future versions of the Operator may: - -* Add knowledge for some integrations and validate `type` and `config` - accordingly (though breaking changes to the config at the Agent level may - introduce extra complexity to this). - -* Update the `status` field of the root GrafanaAgent resource during reconcile - to expose any reconcile or runtime errors. - -### Additional settings for the Integration CRD - -Some integrations may require changes to the deployed Pods to function -properly. Integrations will additionally support declaring `volumes`, -`volumeMounts`, `secrets` and `configMaps`. These fields will be merged with -the fields of the same name from the root GrafanaAgent resource when creating -integration pods: - -> ```yaml -> apiVersion: monitoring.grafana.com/v1alpha1 -> kind: Integration -> metadata: -> name: kafka -> namespace: default -> spec: -> name: kafka_exporter -> config: | -> ca_file: /etc/grafana-agent/secrets/kafka-ca-file -> # ... -> # Same "secrets" field present in GrafanaAgent.spec, where each secret -> # is loaded from the same namespace and gets exposed at -> # /etc/grafana-agent/secrets/ -> secrets: [kafka-ca-file] -> ``` - -### Sending telemetry from integrations - -Because the operator will not have any knowledge about individual integrations, it -also doesn't know how integrations generate telemetry data. Users must manally -configure an integration to send its data to the appropriate instance. - -Users can refer to MetricsInstances and LogsInstance from the same resource -hierarchy by `/` in their integration configs. This -configuring `autoscrape` for collecting metrics from an exporter-based -integration. - -Given the following following resource hierarchy: - -> ```yaml -> apiVersion: monitoring.grafana.com/v1alpha1 -> kind: GrafanaAgent -> metadata: -> name: grafana-agent-example -> namespace: default -> labels: -> app: grafana-agent-example -> spec: -> metrics: -> instanceSelector: -> matchLabels: -> agent: grafana-agent-example -> integrations: -> instanceSelector: -> matchLabels: -> agent: grafana-agent-example -> --- -> apiVersion: monitoring.grafana.com/v1alpha1 -> kind: MetricsInstance -> metadata: -> name: primary -> namespace: default -> labels: -> app: grafana-agent-example -> spec: -> remoteWrite: -> - url: http://prometheus:9090/api/v1/write -> --- -> apiVersion: monitoring.grafana.com/v1alpha1 -> kind: Integration -> metadata: -> name: mysql -> namespace: default -> labels: -> app: grafana-agent-example -> spec: -> name: mysqld_exporter -> config: -> autoscrape: -> enable: true -> # MetricsInstance / to send metrics to -> metrics_instance: default/primary -> data_source_name: root@(mysql.default:3306)/ -> disable_collectors: [slave_status] -> ``` - -the Operator would generate the following agent config: - -```yaml -metrics: - configs: - - name: default/primary - remote_write: - - url: http://prometheus:9090/api/v1/write -integrations: - mysqld_exporter_configs: - - autoscrape: - enable: true - metrics_instance: default/primary - data_source_name: root@(mysql.default:3306)/ - disable_collectors: [slave_status] -``` - -All integrations support some way of self-collecting their telemetry data. In -the future, Integrations that support metrics could support being collected by -an external source (i.e., a MetricsInstance). This is out of scope of this -proposal, as we are focusing on lowest-common-denominator support for all -integrations first. - -Note that the Integration config above is only contextually valid: it is only -valid if it is part of a resource hierarchy where a `default/primary` -MetricsInstance exists. This makes it impossible for an Integration to be fully -validated indepently of the resource hierarchy where it is discovered. - -## Pros/Cons - -Despite its limitations, this specific implementation is proposed for its -simplicity. Its issues with validation can be resolved in the future without -needing to change the CRD or introduce new CRDs. - -Pros: - -* Works for all known integrations -* Supports future work for custom validation logic -* No changes needed to support future integrations -* You do not have to update the operator to use new integrations - -Cons: - -* Users must know use documentation to configure `type` and `config` properly. -* Without validation, configuration errors can be hard to debug. -* An Integration may be discovered as part of two resource hierarchies, but - refer to a MetricsInstance that exists in one hierarchy but not the other. - -## Alternatives considered - -### Do nothing - -Instead of adding support for integrations, users could be expected to deploy -exporters though custom means (i.e., a `node_exporter` Helm chart + -ServiceMonitor). - -Pros: - -* Requires no additional effort to implement -* Metrics can be scraped by any MetricsInstance -* Feels like a natural fit for Kubernetes' deployment model - -Cons: - -* Prevents non-exporter integrations from working (i.e., `eventhandler` has no - separate container that can be run indepently) -* Prevents us from making agent-specific changes on top of exporters -* Requires different documentation for people using the node_exporter - integration vs deploying the actual node_exporter - -### One CRD per integration - -Instead of a generic CRD, we could have CRD per supported integration. - -Pros: - -* Allows creating Kubernetes-specific config schemas for integrations -* Can be validated at the CRD level - -Cons: - -* Operator must be updated whenever a new integration is added -* Adds extra development effort for creating new integrations -* Requires custom config mapping code for each integration -* Breaking changes to Grafana Agent can break the translation of the CRD to - Agent config. - * This is true for the current proposal, but in the current proposal you can - fix the error in the Integration resource, while a custom CRD would need a - new operator version to fix the translation. - -[#883]: https://github.com/grafana/agent/issues/883 -[#1198]: https://github.com/grafana/agent/pull/1198 diff --git a/docs/user/scraping-service/_index.md b/docs/scraping-service/_index.md similarity index 100% rename from docs/user/scraping-service/_index.md rename to docs/scraping-service/_index.md diff --git a/docs/user/upgrade-guide/_index.md b/docs/upgrade-guide/_index.md similarity index 100% rename from docs/user/upgrade-guide/_index.md rename to docs/upgrade-guide/_index.md diff --git a/docs/user/README.md b/docs/user/README.md deleted file mode 100644 index 51c262484e4c..000000000000 --- a/docs/user/README.md +++ /dev/null @@ -1,21 +0,0 @@ -+++ -draft = "True" -+++ - -

Grafana Agent logo

- -Grafana Agent is an telemetry collector for sending metrics, logs, -and trace data to the opinionated Grafana observability stack. It works best -with: - -* [Grafana Cloud](https://grafana.com/products/cloud/) -* [Grafana Enterprise Stack](https://grafana.com/products/enterprise/) -* OSS deployments of [Grafana Loki](https://grafana.com/oss/loki/), [Prometheus](https://prometheus.io/), [Cortex](https://cortexmetrics.io/), and [Grafana Tempo](https://grafana.com/oss/tempo/) - - -- Grafana Agent uses less memory on average than Prometheus – by doing less - (only focusing on `remote_write`-related functionality). -- Grafana Agent allows for deploying multiple instances of the Agent in a - cluster and only scraping metrics from targets that are running on the same host. - This allows for distributing memory requirements across the cluster - rather than pressurizing a single node. diff --git a/docs/user/configuration/integrations/integrations-next/_index.md b/docs/user/configuration/integrations/integrations-next/_index.md deleted file mode 100644 index 6c33d869638b..000000000000 --- a/docs/user/configuration/integrations/integrations-next/_index.md +++ /dev/null @@ -1,173 +0,0 @@ -+++ -title = "(Beta) Integrations Revamp" -weight = 100 -+++ - -# (Beta) Integrations Revamp - -Release v0.22.0 of Grafana Agent includes experimental support for a revamped -integrations subsystem. The integrations subsystem is the second oldest part of -Grafana Agent, and has started to feel out of place as we built out the -project. - -The revamped integrations subsystem can be enabled by passing -`integrations-next` to the `-enable-features` command line flag. As an -experimental feature, there are no stability guarantees, and it may receive a -higher frequency of breaking changes than normal. - -The revamped integrations subsystem has the following benefits over the -original subsystem: - -* Integrations can opt in to supporting multiple instances. For example, you - may now run any number of `redis_exporter` integrations, where before you - could only have one per agent. Integrations such as `node_exporter` still - only support a single instance, as it wouldn't make sense to have multiple - instances of those. - -* Autoscrape (previously called "self-scraping"), when enabled, now supports - sending metrics for an integration directly to a running metrics instance. - This allows you configuring an integration to send to a specific Prometheus - remote_write endpoint. - -* A new service discovery HTTP API is included. This can be used with - Prometheus' [http_sd_config][http_sd_config]. The API returns extra labels - for integrations that previously were only availble when autoscraping, such - as `agent_hostname`. - -* Integrations that aren't Prometheus exporters may now be added, such as - integrations that generate logs or traces. - -[http_sd_config]: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#http_sd_config - -## Config changes - -The revamp contains a number of breaking changes to the config. The schema of the -`integrations` key in the config file is now the following: - -```yaml -integrations: - # Controls settings for integrations that generate metrics. - metrics: - # Controls default settings for autoscrape. Individual instances of - # integrations inherit the defaults and may override them. - autoscrape: - # Enables autoscrape of integrations. - [enable: | default = true] - - # Specifies the metrics instance name to send metrics to. Instance - # names are located at metrics.configs[].name from the top-level config. - # The instance must exist. - # - # As it is common to use the name "default" for your primary instance, - # we assume the same here. - [metrics_instance: | default = "default"] - - # Autoscrape interval and timeout. Defaults are inherited from the global - # section of the top-level metrics config. - [scrape_interval: | default = ] - [scrape_timeout: | default = ] - - # Override settings for agent to self-communivate for autoscrape. This is - # currently required if you are using TLS for the agent server. This field is - # temporary and will be removed in the near future once autoscrape can work # - # without using the network. - # - # Settings are omitted for brevity, but the schema is from: - # https://github.com/prometheus/common/blob/2af6d036253eee1a9a08c6ddf6be6d67537bcdff/config/http_config.go#L177 - client_config: - # - - # Configs for integrations which do not support multiple instances. - [agent: ] - [cadvisor: ] - [node_exporter: ] - [process_exporter: ] - [statsd_exporter: ] - [windows_exporter: ] - [eventhandler: ] - - # Configs for integrations that do support multiple instances. Note that - # these must be arrays. - consul_exporter_configs: - [- ...] - - dnsmasq_exporter_configs: - [- ...] - - elasticsearch_exporter_configs: - [- ...] - - github_exporter_configs: - [- ...] - - kafka_exporter_configs: - [- ...] - - memcached_exporter_configs: - [- ...] - - mongodb_exporter_configs: - [- ...] - - mysqld_exporter_configs: - [- ...] - - postgres_exporter_configs: - [- ...] - - redis_exporter_configs: - [- ...] -``` - -## Integrations changes - -Integrations no longer support an `enabled` field; they are enabled by being -defined in the YAML. To disable an integration, comment it out or remove it. - -Metrics-based integrations now use this common set of options: - -```yaml -# Provide an explicit value to uniquely identify this instance of the -# integration. If not provided, a reasonable default will be inferred based -# on the integration. -# -# The value here must be unique across all instances of the same integration. -[instance: ] - -# Override autoscrape defaults for this integration. -autoscrape: - # Enables autoscrape of integrations. - [enable: | default = ] - - # Specifies the metrics instance name to send metrics to. - [metrics_instance: | default = ] - - # Autoscrape interval and timeout. - [scrape_interval: | default = ] - [scrape_timeout: | default = ] - -# An optional extra set of labels to add to metrics from the integration target. These -# labels are only exposed via the integration service discovery HTTP API and -# added when autoscrape is used. They will not be found directly on the metrics -# page for an integration. -extra_labels: - [ : ... ] -``` - -The old set of common options have been removed and do not work when the revamp -is being used: - -```yaml -# OLD SCHEMA: NO LONGER SUPPORTED - -[enabled: | default = false] -[instance: ] -[scrape_integration: | default = ] -[scrape_interval: | default = ] -[scrape_timeout: | default = ] -[wal_truncate_frequency: | default = "60m"] -relabel_configs: - [- ...] -metric_relabel_configs: - [ - ...] -``` diff --git a/docs/user/configuration/integrations/integrations-next/eventhandler-config.md b/docs/user/configuration/integrations/integrations-next/eventhandler-config.md deleted file mode 100644 index a06ef02a2907..000000000000 --- a/docs/user/configuration/integrations/integrations-next/eventhandler-config.md +++ /dev/null @@ -1,301 +0,0 @@ -+++ -title = "eventhandler_config" -+++ - -# eventhandler_config (beta) - -`eventhandler_config` configures the Kubernetes eventhandler integration. This integration watches [Event](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#event-v1-core) resources in a Kubernetes cluster and forwards them as log entries to a Loki sink. - -On restart, the integration will look for a cache file (configured using `cache_path`) that stores the last shipped event. This file is optional, and if present, will be used to avoid double-shipping events if Agent or the integration restarts. Kubernetes expires events after 60 minutes, so events older than 60 minutes ago will never be shipped. - -To use the cache feature and maintain state in a Kubernetes environment, a [StatefulSet](https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/) must be used. Sample manifests are provided at the bottom of this doc. Please adjust these according to your deployment preferences. You can also use a Deployment, however the presence of the cache file will not be guaranteed and the integration may ship duplicate entries in the event of a restart. Loki does not yet support entry deduplication for the A->B->A case, so further deduplication can only take place at the Grafana / front-end layer (Grafana Explore does provide some deduplication features for Loki datasources). - -This integration uses Grafana Agent's embedded Loki-compatible `logs` subsystem to ship entries, and a logs client and sink must be configured to use the integration. Please see the sample Agent config below for an example configuration. [Pipelines](https://grafana.com/docs/loki/latest/clients/promtail/pipelines/) and relabel configuration are not yet supported, but these features will be added soon. You should use the `job=eventhandler cluster=...` labels to query your events (you can then use LogQL on top of the result set). - -If not running the integration in-cluster, the integration will use `kubeconfig_path` to search for a valid Kubeconfig file, defaulting to a kubeconfig in the user's home directory. If running in-cluster, the appropriate `ServiceAccount` and Roles must be defined. Sample manifests are provided below. - -Configuration reference: - -```yaml - ## Eventhandler hands watched events off to promtail using a promtail - ## client channel. This parameter configures how long to wait (in seconds) on the channel - ## before abandoning and moving on. - [send_timeout: | default = 60] - - ## Configures the path to a kubeconfig file. If not set, will fall back to using - ## an in-cluster config. If this fails, will fall back to checking the user's home - ## directory for a kubeconfig. - [kubeconfig_path: ] - - ## Path to a cache file that will store the last timestamp for a shipped event and events - ## shipped for that timestamp. Used to prevent double-shipping on integration restart. - [cache_path: | default = "./.eventcache/eventhandler.cache"] - - ## Name of logs subsystem instance to hand log entries off to. - [logs_instance: | default = "default"] - - ## K8s informer resync interval (seconds). You should use defaults here unless you are - ## familiar with K8s informers. - [informer_resync: | default = 120] - - ## The integration will flush the last event shipped out to disk every flush_interval seconds. - [flush_interval: | default = 10] - - ## If you would like to limit events to a given namespace, use this parameter. - [namespace: ] -``` - -Sample agent config: - -```yaml -server: - http_listen_port: 12345 - log_level: info - -integrations: - eventhandler: - cache_path: "/etc/eventhandler/eventhandler.cache" - -logs: - configs: - - name: default - clients: - - url: https://logs-prod-us-central1.grafana.net/api/prom/push - basic_auth: - username: YOUR_LOKI_USER - password: YOUR_LOKI_API_KEY - external_labels: - cluster: "cloud" - job: "integrations/kubernetes/eventhandler" - positions: - filename: /tmp/positions0.yaml - ## The following stanza is optional and used to configure another client to forward - ## Agent's logs to Loki in a K8s environment (using the manifests found below) - - name: eventhandler_logs - clients: - - url: https://logs-prod-us-central1.grafana.net/api/prom/push - basic_auth: - username: YOUR_LOKI_USER - password: YOUR_LOKI_API_KEY - scrape_configs: - - job_name: eventhandler_logs - kubernetes_sd_configs: - - role: pod - pipeline_stages: - - docker: {} - relabel_configs: - - source_labels: - - __meta_kubernetes_pod_node_name - target_label: __host__ - - action: keep - regex: grafana-agent-eventhandler-* - source_labels: - - __meta_kubernetes_pod_name - - action: labelmap - regex: __meta_kubernetes_pod_label_(.+) - - action: replace - replacement: $1 - source_labels: - - __meta_kubernetes_pod_name - target_label: job - - action: replace - source_labels: - - __meta_kubernetes_namespace - target_label: namespace - - action: replace - source_labels: - - __meta_kubernetes_pod_name - target_label: pod - - action: replace - source_labels: - - __meta_kubernetes_pod_container_name - target_label: container - - replacement: /var/log/pods/*$1/*.log - separator: / - source_labels: - - __meta_kubernetes_pod_uid - - __meta_kubernetes_pod_container_name - target_label: __path__ - positions: - filename: /tmp/positions1.yaml -``` - -Be sure to replace the Loki credentials with the appropriate values. - -Sample StatefulSet manifests. Please adjust these according to your needs: - -```yaml -apiVersion: v1 -kind: ServiceAccount -metadata: - name: grafana-agent-eventhandler - namespace: default ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: grafana-agent-eventhandler -rules: -- apiGroups: - - "" - resources: - - events - verbs: - - get - - list - - watch ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: grafana-agent-eventhandler -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: grafana-agent-eventhandler -subjects: -- kind: ServiceAccount - name: grafana-agent-eventhandler - namespace: default ---- -apiVersion: v1 -kind: Service -metadata: - name: grafana-agent-eventhandler-svc -spec: - ports: - - port: 12345 - name: http-metrics - clusterIP: None - selector: - name: grafana-agent-eventhandler ---- -kind: ConfigMap -metadata: - name: grafana-agent-eventhandler - namespace: default -apiVersion: v1 -data: - agent.yaml: | - server: - http_listen_port: 12345 - log_level: info - - integrations: - eventhandler: - cache_path: "/etc/eventhandler/eventhandler.cache" - - logs: - configs: - - name: default - clients: - - url: https://logs-prod-us-central1.grafana.net/api/prom/push - basic_auth: - username: YOUR_LOKI_USER - password: YOUR_LOKI_API_KEY - external_labels: - cluster: "cloud" - job: "integrations/kubernetes/eventhandler" - positions: - filename: /tmp/positions0.yaml - - name: eventhandler_logs - clients: - - url: https://logs-prod-us-central1.grafana.net/api/prom/push - basic_auth: - username: YOUR_LOKI_USER - password: YOUR_LOKI_API_KEY - scrape_configs: - - job_name: eventhandler_logs - kubernetes_sd_configs: - - role: pod - pipeline_stages: - - docker: {} - relabel_configs: - - source_labels: - - __meta_kubernetes_pod_node_name - target_label: __host__ - - action: keep - regex: grafana-agent-eventhandler-* - source_labels: - - __meta_kubernetes_pod_name - - action: labelmap - regex: __meta_kubernetes_pod_label_(.+) - - action: replace - replacement: $1 - source_labels: - - __meta_kubernetes_pod_name - target_label: job - - action: replace - source_labels: - - __meta_kubernetes_namespace - target_label: namespace - - action: replace - source_labels: - - __meta_kubernetes_pod_name - target_label: pod - - action: replace - source_labels: - - __meta_kubernetes_pod_container_name - target_label: container - - replacement: /var/log/pods/*$1/*.log - separator: / - source_labels: - - __meta_kubernetes_pod_uid - - __meta_kubernetes_pod_container_name - target_label: __path__ - positions: - filename: /tmp/positions1.yaml ---- -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: grafana-agent-eventhandler - namespace: default -spec: - serviceName: "grafana-agent-eventhandler-svc" - selector: - matchLabels: - name: grafana-agent-eventhandler - replicas: 1 - template: - metadata: - labels: - name: grafana-agent-eventhandler - spec: - terminationGracePeriodSeconds: 10 - containers: - - name: agent - image: grafana/agent:main - imagePullPolicy: IfNotPresent - args: - - -config.file=/etc/agent/agent.yaml - - -enable-features=integrations-next - command: - - /bin/agent - env: - - name: HOSTNAME - valueFrom: - fieldRef: - fieldPath: spec.nodeName - ports: - - containerPort: 12345 - name: http-metrics - volumeMounts: - - name: grafana-agent - mountPath: /etc/agent - - name: eventhandler-cache - mountPath: /etc/eventhandler - serviceAccount: grafana-agent-eventhandler - volumes: - - configMap: - name: grafana-agent-eventhandler - name: grafana-agent - volumeClaimTemplates: - - metadata: - name: eventhandler-cache - spec: - accessModes: [ "ReadWriteOnce" ] - resources: - requests: - storage: 1Gi -``` diff --git a/example/k3d/README.md b/example/k3d/README.md index 715a10553c5e..e46fb3ffa279 100644 --- a/example/k3d/README.md +++ b/example/k3d/README.md @@ -46,13 +46,7 @@ The smoke test environment is used to validate samples end to end. Smoke Test environment is invoked via `/scripts/smoke-test.bash` -This tool will spin up cluster of Grafana Agent, Cortex, Avalanche, Smoke and [Crow](../../tools/crow/README.md) instances. The Smoke deployment will then periodically kill instances and check for any failed alerts. At the end of the duration (default 3h) it will end the testing. - -For users who do not have access to the `us.gcr.io/kubernetes-dev` container registry, you will need to build the Smoke and Crow images locally before running the smoke test. - -``` -make grafana-agent-crow-image agent-smoke-image -``` +This tool will spin up cluster of Grafana Agent, Cortex, Avalanche and [Crow](../../cmd/grafana-agent-crow/README.md) instances. The tool will then periodically kill instances and check for any failed alerts. At the end of the duration (default 3h) it will end the testing. ### What to look for? @@ -76,7 +70,7 @@ If at the end of the test any issues are found they will look similar to the bel ### How to trigger an alert? -Changing the avalanche setting for label_count to 1000, located [here](../../production/tanka/grafana-agent/smoke/avalanche/main.libsonnet). This will ensure the [GrafanaAgentMemHigh](http://prometheus.k3d.localhost:50080/graph?g0.expr=ALERTS%7Balertname%3D%22GrafanaAgentMemHigh%22%7D&g0.tab=1&g0.stacked=0&g0.show_exemplars=0.g0.range_input=1h.) alert exceeds the limit. +Changing the avalanche setting for label_count to 1000, located [here](./lib/avalanche/main.libsonnet). This will ensure the [GrafanaAgentMemHigh](http://prometheus.k3d.localhost:50080/graph?g0.expr=ALERTS%7Balertname%3D%22GrafanaAgentMemHigh%22%7D&g0.tab=1&g0.stacked=0&g0.show_exemplars=0.g0.range_input=1h.) alert exceeds the limit. ![](./assets/trigger_change.png) @@ -90,7 +84,6 @@ By default, a k3d cluster will be created running the following instances - crow-single - serves the single agent - cortex - avalanche - selection of avalanche instances serving traffic -- smoke - scales avalanche replicas and introduces chaos by deleting agent pods during testing Crow instance will check to see if the metrics that were scraped shows up in the prometheus endpoint and then will emit metrics on the success of those metrics. This success/failure result will trigger an alert if it is incorrect. diff --git a/example/k3d/environment/main.jsonnet b/example/k3d/environment/main.jsonnet index 53658d08ae4a..e5766fbe46a2 100644 --- a/example/k3d/environment/main.jsonnet +++ b/example/k3d/environment/main.jsonnet @@ -1,6 +1,6 @@ local collector = import 'collector/main.libsonnet'; local default = import 'default/main.libsonnet'; -local etcd = import 'grafana-agent/smoke/etcd/main.libsonnet'; +local etcd = import 'etcd/main.libsonnet'; local agent_cluster = import 'grafana-agent/scraping-svc/main.libsonnet'; local k = import 'ksonnet-util/kausal.libsonnet'; local load_generator = import 'load-generator/main.libsonnet'; diff --git a/example/k3d/jsonnetfile.lock.json b/example/k3d/jsonnetfile.lock.json index 0cd970b024a2..2537becf63bd 100644 --- a/example/k3d/jsonnetfile.lock.json +++ b/example/k3d/jsonnetfile.lock.json @@ -18,8 +18,8 @@ "subdir": "grafonnet" } }, - "version": "3626fc4dc2326931c530861ac5bebe39444f6cbf", - "sum": "gF8foHByYcB25jcUOBqP6jxk0OPifQMjPvKY0HaCk6w=" + "version": "0d4f64154ee2024820396aa66841a64d851302b0", + "sum": "1DvaFCCiwjI9624YYhLPdwiEPDvLsrCOES0aBxr7wrM=" }, { "source": { diff --git a/production/tanka/grafana-agent/smoke/avalanche/main.libsonnet b/example/k3d/lib/avalanche/main.libsonnet similarity index 100% rename from production/tanka/grafana-agent/smoke/avalanche/main.libsonnet rename to example/k3d/lib/avalanche/main.libsonnet diff --git a/production/tanka/grafana-agent/smoke/crow/main.libsonnet b/example/k3d/lib/crow/main.libsonnet similarity index 77% rename from production/tanka/grafana-agent/smoke/crow/main.libsonnet rename to example/k3d/lib/crow/main.libsonnet index 10dbf3d0fa46..29268714461c 100644 --- a/production/tanka/grafana-agent/smoke/crow/main.libsonnet +++ b/example/k3d/lib/crow/main.libsonnet @@ -14,9 +14,8 @@ local volume = k.core.v1.volume; local this = self, _config+:: { - image: 'us.gcr.io/kubernetes-dev/grafana/agent-crow:main', + image: 'grafana/agent-crow:latest', args: {}, - pull_secret: '', } + config, container:: @@ -28,7 +27,6 @@ local volume = k.core.v1.volume; deployment: deployment.new(name, 1, [self.container]) + - deployment.mixin.metadata.withNamespace(namespace) + - deployment.spec.template.spec.withImagePullSecrets({ name: this._config.pull_secret }), + deployment.mixin.metadata.withNamespace(namespace), }, } diff --git a/production/tanka/grafana-agent/smoke/etcd/main.libsonnet b/example/k3d/lib/etcd/main.libsonnet similarity index 100% rename from production/tanka/grafana-agent/smoke/etcd/main.libsonnet rename to example/k3d/lib/etcd/main.libsonnet diff --git a/example/k3d/scripts/smoke-test.bash b/example/k3d/scripts/smoke-test.bash index a0d45a4b023e..36059107d3ce 100755 --- a/example/k3d/scripts/smoke-test.bash +++ b/example/k3d/scripts/smoke-test.bash @@ -35,13 +35,14 @@ set -euo pipefail # Constants ROOT=$(git rev-parse --show-toplevel) K3D_CLUSTER_NAME="agent-smoke-test" -SKIP_CREATE="" +MUTATION_FREQUENCY="5m" +CHAOS_FREQUENCY="30m" # Variables # Which function will be called ENTRYPOINT="run" -TEST_DURATION="10800" +TEST_DURATION="3h" IMPORT_IMAGES="" while getopts "dt:ish" opt; do @@ -84,13 +85,18 @@ run() { k3d image import -c $K3D_CLUSTER_NAME \ grafana/agent:main \ grafana/agentctl:main \ - us.gcr.io/kubernetes-dev/grafana/agent-crow:main \ - us.gcr.io/kubernetes-dev/grafana/agent-smoke:main + grafana/agent-crow:main fi (cd $ROOT/example/k3d && jb install) tk apply $ROOT/example/k3d/smoke --dangerous-auto-approve + echo "--- Spawning background tasks" + mutation_loop & + MUTATION_PID=$! + chaos_loop & + CHAOS_PID=$! + # Immediately create a job to sync configs so our two Agent deployments # are synced up as closely as possible. kubectl --context=k3d-$K3D_CLUSTER_NAME --namespace=smoke \ @@ -100,11 +106,10 @@ run() { echo "Your environment is now running for the next $TEST_DURATION." echo "Grafana URL: http://grafana.k3d.localhost:50080" echo "Prometheus URL: http://prometheus.k3d.localhost:50080" - echo "Check smoke test logs: " - echo " kubectl logs --namespace=smoke -f deployment/smoke-test" sleep $TEST_DURATION - kubectl scale -n smoke --replicas=0 deployment/smoke-test + echo "--- Stopping background tasks" + kill $CHAOS_PID $MUTATION_PID echo "Smoke tests complete!" echo "Grafana URL: http://grafana.k3d.localhost:50080" @@ -115,6 +120,35 @@ run() { get_results } +# mutation_loop changes the number of replicas of Avalanche servers +# randomly between 0-10 replicas (inclusive) every $MUTATION_FREQUENCY. +mutation_loop() { + while true; do + sleep $MUTATION_FREQUENCY + + NEW_REPLICAS=$(($RANDOM % 11)) + echo "--- Scaling Avalanche to $NEW_REPLICAS replicas" + kubectl --context=k3d-$K3D_CLUSTER_NAME --namespace=smoke \ + scale --replicas=$NEW_REPLICAS deployment/avalanche + done +} + +# chaos loop deletes pods every $CHAOS_FREQUENCY. +chaos_loop() { + while true; do + sleep $CHAOS_FREQUENCY + + echo "--- Force deleting pod/grafana-agent-0" + kubectl --context=k3d-$K3D_CLUSTER_NAME --namespace=smoke \ + delete --grace-period=0 --force pod/grafana-agent-0 + + REPLICA=$(($RANDOM % 3)) + echo "--- Force deleting pod/agent-cluster-$REPLICA" + kubectl --context=k3d-$K3D_CLUSTER_NAME --namespace=smoke \ + delete --grace-period=0 --force pod/grafana-agent-cluster-$REPLICA + done +} + get_results() { NUM_ALERTS=$(curl -s -G \ -H "Host: prometheus.k3d.localhost" \ @@ -122,6 +156,7 @@ get_results() { 'http://localhost:50080/api/v1/query' \ | jq '.data.result | length' \ ) + if test $NUM_ALERTS -ne 0; then echo "FAIL: $NUM_ALERTS alerts found over the last $TEST_DURATION." echo "More information: http://prometheus.k3d.localhost:50080/graph?g0.expr=count_over_time(ALERTS{alertstate%3D%22firing%22}[$TEST_DURATION])" diff --git a/example/k3d/smoke/main.jsonnet b/example/k3d/smoke/main.jsonnet index 31e74f5dd65b..df4dcf8f4dc2 100644 --- a/example/k3d/smoke/main.jsonnet +++ b/example/k3d/smoke/main.jsonnet @@ -1,9 +1,8 @@ local monitoring = import './monitoring/main.jsonnet'; +local avalanche = import 'avalanche/main.libsonnet'; local cortex = import 'cortex/main.libsonnet'; -local avalanche = import 'grafana-agent/smoke/avalanche/main.libsonnet'; -local crow = import 'grafana-agent/smoke/crow/main.libsonnet'; -local etcd = import 'grafana-agent/smoke/etcd/main.libsonnet'; -local smoke = import 'grafana-agent/smoke/main.libsonnet'; +local crow = import 'crow/main.libsonnet'; +local etcd = import 'etcd/main.libsonnet'; local gragent = import 'grafana-agent/v2/main.libsonnet'; local k = import 'ksonnet-util/kausal.libsonnet'; @@ -24,12 +23,6 @@ local new_crow(name, selector) = }, }); -local new_smoke(name) = smoke.new(name, namespace='smoke', config={ - mutationFrequency: '5m', - chaosFrequency: '30m', -}); - - local smoke = { ns: namespace.new('smoke'), @@ -46,8 +39,6 @@ local smoke = { metric_interval: 600, }), - smoke_test: new_smoke('smoke-test'), - crows: [ new_crow('crow-single', 'cluster="grafana-agent"'), new_crow('crow-cluster', 'cluster="grafana-agent-cluster"'), @@ -55,28 +46,7 @@ local smoke = { local metric_instances(crow_name) = [{ name: 'crow', - remote_write: [ - { - url: 'http://cortex/api/prom/push', - write_relabel_configs: [ - { - source_labels: ['__name__'], - regex: 'avalanche_.*', - action: 'drop', - }, - ], - }, - { - url: 'http://smoke-test:19090/api/prom/push', - write_relabel_configs: [ - { - source_labels: ['__name__'], - regex: 'avalanche_.*', - action: 'keep', - }, - ], - }, - ], + remote_write: [{ url: 'http://cortex/api/prom/push' }], scrape_configs: [ { job_name: 'crow', @@ -101,28 +71,7 @@ local smoke = { ], }, { name: 'avalanche', - remote_write: [ - { - url: 'http://cortex/api/prom/push', - write_relabel_configs: [ - { - source_labels: ['__name__'], - regex: 'avalanche_.*', - action: 'drop', - }, - ], - }, - { - url: 'http://smoke-test:19090/api/prom/push', - write_relabel_configs: [ - { - source_labels: ['__name__'], - regex: 'avalanche_.*', - action: 'keep', - }, - ], - }, - ], + remote_write: [{ url: 'http://cortex/api/prom/push' }], scrape_configs: [ { job_name: 'avalanche', diff --git a/example/k3d/smoke/monitoring/main.jsonnet b/example/k3d/smoke/monitoring/main.jsonnet index 4e6a7738ec97..fc226923f448 100644 --- a/example/k3d/smoke/monitoring/main.jsonnet +++ b/example/k3d/smoke/monitoring/main.jsonnet @@ -11,7 +11,6 @@ local ingress = k.networking.v1beta1.ingress; local rule = k.networking.v1beta1.ingressRule; local path = k.networking.v1beta1.httpIngressPath; - local prometheus_monitoring = import './prometheus_monitoring.libsonnet'; { diff --git a/go.mod b/go.mod index 768e6c44439c..befaa6540d34 100644 --- a/go.mod +++ b/go.mod @@ -33,7 +33,6 @@ require ( github.com/jsternberg/zap-logfmt v1.2.0 github.com/lib/pq v1.10.2 github.com/miekg/dns v1.1.43 - github.com/mitchellh/mapstructure v1.4.2 github.com/mitchellh/reflectwalk v1.0.2 github.com/ncabatoff/process-exporter v0.7.5 github.com/oklog/run v1.1.0 @@ -42,7 +41,6 @@ require ( github.com/open-telemetry/opentelemetry-collector-contrib/exporter/jaegerexporter v0.40.0 github.com/open-telemetry/opentelemetry-collector-contrib/exporter/loadbalancingexporter v0.40.0 github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.40.0 - github.com/open-telemetry/opentelemetry-collector-contrib/extension/oauth2clientauthextension v0.40.0 github.com/open-telemetry/opentelemetry-collector-contrib/processor/attributesprocessor v0.40.0 github.com/open-telemetry/opentelemetry-collector-contrib/processor/spanmetricsprocessor v0.40.0 github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor v0.40.0 @@ -295,6 +293,7 @@ require ( github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/go-testing-interface v1.0.0 // indirect + github.com/mitchellh/mapstructure v1.4.2 // indirect github.com/moby/sys/mount v0.3.0 // indirect github.com/moby/sys/mountinfo v0.5.0 // indirect github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6 // indirect @@ -454,7 +453,7 @@ replace ( github.com/percona/mongodb_exporter => github.com/grafana/mongodb_exporter v0.20.8-0.20211006135645-bef0f0239601 github.com/percona/percona-toolkit => github.com/rlankfo/percona-toolkit v0.0.0-20211028191359-7aada1bf148f github.com/prometheus-community/postgres_exporter => github.com/grafana/postgres_exporter v0.8.1-0.20210722175051-db35d7c2f520 - github.com/prometheus-community/windows_exporter => github.com/grafana/windows_exporter v0.15.1-0.20220202211901-871715ba0b43 + github.com/prometheus-community/windows_exporter => github.com/grafana/windows_exporter v0.15.1-0.20211019183116-592dfa92f9fd github.com/prometheus/mysqld_exporter => github.com/grafana/mysqld_exporter v0.12.2-0.20201015182516-5ac885b2d38a github.com/prometheus/statsd_exporter => github.com/grafana/statsd_exporter v0.18.1-0.20211118164740-8e806158da0b ) @@ -483,6 +482,3 @@ replace github.com/leoluk/perflib_exporter v0.1.0 => github.com/grafana/perflib_ // Required until fork merged upstream for dynamic configuration support replace github.com/hairyhenderson/gomplate/v3 => github.com/mattdurham/gomplate/v3 v3.10.1-0.20220204190650-af65008b9bb1 - -// Required to ensure compatible hashicorp lib is loaded for dynamic configuration, this solves an ambigous import -exclude github.com/hashicorp/vault v0.10.3 diff --git a/go.sum b/go.sum index c890beb659b0..d2e7a1a48367 100644 --- a/go.sum +++ b/go.sum @@ -69,8 +69,6 @@ cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohl cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= cloud.google.com/go/storage v1.16.1/go.mod h1:LaNorbty3ehnU3rEjXSNV/NRgQA0O8Y+uh6bPe5UOk4= -cloud.google.com/go/storage v1.17.0 h1:CDpe3jS3EiD5nGlbtvyA4EUfkF6k9GMrxLR8+hLmoec= -cloud.google.com/go/storage v1.17.0/go.mod h1:0wRtHSM3Npk/QJYdwcpRNVRVJlH2OxyWF9Dws3J+MtE= cloud.google.com/go/storage v1.18.2 h1:5NQw6tOn3eMm0oE8vTkfjau18kjL79FlMjy/CHTpmoY= cloud.google.com/go/storage v1.18.2/go.mod h1:AiIj7BWXyhO5gGVmYJ+S8tbkCx3yb0IMjua8Aw4naVM= cloud.google.com/go/trace v0.1.0/go.mod h1:wxEwsoeRVPbeSkt7ZC9nWCgmoKQRAoySN7XHW2AmI7g= @@ -1292,8 +1290,8 @@ github.com/grafana/statsd_exporter v0.18.1-0.20211118164740-8e806158da0b h1:eFIc github.com/grafana/statsd_exporter v0.18.1-0.20211118164740-8e806158da0b/go.mod h1:N4Z1+iSqc9rnxlT1N8Qn3l65Vzb5t4Uq0jpg8nxyhio= github.com/grafana/tail v0.0.0-20201004203643-7aa4e4a91f03 h1:fGgFrAraMB0BaPfYumu+iulfDXwHm+GFyHA4xEtBqI8= github.com/grafana/tail v0.0.0-20201004203643-7aa4e4a91f03/go.mod h1:GIMXMPB/lRAllP5rVDvcGif87ryO2hgD7tCtHMdHrho= -github.com/grafana/windows_exporter v0.15.1-0.20220202211901-871715ba0b43 h1:gb+wDKb+9r4n3QbMzfudcHDtE9lI+kKjx+98bYphqK4= -github.com/grafana/windows_exporter v0.15.1-0.20220202211901-871715ba0b43/go.mod h1:zWjLDqyEy3ZEy1LNlR6iUJJgYCoUDJTyUbrjeLUp3ZE= +github.com/grafana/windows_exporter v0.15.1-0.20211019183116-592dfa92f9fd h1:jQ9JCvwdRW32X/LP3ezXT4EnJCirq9bb3l5svQs8j7k= +github.com/grafana/windows_exporter v0.15.1-0.20211019183116-592dfa92f9fd/go.mod h1:zWjLDqyEy3ZEy1LNlR6iUJJgYCoUDJTyUbrjeLUp3ZE= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grobie/gomemcache v0.0.0-20201204163352-08d7c80fcac6 h1:vqwzYov9hrRoGAmy61um8mVteOCD0bEbKgXr1mmkTlI= github.com/grobie/gomemcache v0.0.0-20201204163352-08d7c80fcac6/go.mod h1:L69/dBlPQlWkcnU76WgcppK5e4rrxzQdi6LhLnK/ytA= @@ -1449,6 +1447,7 @@ github.com/hashicorp/serf v0.9.3/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKEN github.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk= github.com/hashicorp/serf v0.9.6 h1:uuEX1kLR6aoda1TBttmJQKDLZE1Ob7KN0NPdE7EtCDc= github.com/hashicorp/serf v0.9.6/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= +github.com/hashicorp/vault v0.10.3/go.mod h1:KfSyffbKxoVyspOdlaGVjIuwLobi07qD1bAbosPMpP0= github.com/hashicorp/vault-plugin-secrets-kv v0.0.0-20190318174639-195e0e9d07f1/go.mod h1:VJHHT2SC1tAPrfENQeBhLlb5FbZoKZM+oC/ROmEftz0= github.com/hashicorp/vault/api v1.0.4/go.mod h1:gDcqh3WGcR1cpF5AJz/B1UFheUEneMoIospckxBxk6Q= github.com/hashicorp/vault/api v1.3.0 h1:uDy39PLSvy6gtKyjOCRPizy2QdFiIYSWBR2pxCEzYL8= @@ -1957,8 +1956,6 @@ github.com/open-telemetry/opentelemetry-collector-contrib/exporter/loadbalancing github.com/open-telemetry/opentelemetry-collector-contrib/exporter/loadbalancingexporter v0.40.0/go.mod h1:8gCz0iEj986dJMmKwi/tYo8pdQj/mnBRiRkemi97XGw= github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.40.0 h1:KCRIWJ8cqooPisXKhhoFPmq6Oo5nhb2X0XU/9uW6yAU= github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.40.0/go.mod h1:kbjb5xSL0+VLPOaroPGXV9/aZKfHDx1NEzRGjX55avA= -github.com/open-telemetry/opentelemetry-collector-contrib/extension/oauth2clientauthextension v0.40.0 h1:LAj9r9orM1tLKh+erijFOpmj5D7vk2RiIh73PZtY1Ko= -github.com/open-telemetry/opentelemetry-collector-contrib/extension/oauth2clientauthextension v0.40.0/go.mod h1:KWUGnn6Ud3OS6AotkxSQt0m4U8Hm3QWQdI28cevlnQ8= github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.40.0 h1:FDoxyvSRJumeWNMMtwmyS6qz+5vDogkOAViz7EUvF6s= github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.40.0/go.mod h1:a56dESln9qTQfvLlG4iVrDSVsLzWaFS5363i8sAxqDo= github.com/open-telemetry/opentelemetry-collector-contrib/internal/sharedcomponent v0.40.0 h1:IICNKhsUNFUw9qLmOVj4EkoTS+MYrGqAij+LgEM/f/c= @@ -3027,6 +3024,7 @@ golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210831042530-f4d43177bf5e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210906170528-6f6e22806c34/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210917161153-d61c044b1678/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211020174200-9d6173849985/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211023085530-d6a326fbbf70/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -3217,6 +3215,7 @@ google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6 google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= +google.golang.org/api v0.58.0/go.mod h1:cAbP2FsxoGVNwtgNAmmn3y5G1TWAiVYRmg4yku3lv+E= google.golang.org/api v0.59.0 h1:fPfFO7gttlXYo2ALuD3HxJzh8vaF++4youI0BkFL6GE= google.golang.org/api v0.59.0/go.mod h1:sT2boj7M9YJxZzgeZqXogmhfmRWDtPzT31xkieUbuZU= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= @@ -3311,9 +3310,10 @@ google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEc google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210921142501-181ce0d877f6/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20210917145530-b395a37504d4/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211008145708-270636b82663/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211016002631-37fc39342514/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211020151524-b7c3a969101a/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211112145013-271947fe86fd h1:8jqRgiTTWyKMDOM2AvhjA5dZLBSKXg1yFupPRBV/4fQ= google.golang.org/genproto v0.0.0-20211112145013-271947fe86fd/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= diff --git a/pkg/config/config.go b/pkg/config/config.go index 3cac27a58f5d..e47d2b9f49ab 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -20,6 +20,7 @@ import ( "github.com/grafana/agent/pkg/util" "github.com/grafana/dskit/kv/consul" "github.com/grafana/dskit/kv/etcd" + "github.com/pkg/errors" "github.com/prometheus/common/config" "github.com/prometheus/common/version" "github.com/stretchr/testify/require" @@ -264,7 +265,7 @@ func LoadRemote(url string, expandEnvVars bool, c *Config) error { // dynamic loader, this is a templated approach func LoadDynamicConfiguration(url string, expandvar bool, c *Config) error { if expandvar { - return fmt.Errorf("expand var is not supported when using dynamic configuration, use gomplate env instead") + return errors.New("expand var is not supported when using dynamic configuration, use gomplate env instead") } cmf, err := NewDynamicLoader() if err != nil { @@ -369,6 +370,7 @@ func load(fs *flag.FlagSet, args []string, loader func(string, bool, *Config) er } else if err := loader(dynamicConfigPath, configExpandEnv, &cfg); err != nil { return nil, fmt.Errorf("error loading dynamic configuration file %s: %w", dynamicConfigPath, err) } + } else if file == "" { return nil, fmt.Errorf("-config.file flag required") } else if err := loader(file, configExpandEnv, &cfg); err != nil { diff --git a/pkg/config/config_test.go b/pkg/config/config_test.go index 8e2c1af4c9ef..ee282211453b 100644 --- a/pkg/config/config_test.go +++ b/pkg/config/config_test.go @@ -2,7 +2,7 @@ package config import ( "flag" - "net/url" + "os" "strings" "testing" "time" @@ -12,7 +12,6 @@ import ( "github.com/grafana/agent/pkg/metrics" "github.com/grafana/agent/pkg/metrics/instance" "github.com/grafana/agent/pkg/util" - commonCfg "github.com/prometheus/common/config" "github.com/prometheus/common/model" promCfg "github.com/prometheus/prometheus/config" "github.com/prometheus/prometheus/pkg/labels" @@ -100,7 +99,7 @@ metrics: EvaluationInterval: model.Duration(1 * time.Minute), }, } - t.Setenv("SCRAPE_TIMEOUT", "33s") + _ = os.Setenv("SCRAPE_TIMEOUT", "33s") fs := flag.NewFlagSet("test", flag.ExitOnError) c, err := load(fs, []string{"-config.file", "test"}, func(_ string, _ bool, c *Config) error { @@ -432,28 +431,6 @@ metrics: require.Equal(t, "verysecret", cfg.Metrics.ServiceConfig.Lifecycler.RingConfig.KVStore.Etcd.Password) } -func TestConfig_RemoteWriteDefaults(t *testing.T) { - cfg := ` -metrics: - global: - remote_write: - - name: "foo" - url: "https://test/url"` - - var c Config - err := LoadBytes([]byte(cfg), false, &c) - require.NoError(t, err) - - expected := &promCfg.DefaultRemoteWriteConfig - expected.Name = "foo" - testURL, _ := url.Parse("https://test/url") - expected.URL = &commonCfg.URL{ - URL: testURL, - } - require.Equal(t, expected, c.Metrics.Global.RemoteWrite[0]) - require.True(t, c.Metrics.Global.RemoteWrite[0].SendExemplars) -} - func TestLoadDynamicConfigurationExpandError(t *testing.T) { err := LoadDynamicConfiguration("", true, nil) assert.Error(t, err) diff --git a/pkg/config/dynamicloader_configs_test.go b/pkg/config/dynamicloader_configs_test.go index 70a4318ccd22..b0659a58d4e9 100644 --- a/pkg/config/dynamicloader_configs_test.go +++ b/pkg/config/dynamicloader_configs_test.go @@ -233,6 +233,7 @@ windows_exporter: {} // the node_exporter integration in the agent-1.yml is in the configV2 assert.Len(t, cfg.Integrations.ExtraIntegrations, 1) assert.Len(t, cfg.Integrations.configV2.Configs, 2) + } func TestFilterOverrides(t *testing.T) { @@ -325,4 +326,5 @@ configs: assert.True(t, cfg.Traces.Configs[0].Name == "test_traces") // Test Logs assert.True(t, cfg.Logs.Configs[0].Name == "test_logs") + } diff --git a/pkg/config/dynamicloader_template_test.go b/pkg/config/dynamicloader_template_test.go index 0fb898ba7dd5..2e23a6775896 100644 --- a/pkg/config/dynamicloader_template_test.go +++ b/pkg/config/dynamicloader_template_test.go @@ -151,7 +151,9 @@ func generatePath(t *testing.T) string { } func pushFilesToFakeS3(t *testing.T, filename string, filecontents string) *url.URL { - t.Setenv("AWS_ANON", "true") + _ = os.Setenv("AWS_ANON", "true") + t.Cleanup(func() { _ = os.Unsetenv("AWS_ANON") }) + backend := s3mem.New() faker := gofakes3.New(backend) diff --git a/pkg/crow/crow.go b/pkg/crow/crow.go index 2b670dd1bc8b..0d49a12b7f42 100644 --- a/pkg/crow/crow.go +++ b/pkg/crow/crow.go @@ -21,7 +21,6 @@ import ( promapi "github.com/prometheus/client_golang/api/prometheus/v1" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promhttp" - commonCfg "github.com/prometheus/common/config" "github.com/prometheus/common/model" "github.com/weaveworks/common/user" ) @@ -30,10 +29,8 @@ import ( type Config struct { PrometheusAddr string // Base URL of Prometheus server NumSamples int // Number of samples to generate - UserID string // User ID to use for auth when querying. - PasswordFile string // Password File for auth when querying. + UserID string // User ID to use when querying. ExtraSelectors string // Extra selectors for queries, i.e., cluster="prod" - OrgID string // Org ID to inject in X-Org-ScopeID header when querying. // Querying Params @@ -62,10 +59,8 @@ func (c *Config) RegisterFlags(f *flag.FlagSet) { func (c *Config) RegisterFlagsWithPrefix(f *flag.FlagSet, prefix string) { f.StringVar(&c.PrometheusAddr, prefix+"prometheus-addr", DefaultConfig.PrometheusAddr, "Root URL of the Prometheus API to query against") f.IntVar(&c.NumSamples, prefix+"generate-samples", DefaultConfig.NumSamples, "Number of samples to generate when being scraped") - f.StringVar(&c.UserID, prefix+"user-id", DefaultConfig.UserID, "UserID to use with basic auth.") - f.StringVar(&c.PasswordFile, prefix+"password-file", DefaultConfig.PasswordFile, "Password file to use with basic auth.") + f.StringVar(&c.UserID, prefix+"user-id", DefaultConfig.UserID, "UserID to attach to query. Useful for querying multi-tenated Cortex.") f.StringVar(&c.ExtraSelectors, prefix+"extra-selectors", DefaultConfig.ExtraSelectors, "Extra selectors to include in queries, useful for identifying different instances of this job.") - f.StringVar(&c.OrgID, prefix+"org-id", DefaultConfig.OrgID, "Org ID to inject in X-Org-ScopeID header when querying. Useful for querying multi-tenated Cortex directly.") f.DurationVar(&c.QueryTimeout, prefix+"query-timeout", DefaultConfig.QueryTimeout, "timeout for querying") f.DurationVar(&c.QueryDuration, prefix+"query-duration", DefaultConfig.QueryDuration, "time before and after sample to search") @@ -148,21 +143,18 @@ func newCrow(cfg Config) (*Crow, error) { } apiCfg := api.Config{ - Address: cfg.PrometheusAddr, - RoundTripper: api.DefaultRoundTripper, + Address: cfg.PrometheusAddr, } - if cfg.UserID != "" && cfg.PasswordFile != "" { - apiCfg.RoundTripper = commonCfg.NewBasicAuthRoundTripper(cfg.UserID, "", cfg.PasswordFile, api.DefaultRoundTripper) - } - if cfg.OrgID != "" { + if cfg.UserID != "" { apiCfg.RoundTripper = &nethttp.Transport{ RoundTripper: promhttp.RoundTripperFunc(func(req *http.Request) (*http.Response, error) { - _ = user.InjectOrgIDIntoHTTPRequest(user.InjectOrgID(context.Background(), cfg.OrgID), req) - return apiCfg.RoundTripper.RoundTrip(req) + _ = user.InjectOrgIDIntoHTTPRequest(user.InjectOrgID(context.Background(), cfg.UserID), req) + return api.DefaultRoundTripper.RoundTrip(req) }), } + } else { + apiCfg.RoundTripper = &nethttp.Transport{} } - cli, err := api.NewClient(apiCfg) if err != nil { return nil, fmt.Errorf("failed to create prometheus client: %w", err) @@ -293,7 +285,7 @@ func (c *Crow) validate(b *sample) error { }) if err != nil { - level.Error(c.cfg.Log).Log("msg", "failed to query for sample", "query", query, "err", err) + level.Error(c.cfg.Log).Log("msg", "failed to query for sample", "query", "err", err) } else if m, ok := val.(model.Matrix); ok { return c.validateInMatrix(query, b, m) } diff --git a/pkg/integrations/cadvisor/common.go b/pkg/integrations/cadvisor/common.go index efd5df363860..6d5d0b5eb70a 100644 --- a/pkg/integrations/cadvisor/common.go +++ b/pkg/integrations/cadvisor/common.go @@ -9,7 +9,7 @@ import ( const name = "cadvisor" // DefaultConfig holds the default settings for the cadvisor integration -var DefaultConfig = Config{ +var DefaultConfig Config = Config{ // Common cadvisor config defaults StoreContainerLabels: true, ResctrlInterval: 0, diff --git a/pkg/integrations/dnsmasq_exporter/dnsmasq_exporter.go b/pkg/integrations/dnsmasq_exporter/dnsmasq_exporter.go index 3f89ec2d842a..93dd2ee1f837 100644 --- a/pkg/integrations/dnsmasq_exporter/dnsmasq_exporter.go +++ b/pkg/integrations/dnsmasq_exporter/dnsmasq_exporter.go @@ -11,7 +11,7 @@ import ( ) // DefaultConfig is the default config for dnsmasq_exporter. -var DefaultConfig = Config{ +var DefaultConfig Config = Config{ DnsmasqAddress: "localhost:53", LeasesPath: "/var/lib/misc/dnsmasq.leases", } diff --git a/pkg/integrations/github_exporter/github_exporter.go b/pkg/integrations/github_exporter/github_exporter.go index 268c451a1d55..b9997eb4ee07 100644 --- a/pkg/integrations/github_exporter/github_exporter.go +++ b/pkg/integrations/github_exporter/github_exporter.go @@ -15,7 +15,7 @@ import ( ) // DefaultConfig holds the default settings for the github_exporter integration -var DefaultConfig = Config{ +var DefaultConfig Config = Config{ APIURL: "https://api.github.com", } @@ -74,6 +74,7 @@ func init() { // New creates a new github_exporter integration. func New(logger log.Logger, c *Config) (integrations.Integration, error) { + conf := gh_config.Config{} err := conf.SetAPIURL(c.APIURL) if err != nil { diff --git a/pkg/integrations/install/install.go b/pkg/integrations/install/install.go index 5f9145f63616..504239b80453 100644 --- a/pkg/integrations/install/install.go +++ b/pkg/integrations/install/install.go @@ -28,5 +28,4 @@ import ( // _ "github.com/grafana/agent/pkg/integrations/v2/agent" // register agent - _ "github.com/grafana/agent/pkg/integrations/v2/eventhandler" ) diff --git a/pkg/integrations/manager_test.go b/pkg/integrations/manager_test.go index ffd44dbb8100..88325dfb874f 100644 --- a/pkg/integrations/manager_test.go +++ b/pkg/integrations/manager_test.go @@ -36,8 +36,8 @@ use_hostname_label: true ` var ( cfg ManagerConfig - listenPort = 12345 - listenHost = "127.0.0.1" + listenPort int = 12345 + listenHost string = "127.0.0.1" ) require.NoError(t, yaml.Unmarshal([]byte(cfgText), &cfg)) @@ -66,8 +66,8 @@ test: ` var ( cfg ManagerConfig - listenPort = 12345 - listenHost = "127.0.0.1" + listenPort int = 12345 + listenHost string = "127.0.0.1" ) require.NoError(t, yaml.Unmarshal([]byte(cfgText), &cfg)) @@ -89,8 +89,8 @@ agent: var ( cfg ManagerConfig - listenPort = 12345 - listenHost = "127.0.0.1" + listenPort int = 12345 + listenHost string = "127.0.0.1" ) require.NoError(t, yaml.Unmarshal([]byte(cfgText), &cfg)) diff --git a/pkg/integrations/memcached_exporter/memcached_exporter.go b/pkg/integrations/memcached_exporter/memcached_exporter.go index 93d79871dc09..c117528450bf 100644 --- a/pkg/integrations/memcached_exporter/memcached_exporter.go +++ b/pkg/integrations/memcached_exporter/memcached_exporter.go @@ -12,7 +12,7 @@ import ( ) // DefaultConfig is the default config for memcached_exporter. -var DefaultConfig = Config{ +var DefaultConfig Config = Config{ MemcachedAddress: "localhost:11211", Timeout: time.Second, } diff --git a/pkg/integrations/mongodb_exporter/mongodb_exporter.go b/pkg/integrations/mongodb_exporter/mongodb_exporter.go index 905ffcef58cc..e666d54c2b34 100644 --- a/pkg/integrations/mongodb_exporter/mongodb_exporter.go +++ b/pkg/integrations/mongodb_exporter/mongodb_exporter.go @@ -20,6 +20,7 @@ type Config struct { // UnmarshalYAML implements yaml.Unmarshaler for Config func (c *Config) UnmarshalYAML(unmarshal func(interface{}) error) error { + type plain Config return unmarshal((*plain)(c)) } diff --git a/pkg/integrations/postgres_exporter/postgres_test.go b/pkg/integrations/postgres_exporter/postgres_test.go index e3a74f7bbc57..0b6bbe8963b1 100644 --- a/pkg/integrations/postgres_exporter/postgres_test.go +++ b/pkg/integrations/postgres_exporter/postgres_test.go @@ -17,4 +17,5 @@ integrations: ` config.CheckSecret(t, stringCfg, "secret_password_in_uri") config.CheckSecret(t, stringCfg, "secret_password_in_uri_2") + } diff --git a/pkg/integrations/redis_exporter/redis_exporter.go b/pkg/integrations/redis_exporter/redis_exporter.go index 1661ee5a86ca..2a71d35c1e44 100644 --- a/pkg/integrations/redis_exporter/redis_exporter.go +++ b/pkg/integrations/redis_exporter/redis_exporter.go @@ -144,7 +144,9 @@ func New(log log.Logger, c *Config) (integrations.Integration, error) { if (c.TLSClientKeyFile != "") != (c.TLSClientCertFile != "") { return nil, errors.New("TLS client key file and cert file should both be present") - } else if c.TLSClientKeyFile != "" && c.TLSClientCertFile != "" { + } + if c.TLSClientKeyFile != "" && c.TLSClientCertFile != "" { + exporterConfig.ClientKeyFile = c.TLSClientKeyFile exporterConfig.ClientCertFile = c.TLSClientCertFile } diff --git a/pkg/integrations/redis_exporter/redis_exporter_test.go b/pkg/integrations/redis_exporter/redis_exporter_test.go index 2830c0657f40..49391bae0cbc 100644 --- a/pkg/integrations/redis_exporter/redis_exporter_test.go +++ b/pkg/integrations/redis_exporter/redis_exporter_test.go @@ -104,6 +104,7 @@ func TestRedisCases(t *testing.T) { logger := log.NewNopLogger() for _, test := range tt { + t.Run(test.name, func(t *testing.T) { integration, err := New(logger, &test.cfg) @@ -150,6 +151,7 @@ func TestRedisCases(t *testing.T) { require.True(t, exists, "could not find metric %s", metric) } }) + } } diff --git a/pkg/integrations/v2/autoscrape/autoscrape.go b/pkg/integrations/v2/autoscrape/autoscrape.go index 70b7fbd89cbd..a5d986273bd4 100644 --- a/pkg/integrations/v2/autoscrape/autoscrape.go +++ b/pkg/integrations/v2/autoscrape/autoscrape.go @@ -19,7 +19,7 @@ import ( ) // DefaultGlobal holds default values for Global. -var DefaultGlobal = Global{ +var DefaultGlobal Global = Global{ Enable: true, MetricsInstance: "default", } @@ -197,8 +197,8 @@ func newInstanceScraper( s InstanceStore, instanceName string, ) *instanceScraper { - ctx, cancel := context.WithCancel(ctx) + l = log.With(l, "target_instance", instanceName) sd := discovery.NewManager(ctx, l, discovery.Name("autoscraper/"+instanceName)) diff --git a/pkg/integrations/v2/autoscrape/autoscrape_test.go b/pkg/integrations/v2/autoscrape/autoscrape_test.go index 2e9a5e9e73eb..c813b678a5f8 100644 --- a/pkg/integrations/v2/autoscrape/autoscrape_test.go +++ b/pkg/integrations/v2/autoscrape/autoscrape_test.go @@ -3,6 +3,7 @@ package autoscrape import ( "context" "net/http/httptest" + "sync/atomic" "testing" "time" @@ -14,10 +15,10 @@ import ( "github.com/prometheus/prometheus/discovery" "github.com/prometheus/prometheus/pkg/exemplar" "github.com/prometheus/prometheus/pkg/labels" + "github.com/prometheus/prometheus/scrape" "github.com/prometheus/prometheus/storage" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "go.uber.org/atomic" ) // TestAutoscrape is a basic end-to-end test of the autoscraper. @@ -68,15 +69,15 @@ func TestAutoscrape(t *testing.T) { require.NoError(t, wt.Wait(5*time.Second), "timed out waiting for scrape") } -var globalRef atomic.Uint64 +var globalRef uint64 var noOpAppender = mockAppender{ AppendFunc: func(ref uint64, l labels.Labels, t int64, v float64) (uint64, error) { - return globalRef.Inc(), nil + return atomic.AddUint64(&globalRef, 1), nil }, CommitFunc: func() error { return nil }, RollbackFunc: func() error { return nil }, AppendExemplarFunc: func(ref uint64, l labels.Labels, e exemplar.Exemplar) (uint64, error) { - return globalRef.Inc(), nil + return atomic.AddUint64(&globalRef, 1), nil }, } @@ -97,8 +98,11 @@ func (ma *mockAppender) AppendExemplar(ref uint64, l labels.Labels, e exemplar.E } type mockInstance struct { - instance.NoOpInstance app storage.Appender } +func (mi *mockInstance) Run(ctx context.Context) error { return nil } +func (mi *mockInstance) Update(c instance.Config) error { return nil } +func (mi *mockInstance) TargetsActive() map[string][]*scrape.Target { return nil } +func (mi *mockInstance) StorageDirectory() string { return "" } func (mi *mockInstance) Appender(ctx context.Context) storage.Appender { return mi.app } diff --git a/pkg/integrations/v2/common/metrics.go b/pkg/integrations/v2/common/metrics.go index 405180846bb4..6a670f47d745 100644 --- a/pkg/integrations/v2/common/metrics.go +++ b/pkg/integrations/v2/common/metrics.go @@ -2,7 +2,6 @@ package common import ( "github.com/grafana/agent/pkg/integrations/v2/autoscrape" - "github.com/prometheus/prometheus/pkg/labels" ) // MetricsConfig is a set of common options shared by metrics integrations. It @@ -15,7 +14,6 @@ import ( type MetricsConfig struct { Autoscrape autoscrape.Config `yaml:"autoscrape,omitempty"` InstanceKey *string `yaml:"instance,omitempty"` - ExtraLabels labels.Labels `yaml:"extra_labels,omitempty"` } // ApplyDefaults applies defaults to mc. diff --git a/pkg/integrations/v2/controller.go b/pkg/integrations/v2/controller.go index 7ecf37fbfe18..91072534ecbe 100644 --- a/pkg/integrations/v2/controller.go +++ b/pkg/integrations/v2/controller.go @@ -27,14 +27,20 @@ type controllerConfig []Config // controller manages a set of integrations. type controller struct { - logger log.Logger + logger log.Logger + mut sync.Mutex + cfg controllerConfig + globals Globals - mut sync.Mutex - cfg controllerConfig - globals Globals - integrations []*controlledIntegration // Running integrations + integrations []*controlledIntegration // Integrations to run + reloadIntegrations chan struct{} // Inform Controller.Run to re-read integrations - runIntegrations chan []*controlledIntegration // Schedule integrations to run + // Next generation value to use for an integration. + gen atomic.Uint64 + + // onUpdateDone is used for testing and will be invoked when integrations + // finish reloading. + onUpdateDone func() } // newController creates a new Controller. Controller is intended to be @@ -42,8 +48,8 @@ type controller struct { // integrations. func newController(l log.Logger, cfg controllerConfig, globals Globals) (*controller, error) { c := &controller{ - logger: l, - runIntegrations: make(chan []*controlledIntegration, 1), + logger: l, + reloadIntegrations: make(chan struct{}, 1), } if err := c.UpdateController(cfg, globals); err != nil { return nil, err @@ -53,40 +59,133 @@ func newController(l log.Logger, cfg controllerConfig, globals Globals) (*contro // run starts the controller and blocks until ctx is canceled. func (c *controller) run(ctx context.Context) { - pool := newWorkerPool(ctx, c.logger) - defer pool.Close() + defer func() { + level.Debug(c.logger).Log("msg", "stopping all integrations") + + c.mut.Lock() + defer c.mut.Unlock() + + for _, exist := range c.integrations { + exist.Stop() + } + }() + + var currentIntegrations []*controlledIntegration + + updateIntegrations := func() { + // Lock the mutex to prevent another set of integrations from being + // loaded in. + c.mut.Lock() + defer c.mut.Unlock() + level.Debug(c.logger).Log("msg", "updating running integrations", "prev_count", len(currentIntegrations), "new_count", len(c.integrations)) + + newIntegrations := c.integrations + + // Shut down all old integrations. If the integration exists in + // newIntegrations but has a different gen number, then there's a new + // instance to launch. + for _, exist := range currentIntegrations { + var found bool + for _, current := range newIntegrations { + if exist.id == current.id && current.gen == exist.gen { + found = true + break + } + } + if !found { + exist.Stop() + } + } + + var waitStarted sync.WaitGroup + waitStarted.Add(len(newIntegrations)) + + // Now all integrations can be launched. + for _, current := range newIntegrations { + go func(current *controlledIntegration) { + waitStarted.Done() + + err := current.Run(ctx) + if err != nil && !errors.Is(err, errIntegrationRunning) { + level.Warn(c.logger).Log("msg", "integration exited with error", "instance", current.id, "err", err) + } + }(current) + } + + // Wait for all integration goroutines to have been scheduled at least once. + waitStarted.Wait() + + // Finally, store the current list of contolled integrations. + currentIntegrations = newIntegrations + } for { select { case <-ctx.Done(): level.Debug(c.logger).Log("msg", "controller exiting") return - case newIntegrations := <-c.runIntegrations: - pool.Reload(newIntegrations) - - c.mut.Lock() - c.integrations = newIntegrations - c.mut.Unlock() + case <-c.reloadIntegrations: + updateIntegrations() + if c.onUpdateDone != nil { + c.onUpdateDone() + } } } } -// controlledIntegration is a running Integration. A running integration is -// identified uniquely by its id. +// controlledIntegration is a running Integration. +// A running integration is identified uniquely by its id and gen. type controlledIntegration struct { - id integrationID - i Integration - c Config // Config that generated i. Used for changing to see if a config changed. + id integrationID + gen uint64 + + i Integration + c Config // Config that generated i. Used for changing to see if a config changed. + running atomic.Bool + + mut sync.Mutex + stop context.CancelFunc } func (ci *controlledIntegration) Running() bool { return ci.running.Load() } +func (ci *controlledIntegration) Run(ctx context.Context) error { + updatedRunningState := ci.running.CAS(false, true) + if !updatedRunningState { + // The CAS will fail if our integration was already running. + return errIntegrationRunning + } + defer ci.running.Store(false) + + ci.mut.Lock() + ctx, ci.stop = context.WithCancel(ctx) + ci.mut.Unlock() + + // Early optimization: don't do anything if ctx has already been canceled + if ctx.Err() != nil { + return nil + } + return ci.i.RunIntegration(ctx) +} + +var errIntegrationRunning = fmt.Errorf("already running") + +func (ci *controlledIntegration) Stop() { + ci.mut.Lock() + if ci.stop != nil { + ci.stop() + } + ci.mut.Unlock() +} + // integrationID uses a tuple of Name and Identifier to uniquely identify an // integration. -type integrationID struct{ Name, Identifier string } +type integrationID struct { + Name, Identifier string +} func (id integrationID) String() string { return fmt.Sprintf("%s/%s", id.Name, id.Identifier) @@ -180,14 +279,16 @@ NextConfig: // Create a new controlled integration. integrations = append(integrations, &controlledIntegration{ - id: id, - i: integration, - c: ic, + id: id, + gen: c.gen.Inc(), + i: integration, + c: ic, }) } - // Schedule integrations to run - c.runIntegrations <- integrations + // Update integrations and inform + c.integrations = integrations + c.reloadIntegrations <- struct{}{} c.cfg = cfg c.globals = globals @@ -201,6 +302,9 @@ NextConfig: // Handler is expensive to compute and should only be done after reloading the // config. func (c *controller) Handler(prefix string) (http.Handler, error) { + c.mut.Lock() + defer c.mut.Unlock() + var firstErr error saveFirstErr := func(err error) { if firstErr == nil { @@ -210,7 +314,7 @@ func (c *controller) Handler(prefix string) (http.Handler, error) { r := mux.NewRouter() - err := c.forEachIntegration(prefix, func(ci *controlledIntegration, iprefix string) { + err := forEachIntegration(c.integrations, prefix, func(ci *controlledIntegration, iprefix string) { id := ci.id i, ok := ci.i.(HTTPIntegration) @@ -246,23 +350,20 @@ func (c *controller) Handler(prefix string) (http.Handler, error) { // forEachIntegration calculates the prefix for each integration and calls f. // prefix will not end in /. -func (c *controller) forEachIntegration(basePrefix string, f func(ci *controlledIntegration, iprefix string)) error { - c.mut.Lock() - defer c.mut.Unlock() - +func forEachIntegration(set []*controlledIntegration, basePrefix string, f func(ci *controlledIntegration, iprefix string)) error { // Pre-populate a mapping of integration name -> identifier. If there are // two instances of the same integration, we want to ensure unique routing. // // This special logic is done for backwards compatibility with the original // design of integrations. identifiersMap := map[string][]string{} - for _, i := range c.integrations { + for _, i := range set { identifiersMap[i.id.Name] = append(identifiersMap[i.id.Name], i.id.Identifier) } usedPrefixes := map[string]struct{}{} - for _, ci := range c.integrations { + for _, ci := range set { id := ci.id multipleInstances := len(identifiersMap[id.Name]) > 1 @@ -297,7 +398,8 @@ func (c *controller) Targets(ep Endpoint, opts TargetOptions) []*targetGroup { } var mm []prefixedMetricsIntegration - err := c.forEachIntegration(ep.Prefix, func(ci *controlledIntegration, iprefix string) { + c.mut.Lock() + err := forEachIntegration(c.integrations, ep.Prefix, func(ci *controlledIntegration, iprefix string) { // Best effort liveness check. They might stop running when we request // their targets, which is fine, but we should save as much work as we // can. @@ -312,6 +414,7 @@ func (c *controller) Targets(ep Endpoint, opts TargetOptions) []*targetGroup { if err != nil { level.Warn(c.logger).Log("msg", "error when iterating over integrations to get targets", "err", err) } + c.mut.Unlock() var tgs []*targetGroup for _, mi := range mm { @@ -404,7 +507,8 @@ func (c *controller) ScrapeConfigs(prefix string, sdConfig *http_sd.SDConfig) [] } var mm []prefixedMetricsIntegration - err := c.forEachIntegration(prefix, func(ci *controlledIntegration, iprefix string) { + c.mut.Lock() + err := forEachIntegration(c.integrations, prefix, func(ci *controlledIntegration, iprefix string) { if mi, ok := ci.i.(MetricsIntegration); ok { mm = append(mm, prefixedMetricsIntegration{id: ci.id, i: mi, prefix: iprefix}) } @@ -412,6 +516,7 @@ func (c *controller) ScrapeConfigs(prefix string, sdConfig *http_sd.SDConfig) [] if err != nil { level.Warn(c.logger).Log("msg", "error when iterating over integrations to get scrape configs", "err", err) } + c.mut.Unlock() var cfgs []*autoscrape.ScrapeConfig for _, mi := range mm { diff --git a/pkg/integrations/v2/controller_metricsintegration_test.go b/pkg/integrations/v2/controller_metricsintegration_test.go index 6302c21519fb..6ef0507c06c7 100644 --- a/pkg/integrations/v2/controller_metricsintegration_test.go +++ b/pkg/integrations/v2/controller_metricsintegration_test.go @@ -1,7 +1,6 @@ package integrations import ( - "context" "testing" "github.com/go-kit/log" @@ -22,7 +21,7 @@ import ( func Test_controller_MetricsIntegration_Targets(t *testing.T) { integrationWithTarget := func(targetName string) Integration { return mockMetricsIntegration{ - Integration: newWaitStartedIntegration(), + Integration: NoOpIntegration, TargetsFunc: func(Endpoint) []*targetgroup.Group { return []*targetgroup.Group{{ Targets: []model.LabelSet{{model.AddressLabel: model.LabelValue(targetName)}}, @@ -41,18 +40,6 @@ func Test_controller_MetricsIntegration_Targets(t *testing.T) { }), } - // waitIntegrations starts a controller and waits for all of its integrations - // to run. - waitIntegrations := func(t *testing.T, ctrl *controller) { - t.Helper() - _ = newSyncController(t, ctrl) - err := ctrl.forEachIntegration("/", func(ci *controlledIntegration, _ string) { - wsi := ci.i.(mockMetricsIntegration).Integration.(*waitStartedIntegration) - _ = wsi.trigger.WaitContext(context.Background()) - }) - require.NoError(t, err) - } - t.Run("All", func(t *testing.T) { ctrl, err := newController( util.TestLogger(t), @@ -60,7 +47,7 @@ func Test_controller_MetricsIntegration_Targets(t *testing.T) { Globals{}, ) require.NoError(t, err) - waitIntegrations(t, ctrl) + _ = newSyncController(t, ctrl) result := ctrl.Targets(Endpoint{Prefix: "/"}, TargetOptions{}) expect := []*targetGroup{ @@ -77,7 +64,7 @@ func Test_controller_MetricsIntegration_Targets(t *testing.T) { Globals{}, ) require.NoError(t, err) - waitIntegrations(t, ctrl) + _ = newSyncController(t, ctrl) result := ctrl.Targets(Endpoint{Prefix: "/"}, TargetOptions{ Integrations: []string{"a", "b"}, @@ -96,7 +83,7 @@ func Test_controller_MetricsIntegration_Targets(t *testing.T) { Globals{}, ) require.NoError(t, err) - waitIntegrations(t, ctrl) + _ = newSyncController(t, ctrl) result := ctrl.Targets(Endpoint{Prefix: "/"}, TargetOptions{ Integrations: []string{"a"}, @@ -136,7 +123,9 @@ func Test_controller_MetricsIntegration_ScrapeConfig(t *testing.T) { Globals{}, ) require.NoError(t, err) - _ = newSyncController(t, ctrl) + // NOTE(rfratto): we explicitly don't run the controller here because + // ScrapeConfigs should return the list of scrape targets even when the + // integration isn't running. result := ctrl.ScrapeConfigs("/", &http.DefaultSDConfig) expect := []*autoscrape.ScrapeConfig{ @@ -150,20 +139,6 @@ func Test_controller_MetricsIntegration_ScrapeConfig(t *testing.T) { // Tests for controller's utilization of the MetricsIntegration interface. // -type waitStartedIntegration struct { - trigger *util.WaitTrigger -} - -func newWaitStartedIntegration() *waitStartedIntegration { - return &waitStartedIntegration{trigger: util.NewWaitTrigger()} -} - -func (i *waitStartedIntegration) RunIntegration(ctx context.Context) error { - i.trigger.Trigger() - <-ctx.Done() - return nil -} - type mockMetricsIntegration struct { Integration TargetsFunc func(ep Endpoint) []*targetgroup.Group diff --git a/pkg/integrations/v2/controller_test.go b/pkg/integrations/v2/controller_test.go index d9f13ad9315d..5c8654812540 100644 --- a/pkg/integrations/v2/controller_test.go +++ b/pkg/integrations/v2/controller_test.go @@ -135,6 +135,7 @@ func Test_controller_ConfigChanges(t *testing.T) { } func Test_controller_SingletonCheck(t *testing.T) { + var integrationsWg sync.WaitGroup var starts atomic.Uint64 @@ -168,49 +169,61 @@ func Test_controller_SingletonCheck(t *testing.T) { _, err := newController(util.TestLogger(t), cfg, globals) require.Error(t, err) require.True(t, strings.Contains(err.Error(), "found multiple instances of singleton integration mock")) + } type syncController struct { - inner *controller - pool *workerPool + inner *controller + applyWg sync.WaitGroup + + stop context.CancelFunc + exitedCh chan struct{} } -// newSyncController pairs an unstarted controller with a manually managed -// worker pool to synchronously apply integrations. +// newSyncController makes calls to Controller synchronous. newSyncController +// will start running the inner controller and wait for it to update. func newSyncController(t *testing.T, inner *controller) *syncController { t.Helper() + ctx, cancel := context.WithCancel(context.Background()) + t.Cleanup(func() { + cancel() + }) + sc := &syncController{ - inner: inner, - pool: newWorkerPool(context.Background(), inner.logger), + inner: inner, + stop: cancel, + exitedCh: make(chan struct{}), } + inner.onUpdateDone = sc.applyWg.Done // Inform WG whenever an apply finishes - // There's always immediately one queued integration set from any - // successfully created controller. - sc.refresh() - return sc -} + // There's always immediately ony applied queued from any successfully created controller. + sc.applyWg.Add(1) -func (sc *syncController) refresh() { - sc.inner.mut.Lock() - defer sc.inner.mut.Unlock() + go func() { + inner.run(ctx) + close(sc.exitedCh) + }() - newIntegrations := <-sc.inner.runIntegrations - sc.pool.Reload(newIntegrations) - sc.inner.integrations = newIntegrations + sc.applyWg.Wait() + return sc } func (sc *syncController) UpdateController(c controllerConfig, g Globals) error { - err := sc.inner.UpdateController(c, g) - if err != nil { + sc.applyWg.Add(1) + + if err := sc.inner.UpdateController(c, g); err != nil { + sc.applyWg.Done() // The wg won't ever be finished now return err } - sc.refresh() + + sc.applyWg.Wait() return nil } func (sc *syncController) Stop() { - sc.pool.Close() + sc.stop() + <-sc.exitedCh } const mockIntegrationName = "mock" diff --git a/pkg/integrations/v2/eventhandler/eventhandler.go b/pkg/integrations/v2/eventhandler/eventhandler.go deleted file mode 100644 index 36de2d4732e9..000000000000 --- a/pkg/integrations/v2/eventhandler/eventhandler.go +++ /dev/null @@ -1,424 +0,0 @@ -// Package eventhandler watches for Kubernetes Event objects and hands them off to -// Agent's Logs subsystem (embedded promtail) -package eventhandler - -import ( - "context" - "encoding/json" - "fmt" - "io/ioutil" - "os" - "path/filepath" - "strings" - "sync" - "time" - - v1 "k8s.io/api/core/v1" - "k8s.io/client-go/informers" - "k8s.io/client-go/kubernetes" - "k8s.io/client-go/rest" - "k8s.io/client-go/tools/cache" - "k8s.io/client-go/tools/clientcmd" - "k8s.io/client-go/util/homedir" - - "github.com/go-kit/log" - "github.com/go-kit/log/level" - "github.com/grafana/agent/pkg/integrations/v2" - "github.com/grafana/agent/pkg/logs" - "github.com/grafana/loki/clients/pkg/promtail/api" - "github.com/grafana/loki/pkg/logproto" - "github.com/prometheus/common/model" -) - -const ( - cacheFileMode = 0600 -) - -// EventHandler watches for Kubernetes Event objects and hands them off to -// Agent's logs subsystem (embedded promtail). -type EventHandler struct { - LogsClient *logs.Logs - LogsInstance string - Log log.Logger - CachePath string - LastEvent *ShippedEvents - InitEvent *ShippedEvents - EventInformer cache.SharedIndexInformer - SendTimeout time.Duration - ticker *time.Ticker - sync.Mutex -} - -// ShippedEvents stores a timestamp and map of event ResourceVersions shipped for that timestamp. -// Used to avoid double-shipping events upon restart. -type ShippedEvents struct { - // shipped event's timestamp - Timestamp time.Time `json:"ts"` - // map of event RVs (resource versions) already "shipped" (handed off) for this timestamp. - // this is to handle the case of a timestamp having multiple events, - // which happens quite frequently. - RvMap map[string]struct{} `json:"resourceVersion"` -} - -func newEventHandler(l log.Logger, globals integrations.Globals, c *Config) (integrations.Integration, error) { - var ( - config *rest.Config - err error - factory informers.SharedInformerFactory - ) - - // Try using KubeconfigPath or inClusterConfig - config, err = clientcmd.BuildConfigFromFlags("", c.KubeconfigPath) - if err != nil { - level.Error(l).Log("msg", "Loading from KubeconfigPath or inClusterConfig failed", "err", err) - // Trying default home location - if home := homedir.HomeDir(); home != "" { - kubeconfigPath := filepath.Join(home, ".kube", "config") - config, err = clientcmd.BuildConfigFromFlags("", kubeconfigPath) - if err != nil { - level.Error(l).Log("msg", "Could not load a kubeconfig", "err", err) - return nil, err - } - } else { - err = fmt.Errorf("could not load a kubeconfig") - return nil, err - } - } - - clientset, err := kubernetes.NewForConfig(config) - if err != nil { - return nil, err - } - - // get an informer - if c.Namespace == "" { - factory = informers.NewSharedInformerFactory(clientset, time.Duration(c.InformerResync)*time.Second) - } else { - factory = informers.NewSharedInformerFactoryWithOptions(clientset, time.Duration(c.InformerResync)*time.Second, informers.WithNamespace(c.Namespace)) - } - - eventInformer := factory.Core().V1().Events().Informer() - - eh := &EventHandler{ - LogsClient: globals.Logs, - LogsInstance: c.LogsInstance, - Log: l, - CachePath: c.CachePath, - EventInformer: eventInformer, - SendTimeout: time.Duration(c.SendTimeout) * time.Second, - } - // set the resource handler fns - eh.initInformer(eventInformer) - eh.ticker = time.NewTicker(time.Duration(c.FlushInterval) * time.Second) - return eh, nil -} - -// Initialize informer by setting event handler fns -func (eh *EventHandler) initInformer(eventsInformer cache.SharedIndexInformer) { - eventsInformer.AddEventHandler(cache.ResourceEventHandlerFuncs{ - AddFunc: eh.addEvent, - UpdateFunc: eh.updateEvent, - DeleteFunc: eh.deleteEvent, - }) -} - -// Handles new event objects -func (eh *EventHandler) addEvent(obj interface{}) { - event, _ := obj.(*v1.Event) - - err := eh.handleEvent(event) - if err != nil { - level.Error(eh.Log).Log("msg", "Error handling event", "err", err, "event", event) - } -} - -// Handles event object updates. Note that this get triggered on informer resyncs and also -// events occurring more than once (in which case .count is incremented) -func (eh *EventHandler) updateEvent(objOld interface{}, objNew interface{}) { - eOld, _ := objOld.(*v1.Event) - eNew, _ := objNew.(*v1.Event) - - if eOld.GetResourceVersion() == eNew.GetResourceVersion() { - // ignore resync updates - level.Debug(eh.Log).Log("msg", "Event RV didn't change, ignoring", "eRV", eNew.ResourceVersion) - return - } - - err := eh.handleEvent(eNew) - if err != nil { - level.Error(eh.Log).Log("msg", "Error handling event", "err", err, "event", eNew) - } -} - -func (eh *EventHandler) handleEvent(event *v1.Event) error { - eventTs := getTimestamp(event) - - // if event is older than the one stored in cache on startup, we've shipped it - if eventTs.Before(eh.InitEvent.Timestamp) { - return nil - } - // if event is equal and is in map, we've shipped it - if eventTs.Equal(eh.InitEvent.Timestamp) { - if _, ok := eh.InitEvent.RvMap[event.ResourceVersion]; ok { - return nil - } - } - - labels, msg, err := eh.extractEvent(event) - if err != nil { - return err - } - - entry := newEntry(msg, eventTs, labels) - ok := eh.LogsClient.Instance(eh.LogsInstance).SendEntry(entry, eh.SendTimeout) - if !ok { - err = fmt.Errorf("msg=%s entry=%s", "error handing entry off to promtail", entry) - return err - } - level.Info(eh.Log).Log("msg", "Shipped entry", "eventRV", event.ResourceVersion, "eventMsg", event.Message) - - // update cache with new "last" event - err = eh.updateLastEvent(event, eventTs) - if err != nil { - return err - } - return nil -} - -// Called when event objects are removed from etcd, can safely ignore this -func (eh *EventHandler) deleteEvent(obj interface{}) { -} - -// extract data from event fields and create labels, etc. -// TODO: ship JSON blobs and allow users to configure using pipelines etc. -// instead of hardcoding labels here -func (eh *EventHandler) extractEvent(event *v1.Event) (model.LabelSet, string, error) { - var ( - msg strings.Builder - labels = make(model.LabelSet) - ) - - obj := event.InvolvedObject - if obj.Name == "" { - return nil, "", fmt.Errorf("no involved object for event") - } - msg.WriteString(fmt.Sprintf("name=%s ", obj.Name)) - - labels[model.LabelName("namespace")] = model.LabelValue(obj.Namespace) - - // we add these fields to the log line to reduce label bloat and cardinality - if obj.Kind != "" { - msg.WriteString(fmt.Sprintf("kind=%s ", obj.Kind)) - } - if event.Action != "" { - msg.WriteString(fmt.Sprintf("action=%s ", event.Action)) - } - if obj.APIVersion != "" { - msg.WriteString(fmt.Sprintf("objectAPIversion=%s ", obj.APIVersion)) - } - if obj.ResourceVersion != "" { - msg.WriteString(fmt.Sprintf("objectRV=%s ", obj.ResourceVersion)) - } - if event.ResourceVersion != "" { - msg.WriteString(fmt.Sprintf("eventRV=%s ", event.ResourceVersion)) - } - if event.ReportingInstance != "" { - msg.WriteString(fmt.Sprintf("reportinginstance=%s ", event.ReportingInstance)) - } - if event.ReportingController != "" { - msg.WriteString(fmt.Sprintf("reportingcontroller=%s ", event.ReportingController)) - } - if event.Source.Component != "" { - msg.WriteString(fmt.Sprintf("sourcecomponent=%s ", event.Source.Component)) - } - if event.Source.Host != "" { - msg.WriteString(fmt.Sprintf("sourcehost=%s ", event.Source.Host)) - } - if event.Reason != "" { - msg.WriteString(fmt.Sprintf("reason=%s ", event.Reason)) - } - if event.Type != "" { - msg.WriteString(fmt.Sprintf("type=%s ", event.Type)) - } - if event.Count != 0 { - msg.WriteString(fmt.Sprintf("count=%d ", event.Count)) - } - - msg.WriteString(fmt.Sprintf("msg=%q", event.Message)) - - return labels, msg.String(), nil -} - -func getTimestamp(event *v1.Event) time.Time { - if !event.LastTimestamp.IsZero() { - return event.LastTimestamp.Time - } - return event.EventTime.Time -} - -func newEntry(msg string, ts time.Time, labels model.LabelSet) api.Entry { - entry := logproto.Entry{Timestamp: ts, Line: msg} - return api.Entry{Labels: labels, Entry: entry} -} - -// maintain "last event" state -func (eh *EventHandler) updateLastEvent(e *v1.Event, eventTs time.Time) error { - eh.Lock() - defer eh.Unlock() - - eventRv := e.ResourceVersion - - if eh.LastEvent == nil { - // startup - eh.LastEvent = &ShippedEvents{Timestamp: eventTs, RvMap: make(map[string]struct{})} - eh.LastEvent.RvMap[eventRv] = struct{}{} - return nil - } - - // if timestamp is the same, add to map - if eh.LastEvent != nil && eventTs.Equal(eh.LastEvent.Timestamp) { - eh.LastEvent.RvMap[eventRv] = struct{}{} - return nil - } - - // if timestamp is different, create a new ShippedEvents struct - eh.LastEvent = &ShippedEvents{Timestamp: eventTs, RvMap: make(map[string]struct{})} - eh.LastEvent.RvMap[eventRv] = struct{}{} - return nil -} - -func (eh *EventHandler) writeOutLastEvent() error { - level.Info(eh.Log).Log("msg", "Flushing last event to disk") - - eh.Lock() - defer eh.Unlock() - - if eh.LastEvent == nil { - level.Info(eh.Log).Log("msg", "No last event to flush, returning") - return nil - } - - temp := eh.CachePath + "-new" - buf, err := json.Marshal(&eh.LastEvent) - if err != nil { - return err - } - - err = ioutil.WriteFile(temp, buf, os.FileMode(cacheFileMode)) - if err != nil { - return err - } - - if err = os.Rename(temp, eh.CachePath); err != nil { - return err - } - level.Info(eh.Log).Log("msg", "Flushed last event to disk") - return nil -} - -// RunIntegration runs the eventhandler integration -func (eh *EventHandler) RunIntegration(ctx context.Context) error { - var wg sync.WaitGroup - - ctx, cancel := context.WithCancel(ctx) - defer cancel() - - // Quick check to make sure logs instance exists - if i := eh.LogsClient.Instance(eh.LogsInstance); i == nil { - level.Error(eh.Log).Log("msg", "Logs instance not configured", "instance", eh.LogsInstance) - cancel() - } - - cacheDir := filepath.Dir(eh.CachePath) - if err := os.MkdirAll(cacheDir, 0755); err != nil { - level.Error(eh.Log).Log("msg", "Failed to create cache dir", "err", err) - cancel() - } - - // cache file to store events shipped (prevents double shipping on restart) - cacheFile, err := os.OpenFile(eh.CachePath, os.O_RDWR|os.O_CREATE, cacheFileMode) - if err != nil { - level.Error(eh.Log).Log("msg", "Failed to open or create cache file", "err", err) - cancel() - } - - // attempt to read last timestamp from cache file into a ShippedEvents struct - initEvent, err := readInitEvent(cacheFile, eh.Log) - if err != nil { - level.Error(eh.Log).Log("msg", "Failed to read last event from cache file", "err", err) - cancel() - } - eh.InitEvent = initEvent - - if err = cacheFile.Close(); err != nil { - level.Error(eh.Log).Log("msg", "Failed to close cache file", "err", err) - cancel() - } - - go func() { - level.Info(eh.Log).Log("msg", "Waiting for cache to sync (initial List of events)") - isSynced := cache.WaitForCacheSync(ctx.Done(), eh.EventInformer.HasSynced) - if !isSynced { - level.Error(eh.Log).Log("msg", "Failed to sync informer cache") - // maybe want to bail here - return - } - level.Info(eh.Log).Log("msg", "Informer cache synced") - }() - - // start the informer - // technically we should prob use the factory here, but since we - // only have one informer atm, this likely doesn't matter - go eh.EventInformer.Run(ctx.Done()) - - // wait for last event to flush before returning - wg.Add(1) - go func() { - defer wg.Done() - eh.runTicker(ctx.Done()) - }() - wg.Wait() - - return nil -} - -// write out last event every FlushInterval -func (eh *EventHandler) runTicker(stopCh <-chan struct{}) { - for { - select { - case <-stopCh: - if err := eh.writeOutLastEvent(); err != nil { - level.Error(eh.Log).Log("msg", "Failed to flush last event", "err", err) - } - return - case <-eh.ticker.C: - if err := eh.writeOutLastEvent(); err != nil { - level.Error(eh.Log).Log("msg", "Failed to flush last event", "err", err) - } - } - } -} - -func readInitEvent(file *os.File, logger log.Logger) (*ShippedEvents, error) { - var ( - initEvent = new(ShippedEvents) - ) - - stat, err := file.Stat() - if err != nil { - return nil, err - } - if stat.Size() == 0 { - level.Info(logger).Log("msg", "Cache file empty, setting zero-valued initEvent") - return initEvent, nil - } - - dec := json.NewDecoder(file) - err = dec.Decode(&initEvent) - if err != nil { - err = fmt.Errorf("could not read init event from cache: %s. Please delete the cache file", err) - return nil, err - } - level.Info(logger).Log("msg", "Loaded init event from cache file", "initEventTime", initEvent.Timestamp) - return initEvent, nil -} diff --git a/pkg/integrations/v2/eventhandler/eventhandler_test.go b/pkg/integrations/v2/eventhandler/eventhandler_test.go deleted file mode 100644 index 8acd5383b8e2..000000000000 --- a/pkg/integrations/v2/eventhandler/eventhandler_test.go +++ /dev/null @@ -1,24 +0,0 @@ -package eventhandler - -import ( - "os" - "testing" - "time" - - "github.com/go-kit/log" - "github.com/stretchr/testify/require" -) - -func TestCacheLoad(t *testing.T) { - l := log.NewNopLogger() - testTime, _ := time.Parse(time.RFC3339, "2022-01-26T13:39:40-05:00") - expectedEvents := &ShippedEvents{ - Timestamp: testTime, - RvMap: map[string]struct{}{"58588": {}}, - } - cacheFile, err := os.OpenFile("testdata/eventhandler.cache", os.O_RDWR|os.O_CREATE, cacheFileMode) - require.NoError(t, err, "Failed to open test eventhandler cache file") - actualEvents, err := readInitEvent(cacheFile, l) - require.NoError(t, err, "Failed to parse last event from eventhandler cache file") - require.Equal(t, expectedEvents, actualEvents) -} diff --git a/pkg/integrations/v2/eventhandler/integration.go b/pkg/integrations/v2/eventhandler/integration.go deleted file mode 100644 index 880d85bad7a4..000000000000 --- a/pkg/integrations/v2/eventhandler/integration.go +++ /dev/null @@ -1,69 +0,0 @@ -package eventhandler - -import ( - "github.com/go-kit/log" - "github.com/grafana/agent/pkg/integrations/v2" -) - -// DefaultConfig sets defaults for Config -var DefaultConfig = Config{ - SendTimeout: 60, - CachePath: "./.eventcache/eventhandler.cache", - LogsInstance: "default", - InformerResync: 120, - FlushInterval: 10, -} - -// Config configures the eventhandler integration -type Config struct { - // Eventhandler hands watched events off to promtail using a promtail - // client channel. This parameter configures how long to wait (in seconds) on the channel - // before abandoning and moving on. - SendTimeout int `yaml:"send_timeout,omitempty"` - // Configures the path to a kubeconfig file. If not set, will fall back to using - // an in-cluster config. If this fails, will fall back to checking the user's home - // directory for a kubeconfig. - KubeconfigPath string `yaml:"kubeconfig_path,omitempty"` - // Path to a cache file that will store the last timestamp for a shipped event and events - // shipped for that timestamp. Used to prevent double-shipping on integration restart. - CachePath string `yaml:"cache_path,omitempty"` - // Name of logs subsystem instance to hand log entries off to. - LogsInstance string `yaml:"logs_instance,omitempty"` - // K8s informer resync interval (seconds). You should use defaults here unless you are - // familiar with K8s informers. - InformerResync int `yaml:"informer_resync,omitempty"` - // The integration will flush the last event shipped out to disk every flush_interval seconds. - FlushInterval int `yaml:"flush_interval,omitempty"` - // If you would like to limit events to a given namespace, use this parameter. - Namespace string `yaml:"namespace,omitempty"` -} - -// UnmarshalYAML implements yaml.Unmarshaler for Config -func (c *Config) UnmarshalYAML(unmarshal func(interface{}) error) error { - *c = DefaultConfig - - type plain Config - return unmarshal((*plain)(c)) -} - -// Name returns the name of the integration that this config represents -func (c *Config) Name() string { return "eventhandler" } - -// ApplyDefaults applies runtime-specific defaults to c -func (c *Config) ApplyDefaults(globals integrations.Globals) error { - return nil -} - -// Identifier uniquely identifies this instance of Config -func (c *Config) Identifier(globals integrations.Globals) (string, error) { - return globals.AgentIdentifier, nil -} - -// NewIntegration converts this config into an instance of an integration. -func (c *Config) NewIntegration(l log.Logger, globals integrations.Globals) (integrations.Integration, error) { - return newEventHandler(l, globals, c) -} - -func init() { - integrations.Register(&Config{}, integrations.TypeSingleton) -} diff --git a/pkg/integrations/v2/eventhandler/testdata/eventhandler.cache b/pkg/integrations/v2/eventhandler/testdata/eventhandler.cache deleted file mode 100644 index dc5814de0843..000000000000 --- a/pkg/integrations/v2/eventhandler/testdata/eventhandler.cache +++ /dev/null @@ -1 +0,0 @@ -{"ts":"2022-01-26T13:39:40-05:00","resourceVersion":{"58588":{}}} \ No newline at end of file diff --git a/pkg/integrations/v2/metricsutils/metricshandler_integration.go b/pkg/integrations/v2/metricsutils/metricshandler_integration.go index 5edd9c6ac1c2..5aad0504aeab 100644 --- a/pkg/integrations/v2/metricsutils/metricshandler_integration.go +++ b/pkg/integrations/v2/metricsutils/metricshandler_integration.go @@ -26,7 +26,6 @@ func NewMetricsHandlerIntegration( globals integrations.Globals, h http.Handler, ) (integrations.MetricsIntegration, error) { - id, err := c.Identifier(globals) if err != nil { return nil, err @@ -106,10 +105,6 @@ func (i *metricsHandlerIntegration) Targets(ep integrations.Endpoint) []*targetg Source: fmt.Sprintf("%s/%s", i.integrationName, i.instanceID), } - for _, lbl := range i.common.ExtraLabels { - group.Labels[model.LabelName(lbl.Name)] = model.LabelValue(lbl.Value) - } - for _, t := range i.targets { group.Targets = append(group.Targets, model.LabelSet{ model.AddressLabel: model.LabelValue(ep.Host), diff --git a/pkg/integrations/v2/metricsutils/metricshandler_integration_test.go b/pkg/integrations/v2/metricsutils/metricshandler_integration_test.go deleted file mode 100644 index e084df082cc7..000000000000 --- a/pkg/integrations/v2/metricsutils/metricshandler_integration_test.go +++ /dev/null @@ -1,82 +0,0 @@ -package metricsutils - -import ( - "fmt" - "net/http" - "net/url" - "testing" - - "github.com/go-kit/log" - "github.com/grafana/agent/pkg/integrations/v2" - "github.com/grafana/agent/pkg/integrations/v2/common" - "github.com/prometheus/common/model" - "github.com/prometheus/prometheus/discovery/targetgroup" - "github.com/prometheus/prometheus/pkg/labels" - "github.com/stretchr/testify/require" -) - -func TestMetricsHandlerIntegration_Targets(t *testing.T) { - globals := integrations.Globals{ - AgentIdentifier: "testagent", - AgentBaseURL: func() *url.URL { - u, err := url.Parse("http://testagent/") - require.NoError(t, err) - return u - }(), - SubsystemOpts: integrations.DefaultSubsystemOptions, - } - - t.Run("Targets", func(t *testing.T) { - var cfg common.MetricsConfig - cfg.ApplyDefaults(globals.SubsystemOpts.Metrics.Autoscrape) - - i, err := NewMetricsHandlerIntegration(nil, fakeConfig{}, cfg, globals, http.NotFoundHandler()) - require.NoError(t, err) - - actual := i.Targets(integrations.Endpoint{Host: "test", Prefix: "/test/"}) - expect := []*targetgroup.Group{{ - Source: "fake/testagent", - Labels: model.LabelSet{ - "instance": "testagent", - "job": "integrations/fake", - "agent_hostname": "testagent", - - "__meta_agent_integration_name": "fake", - "__meta_agent_integration_instance": "testagent", - "__meta_agent_integration_autoscrape": "1", - }, - Targets: []model.LabelSet{{ - "__address__": "test", - "__metrics_path__": "/test/metrics", - }}, - }} - require.Equal(t, expect, actual) - - t.Run("Extra labels", func(t *testing.T) { - cfg := common.MetricsConfig{ - ExtraLabels: labels.FromMap(map[string]string{"foo": "bar", "fizz": "buzz"}), - } - cfg.ApplyDefaults(globals.SubsystemOpts.Metrics.Autoscrape) - - i, err := NewMetricsHandlerIntegration(nil, fakeConfig{}, cfg, globals, http.NotFoundHandler()) - require.NoError(t, err) - actual := i.Targets(integrations.Endpoint{Host: "test", Prefix: "/test/"}) - require.Len(t, actual, 1) - - for _, lbl := range cfg.ExtraLabels { - val, ok := actual[0].Labels[model.LabelName(lbl.Name)] - require.True(t, ok, "target does not have extra label %s", lbl.Name) - require.Equal(t, lbl.Value, string(val), "extra label %s does not match expectation", lbl.Name) - } - }) - }) -} - -type fakeConfig struct{} - -func (fakeConfig) Name() string { return "fake" } -func (fakeConfig) ApplyDefaults(_ integrations.Globals) error { return nil } -func (fakeConfig) Identifier(g integrations.Globals) (string, error) { return g.AgentIdentifier, nil } -func (fakeConfig) NewIntegration(_ log.Logger, _ integrations.Globals) (integrations.Integration, error) { - return nil, fmt.Errorf("not implemented") -} diff --git a/pkg/integrations/v2/subsystem_test.go b/pkg/integrations/v2/subsystem_test.go index 71427b15e1f1..1d9e8cfbd920 100644 --- a/pkg/integrations/v2/subsystem_test.go +++ b/pkg/integrations/v2/subsystem_test.go @@ -52,6 +52,7 @@ func TestSubsystemOptions_Unmarshal(t *testing.T) { for _, tc := range tt { t.Run(tc.name, func(t *testing.T) { + var so SubsystemOptions err := yaml.UnmarshalStrict([]byte(tc.in), &so) diff --git a/pkg/integrations/v2/workers.go b/pkg/integrations/v2/workers.go deleted file mode 100644 index 805cf37a45c0..000000000000 --- a/pkg/integrations/v2/workers.go +++ /dev/null @@ -1,122 +0,0 @@ -package integrations - -import ( - "context" - "sync" - - "github.com/go-kit/log" - "github.com/go-kit/log/level" -) - -type workerPool struct { - log log.Logger - parentCtx context.Context - - mut sync.Mutex - workers map[*controlledIntegration]worker - - runningWorkers sync.WaitGroup -} - -type worker struct { - ci *controlledIntegration - stop context.CancelFunc - exited chan struct{} -} - -func newWorkerPool(ctx context.Context, l log.Logger) *workerPool { - return &workerPool{ - log: l, - parentCtx: ctx, - - workers: make(map[*controlledIntegration]worker), - } -} - -func (p *workerPool) Reload(newIntegrations []*controlledIntegration) { - p.mut.Lock() - defer p.mut.Unlock() - - level.Debug(p.log).Log("msg", "updating running integrations", "prev_count", len(p.workers), "new_count", len(newIntegrations)) - - // Shut down workers whose integrations have gone away. - var stopped []worker - for ci, w := range p.workers { - var found bool - for _, current := range newIntegrations { - if ci == current { - found = true - break - } - } - if !found { - w.stop() - stopped = append(stopped, w) - } - } - for _, w := range stopped { - // Wait for stopped integrations to fully exit. We do this in a separate - // loop so context cancellations can be handled simultaneously, allowing - // the wait to complete faster. - <-w.exited - } - - // Spawn new workers for integrations that don't have them. - for _, current := range newIntegrations { - if _, workerExists := p.workers[current]; workerExists { - continue - } - // This integration doesn't have an existing worker; schedule a new one. - p.scheduleWorker(current) - } -} - -func (p *workerPool) Close() { - p.mut.Lock() - defer p.mut.Unlock() - - level.Debug(p.log).Log("msg", "stopping all integrations") - - defer p.runningWorkers.Wait() - for _, w := range p.workers { - w.stop() - } -} - -func (p *workerPool) scheduleWorker(ci *controlledIntegration) { - p.runningWorkers.Add(1) - - ctx, cancel := context.WithCancel(p.parentCtx) - - w := worker{ - ci: ci, - stop: cancel, - exited: make(chan struct{}), - } - p.workers[ci] = w - - go func() { - ci.running.Store(true) - - // When the integration stops running, we want to free any of our - // resources that will notify watchers waiting for the worker to stop. - // - // Afterwards, we'll block until we remove ourselves from the map; having - // an worker remove itself on shutdown allows exited integrations to - // re-start when the config is reloaded. - defer func() { - ci.running.Store(false) - close(w.exited) - p.runningWorkers.Done() - - p.mut.Lock() - defer p.mut.Unlock() - delete(p.workers, ci) - }() - - err := ci.i.RunIntegration(ctx) - if err != nil { - level.Error(p.log).Log("msg", "integration exited with error", "id", ci.id, "err", err) - } - }() -} diff --git a/pkg/integrations/windows_exporter/windows_exporter_windows.go b/pkg/integrations/windows_exporter/windows_exporter_windows.go index 275c8aae7355..52d7b1c36655 100644 --- a/pkg/integrations/windows_exporter/windows_exporter_windows.go +++ b/pkg/integrations/windows_exporter/windows_exporter_windows.go @@ -29,7 +29,7 @@ func New(log log.Logger, c *Config) (integrations.Integration, error) { collectorNames = append(collectorNames, key) } sort.Strings(collectorNames) - level.Info(log).Log("msg", "enabled windows_exporter collectors", "collectors", strings.Join(collectorNames, ",")) + level.Info(log).Log("msg", "enabled windows_exporter collectors", "collectors", collectorNames) return integrations.NewCollectorIntegration(c.Name(), integrations.WithCollectors( // Hard-coded 4m timeout to represent the time a series goes stale. diff --git a/pkg/metrics/agent.go b/pkg/metrics/agent.go index 4a0d026fdd27..f2cc8dfd962e 100644 --- a/pkg/metrics/agent.go +++ b/pkg/metrics/agent.go @@ -13,7 +13,6 @@ import ( "github.com/go-kit/log" "github.com/go-kit/log/level" "github.com/prometheus/client_golang/prometheus" - "go.uber.org/atomic" "google.golang.org/grpc" "github.com/grafana/agent/pkg/metrics/cluster" @@ -145,8 +144,6 @@ type Agent struct { stopped bool stopOnce sync.Once actor chan func() - - initialBootDone atomic.Bool } // New creates and starts a new Agent. @@ -271,7 +268,6 @@ func (a *Agent) ApplyConfig(cfg Config) error { a.actor <- func() { a.syncInstances(oldConfig, cfg) - a.initialBootDone.Store(true) } a.cfg = cfg @@ -315,24 +311,6 @@ func (a *Agent) run() { } } -// Ready returns true if both the agent and all instances -// spawned by a Manager have completed startup. -func (a *Agent) Ready() bool { - // Wait for the initial load to complete so the instance manager has at least - // the base set of expected instances. - if !a.initialBootDone.Load() { - return false - } - - for _, inst := range a.mm.ListInstances() { - if !inst.Ready() { - return false - } - } - - return true -} - // WireGRPC wires gRPC services into the provided server. func (a *Agent) WireGRPC(s *grpc.Server) { a.cluster.WireGRPC(s) diff --git a/pkg/metrics/agent_test.go b/pkg/metrics/agent_test.go index 53d04e25b67a..4a02a2ef3fb3 100644 --- a/pkg/metrics/agent_test.go +++ b/pkg/metrics/agent_test.go @@ -271,10 +271,6 @@ func (i *fakeInstance) Run(ctx context.Context) error { } } -func (i *fakeInstance) Ready() bool { - return true -} - func (i *fakeInstance) Update(_ instance.Config) error { return instance.ErrInvalidUpdate{ Inner: fmt.Errorf("can't dynamically update fakeInstance"), diff --git a/pkg/metrics/cluster/cluster.go b/pkg/metrics/cluster/cluster.go index 7ca80360fcd1..5c94a4a01628 100644 --- a/pkg/metrics/cluster/cluster.go +++ b/pkg/metrics/cluster/cluster.go @@ -52,7 +52,6 @@ func New( im instance.Manager, validate ValidationFunc, ) (*Cluster, error) { - l = log.With(l, "component", "cluster") var ( @@ -117,7 +116,9 @@ func (c *Cluster) Reshard(ctx context.Context, _ *agentproto.ReshardRequest) (*e } // ApplyConfig applies configuration changes to Cluster. -func (c *Cluster) ApplyConfig(cfg Config) error { +func (c *Cluster) ApplyConfig( + cfg Config, +) error { c.mut.Lock() defer c.mut.Unlock() diff --git a/pkg/metrics/cluster/config_watcher_test.go b/pkg/metrics/cluster/config_watcher_test.go index e365cb2f5f3a..5bd02c72aa87 100644 --- a/pkg/metrics/cluster/config_watcher_test.go +++ b/pkg/metrics/cluster/config_watcher_test.go @@ -227,6 +227,7 @@ func Test_configWatcher_nextReshard(t *testing.T) { require.FailNow(t, "nextReshard took too long to return") } }) + } type mockConfigManager struct { diff --git a/pkg/metrics/http_test.go b/pkg/metrics/http_test.go index a08f93d46b61..2e1d4aa759bf 100644 --- a/pkg/metrics/http_test.go +++ b/pkg/metrics/http_test.go @@ -1,6 +1,7 @@ package metrics import ( + "context" "fmt" "net/http" "net/http/httptest" @@ -14,6 +15,7 @@ import ( "github.com/prometheus/common/model" "github.com/prometheus/prometheus/pkg/labels" "github.com/prometheus/prometheus/scrape" + "github.com/prometheus/prometheus/storage" "github.com/stretchr/testify/require" ) @@ -133,10 +135,26 @@ func TestAgent_ListTargetsHandler(t *testing.T) { } type mockInstanceScrape struct { - instance.NoOpInstance tgts map[string][]*scrape.Target } +func (i *mockInstanceScrape) Run(ctx context.Context) error { + <-ctx.Done() + return nil +} + +func (i *mockInstanceScrape) Update(_ instance.Config) error { + return nil +} + func (i *mockInstanceScrape) TargetsActive() map[string][]*scrape.Target { return i.tgts } + +func (i *mockInstanceScrape) StorageDirectory() string { + return "" +} + +func (i *mockInstanceScrape) Appender(ctx context.Context) storage.Appender { + return nil +} diff --git a/pkg/metrics/instance/configstore/api_test.go b/pkg/metrics/instance/configstore/api_test.go index ba5ab2b550e0..9dfe0ca9a38c 100644 --- a/pkg/metrics/instance/configstore/api_test.go +++ b/pkg/metrics/instance/configstore/api_test.go @@ -151,7 +151,6 @@ remote_write: - url: http://localhost:9009/api/prom/push remote_timeout: 30s name: test-d0f32c - send_exemplars: true basic_auth: username: admin password: SCRUBME diff --git a/pkg/metrics/instance/configstore/remote.go b/pkg/metrics/instance/configstore/remote.go index 9bf01732e9a7..712cdf583ce9 100644 --- a/pkg/metrics/instance/configstore/remote.go +++ b/pkg/metrics/instance/configstore/remote.go @@ -120,8 +120,8 @@ func (r *Remote) ApplyConfig(cfg kv.Config, enable bool) error { if err != nil { return err } - } + } if err != nil { return fmt.Errorf("failed to create kv client: %w", err) } @@ -354,8 +354,8 @@ func (r *Remote) all(ctx context.Context, keep func(key string) bool) (<-chan in if r.kv.consul != nil { return r.allConsul(ctx, keep) } - return r.allOther(ctx, keep) + } // allConsul is ONLY usable when consul is the keystore. This is a performance improvement in using the client directly diff --git a/pkg/metrics/instance/host_filter.go b/pkg/metrics/instance/host_filter.go index aca92e1c6cac..01099bde45ad 100644 --- a/pkg/metrics/instance/host_filter.go +++ b/pkg/metrics/instance/host_filter.go @@ -88,6 +88,7 @@ func (f *HostFilter) PatchSD(scrapes []*config.ScrapeConfig) { } } } + } // SetRelabels updates the relabeling rules used by the HostFilter. diff --git a/pkg/metrics/instance/instance.go b/pkg/metrics/instance/instance.go index e488781575b5..86d9a713924e 100644 --- a/pkg/metrics/instance/instance.go +++ b/pkg/metrics/instance/instance.go @@ -30,16 +30,12 @@ import ( "github.com/prometheus/prometheus/scrape" "github.com/prometheus/prometheus/storage" "github.com/prometheus/prometheus/storage/remote" - "go.uber.org/atomic" "gopkg.in/yaml.v2" ) func init() { remote.UserAgent = fmt.Sprintf("GrafanaAgent/%s", build.Version) scrape.UserAgent = fmt.Sprintf("GrafanaAgent/%s", build.Version) - - // default remote_write send_exemplars to true - config.DefaultRemoteWriteConfig.SendExemplars = true } var ( @@ -241,9 +237,6 @@ type Instance struct { remoteStore *remote.Storage storage storage.Storage - // ready is set to true after the initialization process finishes - ready atomic.Bool - hostFilter *HostFilter logger log.Logger @@ -322,7 +315,7 @@ func (i *Instance) Run(ctx context.Context) error { // The actors defined here are defined in the order we want them to shut down. // Primarily, we want to ensure that the following shutdown order is // maintained: - // 1. The scrape manager stops + // 1. The scrape manager stops // 2. WAL storage is closed // 3. Remote write storage is closed // This is done to allow the instance to write stale markers for all active @@ -390,7 +383,6 @@ func (i *Instance) Run(ctx context.Context) error { } level.Debug(i.logger).Log("msg", "running instance", "name", cfg.Name) - i.ready.Store(true) err := rg.Run() if err != nil { level.Error(i.logger).Log("msg", "agent instance stopped with error", "err", err) @@ -451,12 +443,6 @@ func (i *Instance) initialize(ctx context.Context, reg prometheus.Registerer, cf return nil } -// Ready returns true if the Instance has been initialized and is ready -// to start scraping and delivering metrics. -func (i *Instance) Ready() bool { - return i.ready.Load() -} - // Update accepts a new Config for the Instance and will dynamically update any // running Prometheus components with the new values from Config. Update will // return an ErrInvalidUpdate if the Update could not be applied. diff --git a/pkg/metrics/instance/instance_integration_test.go b/pkg/metrics/instance/instance_integration_test.go index c15be5a55d04..67776026dcde 100644 --- a/pkg/metrics/instance/instance_integration_test.go +++ b/pkg/metrics/instance/instance_integration_test.go @@ -244,6 +244,7 @@ remote_write: [] require.EqualError(t, err, tc.expect) }) } + } func loadConfig(t *testing.T, s string) Config { diff --git a/pkg/metrics/instance/instance_test.go b/pkg/metrics/instance/instance_test.go index 4e3815df6728..0f79bd073c58 100644 --- a/pkg/metrics/instance/instance_test.go +++ b/pkg/metrics/instance/instance_test.go @@ -139,6 +139,7 @@ func TestConfig_ApplyDefaults_Validations(t *testing.T) { for _, tc := range tt { t.Run(tc.name, func(t *testing.T) { + // Copy the input and all of its slices input := cfg diff --git a/pkg/metrics/instance/manager.go b/pkg/metrics/instance/manager.go index d3351d4d006f..a622d073b0f2 100644 --- a/pkg/metrics/instance/manager.go +++ b/pkg/metrics/instance/manager.go @@ -61,7 +61,6 @@ type Manager interface { // for the sake of testing from Manager implementations. type ManagedInstance interface { Run(ctx context.Context) error - Ready() bool Update(c Config) error TargetsActive() map[string][]*scrape.Target StorageDirectory() string diff --git a/pkg/metrics/instance/manager_test.go b/pkg/metrics/instance/manager_test.go index e524592e02fe..ffb8580e0a97 100644 --- a/pkg/metrics/instance/manager_test.go +++ b/pkg/metrics/instance/manager_test.go @@ -99,7 +99,6 @@ func TestBasicManager_ApplyConfig(t *testing.T) { type mockInstance struct { RunFunc func(ctx context.Context) error - ReadyFunc func() bool UpdateFunc func(c Config) error TargetsActiveFunc func() map[string][]*scrape.Target StorageDirectoryFunc func() string @@ -113,13 +112,6 @@ func (m mockInstance) Run(ctx context.Context) error { panic("RunFunc not provided") } -func (m mockInstance) Ready() bool { - if m.ReadyFunc != nil { - return m.ReadyFunc() - } - panic("ReadyFunc not provided") -} - func (m mockInstance) Update(c Config) error { if m.UpdateFunc != nil { return m.UpdateFunc(c) diff --git a/pkg/metrics/instance/marshal.go b/pkg/metrics/instance/marshal.go index d142d172a1a9..652b7862c233 100644 --- a/pkg/metrics/instance/marshal.go +++ b/pkg/metrics/instance/marshal.go @@ -37,8 +37,6 @@ func MarshalConfigToWriter(c *Config, w io.Writer, scrubSecrets bool) error { switch v := in.(type) { case config_util.Secret: return true, string(v), nil - case *config_util.URL: - return true, v.String(), nil default: return false, nil, nil } diff --git a/pkg/metrics/instance/marshal_test.go b/pkg/metrics/instance/marshal_test.go index 7b5356d26de5..0f91c70bf8b8 100644 --- a/pkg/metrics/instance/marshal_test.go +++ b/pkg/metrics/instance/marshal_test.go @@ -44,10 +44,9 @@ scrape_configs: username: admin password: foobar remote_write: -- url: http://admin:verysecret@localhost:9009/api/prom/push +- url: http://localhost:9009/api/prom/push remote_timeout: 30s name: test-d0f32c - send_exemplars: true basic_auth: username: admin password: verysecret @@ -97,10 +96,9 @@ scrape_configs: username: admin password: SCRUBME remote_write: -- url: http://username:SCRUBURL@localhost:9009/api/prom/push +- url: http://localhost:9009/api/prom/push remote_timeout: 30s name: test-d0f32c - send_exemplars: true basic_auth: username: admin password: SCRUBME @@ -124,9 +122,7 @@ remote_flush_deadline: 1m0s ` scrub := func(in string) string { - in = strings.ReplaceAll(in, "SCRUBME", "") - in = strings.ReplaceAll(in, "SCRUBURL", "xxxxx") - return in + return strings.ReplaceAll(in, "SCRUBME", "") } t.Run("direct marshal", func(t *testing.T) { diff --git a/pkg/metrics/instance/noop.go b/pkg/metrics/instance/noop.go index 76d459e19507..f668ceedc43e 100644 --- a/pkg/metrics/instance/noop.go +++ b/pkg/metrics/instance/noop.go @@ -17,11 +17,6 @@ func (NoOpInstance) Run(ctx context.Context) error { return nil } -// Ready implements Instance. -func (NoOpInstance) Ready() bool { - return true -} - // Update implements Instance. func (NoOpInstance) Update(_ Config) error { return nil diff --git a/pkg/metrics/wal/series.go b/pkg/metrics/wal/series.go index 35bda48e2974..fd1de2effd9b 100644 --- a/pkg/metrics/wal/series.go +++ b/pkg/metrics/wal/series.go @@ -3,7 +3,6 @@ package wal import ( "sync" - "github.com/prometheus/prometheus/pkg/exemplar" "github.com/prometheus/prometheus/pkg/intern" "github.com/prometheus/prometheus/pkg/labels" ) @@ -98,11 +97,10 @@ const ( // // This code is copied from the Prometheus TSDB. type stripeSeries struct { - size int - series []map[uint64]*memSeries - hashes []seriesHashmap - exemplars []map[uint64]*exemplar.Exemplar - locks []stripeLock + size int + series []map[uint64]*memSeries + hashes []seriesHashmap + locks []stripeLock } type stripeLock struct { @@ -114,11 +112,10 @@ type stripeLock struct { func newStripeSeries() *stripeSeries { stripeSize := defaultStripeSize s := &stripeSeries{ - size: stripeSize, - series: make([]map[uint64]*memSeries, stripeSize), - hashes: make([]seriesHashmap, stripeSize), - exemplars: make([]map[uint64]*exemplar.Exemplar, stripeSize), - locks: make([]stripeLock, stripeSize), + size: stripeSize, + series: make([]map[uint64]*memSeries, stripeSize), + hashes: make([]seriesHashmap, stripeSize), + locks: make([]stripeLock, stripeSize), } for i := range s.series { @@ -127,9 +124,6 @@ func newStripeSeries() *stripeSeries { for i := range s.hashes { s.hashes[i] = seriesHashmap{} } - for i := range s.exemplars { - s.exemplars[i] = map[uint64]*exemplar.Exemplar{} - } return s } @@ -177,10 +171,6 @@ func (s *stripeSeries) gc(mint int64) map[uint64]struct{} { delete(s.series[i], series.ref) s.hashes[j].del(seriesHash, series.ref) - // Since the series is gone, we'll also delete - // the latest stored exemplar. - delete(s.exemplars[i], series.ref) - if i != j { s.locks[j].Unlock() } @@ -226,27 +216,6 @@ func (s *stripeSeries) set(hash uint64, series *memSeries) { s.locks[i].Unlock() } -func (s *stripeSeries) getLatestExemplar(id uint64) *exemplar.Exemplar { - i := id & uint64(s.size-1) - - s.locks[i].RLock() - exemplar := s.exemplars[i][id] - s.locks[i].RUnlock() - - return exemplar -} - -func (s *stripeSeries) setLatestExemplar(id uint64, exemplar *exemplar.Exemplar) { - i := id & uint64(s.size-1) - - // Make sure that's a valid series id and record its latest exemplar - s.locks[i].Lock() - if s.series[i][id] != nil { - s.exemplars[i][id] = exemplar - } - s.locks[i].Unlock() -} - func (s *stripeSeries) iterator() *stripeSeriesIterator { return &stripeSeriesIterator{s} } diff --git a/pkg/metrics/wal/wal.go b/pkg/metrics/wal/wal.go index 91bc79fb6418..b5e8c3b7372a 100644 --- a/pkg/metrics/wal/wal.go +++ b/pkg/metrics/wal/wal.go @@ -10,6 +10,7 @@ import ( "github.com/go-kit/log" "github.com/go-kit/log/level" + "github.com/pkg/errors" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/prometheus/pkg/exemplar" "github.com/prometheus/prometheus/pkg/labels" @@ -163,7 +164,7 @@ func NewStorage(logger log.Logger, registerer prometheus.Registerer, path string if err := storage.replayWAL(); err != nil { level.Warn(storage.logger).Log("msg", "encountered WAL read error, attempting repair", "err", err) if err := w.Repair(err); err != nil { - return nil, fmt.Errorf("repair corrupted WAL: %w", err) + return nil, errors.Wrap(err, "repair corrupted WAL") } } @@ -181,13 +182,13 @@ func (w *Storage) replayWAL() error { level.Info(w.logger).Log("msg", "replaying WAL, this may take a while", "dir", w.wal.Dir()) dir, startFrom, err := wal.LastCheckpoint(w.wal.Dir()) if err != nil && err != record.ErrNotFound { - return fmt.Errorf("find last checkpoint: %w", err) + return errors.Wrap(err, "find last checkpoint") } if err == nil { sr, err := wal.NewSegmentsReader(dir) if err != nil { - return fmt.Errorf("open checkpoint: %w", err) + return errors.Wrap(err, "open checkpoint") } defer func() { if err := sr.Close(); err != nil { @@ -198,7 +199,7 @@ func (w *Storage) replayWAL() error { // A corrupted checkpoint is a hard error for now and requires user // intervention. There's likely little data that can be recovered anyway. if err := w.loadWAL(wal.NewReader(sr)); err != nil { - return fmt.Errorf("backfill checkpoint: %w", err) + return errors.Wrap(err, "backfill checkpoint") } startFrom++ level.Info(w.logger).Log("msg", "WAL checkpoint loaded") @@ -207,14 +208,14 @@ func (w *Storage) replayWAL() error { // Find the last segment. _, last, err := wal.Segments(w.wal.Dir()) if err != nil { - return fmt.Errorf("finding WAL segments: %w", err) + return errors.Wrap(err, "finding WAL segments") } // Backfill segments from the most recent checkpoint onwards. for i := startFrom; i <= last; i++ { s, err := wal.OpenReadSegment(wal.SegmentName(w.wal.Dir(), i)) if err != nil { - return fmt.Errorf("open WAL segment %d: %w", i, err) + return errors.Wrap(err, fmt.Sprintf("open WAL segment: %d", i)) } sr := wal.NewSegmentBufReader(s) @@ -261,7 +262,7 @@ func (w *Storage) loadWAL(r *wal.Reader) (err error) { series, err = dec.Series(rec, series) if err != nil { errCh <- &wal.CorruptionErr{ - Err: fmt.Errorf("decode series: %w", err), + Err: errors.Wrap(err, "decode series"), Segment: r.Segment(), Offset: r.Offset(), } @@ -273,7 +274,7 @@ func (w *Storage) loadWAL(r *wal.Reader) (err error) { samples, err = dec.Samples(rec, samples) if err != nil { errCh <- &wal.CorruptionErr{ - Err: fmt.Errorf("decode samples: %w", err), + Err: errors.Wrap(err, "decode samples"), Segment: r.Segment(), Offset: r.Offset(), } @@ -281,12 +282,10 @@ func (w *Storage) loadWAL(r *wal.Reader) (err error) { decoded <- samples case record.Tombstones, record.Exemplars: // We don't care about decoding tombstones or exemplars - // TODO: If decide to decode exemplars, we should make sure to prepopulate - // stripeSeries.exemplars in the next block by using setLatestExemplar. continue default: errCh <- &wal.CorruptionErr{ - Err: fmt.Errorf("invalid record type %v", dec.Type(rec)), + Err: errors.Errorf("invalid record type %v", dec.Type(rec)), Segment: r.Segment(), Offset: r.Offset(), } @@ -352,7 +351,7 @@ func (w *Storage) loadWAL(r *wal.Reader) (err error) { } if r.Err() != nil { - return fmt.Errorf("read records: %w", r.Err()) + return errors.Wrap(r.Err(), "read records") } return nil @@ -392,14 +391,14 @@ func (w *Storage) Truncate(mint int64) error { first, last, err := wal.Segments(w.wal.Dir()) if err != nil { - return fmt.Errorf("get segment range: %w", err) + return errors.Wrap(err, "get segment range") } // Start a new segment, so low ingestion volume instance don't have more WAL // than needed. err = w.wal.NextSegment() if err != nil { - return fmt.Errorf("next segment: %w", err) + return errors.Wrap(err, "next segment") } last-- // Never consider last segment for checkpoint. @@ -425,7 +424,7 @@ func (w *Storage) Truncate(mint int64) error { return ok } if _, err = wal.Checkpoint(w.logger, w.wal, first, last, keep, mint); err != nil { - return fmt.Errorf("create checkpoint: %w", err) + return errors.Wrap(err, "create checkpoint") } if err := w.wal.Truncate(last + 1); err != nil { // If truncating fails, we'll just try again at the next checkpoint. @@ -572,11 +571,11 @@ func (a *appender) Append(ref uint64, l labels.Labels, t int64, v float64) (uint // equivalent validation code in the TSDB's headAppender. l = l.WithoutEmpty() if len(l) == 0 { - return 0, fmt.Errorf("empty labelset: %w", tsdb.ErrInvalidSample) + return 0, errors.Wrap(tsdb.ErrInvalidSample, "empty labelset") } if lbl, dup := l.HasDuplicateLabelNames(); dup { - return 0, fmt.Errorf("label name %q is not unique: %w", lbl, tsdb.ErrInvalidSample) + return 0, errors.Wrap(tsdb.ErrInvalidSample, fmt.Sprintf(`label name "%s" is not unique`, lbl)) } var created bool @@ -632,7 +631,7 @@ func (a *appender) AppendExemplar(ref uint64, _ labels.Labels, e exemplar.Exempl e.Labels = e.Labels.WithoutEmpty() if lbl, dup := e.Labels.HasDuplicateLabelNames(); dup { - return 0, fmt.Errorf("label name %q is not unique: %w", lbl, tsdb.ErrInvalidExemplar) + return 0, errors.Wrap(tsdb.ErrInvalidExemplar, fmt.Sprintf(`label name "%s" is not unique`, lbl)) } // Exemplar label length does not include chars involved in text rendering such as quotes @@ -647,16 +646,6 @@ func (a *appender) AppendExemplar(ref uint64, _ labels.Labels, e exemplar.Exempl } } - // Check for duplicate vs last stored exemplar for this series, and discard those. - // Otherwise, record the current exemplar as the latest. - // Prometheus returns 0 when encountering duplicates, so we do the same here. - prevExemplar := a.w.series.getLatestExemplar(ref) - if prevExemplar != nil && prevExemplar.Equals(e) { - // Duplicate, don't return an error but don't accept the exemplar. - return 0, nil - } - a.w.series.setLatestExemplar(ref, &e) - a.exemplars = append(a.exemplars, record.RefExemplar{ Ref: ref, T: e.Ts, @@ -664,7 +653,6 @@ func (a *appender) AppendExemplar(ref uint64, _ labels.Labels, e exemplar.Exempl Labels: e.Labels, }) - a.w.metrics.totalAppendedExemplars.Inc() return s.ref, nil } diff --git a/pkg/metrics/wal/wal_test.go b/pkg/metrics/wal/wal_test.go index a1cad5c4f86d..fccc0a023aa5 100644 --- a/pkg/metrics/wal/wal_test.go +++ b/pkg/metrics/wal/wal_test.go @@ -104,47 +104,6 @@ func TestStorage(t *testing.T) { require.Equal(t, expectedExemplars, actualExemplars) } -func TestStorage_DuplicateExemplarsIgnored(t *testing.T) { - walDir, err := ioutil.TempDir(os.TempDir(), "wal") - require.NoError(t, err) - defer os.RemoveAll(walDir) - - s, err := NewStorage(log.NewNopLogger(), nil, walDir) - require.NoError(t, err) - - app := s.Appender(context.Background()) - - sRef, err := app.Append(0, labels.Labels{{Name: "a", Value: "1"}}, 0, 0) - require.NoError(t, err, "should not reject valid series") - - // If the Labels, Value or Timestamp are different than the last exemplar, - // then a new one should be appended; Otherwise, it should be skipped. - e := exemplar.Exemplar{Labels: labels.Labels{{Name: "a", Value: "1"}}, Value: 20, Ts: 10, HasTs: true} - _, _ = app.AppendExemplar(sRef, nil, e) - _, _ = app.AppendExemplar(sRef, nil, e) - - e.Labels = labels.Labels{{Name: "b", Value: "2"}} - _, _ = app.AppendExemplar(sRef, nil, e) - _, _ = app.AppendExemplar(sRef, nil, e) - _, _ = app.AppendExemplar(sRef, nil, e) - - e.Value = 42 - _, _ = app.AppendExemplar(sRef, nil, e) - _, _ = app.AppendExemplar(sRef, nil, e) - - e.Ts = 25 - _, _ = app.AppendExemplar(sRef, nil, e) - _, _ = app.AppendExemplar(sRef, nil, e) - - require.NoError(t, app.Commit()) - collector := walDataCollector{} - replayer := walReplayer{w: &collector} - require.NoError(t, replayer.Replay(s.wal.Dir())) - - // We had 9 calls to AppendExemplar but only 4 of those should have gotten through - require.Equal(t, 4, len(collector.exemplars)) -} - func TestStorage_ExistingWAL(t *testing.T) { walDir, err := ioutil.TempDir(os.TempDir(), "wal") require.NoError(t, err) @@ -372,27 +331,6 @@ func TestStorage_TruncateAfterClose(t *testing.T) { require.Error(t, ErrWALClosed, s.Truncate(0)) } -func BenchmarkAppendExemplar(b *testing.B) { - walDir, _ := ioutil.TempDir(os.TempDir(), "wal") - defer os.RemoveAll(walDir) - - s, _ := NewStorage(log.NewNopLogger(), nil, walDir) - defer s.Close() - app := s.Appender(context.Background()) - sRef, _ := app.Append(0, labels.Labels{{Name: "a", Value: "1"}}, 0, 0) - e := exemplar.Exemplar{Labels: labels.Labels{{Name: "a", Value: "1"}}, Value: 20, Ts: 10, HasTs: true} - - b.StartTimer() - for i := 0; i < b.N; i++ { - e.Ts = int64(i) - _, _ = app.AppendExemplar(sRef, nil, e) - } - b.StopTimer() - - // Actually use appended exemplars in case they get eliminated - _ = app.Commit() -} - type sample struct { ts int64 val float64 diff --git a/pkg/operator/apis/monitoring/v1alpha1/types.go b/pkg/operator/apis/monitoring/v1alpha1/types.go index e97e64e59eeb..a9f0b6396694 100644 --- a/pkg/operator/apis/monitoring/v1alpha1/types.go +++ b/pkg/operator/apis/monitoring/v1alpha1/types.go @@ -150,11 +150,6 @@ type GrafanaAgentSpec struct { // Logs controls the logging subsystem of the Agent and settings unique to // logging-specific pods that are deployed. Logs LogsSubsystemSpec `json:"logs,omitempty"` - - // enableConfigReadAPI enables the read API for viewing currently running - // config port 8080 on the agent. - // +kubebuilder:default=false - EnableConfigReadAPI bool `json:"enableConfigReadAPI,omitempty"` } // ObjectSelector is a set of selectors to use for finding an object in the diff --git a/pkg/operator/build_hierarchy.go b/pkg/operator/build_hierarchy.go index 663a4ac6551c..cab0b212644b 100644 --- a/pkg/operator/build_hierarchy.go +++ b/pkg/operator/build_hierarchy.go @@ -236,7 +236,7 @@ func buildSecrets(ctx context.Context, cli client.Client, deploy config.Deployme case *corev1.Secret: rawValue, ok := o.Data[ref.Reference.Secret.Key] if !ok { - return fmt.Errorf("no key %s in Secret %s", ref.Reference.Secret.Key, o.Name) + return fmt.Errorf("no key %s in Secret %s", ref.Reference.ConfigMap.Key, o.Name) } value = string(rawValue) case *corev1.ConfigMap: diff --git a/pkg/operator/build_hierarchy_test.go b/pkg/operator/build_hierarchy_test.go index 9bc13fca69c1..b77adb761c95 100644 --- a/pkg/operator/build_hierarchy_test.go +++ b/pkg/operator/build_hierarchy_test.go @@ -19,10 +19,8 @@ import ( "github.com/stretchr/testify/require" v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/labels" - controller "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/client/apiutil" - "sigs.k8s.io/controller-runtime/pkg/manager" ) // Test_buildHierarchy checks that an entire resource hierarchy can be @@ -36,7 +34,7 @@ func Test_buildHierarchy(t *testing.T) { l := util.TestLogger(t) cluster := NewTestCluster(ctx, t, l) - cli := newTestControllerClient(t, cluster) + cli := cluster.Client() resources := k8s.NewResourceSet(l, cluster) defer resources.Stop() @@ -166,26 +164,3 @@ func (w *resourceWalker) Visit(v interface{}) (next structwalk.Visitor) { } return w } - -// newTestControllerClient creates a Kubernetes client which uses a cache and -// index for retrieving objects. This more closely matches the behavior of the -// operator instead of using cluster.Client, which lacks a cache and always -// communicates directly with Kubernetes. -func newTestControllerClient(t *testing.T, cluster *k8s.Cluster) client.Client { - t.Helper() - - ctx, cancel := context.WithCancel(context.Background()) - t.Cleanup(cancel) - - mgr, err := controller.NewManager(cluster.GetConfig(), manager.Options{ - Scheme: cluster.Client().Scheme(), - }) - require.NoError(t, err) - - go func() { - require.NoError(t, mgr.Start(ctx)) - }() - require.True(t, mgr.GetCache().WaitForCacheSync(ctx)) - - return mgr.GetClient() -} diff --git a/pkg/operator/clientutil/merge.go b/pkg/operator/clientutil/merge.go index 5e43e951a898..a5aae204876e 100644 --- a/pkg/operator/clientutil/merge.go +++ b/pkg/operator/clientutil/merge.go @@ -4,6 +4,7 @@ import ( "encoding/json" "fmt" + "github.com/pkg/errors" v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/util/strategicpatch" ) @@ -27,21 +28,21 @@ func MergePatchContainers(base, patches []v1.Container) ([]v1.Container, error) // Get the json for the container and the patch containerBytes, err := json.Marshal(container) if err != nil { - return nil, fmt.Errorf("failed to marshal json for container %s: %w", container.Name, err) + return nil, errors.Wrap(err, fmt.Sprintf("failed to marshal json for container %s", container.Name)) } patchBytes, err := json.Marshal(patchContainer) if err != nil { - return nil, fmt.Errorf("failed to marshal json for patch container %s: %w", container.Name, err) + return nil, errors.Wrap(err, fmt.Sprintf("failed to marshal json for patch container %s", container.Name)) } // Calculate the patch result jsonResult, err := strategicpatch.StrategicMergePatch(containerBytes, patchBytes, v1.Container{}) if err != nil { - return nil, fmt.Errorf("failed to generate merge patch for %s: %w", container.Name, err) + return nil, errors.Wrap(err, fmt.Sprintf("failed to generate merge patch for %s", container.Name)) } var patchResult v1.Container if err := json.Unmarshal(jsonResult, &patchResult); err != nil { - return nil, fmt.Errorf("failed to unmarshal merged container %s: %w", container.Name, err) + return nil, errors.Wrap(err, fmt.Sprintf("failed to unmarshal merged container %s", container.Name)) } // Add the patch result and remove the corresponding key from the to do list diff --git a/pkg/operator/config/config_test.go b/pkg/operator/config/config_test.go index 5bad6fc9b3e5..ff1efb936bde 100644 --- a/pkg/operator/config/config_test.go +++ b/pkg/operator/config/config_test.go @@ -79,10 +79,10 @@ func TestBuildConfigMetrics(t *testing.T) { basicAuth: username: name: example-secret - key: uname + key: key password: name: example-secret - key: pword + key: key tlsConfig: ca: configMap: @@ -113,8 +113,8 @@ func TestBuildConfigMetrics(t *testing.T) { remote_write: - url: http://localhost:9090/api/v1/write basic_auth: - username_file: /var/lib/grafana-agent/secrets/_secrets_default_example_secret_uname - password_file: /var/lib/grafana-agent/secrets/_secrets_default_example_secret_pword + username: somesecret + password: somesecret tls_config: ca_file: /var/lib/grafana-agent/secrets/_configMaps_default_example_cm_key cert_file: /var/lib/grafana-agent/secrets/_secrets_default_example_secret_key diff --git a/pkg/operator/config/fs_importer.go b/pkg/operator/config/fs_importer.go index 2a8044c0c986..60b73120ced6 100644 --- a/pkg/operator/config/fs_importer.go +++ b/pkg/operator/config/fs_importer.go @@ -30,6 +30,7 @@ func NewFSImporter(f fs.FS, paths []string) *FSImporter { // Import implements jsonnet.Importer. func (i *FSImporter) Import(importedFrom, importedPath string) (contents jsonnet.Contents, foundAt string, err error) { + tryPaths := append([]string{importedFrom}, i.paths...) for _, p := range tryPaths { cleanedPath := path.Clean( diff --git a/pkg/operator/config/metrics_templates_test.go b/pkg/operator/config/metrics_templates_test.go index 064a05652c90..da437cb462ce 100644 --- a/pkg/operator/config/metrics_templates_test.go +++ b/pkg/operator/config/metrics_templates_test.go @@ -547,8 +547,8 @@ func TestRemoteWrite(t *testing.T) { expect: util.Untab(` url: http://cortex/api/prom/push basic_auth: - username_file: /var/lib/grafana-agent/secrets/_secrets_operator_obj_key - password_file: /var/lib/grafana-agent/secrets/_secrets_operator_obj_key + username: secretkey + password: secretkey `), }, { diff --git a/pkg/operator/config/templates/component/metrics/remote_write.libsonnet b/pkg/operator/config/templates/component/metrics/remote_write.libsonnet index e172211ca226..38b9553aa9e9 100644 --- a/pkg/operator/config/templates/component/metrics/remote_write.libsonnet +++ b/pkg/operator/config/templates/component/metrics/remote_write.libsonnet @@ -30,8 +30,8 @@ function(namespace, rw) { basic_auth: ( if rw.BasicAuth != null then { - username_file: secrets.pathForSecret(namespace, rw.BasicAuth.Username), - password_file: secrets.pathForSecret(namespace, rw.BasicAuth.Password), + username: secrets.valueForSecret(namespace, rw.BasicAuth.Username), + password: secrets.valueForSecret(namespace, rw.BasicAuth.Password), } ), diff --git a/pkg/operator/defaults.go b/pkg/operator/defaults.go index 1c53a80ce67a..58ee7a517afc 100644 --- a/pkg/operator/defaults.go +++ b/pkg/operator/defaults.go @@ -20,7 +20,6 @@ var ( "v0.21.1", "v0.21.2", "v0.22.0", - "v0.23.0", // NOTE(rfratto): when performing an upgrade, add the newest version above instead of changing the existing reference. } diff --git a/pkg/operator/hierarchy/selector.go b/pkg/operator/hierarchy/selector.go index d2a1493a2ccb..06454e3a8f1e 100644 --- a/pkg/operator/hierarchy/selector.go +++ b/pkg/operator/hierarchy/selector.go @@ -5,6 +5,7 @@ import ( "fmt" corev1 "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/fields" "k8s.io/apimachinery/pkg/labels" "sigs.k8s.io/controller-runtime/pkg/client" ) @@ -78,6 +79,7 @@ var _ Selector = (*KeySelector)(nil) // ApplyToList implements Selector. func (ks *KeySelector) ApplyToList(lo *client.ListOptions) { lo.Namespace = ks.Namespace + lo.FieldSelector = fields.OneTermEqualSelector("metadata.name", ks.Name) } // Matches implements Selector. diff --git a/pkg/operator/reconciler_logs.go b/pkg/operator/reconciler_logs.go index 05c973253b99..a12e752a5db8 100644 --- a/pkg/operator/reconciler_logs.go +++ b/pkg/operator/reconciler_logs.go @@ -21,7 +21,6 @@ func (r *reconciler) createLogsConfigurationSecret( d config.Deployment, s assets.SecretStore, ) error { - return r.createTelemetryConfigurationSecret(ctx, l, d, s, config.LogsType) } @@ -32,7 +31,6 @@ func (r *reconciler) createLogsDaemonSet( d config.Deployment, s assets.SecretStore, ) error { - name := fmt.Sprintf("%s-logs", d.Agent.Name) ds, err := generateLogsDaemonSet(r.config, name, d) if err != nil { diff --git a/pkg/operator/reconciler_metrics.go b/pkg/operator/reconciler_metrics.go index 1a1ac6fb0da6..6a52948133b5 100644 --- a/pkg/operator/reconciler_metrics.go +++ b/pkg/operator/reconciler_metrics.go @@ -29,7 +29,6 @@ func (r *reconciler) createMetricsConfigurationSecret( d config.Deployment, s assets.SecretStore, ) error { - return r.createTelemetryConfigurationSecret(ctx, l, d, s, config.MetricsType) } @@ -105,7 +104,6 @@ func (r *reconciler) createMetricsGoverningService( d config.Deployment, s assets.SecretStore, ) error { - svc := generateMetricsStatefulSetService(r.config, d) // Delete the old Secret if one exists and we have no prometheus instances. diff --git a/pkg/operator/resources_logs.go b/pkg/operator/resources_logs.go index 27617517cd7f..85dc07b6cce9 100644 --- a/pkg/operator/resources_logs.go +++ b/pkg/operator/resources_logs.go @@ -19,7 +19,6 @@ func generateLogsDaemonSet( name string, d config.Deployment, ) (*apps_v1.DaemonSet, error) { - d = *d.DeepCopy() if d.Agent.Spec.PortName == "" { diff --git a/pkg/operator/resources_metrics.go b/pkg/operator/resources_metrics.go index cd282b464969..4834fb8e9793 100644 --- a/pkg/operator/resources_metrics.go +++ b/pkg/operator/resources_metrics.go @@ -109,7 +109,6 @@ func generateMetricsStatefulSet( d config.Deployment, shard int32, ) (*apps_v1.StatefulSet, error) { - d = *d.DeepCopy() // @@ -245,11 +244,6 @@ func generateMetricsStatefulSetSpec( "-reload-port=8081", } - enableConfigReadAPI := d.Agent.Spec.EnableConfigReadAPI - if enableConfigReadAPI { - agentArgs = append(agentArgs, "-config.enable-read-api") - } - // NOTE(rfratto): the Prometheus Operator supports a ListenLocal to prevent a // service from being created. Given the intent is that Agents can connect to // each other, ListenLocal isn't currently supported and we always create a port. diff --git a/pkg/traces/automaticloggingprocessor/factory.go b/pkg/traces/automaticloggingprocessor/factory.go index c942ba7e6f7d..ac1af7e39c82 100644 --- a/pkg/traces/automaticloggingprocessor/factory.go +++ b/pkg/traces/automaticloggingprocessor/factory.go @@ -127,7 +127,7 @@ func createTraceProcessor( cfg config.Processor, nextConsumer consumer.Traces, ) (component.TracesProcessor, error) { - oCfg := cfg.(*Config) + return newTraceProcessor(nextConsumer, oCfg.LoggingConfig) } diff --git a/pkg/traces/config.go b/pkg/traces/config.go index 177c46c80aba..f0af4401c8ec 100644 --- a/pkg/traces/config.go +++ b/pkg/traces/config.go @@ -10,11 +10,15 @@ import ( "strings" "time" - "github.com/mitchellh/mapstructure" + "github.com/grafana/agent/pkg/logs" + "github.com/grafana/agent/pkg/traces/automaticloggingprocessor" + "github.com/grafana/agent/pkg/traces/noopreceiver" + "github.com/grafana/agent/pkg/traces/promsdprocessor" + "github.com/grafana/agent/pkg/traces/remotewriteexporter" + "github.com/grafana/agent/pkg/traces/servicegraphprocessor" "github.com/open-telemetry/opentelemetry-collector-contrib/exporter/jaegerexporter" "github.com/open-telemetry/opentelemetry-collector-contrib/exporter/loadbalancingexporter" "github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter" - "github.com/open-telemetry/opentelemetry-collector-contrib/extension/oauth2clientauthextension" "github.com/open-telemetry/opentelemetry-collector-contrib/processor/attributesprocessor" "github.com/open-telemetry/opentelemetry-collector-contrib/processor/spanmetricsprocessor" "github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor" @@ -33,14 +37,6 @@ import ( "go.opentelemetry.io/collector/processor/batchprocessor" "go.opentelemetry.io/collector/receiver/otlpreceiver" "go.uber.org/multierr" - - "github.com/grafana/agent/pkg/logs" - "github.com/grafana/agent/pkg/traces/automaticloggingprocessor" - "github.com/grafana/agent/pkg/traces/noopreceiver" - "github.com/grafana/agent/pkg/traces/promsdprocessor" - "github.com/grafana/agent/pkg/traces/remotewriteexporter" - "github.com/grafana/agent/pkg/traces/servicegraphprocessor" - "github.com/grafana/agent/pkg/util" ) const ( @@ -164,50 +160,6 @@ var DefaultRemoteWriteConfig = RemoteWriteConfig{ Format: formatOtlp, } -// TLSClientSetting configures the oauth2client extension TLS; compatible with configtls.TLSClientSetting -type TLSClientSetting struct { - CAFile string `yaml:"ca_file,omitempty"` - CertFile string `yaml:"cert_file,omitempty"` - KeyFile string `yaml:"key_file,omitempty"` - MinVersion string `yaml:"min_version,omitempty"` - MaxVersion string `yaml:"max_version,omitempty"` - Insecure bool `yaml:"insecure"` - InsecureSkipVerify bool `yaml:"insecure_skip_verify"` - ServerNameOverride string `yaml:"server_name_override,omitempty"` -} - -// OAuth2Config configures the oauth2client extension for a remote_write exporter -// compatible with oauth2clientauthextension.Config -type OAuth2Config struct { - ClientID string `yaml:"client_id"` - ClientSecret string `yaml:"client_secret"` - TokenURL string `yaml:"token_url"` - Scopes []string `yaml:"scopes,omitempty"` - TLS TLSClientSetting `yaml:"tls,omitempty"` - Timeout time.Duration `yaml:"timeout,omitempty"` -} - -// Agent uses standard YAML unmarshalling, while the oauth2clientauthextension relies on -// mapstructure without providing YAML labels. `toOtelConfig` marshals `Oauth2Config` to configuration type expected by -// the oauth2clientauthextension Extension Factory -func (c OAuth2Config) toOtelConfig() (*oauth2clientauthextension.Config, error) { - var result *oauth2clientauthextension.Config - decoderConfig := &mapstructure.DecoderConfig{ - MatchName: func(s, t string) bool { return util.CamelToSnake(s) == t }, - Result: &result, - WeaklyTypedInput: true, - DecodeHook: mapstructure.ComposeDecodeHookFunc( - mapstructure.StringToSliceHookFunc(","), - mapstructure.StringToTimeDurationHookFunc(), - ), - } - decoder, _ := mapstructure.NewDecoder(decoderConfig) - if err := decoder.Decode(c); err != nil { - return nil, err - } - return result, nil -} - // RemoteWriteConfig controls the configuration of an exporter type RemoteWriteConfig struct { Endpoint string `yaml:"endpoint,omitempty"` @@ -219,7 +171,6 @@ type RemoteWriteConfig struct { InsecureSkipVerify bool `yaml:"insecure_skip_verify,omitempty"` TLSConfig *prom_config.TLSConfig `yaml:"tls_config,omitempty"` BasicAuth *prom_config.BasicAuth `yaml:"basic_auth,omitempty"` - Oauth2 *OAuth2Config `yaml:"oauth2,omitempty"` Headers map[string]string `yaml:"headers,omitempty"` SendingQueue map[string]interface{} `yaml:"sending_queue,omitempty"` // https://github.com/open-telemetry/opentelemetry-collector/blob/7d7ae2eb34b5d387627875c498d7f43619f37ee3/exporter/exporterhelper/queued_retry.go#L30 RetryOnFailure map[string]interface{} `yaml:"retry_on_failure,omitempty"` // https://github.com/open-telemetry/opentelemetry-collector/blob/7d7ae2eb34b5d387627875c498d7f43619f37ee3/exporter/exporterhelper/queued_retry.go#L54 @@ -230,7 +181,6 @@ func (c *RemoteWriteConfig) UnmarshalYAML(unmarshal func(interface{}) error) err *c = DefaultRemoteWriteConfig type plain RemoteWriteConfig - if err := unmarshal((*plain)(c)); err != nil { return err } @@ -303,10 +253,6 @@ func exporter(rwCfg RemoteWriteConfig) (map[string]interface{}, error) { headers = rwCfg.Headers } - if rwCfg.BasicAuth != nil && rwCfg.Oauth2 != nil { - return nil, fmt.Errorf("Only one auth type may be configured per exporter (basic_auth or oauth2)") - } - if rwCfg.BasicAuth != nil { password := string(rwCfg.BasicAuth.Password) @@ -372,21 +318,21 @@ func exporter(rwCfg RemoteWriteConfig) (map[string]interface{}, error) { return exporter, nil } -func getExporterName(index int, protocol string, format string) (string, error) { +func getExporterName(protocol string, format string) (string, error) { switch format { case formatOtlp: switch protocol { case protocolGRPC: - return fmt.Sprintf("otlp/%d", index), nil + return "otlp", nil case protocolHTTP: - return fmt.Sprintf("otlphttp/%d", index), nil + return "otlphttp", nil default: return "", errors.New("unknown protocol, expected either 'http' or 'grpc'") } case formatJaeger: switch protocol { case protocolGRPC: - return fmt.Sprintf("jaeger/%d", index), nil + return "jaeger", nil default: return "", errors.New("unknown protocol, expected 'grpc'") } @@ -403,42 +349,16 @@ func (c *InstanceConfig) exporters() (map[string]interface{}, error) { if err != nil { return nil, err } - exporterName, err := getExporterName(i, remoteWriteConfig.Protocol, remoteWriteConfig.Format) + exporterName, err := getExporterName(remoteWriteConfig.Protocol, remoteWriteConfig.Format) if err != nil { return nil, err } - if remoteWriteConfig.Oauth2 != nil { - exporter["auth"] = map[string]string{"authenticator": getAuthExtensionName(exporterName)} - } + exporterName = fmt.Sprintf("%s/%d", exporterName, i) exporters[exporterName] = exporter } return exporters, nil } -func getAuthExtensionName(exporterName string) string { - return fmt.Sprintf("oauth2client/%s", strings.Replace(exporterName, "/", "", -1)) -} - -// builds oauth2clientauth extensions required to support RemoteWriteConfigurations. -func (c *InstanceConfig) extensions() (map[string]interface{}, error) { - extensions := map[string]interface{}{} - for i, remoteWriteConfig := range c.RemoteWrite { - if remoteWriteConfig.Oauth2 == nil { - continue - } - exporterName, err := getExporterName(i, remoteWriteConfig.Protocol, remoteWriteConfig.Format) - if err != nil { - return nil, err - } - oauthConfig, err := remoteWriteConfig.Oauth2.toOtelConfig() - if err != nil { - return nil, err - } - extensions[getAuthExtensionName(exporterName)] = oauthConfig - } - return extensions, nil -} - func resolver(config map[string]interface{}) (map[string]interface{}, error) { if len(config) == 0 { return nil, fmt.Errorf("must configure one resolver (dns or static)") @@ -515,15 +435,6 @@ func (c *InstanceConfig) otelConfig() (*config.Config, error) { return nil, errors.New("must have at least one configured receiver") } - extensions, err := c.extensions() - if err != nil { - return nil, err - } - extensionsNames := make([]string, 0, len(extensions)) - for name := range extensions { - extensionsNames = append(extensionsNames, name) - } - exporters, err := c.exporters() if err != nil { return nil, err @@ -692,19 +603,14 @@ func (c *InstanceConfig) otelConfig() (*config.Config, error) { receiversMap := map[string]interface{}(c.Receivers) - otelMapStructure["extensions"] = extensions otelMapStructure["exporters"] = exporters otelMapStructure["processors"] = processors otelMapStructure["receivers"] = receiversMap // pipelines - serviceMap := map[string]interface{}{ + otelMapStructure["service"] = map[string]interface{}{ "pipelines": pipelines, } - if len(extensionsNames) > 0 { - serviceMap["extensions"] = extensionsNames - } - otelMapStructure["service"] = serviceMap factories, err := tracingFactories() if err != nil { @@ -727,9 +633,7 @@ func (c *InstanceConfig) otelConfig() (*config.Config, error) { // tracingFactories() only creates the needed factories. if we decide to add support for a new // processor, exporter, receiver we need to add it here func tracingFactories() (component.Factories, error) { - extensions, err := component.MakeExtensionFactoryMap( - oauth2clientauthextension.NewFactory(), - ) + extensions, err := component.MakeExtensionFactoryMap() if err != nil { return component.Factories{}, err } @@ -813,7 +717,6 @@ func orderProcessors(processors []string, splitPipelines bool) [][]string { processor == "tail_sampling" || processor == "automatic_logging" || processor == "service_graphs" { - foundAt = i break } diff --git a/pkg/traces/config_test.go b/pkg/traces/config_test.go index 0fd2928234d3..07bd508c6b9d 100644 --- a/pkg/traces/config_test.go +++ b/pkg/traces/config_test.go @@ -1059,246 +1059,6 @@ service: exporters: ["jaeger/0", "otlp/1"] processors: [] receivers: ["jaeger"] -`, - }, - { - name: "one exporter with oauth2 and basic auth", - cfg: ` -receivers: - jaeger: - protocols: - grpc: -remote_write: - - endpoint: example.com:12345 - basic_auth: - username: test - password: blerg - oauth2: - client_id: somecclient - client_secret: someclientsecret -`, - expectedError: true, - }, - { - name: "simple oauth2 config", - cfg: ` -receivers: - jaeger: - protocols: - grpc: -remote_write: - - endpoint: example.com:12345 - protocol: http - oauth2: - client_id: someclientid - client_secret: someclientsecret - token_url: https://example.com/oauth2/default/v1/token - scopes: ["api.metrics"] - timeout: 2s -`, - expectedConfig: ` -receivers: - jaeger: - protocols: - grpc: -extensions: - oauth2client/otlphttp0: - client_id: someclientid - client_secret: someclientsecret - token_url: https://example.com/oauth2/default/v1/token - scopes: ["api.metrics"] - timeout: 2s -exporters: - otlphttp/0: - endpoint: example.com:12345 - compression: gzip - retry_on_failure: - max_elapsed_time: 60s - auth: - authenticator: oauth2client/otlphttp0 -service: - extensions: ["oauth2client/otlphttp0"] - pipelines: - traces: - exporters: ["otlphttp/0"] - processors: [] - receivers: ["jaeger"] -`, - }, - { - name: "oauth2 TLS", - cfg: ` -receivers: - jaeger: - protocols: - grpc: -remote_write: - - endpoint: example.com:12345 - protocol: http - oauth2: - client_id: someclientid - client_secret: someclientsecret - token_url: https://example.com/oauth2/default/v1/token - scopes: ["api.metrics"] - timeout: 2s - tls: - insecure: true - ca_file: /var/lib/mycert.pem - cert_file: certfile - key_file: keyfile -`, - expectedConfig: ` -receivers: - jaeger: - protocols: - grpc: -extensions: - oauth2client/otlphttp0: - client_id: someclientid - client_secret: someclientsecret - token_url: https://example.com/oauth2/default/v1/token - scopes: ["api.metrics"] - timeout: 2s - tls: - insecure: true - ca_file: /var/lib/mycert.pem - cert_file: certfile - key_file: keyfile -exporters: - otlphttp/0: - endpoint: example.com:12345 - compression: gzip - retry_on_failure: - max_elapsed_time: 60s - auth: - authenticator: oauth2client/otlphttp0 -service: - extensions: ["oauth2client/otlphttp0"] - pipelines: - traces: - exporters: ["otlphttp/0"] - processors: [] - receivers: ["jaeger"] -`, - }, - { - name: "2 exporters different auth", - cfg: ` -receivers: - jaeger: - protocols: - grpc: -remote_write: - - endpoint: example.com:12345 - protocol: http - oauth2: - client_id: someclientid - client_secret: someclientsecret - token_url: https://example.com/oauth2/default/v1/token - scopes: ["api.metrics"] - timeout: 2s - - endpoint: example.com:12345 - protocol: grpc - oauth2: - client_id: anotherclientid - client_secret: anotherclientsecret - token_url: https://example.com/oauth2/default/v1/token - scopes: ["api.metrics"] - timeout: 2s -`, - expectedConfig: ` -receivers: - jaeger: - protocols: - grpc: -extensions: - oauth2client/otlphttp0: - client_id: someclientid - client_secret: someclientsecret - token_url: https://example.com/oauth2/default/v1/token - scopes: ["api.metrics"] - timeout: 2s - oauth2client/otlp1: - client_id: anotherclientid - client_secret: anotherclientsecret - token_url: https://example.com/oauth2/default/v1/token - scopes: ["api.metrics"] - timeout: 2s -exporters: - otlphttp/0: - endpoint: example.com:12345 - compression: gzip - retry_on_failure: - max_elapsed_time: 60s - auth: - authenticator: oauth2client/otlphttp0 - otlp/1: - endpoint: example.com:12345 - compression: gzip - retry_on_failure: - max_elapsed_time: 60s - auth: - authenticator: oauth2client/otlp1 -service: - extensions: ["oauth2client/otlphttp0", "oauth2client/otlp1"] - pipelines: - traces: - exporters: ["otlphttp/0", "otlp/1"] - processors: [] - receivers: ["jaeger"] -`, - }, - { - name: "exporter with insecure oauth", - cfg: ` -receivers: - jaeger: - protocols: - grpc: -remote_write: - - endpoint: http://example.com:12345 - insecure: true - protocol: http - oauth2: - client_id: someclientid - client_secret: someclientsecret - token_url: https://example.com/oauth2/default/v1/token - scopes: ["api.metrics"] - timeout: 2s - tls: - insecure: true -`, - expectedConfig: ` -receivers: - jaeger: - protocols: - grpc: -extensions: - oauth2client/otlphttp0: - client_id: someclientid - client_secret: someclientsecret - token_url: https://example.com/oauth2/default/v1/token - scopes: ["api.metrics"] - timeout: 2s - tls: - insecure: true -exporters: - otlphttp/0: - endpoint: http://example.com:12345 - tls: - insecure: true - compression: gzip - retry_on_failure: - max_elapsed_time: 60s - auth: - authenticator: oauth2client/otlphttp0 -service: - extensions: ["oauth2client/otlphttp0"] - pipelines: - traces: - exporters: ["otlphttp/0"] - processors: [] - receivers: ["jaeger"] `, }, } @@ -1308,6 +1068,7 @@ service: var cfg InstanceConfig err := yaml.Unmarshal([]byte(tc.cfg), &cfg) require.NoError(t, err) + // check error actualConfig, err := cfg.otelConfig() if tc.expectedError { @@ -1687,9 +1448,7 @@ func sortPipelines(cfg *config.Config) { var ( exp = tracePipeline.Exporters recv = tracePipeline.Receivers - ext = cfg.Service.Extensions ) sort.Slice(exp, func(i, j int) bool { return exp[i].String() > exp[j].String() }) sort.Slice(recv, func(i, j int) bool { return recv[i].String() > recv[j].String() }) - sort.Slice(ext, func(i, j int) bool { return ext[i].String() > ext[j].String() }) } diff --git a/pkg/traces/instance.go b/pkg/traces/instance.go index 4940c0129100..36c43b241bc4 100644 --- a/pkg/traces/instance.go +++ b/pkg/traces/instance.go @@ -6,22 +6,20 @@ import ( "sync" "time" + "github.com/grafana/agent/pkg/build" + "github.com/grafana/agent/pkg/logs" + "github.com/grafana/agent/pkg/metrics/instance" + "github.com/grafana/agent/pkg/traces/automaticloggingprocessor" + "github.com/grafana/agent/pkg/traces/contextkeys" + "github.com/grafana/agent/pkg/util" "github.com/prometheus/client_golang/prometheus" "go.opencensus.io/stats/view" "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/config" "go.opentelemetry.io/collector/service/external/builder" - "go.opentelemetry.io/collector/service/external/extensions" "go.opentelemetry.io/otel/metric" "go.opentelemetry.io/otel/trace" "go.uber.org/zap" - - "github.com/grafana/agent/pkg/build" - "github.com/grafana/agent/pkg/logs" - "github.com/grafana/agent/pkg/metrics/instance" - "github.com/grafana/agent/pkg/traces/automaticloggingprocessor" - "github.com/grafana/agent/pkg/traces/contextkeys" - "github.com/grafana/agent/pkg/util" ) // Instance wraps the OpenTelemetry collector to enable tracing pipelines @@ -31,10 +29,9 @@ type Instance struct { logger *zap.Logger metricViews []*view.View - extensions extensions.Extensions - exporter builder.Exporters - pipelines builder.BuiltPipelines - receivers builder.Receivers + exporter builder.Exporters + pipelines builder.BuiltPipelines + receivers builder.Receivers } // NewInstance creates and starts an instance of tracing pipelines. @@ -89,11 +86,6 @@ func (i *Instance) stop() { shutdownCtx, cancel := context.WithTimeout(context.Background(), 30*time.Second) defer cancel() - err := i.extensions.NotifyPipelineNotReady() - if err != nil { - i.logger.Error("failed to notify extension of pipeline shutdown", zap.Error(err)) - } - dependencies := []struct { name string shutdown func() error @@ -125,15 +117,6 @@ func (i *Instance) stop() { return i.exporter.ShutdownAll(shutdownCtx) }, }, - { - name: "extensions", - shutdown: func() error { - if i.extensions == nil { - return nil - } - return i.extensions.ShutdownAll(shutdownCtx) - }, - }, } for _, dep := range dependencies { @@ -146,7 +129,6 @@ func (i *Instance) stop() { i.receivers = nil i.pipelines = nil i.exporter = nil - i.extensions = nil } func (i *Instance) buildAndStartPipeline(ctx context.Context, cfg InstanceConfig, logs *logs.Logs, instManager instance.Manager, reg prometheus.Registerer) error { @@ -198,26 +180,14 @@ func (i *Instance) buildAndStartPipeline(ctx context.Context, cfg InstanceConfig MeterProvider: metric.NewNoopMeterProvider(), } - // start extensions - i.extensions, err = extensions.Build(settings, appinfo, otelConfig, factories.Extensions) - if err != nil { - i.logger.Error(fmt.Sprintf("failed to build extensions:%s", err.Error())) - return fmt.Errorf("failed to create extensions builder: %w", err) - } - err = i.extensions.StartAll(ctx, i) - if err != nil { - i.logger.Error(fmt.Sprintf("failed to start extensions:%s", err.Error())) - return fmt.Errorf("failed to start extensions: %w", err) - } - // start exporter i.exporter, err = builder.BuildExporters(settings, appinfo, otelConfig, factories.Exporters) if err != nil { return fmt.Errorf("failed to create exporters builder: %w", err) } + err = i.exporter.StartAll(ctx, i) if err != nil { - i.logger.Error(fmt.Sprintf("failed to start exporter:%s", err.Error())) return fmt.Errorf("failed to start exporters: %w", err) } @@ -243,7 +213,7 @@ func (i *Instance) buildAndStartPipeline(ctx context.Context, cfg InstanceConfig return fmt.Errorf("failed to start receivers: %w", err) } - return i.extensions.NotifyPipelineReady() + return nil } // ReportFatalError implements component.Host @@ -258,7 +228,7 @@ func (i *Instance) GetFactory(component.Kind, config.Type) component.Factory { // GetExtensions implements component.Host func (i *Instance) GetExtensions() map[config.ComponentID]component.Extension { - return i.extensions.ToMap() + return nil } // GetExporters implements component.Host diff --git a/pkg/traces/internal/traceutils/server.go b/pkg/traces/internal/traceutils/server.go index d4ae72cd5700..4f2bf2a3f541 100644 --- a/pkg/traces/internal/traceutils/server.go +++ b/pkg/traces/internal/traceutils/server.go @@ -23,7 +23,7 @@ import ( "go.opentelemetry.io/otel/metric" "go.opentelemetry.io/otel/trace" "go.uber.org/zap" - "gopkg.in/yaml.v2" + "gopkg.in/yaml.v3" ) // Server is a Tracing testing server that invokes a function every time a span @@ -214,7 +214,6 @@ func newFuncProcessorFactory(callback func(pdata.Traces)) component.ProcessorFac _ config.Processor, next consumer.Traces, ) (component.TracesProcessor, error) { - return &funcProcessor{ Callback: callback, Next: next, @@ -255,7 +254,6 @@ func newNoopExporterFactory() component.ExporterFactory { config.Exporter) ( component.TracesExporter, error) { - return &noopExporter{}, nil }), ) diff --git a/pkg/traces/noopreceiver/factory.go b/pkg/traces/noopreceiver/factory.go index 1963f525b791..05d50c7a8cef 100644 --- a/pkg/traces/noopreceiver/factory.go +++ b/pkg/traces/noopreceiver/factory.go @@ -41,6 +41,5 @@ func createMetricsReceiver( _ config.Receiver, _ consumer.Metrics, ) (component.MetricsReceiver, error) { - return newNoopReceiver(nil, nil, nil), nil } diff --git a/pkg/traces/promsdprocessor/factory.go b/pkg/traces/promsdprocessor/factory.go index 7ae4c80d4ec0..006cf2c4de82 100644 --- a/pkg/traces/promsdprocessor/factory.go +++ b/pkg/traces/promsdprocessor/factory.go @@ -59,8 +59,8 @@ func createTraceProcessor( cfg config.Processor, nextConsumer consumer.Traces, ) (component.TracesProcessor, error) { - oCfg := cfg.(*Config) + out, err := yaml.Marshal(oCfg.ScrapeConfigs) if err != nil { return nil, fmt.Errorf("unable to marshal scrapeConfigs interface{} to yaml: %w", err) diff --git a/pkg/traces/remotewriteexporter/exporter.go b/pkg/traces/remotewriteexporter/exporter.go index 371516314bc1..1f0cab384fb4 100644 --- a/pkg/traces/remotewriteexporter/exporter.go +++ b/pkg/traces/remotewriteexporter/exporter.go @@ -157,8 +157,8 @@ func (e *remoteWriteExporter) handleHistogramIntDataPoints(app storage.Appender, if err := e.appendDataPointWithLabels(app, name, bucketSuffix, dataPoint, float64(cumulativeCount), ls); err != nil { return err } - } + } return nil } diff --git a/pkg/traces/remotewriteexporter/exporter_test.go b/pkg/traces/remotewriteexporter/exporter_test.go index c0f6a8639100..e50dc88eec9c 100644 --- a/pkg/traces/remotewriteexporter/exporter_test.go +++ b/pkg/traces/remotewriteexporter/exporter_test.go @@ -9,6 +9,7 @@ import ( "github.com/grafana/agent/pkg/metrics/instance" "github.com/prometheus/prometheus/pkg/exemplar" "github.com/prometheus/prometheus/pkg/labels" + "github.com/prometheus/prometheus/scrape" "github.com/prometheus/prometheus/storage" "github.com/stretchr/testify/require" "go.opentelemetry.io/collector/model/pdata" @@ -102,10 +103,17 @@ func (m *mockManager) DeleteConfig(_ string) error { return nil } func (m *mockManager) Stop() {} type mockInstance struct { - instance.NoOpInstance appender *mockAppender } +func (m *mockInstance) Run(_ context.Context) error { return nil } + +func (m *mockInstance) Update(_ instance.Config) error { return nil } + +func (m *mockInstance) TargetsActive() map[string][]*scrape.Target { return nil } + +func (m *mockInstance) StorageDirectory() string { return "" } + func (m *mockInstance) Appender(_ context.Context) storage.Appender { if m.appender == nil { m.appender = &mockAppender{} diff --git a/pkg/traces/remotewriteexporter/factory.go b/pkg/traces/remotewriteexporter/factory.go index 790828a368c8..226df1fc8891 100644 --- a/pkg/traces/remotewriteexporter/factory.go +++ b/pkg/traces/remotewriteexporter/factory.go @@ -49,7 +49,7 @@ func createMetricsExporter( _ component.ExporterCreateSettings, cfg config.Exporter, ) (component.MetricsExporter, error) { - eCfg := cfg.(*Config) + return newRemoteWriteExporter(eCfg) } diff --git a/pkg/traces/servicegraphprocessor/factory.go b/pkg/traces/servicegraphprocessor/factory.go index 8fcdcb6757cf..e31dfa7ff85e 100644 --- a/pkg/traces/servicegraphprocessor/factory.go +++ b/pkg/traces/servicegraphprocessor/factory.go @@ -60,7 +60,7 @@ func createTracesProcessor( cfg config.Processor, nextConsumer consumer.Traces, ) (component.TracesProcessor, error) { - eCfg := cfg.(*Config) + return newProcessor(nextConsumer, eCfg), nil } diff --git a/pkg/traces/servicegraphprocessor/processor.go b/pkg/traces/servicegraphprocessor/processor.go index 39ac5197836d..5d59044981d0 100644 --- a/pkg/traces/servicegraphprocessor/processor.go +++ b/pkg/traces/servicegraphprocessor/processor.go @@ -279,6 +279,7 @@ func (p *processor) consume(trace pdata.Traces) error { ils := ilsSlice.At(j) for k := 0; k < ils.Spans().Len(); k++ { + span := ils.Spans().At(k) switch span.Kind() { diff --git a/pkg/traces/servicegraphprocessor/processor_test.go b/pkg/traces/servicegraphprocessor/processor_test.go index 8f70ae0a4625..48119cb533eb 100644 --- a/pkg/traces/servicegraphprocessor/processor_test.go +++ b/pkg/traces/servicegraphprocessor/processor_test.go @@ -95,6 +95,7 @@ func TestConsumeMetrics(t *testing.T) { require.NoError(t, err) }) } + } func traceSamples(t *testing.T, path string) pdata.Traces { diff --git a/pkg/traces/traces.go b/pkg/traces/traces.go index 0294aa03ee20..0725a47b7ef7 100644 --- a/pkg/traces/traces.go +++ b/pkg/traces/traces.go @@ -12,7 +12,6 @@ import ( zaplogfmt "github.com/jsternberg/zap-logfmt" prom_client "github.com/prometheus/client_golang/prometheus" "github.com/sirupsen/logrus" - "github.com/weaveworks/common/logging" "go.opencensus.io/stats/view" "go.opentelemetry.io/collector/external/obsreportconfig" "go.uber.org/zap" @@ -34,13 +33,13 @@ type Traces struct { } // New creates and starts trace collection. -func New(logsSubsystem *logs.Logs, promInstanceManager instance.Manager, reg prom_client.Registerer, cfg Config, level logrus.Level, fmt logging.Format) (*Traces, error) { +func New(logsSubsystem *logs.Logs, promInstanceManager instance.Manager, reg prom_client.Registerer, cfg Config, level logrus.Level) (*Traces, error) { var leveller logLeveller traces := &Traces{ instances: make(map[string]*Instance), leveller: &leveller, - logger: newLogger(&leveller, fmt), + logger: newLogger(&leveller), reg: reg, promInstanceManager: promInstanceManager, } @@ -110,24 +109,13 @@ func (t *Traces) Stop() { } } -func newLogger(zapLevel zapcore.LevelEnabler, fmt logging.Format) *zap.Logger { +func newLogger(zapLevel zapcore.LevelEnabler) *zap.Logger { config := zap.NewProductionEncoderConfig() config.EncodeTime = func(ts time.Time, encoder zapcore.PrimitiveArrayEncoder) { encoder.AppendString(ts.UTC().Format(time.RFC3339)) } - - var encoder zapcore.Encoder - switch fmt.String() { - case "logfmt": - encoder = zaplogfmt.NewEncoder(config) - case "json": - encoder = zapcore.NewJSONEncoder(config) - default: - encoder = zaplogfmt.NewEncoder(config) - } - logger := zap.New(zapcore.NewCore( - encoder, + zaplogfmt.NewEncoder(config), os.Stdout, zapLevel, ), zap.AddCaller()) diff --git a/pkg/traces/traces_test.go b/pkg/traces/traces_test.go index 01cde1ff04c0..d289cc7be909 100644 --- a/pkg/traces/traces_test.go +++ b/pkg/traces/traces_test.go @@ -48,7 +48,7 @@ configs: var loggingLevel logging.Level require.NoError(t, loggingLevel.Set("debug")) - traces, err := New(nil, nil, prometheus.NewRegistry(), cfg, logrus.InfoLevel, logging.Format{}) + traces, err := New(nil, nil, prometheus.NewRegistry(), cfg, logrus.InfoLevel) require.NoError(t, err) t.Cleanup(traces.Stop) @@ -94,7 +94,7 @@ configs: err := dec.Decode(&cfg) require.NoError(t, err) - traces, err := New(nil, nil, prometheus.NewRegistry(), cfg, logrus.DebugLevel, logging.Format{}) + traces, err := New(nil, nil, prometheus.NewRegistry(), cfg, logrus.DebugLevel) require.NoError(t, err) t.Cleanup(traces.Stop) diff --git a/pkg/util/logger.go b/pkg/util/logger.go index 5e90090d718c..bc627c3a0b26 100644 --- a/pkg/util/logger.go +++ b/pkg/util/logger.go @@ -29,17 +29,6 @@ func NewLogger(cfg *server.Config) *Logger { return newLogger(cfg, defaultLogger) } -// NewLoggerFromLevel creates a new logger from logging.Level and logging.Format. -func NewLoggerFromLevel(lvl logging.Level, fmt logging.Format) *Logger { - logger, err := makeDefaultLogger(lvl, fmt) - if err != nil { - panic(err) - } - return &Logger{ - l: logger, - } -} - func newLogger(cfg *server.Config, ctor func(*server.Config) (log.Logger, error)) *Logger { l := Logger{makeLogger: ctor} if err := l.ApplyConfig(cfg); err != nil { @@ -63,13 +52,9 @@ func (l *Logger) ApplyConfig(cfg *server.Config) error { } func defaultLogger(cfg *server.Config) (log.Logger, error) { - return makeDefaultLogger(cfg.LogLevel, cfg.LogFormat) -} - -func makeDefaultLogger(lvl logging.Level, fmt logging.Format) (log.Logger, error) { var l log.Logger - l, err := cortex_log.NewPrometheusLogger(lvl, fmt) + l, err := cortex_log.NewPrometheusLogger(cfg.LogLevel, cfg.LogFormat) if err != nil { return nil, err } diff --git a/pkg/util/strings.go b/pkg/util/strings.go deleted file mode 100644 index 0caaadcecbd0..000000000000 --- a/pkg/util/strings.go +++ /dev/null @@ -1,15 +0,0 @@ -package util - -import ( - "regexp" - "strings" -) - -// CamelToSnake is a helper function for converting CamelCase to Snake Case -func CamelToSnake(str string) string { - var matchFirstCap = regexp.MustCompile("(.)([A-Z][a-z]+)") - var matchAllCap = regexp.MustCompile("([a-z0-9])([A-Z])") - snake := matchFirstCap.ReplaceAllString(str, "${1}_${2}") - snake = matchAllCap.ReplaceAllString(snake, "${1}_${2}") - return strings.ToLower(snake) -} diff --git a/pkg/util/trigger_test.go b/pkg/util/trigger_test.go index 5e8d4f70702a..2959ba974d0f 100644 --- a/pkg/util/trigger_test.go +++ b/pkg/util/trigger_test.go @@ -26,4 +26,5 @@ func TestWaitTrigger(t *testing.T) { err := wt.Wait(time.Second) require.NoError(t, err) }) + } diff --git a/production/README.md b/production/README.md index a73aca24a288..4bbb146d4682 100644 --- a/production/README.md +++ b/production/README.md @@ -13,7 +13,7 @@ Here are some resources to help you run the Grafana Agent: ## Windows Installation -To run the Windows Installation, download the Windows Installer executable from the [release page](https://github.com/grafana/agent/releases). Then run the installer, this will setup the Agent and run the Agent as a Windows Service. More details can be found in the [Windows Guide](https://grafana.com/docs/agent/latest/getting-started/install-agent-on-windows/) +To run the Windows Installation, download the Windows Installer executable from the [release page](https://github.com/grafana/agent/releases). Then run the installer, this will setup the Agent and run the Agent as a Windows Service. More details can be found in the [Windows Guide](../docs/getting-started/install-agent-on-windows.md) ## Running the Agent with Docker @@ -27,7 +27,7 @@ directory on your host that you want the agent to store its WAL. docker run \ -v /tmp/agent:/etc/agent/data \ -v /path/to/config.yaml:/etc/agent/agent.yaml \ - grafana/agent:v0.23.0 + grafana/agent:v0.22.0 ``` ## Running the Agent locally diff --git a/production/grafana-agent-mixin/alerts.libsonnet b/production/grafana-agent-mixin/alerts.libsonnet index c34836d570f2..7f66d672c782 100644 --- a/production/grafana-agent-mixin/alerts.libsonnet +++ b/production/grafana-agent-mixin/alerts.libsonnet @@ -65,121 +65,6 @@ local _config = config._config; }, ], }, - { - name: 'GrafanaAgentSmokeChecks', - rules: [ - { - alert: 'GrafanaAgentDown', - expr: ||| - up{ - namespace="agent-smoke-test", - pod=~"grafana-agent-smoke-test-(0|cluster-0|cluster-1|cluster-2)", - } == 0 - |||, - 'for': '5m', - annotations: { - summary: '{{ $labels.job }} is down', - }, - }, - { - alert: 'GrafanaAgentFlapping', - expr: ||| - avg_over_time(up{ - namespace="agent-smoke-test", - pod=~"grafana-agent-smoke-test-(0|cluster-0|cluster-1|cluster-2)", - }[5m]) < 1 - |||, - 'for': '15m', - annotations: { - summary: '{{ $labels.job }} is flapping', - }, - }, - - // Checks that the CPU usage doesn't go too high. This was generated from internal usage where - // every 1,000 active series used roughly 0.0013441% of CPU. This alert only fires if there is a - // minimum load threshold of at least 1000 active series. - { - alert: 'GrafanaAgentCPUHigh', - expr: ||| - (sum by (pod) (rate(container_cpu_usage_seconds_total{cluster=~".+", namespace=~"agent-smoke-test", container=~".+", pod="grafana-agent-smoke-test-cluster-2"}[5m])) - / - (sum by (pod) (agent_wal_storage_active_series{cluster=~".+", namespace=~"agent-smoke-test", container=~".+", pod="grafana-agent-smoke-test-cluster-2"}) / 1000) - > 0.0013441) - and - sum by (pod) (agent_wal_storage_active_series{cluster=~".+", namespace=~"agent-smoke-test", container=~".+", pod="grafana-agent-smoke-test-cluster-2"}) > 1000 - |||, - 'for': '15m', - annotations: { - summary: '{{ $labels.pod }} is using more than 0.0013441 CPU per 1000 series over the last 5 minutes', - }, - }, - - // We assume roughly ~8KB per series. Check that each deployment - // doesn't go too far above this. - // - // We aggregate the memory of the scraping service together since an individual - // node with a really small number of active series will throw this metric off. - { - alert: 'GrafanaAgentMemHigh', - expr: ||| - sum without (pod, instance) (go_memstats_heap_inuse_bytes{job=~"agent-smoke-test/grafana-agent-smoke-test.*"}) / - sum without (pod, instance, instance_group_name) (agent_wal_storage_active_series{job=~"agent-smoke-test/grafana-agent-smoke-test.*"}) / 1e3 > 10 - |||, - 'for': '5m', - annotations: { - summary: '{{ $labels.job }} has used more than 10KB per series for more than 5 minutes', - }, - }, - ], - }, - { - name: 'GrafanaAgentCrowChecks', - rules: [ - { - alert: 'CrowDown', - expr: ||| - up{job=~"agent-smoke-test/crow-.*"} == 0 - |||, - 'for': '5m', - annotations: { - summary: 'Crow {{ $labels.job }} is down.', - }, - }, - { - alert: 'CrowFlapping', - expr: ||| - avg_over_time(up{job=~"agent-smoke-test/crow-.*"}[5m]) < 1 - |||, - 'for': '15m', - annotations: { - summary: 'Crow {{ $labels.job }} is flapping.', - }, - }, - { - alert: 'CrowNotScraped', - expr: ||| - rate(crow_test_samples_total[5m]) == 0 - |||, - 'for': '15m', - annotations: { - summary: 'Crow {{ $labels.job }} is not being scraped.', - }, - }, - { - alert: 'CrowFailures', - expr: ||| - ( - rate(crow_test_sample_results_total{result="success"}[5m]) - / ignoring(result) rate(crow_test_samples_total[5m]) - ) < 1 - |||, - 'for': '15m', - annotations: { - summary: 'Crow {{ $labels.job }} has had failures for at least 5m', - }, - }, - ], - }, ], }, } diff --git a/production/grafanacloud-install.sh b/production/grafanacloud-install.sh index a4eb2a1a0dfb..c2d07a53eeea 100755 --- a/production/grafanacloud-install.sh +++ b/production/grafanacloud-install.sh @@ -50,7 +50,7 @@ PACKAGE_SYSTEM=${PACKAGE_SYSTEM:=} # # Global constants. # -RELEASE_VERSION="0.23.0" +RELEASE_VERSION="0.22.0" RELEASE_URL="https://github.com/grafana/agent/releases/download/v${RELEASE_VERSION}" DEB_URL="${RELEASE_URL}/grafana-agent-${RELEASE_VERSION}-1.${ARCH}.deb" diff --git a/production/kubernetes/agent-bare.yaml b/production/kubernetes/agent-bare.yaml index 170a6d6b96c6..2eda70a26a8b 100644 --- a/production/kubernetes/agent-bare.yaml +++ b/production/kubernetes/agent-bare.yaml @@ -66,7 +66,7 @@ spec: valueFrom: fieldRef: fieldPath: spec.nodeName - image: grafana/agent:v0.23.0 + image: grafana/agent:v0.22.0 imagePullPolicy: IfNotPresent name: agent ports: diff --git a/production/kubernetes/agent-loki.yaml b/production/kubernetes/agent-loki.yaml index dc59e9241821..cf284912af18 100644 --- a/production/kubernetes/agent-loki.yaml +++ b/production/kubernetes/agent-loki.yaml @@ -2,7 +2,7 @@ apiVersion: v1 kind: ServiceAccount metadata: name: grafana-agent-logs - namespace: ${NAMESPACE} + namespace: YOUR_NAMESPACE --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole @@ -37,13 +37,13 @@ roleRef: subjects: - kind: ServiceAccount name: grafana-agent-logs - namespace: ${NAMESPACE} + namespace: YOUR_NAMESPACE --- apiVersion: apps/v1 kind: DaemonSet metadata: name: grafana-agent-logs - namespace: ${NAMESPACE} + namespace: YOUR_NAMESPACE spec: minReadySeconds: 10 selector: @@ -64,7 +64,7 @@ spec: valueFrom: fieldRef: fieldPath: spec.nodeName - image: grafana/agent:v0.23.0 + image: grafana/agent:v0.22.0 imagePullPolicy: IfNotPresent name: agent ports: diff --git a/production/kubernetes/agent-traces.yaml b/production/kubernetes/agent-traces.yaml index 47e205914433..3ad3616f1f3a 100644 --- a/production/kubernetes/agent-traces.yaml +++ b/production/kubernetes/agent-traces.yaml @@ -109,7 +109,7 @@ spec: valueFrom: fieldRef: fieldPath: spec.nodeName - image: grafana/agent:v0.23.0 + image: grafana/agent:v0.22.0 imagePullPolicy: IfNotPresent name: agent ports: diff --git a/production/kubernetes/build/lib/version.libsonnet b/production/kubernetes/build/lib/version.libsonnet index f1fe9c140135..24f9f8cd67a2 100644 --- a/production/kubernetes/build/lib/version.libsonnet +++ b/production/kubernetes/build/lib/version.libsonnet @@ -1 +1 @@ -'grafana/agent:v0.23.0' +'grafana/agent:v0.22.0' diff --git a/production/kubernetes/build/templates/loki/main.jsonnet b/production/kubernetes/build/templates/loki/main.jsonnet index 37cad47952eb..82721f6048d7 100644 --- a/production/kubernetes/build/templates/loki/main.jsonnet +++ b/production/kubernetes/build/templates/loki/main.jsonnet @@ -2,7 +2,7 @@ local agent = import 'grafana-agent/v1/main.libsonnet'; { agent: - agent.new('grafana-agent-logs', '${NAMESPACE}') + + agent.new('grafana-agent-logs', 'YOUR_NAMESPACE') + agent.withConfigHash(false) + agent.withImages({ agent: (import 'version.libsonnet'), diff --git a/production/kubernetes/install-bare.sh b/production/kubernetes/install-bare.sh index 6a80a5e45229..e113a84dfbc1 100644 --- a/production/kubernetes/install-bare.sh +++ b/production/kubernetes/install-bare.sh @@ -25,7 +25,7 @@ check_installed() { check_installed curl check_installed envsubst -MANIFEST_BRANCH=v0.23.0 +MANIFEST_BRANCH=v0.22.0 MANIFEST_URL=${MANIFEST_URL:-https://raw.githubusercontent.com/grafana/agent/${MANIFEST_BRANCH}/production/kubernetes/agent-bare.yaml} NAMESPACE=${NAMESPACE:-default} diff --git a/production/operator/crds/monitoring.grafana.com_grafanaagents.yaml b/production/operator/crds/monitoring.grafana.com_grafanaagents.yaml index bb18b7d06ec9..f97b968bf855 100644 --- a/production/operator/crds/monitoring.grafana.com_grafanaagents.yaml +++ b/production/operator/crds/monitoring.grafana.com_grafanaagents.yaml @@ -2203,11 +2203,6 @@ spec: - name type: object type: array - enableConfigReadAPI: - default: false - description: enableConfigReadAPI enables the read API for viewing - currently running config port 8080 on the agent. - type: boolean image: description: Image, when specified, overrides the image used to run the Agent. It should be specified along with a tag. Version must diff --git a/production/tanka/grafana-agent/smoke/main.libsonnet b/production/tanka/grafana-agent/smoke/main.libsonnet deleted file mode 100644 index 8713e1c46859..000000000000 --- a/production/tanka/grafana-agent/smoke/main.libsonnet +++ /dev/null @@ -1,68 +0,0 @@ -local k = import 'ksonnet-util/kausal.libsonnet'; -local policyRule = k.rbac.v1.policyRule; -local serviceAccount = k.core.v1.serviceAccount; -local container = k.core.v1.container; -local containerPort = k.core.v1.containerPort; -local deployment = k.apps.v1.deployment; -local service = k.core.v1.service; -local util = k.util; - -{ - new(name='grafana-agent-smoke', namespace='default', config={}):: { - local k = (import 'ksonnet-util/kausal.libsonnet') { _config+:: { namespace: namespace } }, - - local this = self, - - _images:: { - agentsmoke: 'us.gcr.io/kubernetes-dev/grafana/agent-smoke:main', - }, - - _config:: { - mutationFrequency: '5m', - chaosFrequency: '30m', - image: this._images.agentsmoke, - pull_secret: '', - podPrefix: 'grafana-agent', - } + config, - - rbac: - k.util.rbac(name, [ - policyRule.withApiGroups(['apps']) + - policyRule.withResources(['deployments/scale']) + - policyRule.withVerbs(['get', 'update']), - policyRule.withApiGroups(['']) + - policyRule.withResources(['pods']) + - policyRule.withVerbs(['list', 'delete']), - ]) { - service_account+: - serviceAccount.mixin.metadata.withNamespace(namespace), - }, - - container:: - container.new('agent-smoke', this._config.image) + - container.withCommand('/bin/grafana-agent-smoke') + - container.withPorts([ - containerPort.newNamed(name='remote-write', containerPort=19090), - ]) + - container.withArgsMixin(k.util.mapToFlags({ - 'log.level': 'debug', - namespace: namespace, - 'mutation-frequency': this._config.mutationFrequency, - 'chaos-frequency': this._config.chaosFrequency, - 'pod-prefix': this._config.podPrefix, - 'fake-remote-write': true, - })), - - agentsmoke_deployment: - deployment.new(name, 1, [self.container]) + - deployment.mixin.metadata.withNamespace(namespace) + - deployment.mixin.spec.template.spec.withServiceAccount(name) + - deployment.spec.template.spec.withImagePullSecrets({ name: this._config.pull_secret }), - - service: - util.serviceFor(self.agentsmoke_deployment) + - service.mixin.metadata.withNamespace(namespace), - }, - - monitoring: (import './prometheus_monitoring.libsonnet'), -} diff --git a/production/tanka/grafana-agent/v1/main.libsonnet b/production/tanka/grafana-agent/v1/main.libsonnet index 825663ba355d..088e09ba87ca 100644 --- a/production/tanka/grafana-agent/v1/main.libsonnet +++ b/production/tanka/grafana-agent/v1/main.libsonnet @@ -15,8 +15,8 @@ local service = k.core.v1.service; (import './lib/traces.libsonnet') + { _images:: { - agent: 'grafana/agent:v0.23.0', - agentctl: 'grafana/agentctl:v0.23.0', + agent: 'grafana/agent:v0.22.0', + agentctl: 'grafana/agentctl:v0.22.0', }, // new creates a new DaemonSet deployment of the grafana-agent. By default, diff --git a/production/tanka/grafana-agent/v2/internal/base.libsonnet b/production/tanka/grafana-agent/v2/internal/base.libsonnet index 90afd08ef537..48845de718a0 100644 --- a/production/tanka/grafana-agent/v2/internal/base.libsonnet +++ b/production/tanka/grafana-agent/v2/internal/base.libsonnet @@ -10,8 +10,8 @@ function(name='grafana-agent', namespace='') { local this = self, _images:: { - agent: 'grafana/agent:v0.23.0', - agentctl: 'grafana/agentctl:v0.23.0', + agent: 'grafana/agent:v0.22.0', + agentctl: 'grafana/agentctl:v0.22.0', }, _config:: { name: name, diff --git a/production/tanka/grafana-agent/v2/internal/syncer.libsonnet b/production/tanka/grafana-agent/v2/internal/syncer.libsonnet index 044222c2ad98..15c4fc8bf4b8 100644 --- a/production/tanka/grafana-agent/v2/internal/syncer.libsonnet +++ b/production/tanka/grafana-agent/v2/internal/syncer.libsonnet @@ -14,7 +14,7 @@ function( ) { local _config = { api: error 'api must be set', - image: 'grafana/agentctl:v0.23.0', + image: 'grafana/agentctl:v0.22.0', schedule: '*/5 * * * *', configs: [], } + config, diff --git a/production/tanka/grafana-agent/v2/main.libsonnet b/production/tanka/grafana-agent/v2/main.libsonnet index b659d9d31250..6b775326ac6d 100644 --- a/production/tanka/grafana-agent/v2/main.libsonnet +++ b/production/tanka/grafana-agent/v2/main.libsonnet @@ -1,6 +1,5 @@ local k = import 'ksonnet-util/kausal.libsonnet'; local container = k.core.v1.container; -local podTemplateSpec = k.core.v1.podTemplateSpec.spec; { new(name='grafana-agent', namespace=''):: @@ -25,11 +24,7 @@ local podTemplateSpec = k.core.v1.podTemplateSpec.spec; withPortsMixin(ports=[]):: { container+:: container.withPortsMixin(ports) }, withVolumeMountsMixin(mounts=[]):: { container+:: container.withVolumeMountsMixin(mounts) }, withVolumesMixin(volumes=[]):: { - controller+: { - spec+: { - template+: podTemplateSpec.withVolumesMixin(volumes) - }, - }, + controller+: self.controller.mixin.spec.template.spec.withVolumesMixin(volumes), }, // Helpers diff --git a/tools/crow/.gitignore b/tools/crow/.gitignore deleted file mode 100644 index 4abc650571dc..000000000000 --- a/tools/crow/.gitignore +++ /dev/null @@ -1 +0,0 @@ -grafana-agent-crow diff --git a/tools/smoke/.gitignore b/tools/smoke/.gitignore deleted file mode 100644 index a85290032261..000000000000 --- a/tools/smoke/.gitignore +++ /dev/null @@ -1 +0,0 @@ -grafana-agent-smoke diff --git a/tools/smoke/Dockerfile b/tools/smoke/Dockerfile deleted file mode 100644 index 82facd92bce7..000000000000 --- a/tools/smoke/Dockerfile +++ /dev/null @@ -1,23 +0,0 @@ -FROM golang:1.17.6-buster as build -COPY . /src/agent -WORKDIR /src/agent -ARG RELEASE_BUILD=true -ARG IMAGE_TAG - -# Backports repo required to get a libsystemd version 246 or newer which is required to handle journal +ZSTD compression -RUN echo "deb http://deb.debian.org/debian buster-backports main" >> /etc/apt/sources.list -RUN apt-get update && apt-get install -t buster-backports -qy libsystemd-dev - -RUN make clean && make IMAGE_TAG=${IMAGE_TAG} RELEASE_BUILD=${RELEASE_BUILD} BUILD_IN_CONTAINER=false agent-smoke - -FROM debian:buster-slim - -# Backports repo required to get a libsystemd version 246 or newer which is required to handle journal +ZSTD compression -RUN echo "deb http://deb.debian.org/debian buster-backports main" >> /etc/apt/sources.list -RUN apt-get update && apt-get install -t buster-backports -qy libsystemd-dev && \ - apt-get install -qy tzdata ca-certificates && \ - rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* - -COPY --from=build /src/agent/tools/smoke/grafana-agent-smoke /bin/grafana-agent-smoke - -ENTRYPOINT ["/bin/grafana-agent-smoke"] diff --git a/tools/smoke/Dockerfile.buildx b/tools/smoke/Dockerfile.buildx deleted file mode 100644 index 702a7d926d1f..000000000000 --- a/tools/smoke/Dockerfile.buildx +++ /dev/null @@ -1,32 +0,0 @@ -FROM --platform=$BUILDPLATFORM rfratto/seego:latest as build -ARG TARGETPLATFORM -ARG BUILDPLATFORM - -# Use custom Go version instead of one prepacked in seego -ENV GOLANG_VERSION 1.17.6 -ENV GOLANG_DOWNLOAD_URL https://golang.org/dl/go$GOLANG_VERSION.linux-amd64.tar.gz -ENV GOLANG_DOWNLOAD_SHA256 231654bbf2dab3d86c1619ce799e77b03d96f9b50770297c8f4dff8836fc8ca2 -RUN rm -rf /usr/local/go \ - && curl -fsSL "$GOLANG_DOWNLOAD_URL" -o golang.tar.gz \ - && echo "$GOLANG_DOWNLOAD_SHA256 golang.tar.gz" | sha256sum -c - \ - && tar -C /usr/local -xzf golang.tar.gz \ - && rm golang.tar.gz - -COPY . /src/agent -WORKDIR /src/agent -ARG RELEASE_BUILD=true -ARG IMAGE_TAG - -RUN make clean && IMAGE_TAG=${IMAGE_TAG} RELEASE_BUILD=${RELEASE_BUILD} BUILD_IN_CONTAINER=false DRONE=true make agent-smoke - -FROM debian:buster-slim - -# Backports repo required to get a libsystemd version 246 or newer which is required to handle journal +ZSTD compression -RUN echo "deb http://deb.debian.org/debian buster-backports main" >> /etc/apt/sources.list -RUN apt-get update && apt-get install -t buster-backports -qy libsystemd-dev && \ - apt-get install -qy tzdata ca-certificates libsystemd-dev && \ - rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* - -COPY --from=build /src/agent/tools/smoke/grafana-agent-smoke /bin/grafana-agent-smoke - -ENTRYPOINT ["/bin/grafana-agent-smoke"] diff --git a/tools/smoke/internal/smoke.go b/tools/smoke/internal/smoke.go deleted file mode 100644 index 7914cf3ae2e1..000000000000 --- a/tools/smoke/internal/smoke.go +++ /dev/null @@ -1,151 +0,0 @@ -package smoke - -import ( - "context" - "flag" - "fmt" - "net/http" - "time" - - "github.com/go-kit/log" - "github.com/go-kit/log/level" - "github.com/oklog/run" - "k8s.io/client-go/kubernetes" - "k8s.io/client-go/tools/clientcmd" -) - -// Smoke is the top level object for a smoke test. -type Smoke struct { - cfg *Config - logger log.Logger - tasks []repeatingTask -} - -// Config struct to pass configuration to the Smoke constructor. -type Config struct { - Kubeconfig string - Namespace string - PodPrefix string - FakeRemoteWrite bool - ChaosFrequency time.Duration - MutationFrequency time.Duration -} - -// RegisterFlags registers flags for the config to the given FlagSet. -func (c *Config) RegisterFlags(f *flag.FlagSet) { - f.StringVar(&c.Namespace, "namespace", DefaultConfig.Namespace, "namespace smoke test should run in") - f.StringVar(&c.Kubeconfig, "kubeconfig", DefaultConfig.Kubeconfig, "absolute path to the kubeconfig file") - f.StringVar(&c.PodPrefix, "pod-prefix", DefaultConfig.PodPrefix, "prefix for grafana agent pods") - f.BoolVar(&c.FakeRemoteWrite, "fake-remote-write", DefaultConfig.FakeRemoteWrite, "remote write endpoint for series which are discarded, useful for testing and not storing metrics") - f.DurationVar(&c.ChaosFrequency, "chaos-frequency", DefaultConfig.ChaosFrequency, "chaos frequency duration") - f.DurationVar(&c.MutationFrequency, "mutation-frequency", DefaultConfig.MutationFrequency, "mutation frequency duration") -} - -// DefaultConfig holds defaults for Smoke settings. -var DefaultConfig = Config{ - Kubeconfig: "", - Namespace: "default", - PodPrefix: "grafana-agent", - FakeRemoteWrite: false, - ChaosFrequency: 30 * time.Minute, - MutationFrequency: 5 * time.Minute, -} - -// New is the constructor for a Smoke object. -func New(logger log.Logger, cfg Config) (*Smoke, error) { - s := &Smoke{ - cfg: &cfg, - logger: logger, - } - if s.logger == nil { - s.logger = log.NewNopLogger() - } - - // use the current context in kubeconfig. this falls back to in-cluster config if kubeconfig is empty - config, err := clientcmd.BuildConfigFromFlags("", cfg.Kubeconfig) - if err != nil { - return nil, err - } - // creates the clientset - clientset, err := kubernetes.NewForConfig(config) - if err != nil { - return nil, err - } - - // add default tasks - s.tasks = append(s.tasks, - repeatingTask{ - Task: &deletePodTask{ - logger: log.With(s.logger, "task", "delete_pod", "pod", "grafana-agent-0"), - clientset: clientset, - namespace: cfg.Namespace, - pod: fmt.Sprintf("%s-0", cfg.PodPrefix), - }, - frequency: cfg.ChaosFrequency, - }, - repeatingTask{ - Task: &deletePodBySelectorTask{ - logger: log.With(s.logger, "task", "delete_pod_by_selector"), - clientset: clientset, - namespace: cfg.Namespace, - selector: fmt.Sprintf("name=%s-cluster", cfg.PodPrefix), - }, - frequency: cfg.ChaosFrequency, - }, - repeatingTask{ - Task: &scaleDeploymentTask{ - logger: log.With(s.logger, "task", "scale_deployment", "deployment", "avalanche"), - clientset: clientset, - namespace: cfg.Namespace, - deployment: "avalanche", - maxReplicas: 11, - minReplicas: 2, - }, - frequency: cfg.MutationFrequency, - }) - - return s, nil -} - -func (s *Smoke) ServeHTTP(rw http.ResponseWriter, _ *http.Request) { - rw.WriteHeader(http.StatusOK) -} - -// Run starts the smoke test and runs the tasks concurrently. -func (s *Smoke) Run(ctx context.Context) error { - var g run.Group - ctx, cancel := context.WithCancel(ctx) - defer cancel() - taskFn := func(t repeatingTask) func() error { - return func() error { - tick := time.NewTicker(t.frequency) - defer tick.Stop() - for { - select { - case <-tick.C: - if err := t.Run(ctx); err != nil { - return err - } - case <-ctx.Done(): - return nil - } - } - } - } - for _, task := range s.tasks { - g.Add(taskFn(task), func(err error) { - cancel() - }) - } - - if s.cfg.FakeRemoteWrite { - level.Info(s.logger).Log("msg", "serving fake remote-write endpoint on :19090") - g.Add(func() error { - return http.ListenAndServe(":19090", s) - }, func(err error) { - cancel() - }) - } - - return g.Run() -} diff --git a/tools/smoke/internal/tasks.go b/tools/smoke/internal/tasks.go deleted file mode 100644 index 3b887d577f77..000000000000 --- a/tools/smoke/internal/tasks.go +++ /dev/null @@ -1,101 +0,0 @@ -package smoke - -import ( - "context" - "math/rand" - "time" - - "github.com/go-kit/log" - "github.com/go-kit/log/level" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/client-go/kubernetes" - "k8s.io/utils/pointer" -) - -// The Task interface represents some unit of work performed concurrently. -type Task interface { - Run(context.Context) error -} - -type repeatingTask struct { - Task - frequency time.Duration -} - -type deletePodTask struct { - logger log.Logger - clientset kubernetes.Interface - namespace string - pod string -} - -func (t *deletePodTask) Run(ctx context.Context) error { - level.Debug(t.logger).Log("msg", "deleting pod") - if err := t.clientset.CoreV1().Pods(t.namespace).Delete(ctx, t.pod, metav1.DeleteOptions{ - GracePeriodSeconds: pointer.Int64(0), - }); err != nil { - level.Error(t.logger).Log("msg", "failed to delete pod", "err", err) - } - return nil -} - -type scaleDeploymentTask struct { - logger log.Logger - clientset kubernetes.Interface - namespace string - deployment string - maxReplicas int - minReplicas int -} - -func (t *scaleDeploymentTask) Run(ctx context.Context) error { - newReplicas := rand.Intn(t.maxReplicas-t.minReplicas) + t.minReplicas - level.Debug(t.logger).Log("msg", "scaling replicas", "replicas", newReplicas) - - scale, err := t.clientset.AppsV1().Deployments(t.namespace). - GetScale(ctx, t.deployment, metav1.GetOptions{}) - if err != nil { - level.Error(t.logger).Log("msg", "failed to get autoscalingv1.Scale object", "err", err) - return nil - } - - sc := *scale - sc.Spec.Replicas = int32(newReplicas) - _, err = t.clientset.AppsV1().Deployments(t.namespace). - UpdateScale(ctx, t.deployment, &sc, metav1.UpdateOptions{}) - if err != nil { - level.Error(t.logger).Log("msg", "failed to scale deployment", "err", err) - } - return nil -} - -type deletePodBySelectorTask struct { - logger log.Logger - clientset kubernetes.Interface - namespace string - selector string -} - -func (t *deletePodBySelectorTask) Run(ctx context.Context) error { - list, err := t.clientset.CoreV1().Pods(t.namespace).List(ctx, metav1.ListOptions{ - LabelSelector: t.selector, - }) - if err != nil { - level.Error(t.logger).Log("msg", "failed to list pods", "err", err) - return nil - } - - l := len(list.Items) - if l > 0 { - i := rand.Intn(l) - pod := list.Items[i].Name - level.Debug(t.logger).Log("msg", "deleting pod", "pod", pod) - if err := t.clientset.CoreV1().Pods(t.namespace).Delete(ctx, pod, metav1.DeleteOptions{ - GracePeriodSeconds: pointer.Int64(0), - }); err != nil { - level.Error(t.logger).Log("msg", "failed to delete pod", "pod", pod, "err", err) - } - } - - return nil -} diff --git a/tools/smoke/internal/tasks_test.go b/tools/smoke/internal/tasks_test.go deleted file mode 100644 index 76fb1cbd2789..000000000000 --- a/tools/smoke/internal/tasks_test.go +++ /dev/null @@ -1,144 +0,0 @@ -package smoke - -import ( - "context" - "testing" - - "github.com/go-kit/log" - "k8s.io/client-go/kubernetes" - "k8s.io/client-go/kubernetes/fake" -) - -// Note: these tests are mostly worthless at this point -// but would allow easy debugging of tasks as they become more -// complex. Using https://pkg.go.dev/k8s.io/client-go/testing#ObjectTracker -// to mock responses from the fake client is also possible. - -func Test_deletePodBySelectorTask_Run(t1 *testing.T) { - type fields struct { - logger log.Logger - clientset kubernetes.Interface - namespace string - selector string - } - type args struct { - ctx context.Context - } - tests := []struct { - name string - fields fields - args args - wantErr bool - }{ - { - name: "deletePodBySelectorTask", - fields: fields{ - logger: log.NewNopLogger(), - clientset: fake.NewSimpleClientset(), - namespace: "foo", - selector: "foo=bar", - }, - }, - } - for _, tt := range tests { - t1.Run(tt.name, func(t1 *testing.T) { - t := &deletePodBySelectorTask{ - logger: tt.fields.logger, - clientset: tt.fields.clientset, - namespace: tt.fields.namespace, - selector: tt.fields.selector, - } - if err := t.Run(tt.args.ctx); (err != nil) != tt.wantErr { - t1.Errorf("Run() error = %v, wantErr %v", err, tt.wantErr) - } - }) - } -} - -func Test_deletePodTask_Run(t1 *testing.T) { - type fields struct { - logger log.Logger - clientset kubernetes.Interface - namespace string - pod string - } - type args struct { - ctx context.Context - } - tests := []struct { - name string - fields fields - args args - wantErr bool - }{ - { - name: "deletePodTask", - fields: fields{ - logger: log.NewNopLogger(), - clientset: fake.NewSimpleClientset(), - namespace: "foo", - pod: "bar", - }, - }, - } - for _, tt := range tests { - t1.Run(tt.name, func(t1 *testing.T) { - t := &deletePodTask{ - logger: tt.fields.logger, - clientset: tt.fields.clientset, - namespace: tt.fields.namespace, - pod: tt.fields.pod, - } - if err := t.Run(tt.args.ctx); (err != nil) != tt.wantErr { - t1.Errorf("Run() error = %v, wantErr %v", err, tt.wantErr) - } - }) - } -} - -func Test_scaleDeploymentTask_Run(t1 *testing.T) { - type fields struct { - logger log.Logger - clientset kubernetes.Interface - namespace string - deployment string - maxReplicas int - minReplicas int - } - type args struct { - ctx context.Context - } - tests := []struct { - name string - fields fields - args args - wantErr bool - }{ - { - name: "scaleDeploymentTask", - fields: fields{ - logger: log.NewNopLogger(), - clientset: fake.NewSimpleClientset(), - namespace: "foo", - deployment: "bar", - maxReplicas: 11, - minReplicas: 2, - }, - }, - } - for _, tt := range tests { - t1.Run(tt.name, func(t1 *testing.T) { - t := &scaleDeploymentTask{ - logger: tt.fields.logger, - clientset: tt.fields.clientset, - namespace: tt.fields.namespace, - deployment: tt.fields.deployment, - maxReplicas: tt.fields.maxReplicas, - minReplicas: tt.fields.minReplicas, - } - if err := t.Run(tt.args.ctx); (err != nil) != tt.wantErr { - t1.Errorf("Run() error = %v, wantErr %v", err, tt.wantErr) - } - }) - } -} diff --git a/tools/smoke/main.go b/tools/smoke/main.go deleted file mode 100644 index 568979501b89..000000000000 --- a/tools/smoke/main.go +++ /dev/null @@ -1,49 +0,0 @@ -package main - -import ( - "context" - "flag" - "os" - "time" - - "github.com/go-kit/log/level" - "github.com/grafana/agent/pkg/util" - smoke "github.com/grafana/agent/tools/smoke/internal" - "github.com/weaveworks/common/logging" -) - -func main() { - var ( - cfg smoke.Config - logLevel logging.Level - logFormat logging.Format - withTimeout time.Duration - ) - - cfg.RegisterFlags(flag.CommandLine) - logLevel.RegisterFlags(flag.CommandLine) - logFormat.RegisterFlags(flag.CommandLine) - flag.DurationVar(&withTimeout, "duration", time.Duration(0), "test duration") - flag.Parse() - - logger := util.NewLoggerFromLevel(logLevel, logFormat) - - ctx := context.Background() - if withTimeout > 0 { - var cancel context.CancelFunc - ctx, cancel = context.WithTimeout(ctx, withTimeout) - defer cancel() - level.Debug(logger).Log("msg", "running with duration", "duration", withTimeout.String()) - } - - level.Info(logger).Log("msg", "starting smoke test") - smokeTest, err := smoke.New(logger, cfg) - if err != nil { - level.Error(logger).Log("msg", "error constructing smoke test", "err", err) - os.Exit(1) - } - if err := smokeTest.Run(ctx); err != nil { - level.Error(logger).Log("msg", "smoke test run failure", "err", err) - os.Exit(1) - } -} From 1153a02c9f2efd2f8e9143fbaaf6ea08ec09bb00 Mon Sep 17 00:00:00 2001 From: Matt Durham Date: Fri, 25 Feb 2022 12:22:43 -0500 Subject: [PATCH 11/19] main merge --- .drone/drone.yml | 25 +- .github/dependabot.yml | 11 + .github/workflows/markdown.links.config.json | 3 + .github/workflows/publish.yml | 4 +- .github/workflows/stale.yml | 38 ++ .gitignore | 1 + .golangci.yml | 131 +++--- CHANGELOG.md | 36 +- MAINTAINERS.md | 13 +- Makefile | 22 +- README.md | 2 +- SECURITY.md | 20 + cmd/agent/entrypoint.go | 8 +- cmd/grafana-agent-crow/Dockerfile | 4 +- cmd/grafana-agent-crow/Dockerfile.buildx | 5 +- docs/rfcs/0000-template.md | 6 + docs/rfcs/0001-designing-in-the-open.md | 160 +++++++ docs/rfcs/0002-integrations-in-operator.md | 300 +++++++++++++ docs/user/README.md | 21 + docs/{ => user}/_index.md | 0 docs/{ => user}/api/_index.md | 0 docs/{ => user}/assets/logo_and_name.png | Bin docs/{ => user}/configuration/_index.md | 5 - .../configuration/integrations/_index.md | 0 .../integrations/cadvisor-config.md | 0 .../integrations/consul-exporter-config.md | 0 .../integrations/dnsmasq-exporter-config.md | 0 .../elasticsearch-exporter-config.md | 0 .../integrations/github-exporter-config.md | 0 .../integrations/integrations-next/_index.md | 8 + .../integrations-next/eventhandler-config.md | 301 +++++++++++++ .../integrations/kafka-exporter-config.md | 0 .../integrations/memcached-exporter-config.md | 0 .../integrations/mongodb_exporter-config.md | 0 .../integrations/mysqld-exporter-config.md | 0 .../integrations/node-exporter-config.md | 6 +- .../integrations/postgres-exporter-config.md | 0 .../integrations/process-exporter-config.md | 4 +- .../integrations/redis-exporter-config.md | 0 .../integrations/statsd-exporter-config.md | 0 .../integrations/windows-exporter-config.md | 0 docs/{ => user}/configuration/logs-config.md | 0 .../configuration/metrics-config.md | 0 .../{ => user}/configuration/server-config.md | 0 .../{ => user}/configuration/traces-config.md | 25 ++ docs/{ => user}/getting-started/_index.md | 2 +- .../getting-started/create-config-file.md | 4 +- .../install-agent-on-windows.md | 8 +- docs/{ => user}/operation-guide/_index.md | 0 docs/{ => user}/operator/_index.md | 0 .../operator/add-custom-scrape-jobs.md | 0 docs/{ => user}/operator/architecture.md | 0 .../operator/custom-resource-quickstart.md | 4 +- docs/{ => user}/operator/getting-started.md | 4 +- .../operator/helm-getting-started.md | 0 docs/{ => user}/scraping-service/_index.md | 0 docs/{ => user}/upgrade-guide/_index.md | 0 example/k3d/README.md | 11 +- example/k3d/environment/main.jsonnet | 2 +- example/k3d/jsonnetfile.lock.json | 4 +- example/k3d/lib/crow/main.libsonnet | 6 +- example/k3d/scripts/smoke-test.bash | 49 +- example/k3d/smoke/main.jsonnet | 61 ++- example/k3d/smoke/monitoring/main.jsonnet | 1 + go.mod | 7 +- pkg/config/config.go | 2 +- pkg/crow/crow.go | 26 +- pkg/integrations/cadvisor/common.go | 2 +- .../dnsmasq_exporter/dnsmasq_exporter.go | 2 +- .../github_exporter/github_exporter.go | 3 +- pkg/integrations/install/install.go | 1 + pkg/integrations/manager_test.go | 12 +- .../memcached_exporter/memcached_exporter.go | 2 +- .../mongodb_exporter/mongodb_exporter.go | 1 - .../postgres_exporter/postgres_test.go | 1 - .../redis_exporter/redis_exporter.go | 4 +- .../redis_exporter/redis_exporter_test.go | 2 - pkg/integrations/v2/autoscrape/autoscrape.go | 4 +- .../v2/autoscrape/autoscrape_test.go | 14 +- pkg/integrations/v2/common/metrics.go | 2 + .../v2/controller_metricsintegration_test.go | 39 +- pkg/integrations/v2/controller_test.go | 53 +-- .../v2/eventhandler/eventhandler.go | 424 ++++++++++++++++++ .../v2/eventhandler/eventhandler_test.go | 24 + .../v2/eventhandler/integration.go | 69 +++ .../eventhandler/testdata/eventhandler.cache | 1 + .../metricshandler_integration.go | 5 + .../metricshandler_integration_test.go | 82 ++++ pkg/integrations/v2/subsystem_test.go | 1 - pkg/integrations/v2/workers.go | 122 +++++ .../windows_exporter_windows.go | 2 +- pkg/metrics/agent.go | 22 + pkg/metrics/agent_test.go | 4 + pkg/metrics/cluster/cluster.go | 5 +- pkg/metrics/cluster/config_watcher_test.go | 1 - pkg/metrics/http_test.go | 20 +- pkg/metrics/instance/configstore/api_test.go | 1 + pkg/metrics/instance/configstore/remote.go | 4 +- pkg/metrics/instance/host_filter.go | 1 - pkg/metrics/instance/instance.go | 16 +- .../instance/instance_integration_test.go | 1 - pkg/metrics/instance/instance_test.go | 1 - pkg/metrics/instance/manager.go | 1 + pkg/metrics/instance/manager_test.go | 8 + pkg/metrics/instance/marshal.go | 2 + pkg/metrics/instance/marshal_test.go | 10 +- pkg/metrics/instance/noop.go | 5 + pkg/metrics/wal/series.go | 47 +- pkg/metrics/wal/wal.go | 46 +- pkg/metrics/wal/wal_test.go | 62 +++ .../apis/monitoring/v1alpha1/types.go | 5 + pkg/operator/build_hierarchy.go | 2 +- pkg/operator/build_hierarchy_test.go | 27 +- pkg/operator/clientutil/merge.go | 9 +- pkg/operator/config/config_test.go | 8 +- pkg/operator/config/fs_importer.go | 1 - pkg/operator/config/metrics_templates_test.go | 4 +- .../component/metrics/remote_write.libsonnet | 4 +- pkg/operator/defaults.go | 1 + pkg/operator/hierarchy/selector.go | 2 - pkg/operator/reconciler_logs.go | 2 + pkg/operator/reconciler_metrics.go | 2 + pkg/operator/resources_logs.go | 1 + pkg/operator/resources_metrics.go | 6 + .../automaticloggingprocessor/factory.go | 2 +- pkg/traces/config.go | 125 +++++- pkg/traces/config_test.go | 243 +++++++++- pkg/traces/instance.go | 54 ++- pkg/traces/internal/traceutils/server.go | 2 + pkg/traces/noopreceiver/factory.go | 1 + pkg/traces/promsdprocessor/factory.go | 2 +- pkg/traces/remotewriteexporter/exporter.go | 2 +- .../remotewriteexporter/exporter_test.go | 10 +- pkg/traces/remotewriteexporter/factory.go | 2 +- pkg/traces/servicegraphprocessor/factory.go | 2 +- pkg/traces/servicegraphprocessor/processor.go | 1 - .../servicegraphprocessor/processor_test.go | 1 - pkg/traces/traces.go | 20 +- pkg/traces/traces_test.go | 4 +- pkg/util/logger.go | 17 +- pkg/util/strings.go | 15 + pkg/util/trigger_test.go | 1 - production/README.md | 4 +- .../grafana-agent-mixin/alerts.libsonnet | 115 +++++ production/grafanacloud-install.sh | 2 +- production/kubernetes/agent-bare.yaml | 2 +- production/kubernetes/agent-loki.yaml | 8 +- production/kubernetes/agent-traces.yaml | 2 +- .../kubernetes/build/lib/version.libsonnet | 2 +- .../build/templates/loki/main.jsonnet | 2 +- production/kubernetes/install-bare.sh | 2 +- .../monitoring.grafana.com_grafanaagents.yaml | 5 + .../grafana-agent/smoke}/etcd/main.libsonnet | 0 .../tanka/grafana-agent/v1/main.libsonnet | 4 +- .../grafana-agent/v2/internal/base.libsonnet | 4 +- .../v2/internal/syncer.libsonnet | 2 +- .../tanka/grafana-agent/v2/main.libsonnet | 7 +- tools/crow/.gitignore | 1 + tools/smoke/.gitignore | 1 + tools/smoke/Dockerfile | 23 + tools/smoke/Dockerfile.buildx | 32 ++ tools/smoke/internal/smoke.go | 151 +++++++ tools/smoke/internal/tasks.go | 101 +++++ tools/smoke/internal/tasks_test.go | 144 ++++++ tools/smoke/main.go | 49 ++ 165 files changed, 3340 insertions(+), 380 deletions(-) create mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/stale.yml create mode 100644 SECURITY.md create mode 100644 docs/rfcs/0000-template.md create mode 100644 docs/rfcs/0001-designing-in-the-open.md create mode 100644 docs/rfcs/0002-integrations-in-operator.md create mode 100644 docs/user/README.md rename docs/{ => user}/_index.md (100%) rename docs/{ => user}/api/_index.md (100%) rename docs/{ => user}/assets/logo_and_name.png (100%) rename docs/{ => user}/configuration/_index.md (94%) rename docs/{ => user}/configuration/integrations/_index.md (100%) rename docs/{ => user}/configuration/integrations/cadvisor-config.md (100%) rename docs/{ => user}/configuration/integrations/consul-exporter-config.md (100%) rename docs/{ => user}/configuration/integrations/dnsmasq-exporter-config.md (100%) rename docs/{ => user}/configuration/integrations/elasticsearch-exporter-config.md (100%) rename docs/{ => user}/configuration/integrations/github-exporter-config.md (100%) rename docs/{ => user}/configuration/integrations/integrations-next/_index.md (94%) create mode 100644 docs/user/configuration/integrations/integrations-next/eventhandler-config.md rename docs/{ => user}/configuration/integrations/kafka-exporter-config.md (100%) rename docs/{ => user}/configuration/integrations/memcached-exporter-config.md (100%) rename docs/{ => user}/configuration/integrations/mongodb_exporter-config.md (100%) rename docs/{ => user}/configuration/integrations/mysqld-exporter-config.md (100%) rename docs/{ => user}/configuration/integrations/node-exporter-config.md (99%) rename docs/{ => user}/configuration/integrations/postgres-exporter-config.md (100%) rename docs/{ => user}/configuration/integrations/process-exporter-config.md (98%) rename docs/{ => user}/configuration/integrations/redis-exporter-config.md (100%) rename docs/{ => user}/configuration/integrations/statsd-exporter-config.md (100%) rename docs/{ => user}/configuration/integrations/windows-exporter-config.md (100%) rename docs/{ => user}/configuration/logs-config.md (100%) rename docs/{ => user}/configuration/metrics-config.md (100%) rename docs/{ => user}/configuration/server-config.md (100%) rename docs/{ => user}/configuration/traces-config.md (91%) rename docs/{ => user}/getting-started/_index.md (99%) rename docs/{ => user}/getting-started/create-config-file.md (97%) rename docs/{ => user}/getting-started/install-agent-on-windows.md (86%) rename docs/{ => user}/operation-guide/_index.md (100%) rename docs/{ => user}/operator/_index.md (100%) rename docs/{ => user}/operator/add-custom-scrape-jobs.md (100%) rename docs/{ => user}/operator/architecture.md (100%) rename docs/{ => user}/operator/custom-resource-quickstart.md (96%) rename docs/{ => user}/operator/getting-started.md (97%) rename docs/{ => user}/operator/helm-getting-started.md (100%) rename docs/{ => user}/scraping-service/_index.md (100%) rename docs/{ => user}/upgrade-guide/_index.md (100%) create mode 100644 pkg/integrations/v2/eventhandler/eventhandler.go create mode 100644 pkg/integrations/v2/eventhandler/eventhandler_test.go create mode 100644 pkg/integrations/v2/eventhandler/integration.go create mode 100644 pkg/integrations/v2/eventhandler/testdata/eventhandler.cache create mode 100644 pkg/integrations/v2/metricsutils/metricshandler_integration_test.go create mode 100644 pkg/integrations/v2/workers.go create mode 100644 pkg/util/strings.go rename {example/k3d/lib => production/tanka/grafana-agent/smoke}/etcd/main.libsonnet (100%) create mode 100644 tools/crow/.gitignore create mode 100644 tools/smoke/.gitignore create mode 100644 tools/smoke/Dockerfile create mode 100644 tools/smoke/Dockerfile.buildx create mode 100644 tools/smoke/internal/smoke.go create mode 100644 tools/smoke/internal/tasks.go create mode 100644 tools/smoke/internal/tasks_test.go create mode 100644 tools/smoke/main.go diff --git a/.drone/drone.yml b/.drone/drone.yml index f9c7a9f5d9c5..5f294b0e0eb3 100644 --- a/.drone/drone.yml +++ b/.drone/drone.yml @@ -16,7 +16,7 @@ trigger: steps: - name: lint - image: golangci/golangci-lint:v1.43 + image: golangci/golangci-lint:v1.44 commands: - apt-get update -y && apt-get install -y libsystemd-dev - make lint @@ -53,7 +53,7 @@ steps: - tar -C /usr/local -xzf go1.17.6.linux-amd64.tar.gz - rm go1.17.6.linux-amd64.tar.gz - export PATH=$PATH:/usr/local/go/bin - - make cmd/agent/agent cmd/agentctl/agentctl cmd/agent-operator/agent-operator cmd/grafana-agent-crow/grafana-agent-crow + - make cmd/agent/agent cmd/agentctl/agentctl cmd/agent-operator/agent-operator tools/crow/grafana-agent-crow tools/smoke/grafana-agent-smoke - make K8S_USE_DOCKER_NETWORK=1 DRONE=true BUILD_IN_CONTAINER=false test depends_on: - Lint @@ -113,7 +113,11 @@ steps: from_secret: DOCKER_LOGIN DOCKER_PASSWORD: from_secret: DOCKER_PASSWORD + GCR_CREDS: + from_secret: gcr_admin commands: + - mkdir -p $HOME/.docker + - printenv GCR_CREDS > $HOME/.docker/config.json - docker login -u $DOCKER_LOGIN -p $DOCKER_PASSWORD - apk update && apk add make bash wget git qemu - wget -q https://github.com/docker/buildx/releases/download/v0.5.1/buildx-v0.5.1.linux-amd64 @@ -128,6 +132,7 @@ steps: - make DRONE=true CROSS_BUILD=true BUILD_IN_CONTAINER=true RELEASE_BUILD=true agentctl-image - make DRONE=true CROSS_BUILD=true BUILD_IN_CONTAINER=true RELEASE_BUILD=true agent-operator-image - make DRONE=true CROSS_BUILD=true BUILD_IN_CONTAINER=true RELEASE_BUILD=true grafana-agent-crow-image + - make DRONE=true CROSS_BUILD=true BUILD_IN_CONTAINER=true RELEASE_BUILD=true agent-smoke-image - docker buildx rm multiarch depends_on: @@ -156,6 +161,7 @@ steps: image: alpine commands: - apk update && apk add git + - echo "$(sh ./tools/image-tag)" > .tag-only - echo "grafana/agent:$(sh ./tools/image-tag)" > .image-tag - name: Update Deployment Tools image: us.gcr.io/kubernetes-dev/drone/plugins/updater @@ -174,6 +180,11 @@ steps: "file_path": "ksonnet/environments/platform-observability/waves/agent.libsonnet", "jsonnet_key": "dev_canary", "jsonnet_value_file": ".image-tag" + }, + { + "file_path": "ksonnet/environments/agent-smoke-test/dev-us-central-0.agent-smoke-test/main.jsonnet", + "jsonnet_key": "image_tag", + "jsonnet_value_file": ".tag-only" } ] } @@ -243,6 +254,14 @@ get: path: secret/data/common/gcr name: .dockerconfigjson +--- +kind: secret +name: gcr_admin + +get: + name: .dockerconfigjson + path: infra/data/ci/gcr-admin + --- kind: secret name: gh_token @@ -252,6 +271,6 @@ get: name: pat --- kind: signature -hmac: 87a9a23731884dac8e0b5c3ee0fa2b5cef9d7fa490fcad649f7783f6ea9d2d32 +hmac: 76ba44a90ab332caf4cd3bc11529e7ea674d4706ab8b4928b17b8c7dcda8abea ... diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 000000000000..98a246f1c51a --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,11 @@ +version: 2 +updates: + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "weekly" + - package-ecosystem: "gomod" + directory: "/" + schedule: + interval: "daily" + open-pull-requests-limit: 2 diff --git a/.github/workflows/markdown.links.config.json b/.github/workflows/markdown.links.config.json index 1c42ecb1d4bf..28863d7bdd71 100644 --- a/.github/workflows/markdown.links.config.json +++ b/.github/workflows/markdown.links.config.json @@ -1,5 +1,8 @@ { "ignorePatterns": [ + { + "pattern": "^https://github.com/grafana/agent/pull/XXXX$" + }, { "pattern": "^http://prometheus.k3d.localhost:30080" }, diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index dc164698cd2a..ac94e4297517 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -5,7 +5,7 @@ on: branches: - main paths: - - 'docs/**' + - 'docs/user/**' jobs: sync: @@ -21,7 +21,7 @@ jobs: branch: master host: github.com github_pat: '${{ secrets.GH_BOT_ACCESS_TOKEN }}' - source_folder: docs + source_folder: docs/user target_folder: content/docs/agent/latest - shell: bash run: | diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml new file mode 100644 index 000000000000..a1820c9c004b --- /dev/null +++ b/.github/workflows/stale.yml @@ -0,0 +1,38 @@ +name: Stale check +on: + workflow_dispatch: {} + schedule: + - cron: '0 0 * * *' +permissions: + issues: write + pull-requests: write +jobs: + stale: + runs-on: ubuntu-latest + steps: + - uses: actions/stale@v4 + with: + days-before-stale: 30 + days-before-close: 7 + stale-issue-message: > + This issue has been automatically marked as stale because it has + not had any activity in the past 30 days. + + The next time this stale check runs, the stale label will be + removed if there is new activity. The issue will be closed in 7 + days if there is no new activity. + + Thank you for your contributions! + stale-pr-message: > + This PR has been automatically marked as stale because it has not + had any activity in the past 30 days. + + The next time this stale check runs, the stale label will be + removed if there is new activity. The issue will be closed in 7 + days if there is no new activity. + + Thank you for your contributions! + stale-issue-label: stale + stale-pr-label: stale + exempt-issue-labels: keepalive,proposal,outdated-dependency,dev-branch + exempt-pr-labels: keepalive,proposal,outdated-dependency,dev-branch diff --git a/.gitignore b/.gitignore index fb39d6a8c73f..37ebb2fe7c3e 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ /.pkg /.cache /.vscode +/.eventcache vendor /cmd/agent/agent diff --git a/.golangci.yml b/.golangci.yml index 565377a1ae63..994a45adccb6 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,74 +1,83 @@ -# This file contains all available configuration options -# with their default values. +# Full list of configuration options: https://golangci-lint.run/usage/configuration/ -# options for analysis running run: - # default concurrency is a available CPU number - concurrency: 16 - - # timeout for analysis, e.g. 30s, 5m, default is 1m timeout: 5m - # exit code when at least one issue was found, default is 1 - issues-exit-code: 1 - - # include test files or not, default is true - tests: true - - # list of build2 tags, all linters use it. Default is empty list. - build-tags: - - # which dirs to skip: they won't be analyzed; - # can use regexp here: generated.*, regexp is applied on full path; - # default value is empty list, but next dirs are always skipped independently - # from this option's value: - # vendor$, third_party$, testdata$, examples$, Godeps$, builtin$ - skip-dirs: - # which files to skip: they will be analyzed, but issues from them - # won't be reported. Default value is empty list, but there is - # no need to include all autogenerated files, we confidently recognize - # autogenerated files. If it's not please let us know. - skip-files: -# output configuration options output: - # colored-line-number|line-number|json|tab|checkstyle, default is "colored-line-number" - format: colored-line-number - - # print lines of code with issue, default is true - print-issued-lines: true - - # print linter name in the end of issue text, default is true - print-linter-name: true + sort-results: true linters: enable: - - deadcode - - errcheck - - goconst - - gofmt - - goimports - - golint - - gosimple - - ineffassign - - megacheck - - misspell - - structcheck - - unconvert - - unparam - - varcheck - - govet - - unused # new from here. - - interfacer - - typecheck + - deadcode # Report on unused code + - errcheck # Report unchecked errors + - goconst # Find repeated strings that could be replaced by constant + - gofmt # Check whether code was gofmt-ed + - goimports # Check imports were formatted with gofmt + - revive # Broad set of rules; replaces deprecated golint + - gosimple # Check whether code can be simplified + - ineffassign # Detect when assignment to variable is never used + - misspell # Report on commonly misspelled English words + - structcheck # Report on unused struct fields + - unconvert # Remove unnecessary type conversions + - unparam # Detect unused function parameters + - varcheck # Find unused global variables/constants + - govet # `go vet` + - unused # Detect unused constants/variables/functions/types + - typecheck # Ensure code typechecks + - depguard # Allow/denylist specific imports + - makezero # Detect misuse of make with non-zero length and append + - tenv # Use testing.(*T).Setenv instead of os.Setenv + - whitespace # Report unnecessary blank lines issues: - # golangci-lint excludes some stuff we want by default (i.e., proper go-style comments). - # We exclude the defaults and then manually exclude the subset of defaults we truly don't - # care about. + # We want to use our own exclusion rules and ignore all the defaults. exclude-use-default: false + exclude-rules: + # It's fine if tests ignore errors. + - path: _test.go + linters: + - errcheck + exclude: - # EXC0001 errcheck: Almost all programs ignore errors on these functions - # and in most cases it's ok. This is copied from the golangci-lint defaults - # mut modified to include go-kit logging. - - Error return value of .((os\.)?std(out|err)\..*|.*Close|.*Flush|os\.Remove(All)?|.*print(f|ln)?|os\.(Un)?Setenv|.*\.Log). is not checked + # Ignoring errors on Close, Log, and removing files is OK in most cases. + - "Error return value of `(.*\\.Close|.*\\.Log|os.Remove)` is not checked" + # Packages for integrations are named matching their upstream counterpart, + # which almost always have underscores. + - "var-naming: don't use an underscore in package name" + +# Linter settings options: https://golangci-lint.run/usage/linters/ +linters-settings: + depguard: + # We want to report errors on stdlib packages, not just third party modules + include-go-root: true + + packages-with-error-message: + - sync/atomic: "Use go.uber.org/atomic instead of sync/atomic" + - github.com/pkg/errors: "Use errors instead of github.com/pkg/errors" + - github.com/go-kit/kit/log: "Use github.com/go-kit/log instead of github.com/go-kit/kit/log" + - golang.org/x/sync/errgroup: "Use github.com/oklog/run instead of golang.org/x/sync/errgroup" + + whitespace: + # While there normally shouldn't be extra redundant leading/trailing + # whitespace, if statement conditions and function headers that cross + # multiple lines are an exception. + # + # if true || + # false { + # + # // ... ^ must have empty line above + # } + # + # func foo( + # a int, + # ) { + # + # // ... ^ must have empty line above + # } + # + # This helps readers easily separate where the multi-line if/function ends + # at a glance. + multi-if: true + multi-func: true + diff --git a/CHANGELOG.md b/CHANGELOG.md index 7d9e511b42d4..c176a77052ec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,9 +1,31 @@ # Main (unreleased) -- [ENHANCEMENT] Go 1.17 is now used for all builds of the Agent. (@tpaschalis) +- [ENHANCEMENT] opentelemetry trace exporters can now be configured to support Oauth utilizing + the opentelemetry-collector-contrib oauth2clientauthextension. (@canuteson) + +- [ENHANCEMENT] Strengthen readiness check for metrics instances. (@tpaschalis) + +- [ENHANCEMENT] Parameterize namespace field in sample K8s logs manifests (@hjet) - [ENHANCEMENT] Introduce EXPERIMENTAL support for dynamic configuration. (@mattdurham) +- [BUGFIX] Ensure singleton integrations are honored in v2 integrations (@mattdurham) + +- [FEATURE] Added config read API support to GrafanaAgent Custom Resource Definition. + +# v0.23.0 (2022-01-13) + +- [ENHANCEMENT] Go 1.17 is now used for all builds of the Agent. (@tpaschalis) + +- [ENHANCEMENT] integrations-next: Add `extra_labels` to add a custom set of + labels to integration targets. (@rfratto) + +- [ENHANCEMENT] The agent no longer appends duplicate exemplars. (@tpaschalis) + +- [ENHANCEMENT] Added Kubernetes eventhandler integration (@hjet) + +- [ENHANCEMENT] Enables sending of exemplars over remote write by default. (@rlankfo) + - [BUGFIX] Fixed issue where Grafana Agent may panic if there is a very large WAL loading while old WALs are being deleted or the `/agent/api/v1/targets` endpoint is called. (@tpaschalis) @@ -13,12 +35,24 @@ - [BUGFIX] Operator: Add missing proxy_url field from generated remote_write configs. (@rfratto) +- [BUGFIX] Honor the specified log format in the traces subsystem (@mapno) + +- [BUGFIX] Fix typo in node_exporter for runit_service_dir. (@mattdurham) + +- [BUGFIX] Allow inlining credentials in remote_write url. (@tpaschalis) + +- [BUGFIX] integrations-next: Wait for integrations to stop when starting new + instances or shutting down (@rfratto). + +- [BUGFIX] Fix issue with windows_exporter mssql collector crashing the agent. (@mattdurham) + # v0.22.0 (2022-01-13) This release has deprecations. Please read [DEPRECATION] entries and consult the [upgrade guide](https://github.com/grafana/agent/blob/main/docs/upgrade-guide/_index.md) for detailed information. + - [FEATURE] (beta) Enable experimental config urls for fetching remote configs. Currently, only HTTP/S is supported. Pass the `-enable-features=remote-configs` flag to turn this on. (@rlankfo) diff --git a/MAINTAINERS.md b/MAINTAINERS.md index bb26074b6254..13e7d43fb6a3 100644 --- a/MAINTAINERS.md +++ b/MAINTAINERS.md @@ -1,8 +1,13 @@ -Robert Fratto ( / @rfratto) is the main/default maintainer, some parts of the codebase have other maintainers: +The following people are the primary maintainers of the project: -* `pkg` - * `traces`: Joe Elliott ( / @joe-elliott), Mario Rodriguez (/ @mapno) - * `integrations`: Gabriel Antunes ( / @gaantunes), Ryan Geyer ( / @rgeyer) +* Robert Fratto ( / @rfratto) +* Matt Durham ( / @mattdurham) +* Robbie Lankford ( / @rlankfo) + +Some parts of the codebase have other maintainers: + +* `pkg/traces`: Joe Elliott ( / @joe-elliott), Mario Rodriguez (/ @mapno) +* `pkg/integrations`: Gabriel Antunes ( / @gaantunes), Ryan Geyer ( / @rgeyer) For the sake of brevity, not all subtrees are explicitly listed. Due to the size of this repository, the natural changes in focus of maintainers over time, diff --git a/Makefile b/Makefile index 8454824a028b..fbe0c4902aa9 100644 --- a/Makefile +++ b/Makefile @@ -19,6 +19,9 @@ IMAGE_BRANCH_TAG = latest endif DRONE ?= false +# INTERNAL_REGISTRY used for pushing images to grafana internal registry +INTERNAL_REGISTRY ?= us.gcr.io/kubernetes-dev + # TARGETPLATFORM is specifically called from `docker buildx --platform`, this is mainly used when pushing docker image manifests, normal generally means NON DRONE builds TARGETPLATFORM ?=normal @@ -180,7 +183,8 @@ all: protos agent agentctl agent: cmd/agent/agent agentctl: cmd/agentctl/agentctl agent-operator: cmd/agent-operator/agent-operator -grafana-agent-crow: cmd/grafana-agent-crow/grafana-agent-crow +agent-smoke: tools/smoke/grafana-agent-smoke +grafana-agent-crow: tools/crow/grafana-agent-crow # In general DRONE variable should overwrite any other options, if DRONE is not set then fallback to normal behavior @@ -196,10 +200,16 @@ cmd/agent-operator/agent-operator: cmd/agent-operator/main.go $(ALL_CGO_BUILD_FLAGS) ; $(seego) build $(CGO_FLAGS) -o $@ ./$(@D) $(NETGO_CHECK) -cmd/grafana-agent-crow/grafana-agent-crow: cmd/grafana-agent-crow/main.go +tools/crow/grafana-agent-crow: tools/crow/main.go + $(ALL_CGO_BUILD_FLAGS) ; $(seego) build $(CGO_FLAGS) -o $@ ./$(@D) + $(NETGO_CHECK) + +tools/smoke/grafana-agent-smoke: tools/smoke/main.go $(ALL_CGO_BUILD_FLAGS) ; $(seego) build $(CGO_FLAGS) -o $@ ./$(@D) $(NETGO_CHECK) + + agent-image: $(docker-build) -t $(IMAGE_PREFIX)/agent:$(IMAGE_BRANCH_TAG) -t $(IMAGE_PREFIX)/agent:$(IMAGE_TAG) -f cmd/agent/$(DOCKERFILE) . agentctl-image: @@ -207,13 +217,16 @@ agentctl-image: agent-operator-image: $(docker-build) -t $(IMAGE_PREFIX)/agent-operator:$(IMAGE_BRANCH_TAG) -t $(IMAGE_PREFIX)/agent-operator:$(IMAGE_TAG) -f cmd/agent-operator/$(DOCKERFILE) . grafana-agent-crow-image: - $(docker-build) -t $(IMAGE_PREFIX)/agent-crow:$(IMAGE_BRANCH_TAG) -t $(IMAGE_PREFIX)/agent-crow:$(IMAGE_TAG) -f cmd/grafana-agent-crow/$(DOCKERFILE) . + $(docker-build) -t $(INTERNAL_REGISTRY)/$(IMAGE_PREFIX)/agent-crow:$(IMAGE_BRANCH_TAG) -t $(INTERNAL_REGISTRY)/$(IMAGE_PREFIX)/agent-crow:$(IMAGE_TAG) -f tools/crow/$(DOCKERFILE) . +agent-smoke-image: + $(docker-build) -t $(INTERNAL_REGISTRY)/$(IMAGE_PREFIX)/agent-smoke:$(IMAGE_BRANCH_TAG) -t $(INTERNAL_REGISTRY)/$(IMAGE_PREFIX)/agent-smoke:$(IMAGE_TAG) -f tools/smoke/$(DOCKERFILE) . install: CGO_ENABLED=1 go install $(CGO_FLAGS) ./cmd/agent CGO_ENABLED=0 go install $(GO_FLAGS) ./cmd/agentctl CGO_ENABLED=0 go install $(GO_FLAGS) ./cmd/agent-operator - CGO_ENABLED=0 go install $(GO_FLAGS) ./cmd/grafana-agent-crow + CGO_ENABLED=0 go install $(GO_FLAGS) ./tools/crow + CGO_ENABLED=0 go install $(GO_FLAGS) ./tools/smoke ####################### # Development targets # @@ -306,7 +319,6 @@ endif dist/agent-freebsd-amd64: seego $(call SetBuildVarsConditional,freebsd); $(seego) build $(CGO_FLAGS) -o $@ ./cmd/agent - ####################### # BEGIN AGENTCTL DIST # ####################### diff --git a/README.md b/README.md index 11350cb4bbdd..279dfe9db148 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -

Grafana Agent logo

+

Grafana Agent logo

Grafana Agent is a telemetry collector for sending metrics, logs, and trace data to the opinionated Grafana observability stack. It works best diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 000000000000..06123c276aa5 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,20 @@ +# Reporting security issues + +If you think you have found a security vulnerability, please send a report to [security@grafana.com](mailto:security@grafana.com). This address can be used for all of Grafana Labs's open source and commercial products (including but not limited to Grafana, Grafana Cloud, Grafana Enterprise, and grafana.com). We can accept only vulnerability reports at this address. + +Please encrypt your message to us; please use our PGP key. The key fingerprint is: + +F988 7BEA 027A 049F AE8E 5CAA D125 8932 BE24 C5CA + +The key is available from [keyserver.ubuntu.com](https://keyserver.ubuntu.com/pks/lookup?search=0xF9887BEA027A049FAE8E5CAAD1258932BE24C5CA&fingerprint=on&op=index). + +Grafana Labs will send you a response indicating the next steps in handling your report. After the initial reply to your report, the security team will keep you informed of the progress towards a fix and full announcement, and may ask for additional information or guidance. + +**Important:** We ask you to not disclose the vulnerability before it has been fixed and announced, unless you received a response from the Grafana Labs security team that you can do so. + +## Security announcements + +We maintain a category on the community site called [Security Announcements](https://community.grafana.com/c/support/security-announcements), +where we will post a summary, remediation, and mitigation details for any patch containing security fixes. + +You can also subscribe to email updates to this category if you have a grafana.com account and sign on to the community site or track updates via an [RSS feed](https://community.grafana.com/c/support/security-announcements.rss). diff --git a/cmd/agent/entrypoint.go b/cmd/agent/entrypoint.go index a7d77277cb7e..7ef69f5c1bbb 100644 --- a/cmd/agent/entrypoint.go +++ b/cmd/agent/entrypoint.go @@ -85,7 +85,7 @@ func NewEntrypoint(logger *util.Logger, cfg *config.Config, reloader Reloader) ( return nil, err } - ep.tempoTraces, err = traces.New(ep.lokiLogs, ep.promMetrics.InstanceManager(), prometheus.DefaultRegisterer, cfg.Traces, cfg.Server.LogLevel.Logrus) + ep.tempoTraces, err = traces.New(ep.lokiLogs, ep.promMetrics.InstanceManager(), prometheus.DefaultRegisterer, cfg.Traces, cfg.Server.LogLevel.Logrus, cfg.Server.LogFormat) if err != nil { return nil, err } @@ -196,6 +196,12 @@ func (ep *Entrypoint) wire(mux *mux.Router, grpc *grpc.Server) { }) mux.HandleFunc("/-/ready", func(w http.ResponseWriter, r *http.Request) { + if !ep.promMetrics.Ready() { + w.WriteHeader(http.StatusServiceUnavailable) + fmt.Fprint(w, "Metrics are not ready yet.\n") + + return + } w.WriteHeader(http.StatusOK) fmt.Fprintf(w, "Agent is Ready.\n") }) diff --git a/cmd/grafana-agent-crow/Dockerfile b/cmd/grafana-agent-crow/Dockerfile index ed7e4ba31451..75bd3f6049a8 100644 --- a/cmd/grafana-agent-crow/Dockerfile +++ b/cmd/grafana-agent-crow/Dockerfile @@ -5,7 +5,9 @@ ARG RELEASE_BUILD=true ARG IMAGE_TAG RUN make clean && make IMAGE_TAG=${IMAGE_TAG} RELEASE_BUILD=${RELEASE_BUILD} BUILD_IN_CONTAINER=false grafana-agent-crow +RUN apt update && apt install ca-certificates FROM debian:buster-slim -COPY --from=build /src/agent/cmd/grafana-agent-crow/grafana-agent-crow /bin/grafana-agent-crow +COPY --from=build /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt +COPY --from=build /src/agent/tools/crow/grafana-agent-crow /bin/grafana-agent-crow ENTRYPOINT ["/bin/grafana-agent-crow"] diff --git a/cmd/grafana-agent-crow/Dockerfile.buildx b/cmd/grafana-agent-crow/Dockerfile.buildx index fa7bf16fc092..f933c0e6b810 100644 --- a/cmd/grafana-agent-crow/Dockerfile.buildx +++ b/cmd/grafana-agent-crow/Dockerfile.buildx @@ -11,7 +11,7 @@ RUN rm -rf /usr/local/go \ && echo "$GOLANG_DOWNLOAD_SHA256 golang.tar.gz" | sha256sum -c - \ && tar -C /usr/local -xzf golang.tar.gz \ && rm golang.tar.gz - +RUN apt update && apt install ca-certificates COPY . /src/agent WORKDIR /src/agent ARG RELEASE_BUILD=true @@ -20,5 +20,6 @@ ARG IMAGE_TAG RUN make clean && IMAGE_TAG=${IMAGE_TAG} RELEASE_BUILD=${RELEASE_BUILD} BUILD_IN_CONTAINER=false DRONE=true make grafana-agent-crow FROM debian:buster-slim -COPY --from=build /src/agent/cmd/grafana-agent-crow/grafana-agent-crow /bin/grafana-agent-crow +COPY --from=build /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt +COPY --from=build /src/agent/tools/crow/grafana-agent-crow /bin/grafana-agent-crow ENTRYPOINT ["/bin/grafana-agent-crow"] diff --git a/docs/rfcs/0000-template.md b/docs/rfcs/0000-template.md new file mode 100644 index 000000000000..bbc01019c3ab --- /dev/null +++ b/docs/rfcs/0000-template.md @@ -0,0 +1,6 @@ +# Title + +* Date: YYYY-MM-DD +* Author: Full Name (@github_username) +* PR: [grafana/agent#XXXX](https://github.com/grafana/agent/pull/XXXX) +* Status: Draft diff --git a/docs/rfcs/0001-designing-in-the-open.md b/docs/rfcs/0001-designing-in-the-open.md new file mode 100644 index 000000000000..bccf3a527f40 --- /dev/null +++ b/docs/rfcs/0001-designing-in-the-open.md @@ -0,0 +1,160 @@ +# Designing in the Open + +* Date: 2021-11-02 +* Author: Robert Fratto (@rfratto) +* PR: [grafana/agent#1055](https://github.com/grafana/agent/pull/1055) +* Status: Implemented + +## Summary + +Many open source projects start behind closed doors, where it's designed, +prototyped, and tested before being released publicly. This can be true +regardless of why the project is being made; even personal side projects likely +start by someone designing alone. + +Meanwhile, many open source projects might want to create a community of +developers. Much of the beauty of succesful open source projects originates +from the varied backgrounds of its contributors: different people with +different use cases combining together to make a widely useful piece of +software. + +However, even with an intent to foster a community of developers, it's natural +to accidentally build a habit from the closed-door design process. Even when +once-private proposals are made public, potential external contributors can +find themselves simply as spectators: + +* Initial design is gated to core maintainers, in particular if they all work + for the same company. This leaves less room for new people to help out. +* New concerns are less impactful if the proposal already receieved core + maintainer consensus. +* Historical proposals with context and discussions become hard to find. + +I believe it takes a deliberate inversion of process to foster community +participation. This document proposes how Grafana Agent will utilize public +spaces for its primary home for future design proposals. + +## Goals + +* Outline options for proposing changes to Grafana Agent +* Lower the barrier to entry for interested parties to become maintainers + +## Non-Goals + +* Enforce that every change originates from a fully public proposal or + discussion. While all maintainers and contributors will be encouraged to + design openly, there may be legal, security, privacy, or business reasons + that prevent some or all context from being made public. + +* Be overly prescriptive: too many rules can hinder adoption of a process. This + document outlines intention, not hard policy. + +## Proposal + +Public proposals may take one of two forms: + +* Issue proposals +* RFC PR proposals (e.g., this document) + +### Issues + +Issues are the quickest path towards proposing a change. Issue proposals must +be opened at the [grafana/agent issues page](https://github.com/grafana/agent/issues). + +There are no strict set of rules for issue-based proposals, but authors are +recommended to prefix the issue title with `Proposal:` so it may be found more +easily. + +### RFC PRs + +RFC PR proposals must at least: + +* Be placed in the `docs/rfcs` folder of the `grafana/agent` repository +* Have a lowercase filename in hyphen-case with an `.md` extension +* Prefix the filename with the RFC ID + * ID `xxxx` may be initially used until the final ID is known +* Contain valid markdown +* Start with the title of the proposal +* Contain a bullet point list of metadata of: + * The date the proposal was written + * The list of authors, with their names and GitHub usernames + * The PR where the proposal was posted + * The status of the proposal + +`0000-template.md` contains a template to use for writing proposals that +conforms to these rules. + +The remainder of the proposal may be formatted however the author wishes. Some +example sections in the RFC may be: + +* Summary: What is the background that lead to this proposal? +* Goals: What are the main goals of the proposal? +* Non-Goals: What _aren't_ the main goals of the proposal? +* Proposal: What is the proposal? +* Pros/Cons: + * Pros: What are the upsides to this proposal? + * Cons: What are the downsides to this proposal? +* Considered Alternatives: Why is this proposal the best path forward? What + were the alternatives? +* Open Questions: What questions still need to be answered? +* Prior Art: What was this proposal based on, if anything? + +#### RFC Status + +The "Status" field of an RFC must be one of the following: + +* Draft: This RFC is a work-in-progress and may change +* Implemented: Relevant code for this RFC has been merged to the main branch +* Deprecated: This RFC is no longer relevant to the current state of the + project + +RFCs may be merged in Draft state as work on them progresses. The _Draft_ state +is intended to signal to readers that an RFC is in flux. Once all relevant code +for an RFC is merged to main, the RFC may move to the _Implemented_ status. +RFCs without code, such as this RFC, may immediately be set as Implemented. + +If, for any reason, an RFC becomes no longer relevant (deprecated by another +RFC, code removed, etc.), its status should move to Deprecated. + +#### RFC Review + +RFCs should be opened as a PR to grafana/agent, ideally prefixed in the PR +title with `RFC:` to easily identify it amongst other PRs. + +### Google Docs Proposals + +Google Docs may be useful for early feedback rounds during a proposal. However, +it is not recommended for the permanent home of a proposal: + +* Change and comment history may not be available to all viewers. + +* The file owner may delete the proposal, leading to a gap in historical + context. + +Google Docs proposals will be permitted if linked to from an issue proposal. +Google Doc proposals must be converted into an RFC proposal prior to formally +accepting the proposal. Enforcing this ensures that historical context is +recorded, though it is still not ideal as it discards comment history. + +## Accepting Proposals + +All readers are encouraged to engage in reviewing proposals. However, whether a +proposal is accepted is determined by [rough consensus][] of the Grafana Agent +governance team. External contributors may eventually be invited to [join the +governance team][governance] if they have a history of making ongoing +contributions to the project or community. + +## Considered alternatives + +A few existing public proposal processes have been examined for inspiration: + +* [IETF's RFCs](https://www.ietf.org/standards/rfcs/) +* [Rust's RFCs](https://github.com/rust-lang/rfcs) +* [Joyent's Requests for Discussions](https://github.com/joyent/rfd) +* [OpenTelemetry's OTEPs](https://github.com/open-telemetry/oteps) +* [Kubernetes Enhancement Proposals (KEPs)](https://github.com/kubernetes/enhancements) + +All of these processes are similar, but in the end, the current objective is to +start collecting proposals publicly rather than to be prescriptive yet. + +[rough consensus]: https://github.com/grafana/agent/blob/main/GOVERNANCE.md#technical-decisions +[governance]: https://github.com/grafana/agent/blob/main/GOVERNANCE.md#team-members diff --git a/docs/rfcs/0002-integrations-in-operator.md b/docs/rfcs/0002-integrations-in-operator.md new file mode 100644 index 000000000000..1572097d013b --- /dev/null +++ b/docs/rfcs/0002-integrations-in-operator.md @@ -0,0 +1,300 @@ +# Integrations in Grafana Agent Operator + +* Date: 2022-01-04 +* Author: Robert Fratto (@rfratto) +* PR: [grafana/agent#1224](https://github.com/grafana/agent/pull/1224) +* Status: Draft + +## Background + +Grafana Agent includes support for integrations, which are intended as +"batteries-included" features to assist with collecting telemetry data. With +the `integrations-next` feature enabled, there are multiple types of +integrations: + +* Integrations that generate metrics (i.e., `node_exporter`) +* Integrations that generate logs (i.e., `eventhandler`) +* Integrations that generate other types of telemetry are planned (i.e., an + upcoming `app_o11y_receiver`) + +Generically, an integration is a specialized telemetry collector for some +system under observation. For example, a `redis` integration collects telemetry +for Redis. Integrations can generate any combination of Prometheus metrics, +Grafana Loki logs, or Grafana Tempo traces. + +This document proposes adding a way to add support for all current and future +integrations into the Grafana Agent Operator. + +This proposal supersedes [#883][], which was the first attempt at designing the +feature. This proposal takes advantage of the lessons I've learned and +minimizes the implementation effort. + +## Goals + +* Allow Grafana Agent Operator to deploy integrations +* Allow deployed integrations to write telemetry data +* Support integrations that must exist on every machine (i.e., `node_exporter`) +* Minimize development effort for creating new integrations + +## Non-Goals + +* Support externally collecting metrics from integrations + +## Proposal + +At a high level, the proposal is to: + +* Define a new `Integration` CRD which specifies a single instance of an + integration to run. +* Update `GrafanaAgent` to discover `Integration`s and run integrations. + +## Architecture + +### Running integrations + +The new CRD, Integration, will be used for supporting all current integrations. +The spec of Integration primarily revolves around three fields: + +* `name`: The name of the integration (e.g., `node_exporter`, `mysqld_exporter`) +* `type`: Information about the integration being deployed +* `config`: YAML configuration block for the integration + +The `type` field is an object with the following fields: + +* `allNodes`: True when the `name` integration should run on all Kubernetes + Nodes. +* `unique`: True when the `name` integration must be unique across a + GrafanaAgent resource hierarchy. + +> Example of a valid integration: +> +> ```yaml +> apiVersion: monitoring.grafana.com/v1alpha1 +> kind: Integration +> metadata: +> name: mysql +> namespace: default +> spec: +> name: mysqld_exporter +> type: +> allNodes: false # optional; false is default +> unique: false # optional; false is default +> config: +> data_source_name: root@(mysql.default:3306)/ +> disable_collectors: [slave_status] +> ``` + +GrafanaAgent will be updated to discover Integrations as part of its resource +hierarchy. During reconcile, the following Kubernetes objects will be deployed: + +* One DaemonSet and Secret if there is at least one integration in the resource + hierarchy where `type.allNodes` is true. + +* One Deployment and Secret if there is at least one integration in the + resource hierarchy where `type.allNodes` is false. + +Secrets hold the generated Grafana Agent configuration; a Secret is used as +integration configs may contain credentials. + +**NOTE**: As this functionality depends on [#1198][], integration pods will +always be deployed with the experimental feature flag +`-enable-feature=integrations-next` enabled. This also means that operator +support for integrations requires a release of the agent where that +experimental feature is available. + +### Integration validation + +The initial implementation of integrations support will have no knowledge of +what integrations exist. As a result, the `spec.type` and `spec.config` fields +for an Integration MUST be configured correctly for an integration to work. +Users must refer to documentation to discover how `type` should be configured +for their specific integration, and what settings are valid for the `config` +block. Configuration errors will only surface as runtime errors from the +deployed agent. + +Future versions of the Operator may: + +* Add knowledge for some integrations and validate `type` and `config` + accordingly (though breaking changes to the config at the Agent level may + introduce extra complexity to this). + +* Update the `status` field of the root GrafanaAgent resource during reconcile + to expose any reconcile or runtime errors. + +### Additional settings for the Integration CRD + +Some integrations may require changes to the deployed Pods to function +properly. Integrations will additionally support declaring `volumes`, +`volumeMounts`, `secrets` and `configMaps`. These fields will be merged with +the fields of the same name from the root GrafanaAgent resource when creating +integration pods: + +> ```yaml +> apiVersion: monitoring.grafana.com/v1alpha1 +> kind: Integration +> metadata: +> name: kafka +> namespace: default +> spec: +> name: kafka_exporter +> config: | +> ca_file: /etc/grafana-agent/secrets/kafka-ca-file +> # ... +> # Same "secrets" field present in GrafanaAgent.spec, where each secret +> # is loaded from the same namespace and gets exposed at +> # /etc/grafana-agent/secrets/ +> secrets: [kafka-ca-file] +> ``` + +### Sending telemetry from integrations + +Because the operator will not have any knowledge about individual integrations, it +also doesn't know how integrations generate telemetry data. Users must manally +configure an integration to send its data to the appropriate instance. + +Users can refer to MetricsInstances and LogsInstance from the same resource +hierarchy by `/` in their integration configs. This +configuring `autoscrape` for collecting metrics from an exporter-based +integration. + +Given the following following resource hierarchy: + +> ```yaml +> apiVersion: monitoring.grafana.com/v1alpha1 +> kind: GrafanaAgent +> metadata: +> name: grafana-agent-example +> namespace: default +> labels: +> app: grafana-agent-example +> spec: +> metrics: +> instanceSelector: +> matchLabels: +> agent: grafana-agent-example +> integrations: +> instanceSelector: +> matchLabels: +> agent: grafana-agent-example +> --- +> apiVersion: monitoring.grafana.com/v1alpha1 +> kind: MetricsInstance +> metadata: +> name: primary +> namespace: default +> labels: +> app: grafana-agent-example +> spec: +> remoteWrite: +> - url: http://prometheus:9090/api/v1/write +> --- +> apiVersion: monitoring.grafana.com/v1alpha1 +> kind: Integration +> metadata: +> name: mysql +> namespace: default +> labels: +> app: grafana-agent-example +> spec: +> name: mysqld_exporter +> config: +> autoscrape: +> enable: true +> # MetricsInstance / to send metrics to +> metrics_instance: default/primary +> data_source_name: root@(mysql.default:3306)/ +> disable_collectors: [slave_status] +> ``` + +the Operator would generate the following agent config: + +```yaml +metrics: + configs: + - name: default/primary + remote_write: + - url: http://prometheus:9090/api/v1/write +integrations: + mysqld_exporter_configs: + - autoscrape: + enable: true + metrics_instance: default/primary + data_source_name: root@(mysql.default:3306)/ + disable_collectors: [slave_status] +``` + +All integrations support some way of self-collecting their telemetry data. In +the future, Integrations that support metrics could support being collected by +an external source (i.e., a MetricsInstance). This is out of scope of this +proposal, as we are focusing on lowest-common-denominator support for all +integrations first. + +Note that the Integration config above is only contextually valid: it is only +valid if it is part of a resource hierarchy where a `default/primary` +MetricsInstance exists. This makes it impossible for an Integration to be fully +validated indepently of the resource hierarchy where it is discovered. + +## Pros/Cons + +Despite its limitations, this specific implementation is proposed for its +simplicity. Its issues with validation can be resolved in the future without +needing to change the CRD or introduce new CRDs. + +Pros: + +* Works for all known integrations +* Supports future work for custom validation logic +* No changes needed to support future integrations +* You do not have to update the operator to use new integrations + +Cons: + +* Users must know use documentation to configure `type` and `config` properly. +* Without validation, configuration errors can be hard to debug. +* An Integration may be discovered as part of two resource hierarchies, but + refer to a MetricsInstance that exists in one hierarchy but not the other. + +## Alternatives considered + +### Do nothing + +Instead of adding support for integrations, users could be expected to deploy +exporters though custom means (i.e., a `node_exporter` Helm chart + +ServiceMonitor). + +Pros: + +* Requires no additional effort to implement +* Metrics can be scraped by any MetricsInstance +* Feels like a natural fit for Kubernetes' deployment model + +Cons: + +* Prevents non-exporter integrations from working (i.e., `eventhandler` has no + separate container that can be run indepently) +* Prevents us from making agent-specific changes on top of exporters +* Requires different documentation for people using the node_exporter + integration vs deploying the actual node_exporter + +### One CRD per integration + +Instead of a generic CRD, we could have CRD per supported integration. + +Pros: + +* Allows creating Kubernetes-specific config schemas for integrations +* Can be validated at the CRD level + +Cons: + +* Operator must be updated whenever a new integration is added +* Adds extra development effort for creating new integrations +* Requires custom config mapping code for each integration +* Breaking changes to Grafana Agent can break the translation of the CRD to + Agent config. + * This is true for the current proposal, but in the current proposal you can + fix the error in the Integration resource, while a custom CRD would need a + new operator version to fix the translation. + +[#883]: https://github.com/grafana/agent/issues/883 +[#1198]: https://github.com/grafana/agent/pull/1198 diff --git a/docs/user/README.md b/docs/user/README.md new file mode 100644 index 000000000000..51c262484e4c --- /dev/null +++ b/docs/user/README.md @@ -0,0 +1,21 @@ ++++ +draft = "True" ++++ + +

Grafana Agent logo

+ +Grafana Agent is an telemetry collector for sending metrics, logs, +and trace data to the opinionated Grafana observability stack. It works best +with: + +* [Grafana Cloud](https://grafana.com/products/cloud/) +* [Grafana Enterprise Stack](https://grafana.com/products/enterprise/) +* OSS deployments of [Grafana Loki](https://grafana.com/oss/loki/), [Prometheus](https://prometheus.io/), [Cortex](https://cortexmetrics.io/), and [Grafana Tempo](https://grafana.com/oss/tempo/) + + +- Grafana Agent uses less memory on average than Prometheus – by doing less + (only focusing on `remote_write`-related functionality). +- Grafana Agent allows for deploying multiple instances of the Agent in a + cluster and only scraping metrics from targets that are running on the same host. + This allows for distributing memory requirements across the cluster + rather than pressurizing a single node. diff --git a/docs/_index.md b/docs/user/_index.md similarity index 100% rename from docs/_index.md rename to docs/user/_index.md diff --git a/docs/api/_index.md b/docs/user/api/_index.md similarity index 100% rename from docs/api/_index.md rename to docs/user/api/_index.md diff --git a/docs/assets/logo_and_name.png b/docs/user/assets/logo_and_name.png similarity index 100% rename from docs/assets/logo_and_name.png rename to docs/user/assets/logo_and_name.png diff --git a/docs/configuration/_index.md b/docs/user/configuration/_index.md similarity index 94% rename from docs/configuration/_index.md rename to docs/user/configuration/_index.md index e326d497f21e..a8495a0bdc47 100644 --- a/docs/configuration/_index.md +++ b/docs/user/configuration/_index.md @@ -127,8 +127,3 @@ The following flags will configure basic auth for requests made to HTTP/S remote - `-config.url.basic-auth-password-file `: path to a file containing the basic auth password Note that this beta feature is subject to change in future releases. - -## Dynamic Configuration (Experimental) - -Dynamic Configuration is an experimental feature that allows loading configurations from a variety of sources and -running gomplate templates against the found file. Details can be found in the [dynamic configuration config]({{< relref "./dynamic-config.md" >}}) \ No newline at end of file diff --git a/docs/configuration/integrations/_index.md b/docs/user/configuration/integrations/_index.md similarity index 100% rename from docs/configuration/integrations/_index.md rename to docs/user/configuration/integrations/_index.md diff --git a/docs/configuration/integrations/cadvisor-config.md b/docs/user/configuration/integrations/cadvisor-config.md similarity index 100% rename from docs/configuration/integrations/cadvisor-config.md rename to docs/user/configuration/integrations/cadvisor-config.md diff --git a/docs/configuration/integrations/consul-exporter-config.md b/docs/user/configuration/integrations/consul-exporter-config.md similarity index 100% rename from docs/configuration/integrations/consul-exporter-config.md rename to docs/user/configuration/integrations/consul-exporter-config.md diff --git a/docs/configuration/integrations/dnsmasq-exporter-config.md b/docs/user/configuration/integrations/dnsmasq-exporter-config.md similarity index 100% rename from docs/configuration/integrations/dnsmasq-exporter-config.md rename to docs/user/configuration/integrations/dnsmasq-exporter-config.md diff --git a/docs/configuration/integrations/elasticsearch-exporter-config.md b/docs/user/configuration/integrations/elasticsearch-exporter-config.md similarity index 100% rename from docs/configuration/integrations/elasticsearch-exporter-config.md rename to docs/user/configuration/integrations/elasticsearch-exporter-config.md diff --git a/docs/configuration/integrations/github-exporter-config.md b/docs/user/configuration/integrations/github-exporter-config.md similarity index 100% rename from docs/configuration/integrations/github-exporter-config.md rename to docs/user/configuration/integrations/github-exporter-config.md diff --git a/docs/configuration/integrations/integrations-next/_index.md b/docs/user/configuration/integrations/integrations-next/_index.md similarity index 94% rename from docs/configuration/integrations/integrations-next/_index.md rename to docs/user/configuration/integrations/integrations-next/_index.md index 2a724de64172..6c33d869638b 100644 --- a/docs/configuration/integrations/integrations-next/_index.md +++ b/docs/user/configuration/integrations/integrations-next/_index.md @@ -84,6 +84,7 @@ integrations: [process_exporter: ] [statsd_exporter: ] [windows_exporter: ] + [eventhandler: ] # Configs for integrations that do support multiple instances. Note that # these must be arrays. @@ -144,6 +145,13 @@ autoscrape: # Autoscrape interval and timeout. [scrape_interval: | default = ] [scrape_timeout: | default = ] + +# An optional extra set of labels to add to metrics from the integration target. These +# labels are only exposed via the integration service discovery HTTP API and +# added when autoscrape is used. They will not be found directly on the metrics +# page for an integration. +extra_labels: + [ : ... ] ``` The old set of common options have been removed and do not work when the revamp diff --git a/docs/user/configuration/integrations/integrations-next/eventhandler-config.md b/docs/user/configuration/integrations/integrations-next/eventhandler-config.md new file mode 100644 index 000000000000..a06ef02a2907 --- /dev/null +++ b/docs/user/configuration/integrations/integrations-next/eventhandler-config.md @@ -0,0 +1,301 @@ ++++ +title = "eventhandler_config" ++++ + +# eventhandler_config (beta) + +`eventhandler_config` configures the Kubernetes eventhandler integration. This integration watches [Event](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#event-v1-core) resources in a Kubernetes cluster and forwards them as log entries to a Loki sink. + +On restart, the integration will look for a cache file (configured using `cache_path`) that stores the last shipped event. This file is optional, and if present, will be used to avoid double-shipping events if Agent or the integration restarts. Kubernetes expires events after 60 minutes, so events older than 60 minutes ago will never be shipped. + +To use the cache feature and maintain state in a Kubernetes environment, a [StatefulSet](https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/) must be used. Sample manifests are provided at the bottom of this doc. Please adjust these according to your deployment preferences. You can also use a Deployment, however the presence of the cache file will not be guaranteed and the integration may ship duplicate entries in the event of a restart. Loki does not yet support entry deduplication for the A->B->A case, so further deduplication can only take place at the Grafana / front-end layer (Grafana Explore does provide some deduplication features for Loki datasources). + +This integration uses Grafana Agent's embedded Loki-compatible `logs` subsystem to ship entries, and a logs client and sink must be configured to use the integration. Please see the sample Agent config below for an example configuration. [Pipelines](https://grafana.com/docs/loki/latest/clients/promtail/pipelines/) and relabel configuration are not yet supported, but these features will be added soon. You should use the `job=eventhandler cluster=...` labels to query your events (you can then use LogQL on top of the result set). + +If not running the integration in-cluster, the integration will use `kubeconfig_path` to search for a valid Kubeconfig file, defaulting to a kubeconfig in the user's home directory. If running in-cluster, the appropriate `ServiceAccount` and Roles must be defined. Sample manifests are provided below. + +Configuration reference: + +```yaml + ## Eventhandler hands watched events off to promtail using a promtail + ## client channel. This parameter configures how long to wait (in seconds) on the channel + ## before abandoning and moving on. + [send_timeout: | default = 60] + + ## Configures the path to a kubeconfig file. If not set, will fall back to using + ## an in-cluster config. If this fails, will fall back to checking the user's home + ## directory for a kubeconfig. + [kubeconfig_path: ] + + ## Path to a cache file that will store the last timestamp for a shipped event and events + ## shipped for that timestamp. Used to prevent double-shipping on integration restart. + [cache_path: | default = "./.eventcache/eventhandler.cache"] + + ## Name of logs subsystem instance to hand log entries off to. + [logs_instance: | default = "default"] + + ## K8s informer resync interval (seconds). You should use defaults here unless you are + ## familiar with K8s informers. + [informer_resync: | default = 120] + + ## The integration will flush the last event shipped out to disk every flush_interval seconds. + [flush_interval: | default = 10] + + ## If you would like to limit events to a given namespace, use this parameter. + [namespace: ] +``` + +Sample agent config: + +```yaml +server: + http_listen_port: 12345 + log_level: info + +integrations: + eventhandler: + cache_path: "/etc/eventhandler/eventhandler.cache" + +logs: + configs: + - name: default + clients: + - url: https://logs-prod-us-central1.grafana.net/api/prom/push + basic_auth: + username: YOUR_LOKI_USER + password: YOUR_LOKI_API_KEY + external_labels: + cluster: "cloud" + job: "integrations/kubernetes/eventhandler" + positions: + filename: /tmp/positions0.yaml + ## The following stanza is optional and used to configure another client to forward + ## Agent's logs to Loki in a K8s environment (using the manifests found below) + - name: eventhandler_logs + clients: + - url: https://logs-prod-us-central1.grafana.net/api/prom/push + basic_auth: + username: YOUR_LOKI_USER + password: YOUR_LOKI_API_KEY + scrape_configs: + - job_name: eventhandler_logs + kubernetes_sd_configs: + - role: pod + pipeline_stages: + - docker: {} + relabel_configs: + - source_labels: + - __meta_kubernetes_pod_node_name + target_label: __host__ + - action: keep + regex: grafana-agent-eventhandler-* + source_labels: + - __meta_kubernetes_pod_name + - action: labelmap + regex: __meta_kubernetes_pod_label_(.+) + - action: replace + replacement: $1 + source_labels: + - __meta_kubernetes_pod_name + target_label: job + - action: replace + source_labels: + - __meta_kubernetes_namespace + target_label: namespace + - action: replace + source_labels: + - __meta_kubernetes_pod_name + target_label: pod + - action: replace + source_labels: + - __meta_kubernetes_pod_container_name + target_label: container + - replacement: /var/log/pods/*$1/*.log + separator: / + source_labels: + - __meta_kubernetes_pod_uid + - __meta_kubernetes_pod_container_name + target_label: __path__ + positions: + filename: /tmp/positions1.yaml +``` + +Be sure to replace the Loki credentials with the appropriate values. + +Sample StatefulSet manifests. Please adjust these according to your needs: + +```yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: grafana-agent-eventhandler + namespace: default +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: grafana-agent-eventhandler +rules: +- apiGroups: + - "" + resources: + - events + verbs: + - get + - list + - watch +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: grafana-agent-eventhandler +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: grafana-agent-eventhandler +subjects: +- kind: ServiceAccount + name: grafana-agent-eventhandler + namespace: default +--- +apiVersion: v1 +kind: Service +metadata: + name: grafana-agent-eventhandler-svc +spec: + ports: + - port: 12345 + name: http-metrics + clusterIP: None + selector: + name: grafana-agent-eventhandler +--- +kind: ConfigMap +metadata: + name: grafana-agent-eventhandler + namespace: default +apiVersion: v1 +data: + agent.yaml: | + server: + http_listen_port: 12345 + log_level: info + + integrations: + eventhandler: + cache_path: "/etc/eventhandler/eventhandler.cache" + + logs: + configs: + - name: default + clients: + - url: https://logs-prod-us-central1.grafana.net/api/prom/push + basic_auth: + username: YOUR_LOKI_USER + password: YOUR_LOKI_API_KEY + external_labels: + cluster: "cloud" + job: "integrations/kubernetes/eventhandler" + positions: + filename: /tmp/positions0.yaml + - name: eventhandler_logs + clients: + - url: https://logs-prod-us-central1.grafana.net/api/prom/push + basic_auth: + username: YOUR_LOKI_USER + password: YOUR_LOKI_API_KEY + scrape_configs: + - job_name: eventhandler_logs + kubernetes_sd_configs: + - role: pod + pipeline_stages: + - docker: {} + relabel_configs: + - source_labels: + - __meta_kubernetes_pod_node_name + target_label: __host__ + - action: keep + regex: grafana-agent-eventhandler-* + source_labels: + - __meta_kubernetes_pod_name + - action: labelmap + regex: __meta_kubernetes_pod_label_(.+) + - action: replace + replacement: $1 + source_labels: + - __meta_kubernetes_pod_name + target_label: job + - action: replace + source_labels: + - __meta_kubernetes_namespace + target_label: namespace + - action: replace + source_labels: + - __meta_kubernetes_pod_name + target_label: pod + - action: replace + source_labels: + - __meta_kubernetes_pod_container_name + target_label: container + - replacement: /var/log/pods/*$1/*.log + separator: / + source_labels: + - __meta_kubernetes_pod_uid + - __meta_kubernetes_pod_container_name + target_label: __path__ + positions: + filename: /tmp/positions1.yaml +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: grafana-agent-eventhandler + namespace: default +spec: + serviceName: "grafana-agent-eventhandler-svc" + selector: + matchLabels: + name: grafana-agent-eventhandler + replicas: 1 + template: + metadata: + labels: + name: grafana-agent-eventhandler + spec: + terminationGracePeriodSeconds: 10 + containers: + - name: agent + image: grafana/agent:main + imagePullPolicy: IfNotPresent + args: + - -config.file=/etc/agent/agent.yaml + - -enable-features=integrations-next + command: + - /bin/agent + env: + - name: HOSTNAME + valueFrom: + fieldRef: + fieldPath: spec.nodeName + ports: + - containerPort: 12345 + name: http-metrics + volumeMounts: + - name: grafana-agent + mountPath: /etc/agent + - name: eventhandler-cache + mountPath: /etc/eventhandler + serviceAccount: grafana-agent-eventhandler + volumes: + - configMap: + name: grafana-agent-eventhandler + name: grafana-agent + volumeClaimTemplates: + - metadata: + name: eventhandler-cache + spec: + accessModes: [ "ReadWriteOnce" ] + resources: + requests: + storage: 1Gi +``` diff --git a/docs/configuration/integrations/kafka-exporter-config.md b/docs/user/configuration/integrations/kafka-exporter-config.md similarity index 100% rename from docs/configuration/integrations/kafka-exporter-config.md rename to docs/user/configuration/integrations/kafka-exporter-config.md diff --git a/docs/configuration/integrations/memcached-exporter-config.md b/docs/user/configuration/integrations/memcached-exporter-config.md similarity index 100% rename from docs/configuration/integrations/memcached-exporter-config.md rename to docs/user/configuration/integrations/memcached-exporter-config.md diff --git a/docs/configuration/integrations/mongodb_exporter-config.md b/docs/user/configuration/integrations/mongodb_exporter-config.md similarity index 100% rename from docs/configuration/integrations/mongodb_exporter-config.md rename to docs/user/configuration/integrations/mongodb_exporter-config.md diff --git a/docs/configuration/integrations/mysqld-exporter-config.md b/docs/user/configuration/integrations/mysqld-exporter-config.md similarity index 100% rename from docs/configuration/integrations/mysqld-exporter-config.md rename to docs/user/configuration/integrations/mysqld-exporter-config.md diff --git a/docs/configuration/integrations/node-exporter-config.md b/docs/user/configuration/integrations/node-exporter-config.md similarity index 99% rename from docs/configuration/integrations/node-exporter-config.md rename to docs/user/configuration/integrations/node-exporter-config.md index 6ce79fbab36a..e8cc2a776940 100644 --- a/docs/configuration/integrations/node-exporter-config.md +++ b/docs/user/configuration/integrations/node-exporter-config.md @@ -26,7 +26,7 @@ docker run \ -v "/proc:/host/proc:ro,rslave" \ -v /tmp/agent:/etc/agent \ -v /path/to/config.yaml:/etc/agent-config/agent.yaml \ - grafana/agent:v0.22.0 \ + grafana/agent:v0.23.0 \ --config.file=/etc/agent-config/agent.yaml ``` @@ -66,14 +66,14 @@ metadata: name: agent spec: containers: - - image: grafana/agent:v0.22.0 + - image: grafana/agent:v0.23.0 name: agent args: - --config.file=/etc/agent-config/agent.yaml securityContext: capabilities: add: ["SYS_TIME"] - priviliged: true + privileged: true runAsUser: 0 volumeMounts: - name: rootfs diff --git a/docs/configuration/integrations/postgres-exporter-config.md b/docs/user/configuration/integrations/postgres-exporter-config.md similarity index 100% rename from docs/configuration/integrations/postgres-exporter-config.md rename to docs/user/configuration/integrations/postgres-exporter-config.md diff --git a/docs/configuration/integrations/process-exporter-config.md b/docs/user/configuration/integrations/process-exporter-config.md similarity index 98% rename from docs/configuration/integrations/process-exporter-config.md rename to docs/user/configuration/integrations/process-exporter-config.md index 55b6d35c1f31..bfd352452ed1 100644 --- a/docs/configuration/integrations/process-exporter-config.md +++ b/docs/user/configuration/integrations/process-exporter-config.md @@ -18,7 +18,7 @@ docker run \ -v "/proc:/proc:ro" \ -v /tmp/agent:/etc/agent \ -v /path/to/config.yaml:/etc/agent-config/agent.yaml \ - grafana/agent:v0.22.0 \ + grafana/agent:v0.23.0 \ --config.file=/etc/agent-config/agent.yaml ``` @@ -35,7 +35,7 @@ metadata: name: agent spec: containers: - - image: grafana/agent:v0.22.0 + - image: grafana/agent:v0.23.0 name: agent args: - --config.file=/etc/agent-config/agent.yaml diff --git a/docs/configuration/integrations/redis-exporter-config.md b/docs/user/configuration/integrations/redis-exporter-config.md similarity index 100% rename from docs/configuration/integrations/redis-exporter-config.md rename to docs/user/configuration/integrations/redis-exporter-config.md diff --git a/docs/configuration/integrations/statsd-exporter-config.md b/docs/user/configuration/integrations/statsd-exporter-config.md similarity index 100% rename from docs/configuration/integrations/statsd-exporter-config.md rename to docs/user/configuration/integrations/statsd-exporter-config.md diff --git a/docs/configuration/integrations/windows-exporter-config.md b/docs/user/configuration/integrations/windows-exporter-config.md similarity index 100% rename from docs/configuration/integrations/windows-exporter-config.md rename to docs/user/configuration/integrations/windows-exporter-config.md diff --git a/docs/configuration/logs-config.md b/docs/user/configuration/logs-config.md similarity index 100% rename from docs/configuration/logs-config.md rename to docs/user/configuration/logs-config.md diff --git a/docs/configuration/metrics-config.md b/docs/user/configuration/metrics-config.md similarity index 100% rename from docs/configuration/metrics-config.md rename to docs/user/configuration/metrics-config.md diff --git a/docs/configuration/server-config.md b/docs/user/configuration/server-config.md similarity index 100% rename from docs/configuration/server-config.md rename to docs/user/configuration/server-config.md diff --git a/docs/configuration/traces-config.md b/docs/user/configuration/traces-config.md similarity index 91% rename from docs/configuration/traces-config.md rename to docs/user/configuration/traces-config.md index 83557549a591..f4d8845c5ce6 100644 --- a/docs/configuration/traces-config.md +++ b/docs/user/configuration/traces-config.md @@ -72,6 +72,31 @@ remote_write: # the latter take precedence. [ insecure_skip_verify: | default = false ] + # Configures opentelemetry exporters to use the OpenTelemetry auth extension `oauth2clientauthextension`. + # Can not be used in combination with `basic_auth`. + # See https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/extension/oauth2clientauthextension/README.md + oauth2: + # Configures the TLS settings specific to the oauth2 client + # The client identifier issued to the oauth client + [client_id: ] + # The secret string associated with the oauth client + [client_secret: ] + # The resource server's token endpoint URL + [token_url: ] + # Optional, requested permissions associated with the oauth client + [scopes: []] + # Optional, specifies the timeout fetching tokens from the token_url. Default: no timeout + [timeout: ] + tls: + # Disable validation of the server certificate. + [ insecure: | default = false ] + # Path to the CA cert. For a client this verifies the server certificate. If empty uses system root CA. + [ca_file: ] + # Path to the TLS cert to use for TLS required connections + [cert_file: ] + # Path to the TLS key to use for TLS required connections + [key_file: ] + # Controls TLS settings of the exporter's client. See https://github.com/open-telemetry/opentelemetry-collector/blob/v0.21.0/config/configtls/README.md # This should be used only if `insecure` is set to false tls_config: diff --git a/docs/getting-started/_index.md b/docs/user/getting-started/_index.md similarity index 99% rename from docs/getting-started/_index.md rename to docs/user/getting-started/_index.md index 686264eab8c8..e6bd5f445530 100644 --- a/docs/getting-started/_index.md +++ b/docs/user/getting-started/_index.md @@ -26,7 +26,7 @@ See the list of [Community Projects](#community-projects) for the community-driv docker run \ -v /tmp/agent:/etc/agent/data \ -v /path/to/config.yaml:/etc/agent/agent.yaml \ - grafana/agent:v0.22.0 + grafana/agent:v0.23.0 ``` Replace `/tmp/agent` with the folder you wish to store WAL data in. WAL data is diff --git a/docs/getting-started/create-config-file.md b/docs/user/getting-started/create-config-file.md similarity index 97% rename from docs/getting-started/create-config-file.md rename to docs/user/getting-started/create-config-file.md index ae25c58d551a..4b53a44b70b1 100644 --- a/docs/getting-started/create-config-file.md +++ b/docs/user/getting-started/create-config-file.md @@ -58,7 +58,7 @@ source of metrics if you are running multiple Grafana Agents across multiple machines. Full configuration options can be found in the -[configuration reference](../configuration/_index.md). +[configuration reference]({{< relref "../configuration/index.md" >}}). ## Prometheus config/migrating from Prometheus @@ -104,7 +104,7 @@ metrics: ``` Like with integrations, full configuration options can be found in the -[configuration](../configuration/_index.md). +[configuration]({{< relref "../configuration/index.md" >}}). ## Loki Config/Migrating from Promtail diff --git a/docs/getting-started/install-agent-on-windows.md b/docs/user/getting-started/install-agent-on-windows.md similarity index 86% rename from docs/getting-started/install-agent-on-windows.md rename to docs/user/getting-started/install-agent-on-windows.md index a8fc8dbd504c..dbb43d394064 100644 --- a/docs/getting-started/install-agent-on-windows.md +++ b/docs/user/getting-started/install-agent-on-windows.md @@ -5,7 +5,13 @@ weight = 120 # Install Agent on Windows -The installer will install Grafana Agent into the default directory `C:\Program Files\Grafana Agent`. The [windows_exporter integration](https://github.com/prometheus-community/windows_exporter) can be enabled with all default windows_exporter options. +The installer will install Grafana Agent into the default directory `C:\Program Files\Grafana Agent`. +The [windows_exporter integration](https://github.com/prometheus-community/windows_exporter) +can be enabled with all default windows_exporter options. The installer can be +found by either: + +1. Downloading the `grafana-agent-installer.exe` asset from the current [release](https://github.com/grafana/agent/releases/latest) page. +2. Downloading the `grafana-agent-installer.exe` asset directly from https://github.com/grafana/agent/releases/latest/download/grafana-agent-installer.exe. ## Installation diff --git a/docs/operation-guide/_index.md b/docs/user/operation-guide/_index.md similarity index 100% rename from docs/operation-guide/_index.md rename to docs/user/operation-guide/_index.md diff --git a/docs/operator/_index.md b/docs/user/operator/_index.md similarity index 100% rename from docs/operator/_index.md rename to docs/user/operator/_index.md diff --git a/docs/operator/add-custom-scrape-jobs.md b/docs/user/operator/add-custom-scrape-jobs.md similarity index 100% rename from docs/operator/add-custom-scrape-jobs.md rename to docs/user/operator/add-custom-scrape-jobs.md diff --git a/docs/operator/architecture.md b/docs/user/operator/architecture.md similarity index 100% rename from docs/operator/architecture.md rename to docs/user/operator/architecture.md diff --git a/docs/operator/custom-resource-quickstart.md b/docs/user/operator/custom-resource-quickstart.md similarity index 96% rename from docs/operator/custom-resource-quickstart.md rename to docs/user/operator/custom-resource-quickstart.md index 084d1b47a06a..36fdb7c68c16 100644 --- a/docs/operator/custom-resource-quickstart.md +++ b/docs/user/operator/custom-resource-quickstart.md @@ -43,7 +43,7 @@ metadata: labels: app: grafana-agent spec: - image: grafana/agent:v0.22.0 + image: grafana/agent:v0.23.0 logLevel: info serviceAccountName: grafana-agent metrics: @@ -116,7 +116,7 @@ subjects: namespace: default ``` -This creates a ServiceAccount, ClusterRole, and ClusterRoleBinding for the GrafanaAgent resource. It also creates a GrafanaAgent resource and specifies an Agent image version. Finally, the GrafanaAgent resource specifies `MetricsInstance` and `LogsInstance` selectors. These search for MetricsInstances and LogsInstances in the same namespace with labels matching `agent: grafana-agent-metrics` and `agent: grafana-agent-logs`, respectively. It also sets a `cluster: cloud` label for all metrics shipped your Prometheus-compatible endpoint. You should change this label to your desired cluster name. +This creates a ServiceAccount, ClusterRole, and ClusterRoleBinding for the GrafanaAgent resource. It also creates a GrafanaAgent resource and specifies an Agent image version. Finally, the GrafanaAgent resource specifies `MetricsInstance` and `LogsInstance` selectors. These search for MetricsInstances and LogsInstances in the **same namespace** with labels matching `agent: grafana-agent-metrics` and `agent: grafana-agent-logs`, respectively. It also sets a `cluster: cloud` label for all metrics shipped your Prometheus-compatible endpoint. You should change this label to your desired cluster name. To search for MetricsInstances or LogsInstances in a *different* namespace, please use the `instanceNamespaceSelector` field. To learn more about this field, please consult the `GrafanaAgent` [CRD specification](https://github.com/grafana/agent/blob/main/production/operator/crds/monitoring.grafana.com_grafanaagents.yaml#L3789). The full hierarchy of custom resources is as follows: diff --git a/docs/operator/getting-started.md b/docs/user/operator/getting-started.md similarity index 97% rename from docs/operator/getting-started.md rename to docs/user/operator/getting-started.md index 2438a0846534..b2769238524d 100644 --- a/docs/operator/getting-started.md +++ b/docs/user/operator/getting-started.md @@ -72,7 +72,7 @@ spec: serviceAccountName: grafana-agent-operator containers: - name: operator - image: grafana/agent-operator:v0.22.0 + image: grafana/agent-operator:v0.23.0 args: - --kubelet-service=default/kubelet --- @@ -144,7 +144,7 @@ Running locally uses your current kubectl context, and you probably don't want to accidentally deploy a new Grafana Agent to prod. CRDs should be installed on the cluster prior to running locally. If you haven't -done this yet, follow [deploying CustomResourceDefinitions](#deploying-customresourcedefinitions) +done this yet, follow [deploying CustomResourceDefinitions](#step-1-deploy-customresourcedefinitions) first. Afterwards, you can run the operator using `go run`: diff --git a/docs/operator/helm-getting-started.md b/docs/user/operator/helm-getting-started.md similarity index 100% rename from docs/operator/helm-getting-started.md rename to docs/user/operator/helm-getting-started.md diff --git a/docs/scraping-service/_index.md b/docs/user/scraping-service/_index.md similarity index 100% rename from docs/scraping-service/_index.md rename to docs/user/scraping-service/_index.md diff --git a/docs/upgrade-guide/_index.md b/docs/user/upgrade-guide/_index.md similarity index 100% rename from docs/upgrade-guide/_index.md rename to docs/user/upgrade-guide/_index.md diff --git a/example/k3d/README.md b/example/k3d/README.md index e46fb3ffa279..715a10553c5e 100644 --- a/example/k3d/README.md +++ b/example/k3d/README.md @@ -46,7 +46,13 @@ The smoke test environment is used to validate samples end to end. Smoke Test environment is invoked via `/scripts/smoke-test.bash` -This tool will spin up cluster of Grafana Agent, Cortex, Avalanche and [Crow](../../cmd/grafana-agent-crow/README.md) instances. The tool will then periodically kill instances and check for any failed alerts. At the end of the duration (default 3h) it will end the testing. +This tool will spin up cluster of Grafana Agent, Cortex, Avalanche, Smoke and [Crow](../../tools/crow/README.md) instances. The Smoke deployment will then periodically kill instances and check for any failed alerts. At the end of the duration (default 3h) it will end the testing. + +For users who do not have access to the `us.gcr.io/kubernetes-dev` container registry, you will need to build the Smoke and Crow images locally before running the smoke test. + +``` +make grafana-agent-crow-image agent-smoke-image +``` ### What to look for? @@ -70,7 +76,7 @@ If at the end of the test any issues are found they will look similar to the bel ### How to trigger an alert? -Changing the avalanche setting for label_count to 1000, located [here](./lib/avalanche/main.libsonnet). This will ensure the [GrafanaAgentMemHigh](http://prometheus.k3d.localhost:50080/graph?g0.expr=ALERTS%7Balertname%3D%22GrafanaAgentMemHigh%22%7D&g0.tab=1&g0.stacked=0&g0.show_exemplars=0.g0.range_input=1h.) alert exceeds the limit. +Changing the avalanche setting for label_count to 1000, located [here](../../production/tanka/grafana-agent/smoke/avalanche/main.libsonnet). This will ensure the [GrafanaAgentMemHigh](http://prometheus.k3d.localhost:50080/graph?g0.expr=ALERTS%7Balertname%3D%22GrafanaAgentMemHigh%22%7D&g0.tab=1&g0.stacked=0&g0.show_exemplars=0.g0.range_input=1h.) alert exceeds the limit. ![](./assets/trigger_change.png) @@ -84,6 +90,7 @@ By default, a k3d cluster will be created running the following instances - crow-single - serves the single agent - cortex - avalanche - selection of avalanche instances serving traffic +- smoke - scales avalanche replicas and introduces chaos by deleting agent pods during testing Crow instance will check to see if the metrics that were scraped shows up in the prometheus endpoint and then will emit metrics on the success of those metrics. This success/failure result will trigger an alert if it is incorrect. diff --git a/example/k3d/environment/main.jsonnet b/example/k3d/environment/main.jsonnet index e5766fbe46a2..53658d08ae4a 100644 --- a/example/k3d/environment/main.jsonnet +++ b/example/k3d/environment/main.jsonnet @@ -1,6 +1,6 @@ local collector = import 'collector/main.libsonnet'; local default = import 'default/main.libsonnet'; -local etcd = import 'etcd/main.libsonnet'; +local etcd = import 'grafana-agent/smoke/etcd/main.libsonnet'; local agent_cluster = import 'grafana-agent/scraping-svc/main.libsonnet'; local k = import 'ksonnet-util/kausal.libsonnet'; local load_generator = import 'load-generator/main.libsonnet'; diff --git a/example/k3d/jsonnetfile.lock.json b/example/k3d/jsonnetfile.lock.json index 2537becf63bd..0cd970b024a2 100644 --- a/example/k3d/jsonnetfile.lock.json +++ b/example/k3d/jsonnetfile.lock.json @@ -18,8 +18,8 @@ "subdir": "grafonnet" } }, - "version": "0d4f64154ee2024820396aa66841a64d851302b0", - "sum": "1DvaFCCiwjI9624YYhLPdwiEPDvLsrCOES0aBxr7wrM=" + "version": "3626fc4dc2326931c530861ac5bebe39444f6cbf", + "sum": "gF8foHByYcB25jcUOBqP6jxk0OPifQMjPvKY0HaCk6w=" }, { "source": { diff --git a/example/k3d/lib/crow/main.libsonnet b/example/k3d/lib/crow/main.libsonnet index 29268714461c..10dbf3d0fa46 100644 --- a/example/k3d/lib/crow/main.libsonnet +++ b/example/k3d/lib/crow/main.libsonnet @@ -14,8 +14,9 @@ local volume = k.core.v1.volume; local this = self, _config+:: { - image: 'grafana/agent-crow:latest', + image: 'us.gcr.io/kubernetes-dev/grafana/agent-crow:main', args: {}, + pull_secret: '', } + config, container:: @@ -27,6 +28,7 @@ local volume = k.core.v1.volume; deployment: deployment.new(name, 1, [self.container]) + - deployment.mixin.metadata.withNamespace(namespace), + deployment.mixin.metadata.withNamespace(namespace) + + deployment.spec.template.spec.withImagePullSecrets({ name: this._config.pull_secret }), }, } diff --git a/example/k3d/scripts/smoke-test.bash b/example/k3d/scripts/smoke-test.bash index 36059107d3ce..a0d45a4b023e 100755 --- a/example/k3d/scripts/smoke-test.bash +++ b/example/k3d/scripts/smoke-test.bash @@ -35,14 +35,13 @@ set -euo pipefail # Constants ROOT=$(git rev-parse --show-toplevel) K3D_CLUSTER_NAME="agent-smoke-test" -MUTATION_FREQUENCY="5m" -CHAOS_FREQUENCY="30m" +SKIP_CREATE="" # Variables # Which function will be called ENTRYPOINT="run" -TEST_DURATION="3h" +TEST_DURATION="10800" IMPORT_IMAGES="" while getopts "dt:ish" opt; do @@ -85,18 +84,13 @@ run() { k3d image import -c $K3D_CLUSTER_NAME \ grafana/agent:main \ grafana/agentctl:main \ - grafana/agent-crow:main + us.gcr.io/kubernetes-dev/grafana/agent-crow:main \ + us.gcr.io/kubernetes-dev/grafana/agent-smoke:main fi (cd $ROOT/example/k3d && jb install) tk apply $ROOT/example/k3d/smoke --dangerous-auto-approve - echo "--- Spawning background tasks" - mutation_loop & - MUTATION_PID=$! - chaos_loop & - CHAOS_PID=$! - # Immediately create a job to sync configs so our two Agent deployments # are synced up as closely as possible. kubectl --context=k3d-$K3D_CLUSTER_NAME --namespace=smoke \ @@ -106,10 +100,11 @@ run() { echo "Your environment is now running for the next $TEST_DURATION." echo "Grafana URL: http://grafana.k3d.localhost:50080" echo "Prometheus URL: http://prometheus.k3d.localhost:50080" + echo "Check smoke test logs: " + echo " kubectl logs --namespace=smoke -f deployment/smoke-test" sleep $TEST_DURATION - echo "--- Stopping background tasks" - kill $CHAOS_PID $MUTATION_PID + kubectl scale -n smoke --replicas=0 deployment/smoke-test echo "Smoke tests complete!" echo "Grafana URL: http://grafana.k3d.localhost:50080" @@ -120,35 +115,6 @@ run() { get_results } -# mutation_loop changes the number of replicas of Avalanche servers -# randomly between 0-10 replicas (inclusive) every $MUTATION_FREQUENCY. -mutation_loop() { - while true; do - sleep $MUTATION_FREQUENCY - - NEW_REPLICAS=$(($RANDOM % 11)) - echo "--- Scaling Avalanche to $NEW_REPLICAS replicas" - kubectl --context=k3d-$K3D_CLUSTER_NAME --namespace=smoke \ - scale --replicas=$NEW_REPLICAS deployment/avalanche - done -} - -# chaos loop deletes pods every $CHAOS_FREQUENCY. -chaos_loop() { - while true; do - sleep $CHAOS_FREQUENCY - - echo "--- Force deleting pod/grafana-agent-0" - kubectl --context=k3d-$K3D_CLUSTER_NAME --namespace=smoke \ - delete --grace-period=0 --force pod/grafana-agent-0 - - REPLICA=$(($RANDOM % 3)) - echo "--- Force deleting pod/agent-cluster-$REPLICA" - kubectl --context=k3d-$K3D_CLUSTER_NAME --namespace=smoke \ - delete --grace-period=0 --force pod/grafana-agent-cluster-$REPLICA - done -} - get_results() { NUM_ALERTS=$(curl -s -G \ -H "Host: prometheus.k3d.localhost" \ @@ -156,7 +122,6 @@ get_results() { 'http://localhost:50080/api/v1/query' \ | jq '.data.result | length' \ ) - if test $NUM_ALERTS -ne 0; then echo "FAIL: $NUM_ALERTS alerts found over the last $TEST_DURATION." echo "More information: http://prometheus.k3d.localhost:50080/graph?g0.expr=count_over_time(ALERTS{alertstate%3D%22firing%22}[$TEST_DURATION])" diff --git a/example/k3d/smoke/main.jsonnet b/example/k3d/smoke/main.jsonnet index df4dcf8f4dc2..31e74f5dd65b 100644 --- a/example/k3d/smoke/main.jsonnet +++ b/example/k3d/smoke/main.jsonnet @@ -1,8 +1,9 @@ local monitoring = import './monitoring/main.jsonnet'; -local avalanche = import 'avalanche/main.libsonnet'; local cortex = import 'cortex/main.libsonnet'; -local crow = import 'crow/main.libsonnet'; -local etcd = import 'etcd/main.libsonnet'; +local avalanche = import 'grafana-agent/smoke/avalanche/main.libsonnet'; +local crow = import 'grafana-agent/smoke/crow/main.libsonnet'; +local etcd = import 'grafana-agent/smoke/etcd/main.libsonnet'; +local smoke = import 'grafana-agent/smoke/main.libsonnet'; local gragent = import 'grafana-agent/v2/main.libsonnet'; local k = import 'ksonnet-util/kausal.libsonnet'; @@ -23,6 +24,12 @@ local new_crow(name, selector) = }, }); +local new_smoke(name) = smoke.new(name, namespace='smoke', config={ + mutationFrequency: '5m', + chaosFrequency: '30m', +}); + + local smoke = { ns: namespace.new('smoke'), @@ -39,6 +46,8 @@ local smoke = { metric_interval: 600, }), + smoke_test: new_smoke('smoke-test'), + crows: [ new_crow('crow-single', 'cluster="grafana-agent"'), new_crow('crow-cluster', 'cluster="grafana-agent-cluster"'), @@ -46,7 +55,28 @@ local smoke = { local metric_instances(crow_name) = [{ name: 'crow', - remote_write: [{ url: 'http://cortex/api/prom/push' }], + remote_write: [ + { + url: 'http://cortex/api/prom/push', + write_relabel_configs: [ + { + source_labels: ['__name__'], + regex: 'avalanche_.*', + action: 'drop', + }, + ], + }, + { + url: 'http://smoke-test:19090/api/prom/push', + write_relabel_configs: [ + { + source_labels: ['__name__'], + regex: 'avalanche_.*', + action: 'keep', + }, + ], + }, + ], scrape_configs: [ { job_name: 'crow', @@ -71,7 +101,28 @@ local smoke = { ], }, { name: 'avalanche', - remote_write: [{ url: 'http://cortex/api/prom/push' }], + remote_write: [ + { + url: 'http://cortex/api/prom/push', + write_relabel_configs: [ + { + source_labels: ['__name__'], + regex: 'avalanche_.*', + action: 'drop', + }, + ], + }, + { + url: 'http://smoke-test:19090/api/prom/push', + write_relabel_configs: [ + { + source_labels: ['__name__'], + regex: 'avalanche_.*', + action: 'keep', + }, + ], + }, + ], scrape_configs: [ { job_name: 'avalanche', diff --git a/example/k3d/smoke/monitoring/main.jsonnet b/example/k3d/smoke/monitoring/main.jsonnet index fc226923f448..4e6a7738ec97 100644 --- a/example/k3d/smoke/monitoring/main.jsonnet +++ b/example/k3d/smoke/monitoring/main.jsonnet @@ -11,6 +11,7 @@ local ingress = k.networking.v1beta1.ingress; local rule = k.networking.v1beta1.ingressRule; local path = k.networking.v1beta1.httpIngressPath; + local prometheus_monitoring = import './prometheus_monitoring.libsonnet'; { diff --git a/go.mod b/go.mod index befaa6540d34..28ab3f0a15f2 100644 --- a/go.mod +++ b/go.mod @@ -41,6 +41,7 @@ require ( github.com/open-telemetry/opentelemetry-collector-contrib/exporter/jaegerexporter v0.40.0 github.com/open-telemetry/opentelemetry-collector-contrib/exporter/loadbalancingexporter v0.40.0 github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.40.0 + github.com/open-telemetry/opentelemetry-collector-contrib/extension/oauth2clientauthextension v0.40.0 github.com/open-telemetry/opentelemetry-collector-contrib/processor/attributesprocessor v0.40.0 github.com/open-telemetry/opentelemetry-collector-contrib/processor/spanmetricsprocessor v0.40.0 github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor v0.40.0 @@ -52,6 +53,7 @@ require ( github.com/opentracing-contrib/go-stdlib v1.0.0 github.com/opentracing/opentracing-go v1.2.0 github.com/percona/mongodb_exporter v0.0.0-00010101000000-000000000000 + github.com/pkg/errors v0.9.1 github.com/prometheus-community/elasticsearch_exporter v1.2.1 github.com/prometheus-community/postgres_exporter v0.10.0 github.com/prometheus-community/windows_exporter v0.0.0-00010101000000-000000000000 @@ -226,8 +228,7 @@ require ( github.com/hashicorp/go-hclog v0.16.2 // indirect github.com/hashicorp/go-immutable-radix v1.3.1 // indirect github.com/hashicorp/go-msgpack v0.5.5 // indirect - github.com/hashicorp/go-plugin v1.4.3 // indirect - github.com/hashicorp/go-retryablehttp v0.7.0 // indirect + github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/go-rootcerts v1.0.2 // indirect github.com/hashicorp/go-secure-stdlib/mlock v0.1.1 // indirect github.com/hashicorp/go-secure-stdlib/parseutil v0.1.1 // indirect @@ -453,7 +454,7 @@ replace ( github.com/percona/mongodb_exporter => github.com/grafana/mongodb_exporter v0.20.8-0.20211006135645-bef0f0239601 github.com/percona/percona-toolkit => github.com/rlankfo/percona-toolkit v0.0.0-20211028191359-7aada1bf148f github.com/prometheus-community/postgres_exporter => github.com/grafana/postgres_exporter v0.8.1-0.20210722175051-db35d7c2f520 - github.com/prometheus-community/windows_exporter => github.com/grafana/windows_exporter v0.15.1-0.20211019183116-592dfa92f9fd + github.com/prometheus-community/windows_exporter => github.com/grafana/windows_exporter v0.15.1-0.20220202211901-871715ba0b43 github.com/prometheus/mysqld_exporter => github.com/grafana/mysqld_exporter v0.12.2-0.20201015182516-5ac885b2d38a github.com/prometheus/statsd_exporter => github.com/grafana/statsd_exporter v0.18.1-0.20211118164740-8e806158da0b ) diff --git a/pkg/config/config.go b/pkg/config/config.go index e47d2b9f49ab..35c326dea9aa 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -2,6 +2,7 @@ package config import ( "bytes" + "errors" "flag" "fmt" "io/ioutil" @@ -20,7 +21,6 @@ import ( "github.com/grafana/agent/pkg/util" "github.com/grafana/dskit/kv/consul" "github.com/grafana/dskit/kv/etcd" - "github.com/pkg/errors" "github.com/prometheus/common/config" "github.com/prometheus/common/version" "github.com/stretchr/testify/require" diff --git a/pkg/crow/crow.go b/pkg/crow/crow.go index 0d49a12b7f42..2b670dd1bc8b 100644 --- a/pkg/crow/crow.go +++ b/pkg/crow/crow.go @@ -21,6 +21,7 @@ import ( promapi "github.com/prometheus/client_golang/api/prometheus/v1" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promhttp" + commonCfg "github.com/prometheus/common/config" "github.com/prometheus/common/model" "github.com/weaveworks/common/user" ) @@ -29,8 +30,10 @@ import ( type Config struct { PrometheusAddr string // Base URL of Prometheus server NumSamples int // Number of samples to generate - UserID string // User ID to use when querying. + UserID string // User ID to use for auth when querying. + PasswordFile string // Password File for auth when querying. ExtraSelectors string // Extra selectors for queries, i.e., cluster="prod" + OrgID string // Org ID to inject in X-Org-ScopeID header when querying. // Querying Params @@ -59,8 +62,10 @@ func (c *Config) RegisterFlags(f *flag.FlagSet) { func (c *Config) RegisterFlagsWithPrefix(f *flag.FlagSet, prefix string) { f.StringVar(&c.PrometheusAddr, prefix+"prometheus-addr", DefaultConfig.PrometheusAddr, "Root URL of the Prometheus API to query against") f.IntVar(&c.NumSamples, prefix+"generate-samples", DefaultConfig.NumSamples, "Number of samples to generate when being scraped") - f.StringVar(&c.UserID, prefix+"user-id", DefaultConfig.UserID, "UserID to attach to query. Useful for querying multi-tenated Cortex.") + f.StringVar(&c.UserID, prefix+"user-id", DefaultConfig.UserID, "UserID to use with basic auth.") + f.StringVar(&c.PasswordFile, prefix+"password-file", DefaultConfig.PasswordFile, "Password file to use with basic auth.") f.StringVar(&c.ExtraSelectors, prefix+"extra-selectors", DefaultConfig.ExtraSelectors, "Extra selectors to include in queries, useful for identifying different instances of this job.") + f.StringVar(&c.OrgID, prefix+"org-id", DefaultConfig.OrgID, "Org ID to inject in X-Org-ScopeID header when querying. Useful for querying multi-tenated Cortex directly.") f.DurationVar(&c.QueryTimeout, prefix+"query-timeout", DefaultConfig.QueryTimeout, "timeout for querying") f.DurationVar(&c.QueryDuration, prefix+"query-duration", DefaultConfig.QueryDuration, "time before and after sample to search") @@ -143,18 +148,21 @@ func newCrow(cfg Config) (*Crow, error) { } apiCfg := api.Config{ - Address: cfg.PrometheusAddr, + Address: cfg.PrometheusAddr, + RoundTripper: api.DefaultRoundTripper, } - if cfg.UserID != "" { + if cfg.UserID != "" && cfg.PasswordFile != "" { + apiCfg.RoundTripper = commonCfg.NewBasicAuthRoundTripper(cfg.UserID, "", cfg.PasswordFile, api.DefaultRoundTripper) + } + if cfg.OrgID != "" { apiCfg.RoundTripper = &nethttp.Transport{ RoundTripper: promhttp.RoundTripperFunc(func(req *http.Request) (*http.Response, error) { - _ = user.InjectOrgIDIntoHTTPRequest(user.InjectOrgID(context.Background(), cfg.UserID), req) - return api.DefaultRoundTripper.RoundTrip(req) + _ = user.InjectOrgIDIntoHTTPRequest(user.InjectOrgID(context.Background(), cfg.OrgID), req) + return apiCfg.RoundTripper.RoundTrip(req) }), } - } else { - apiCfg.RoundTripper = &nethttp.Transport{} } + cli, err := api.NewClient(apiCfg) if err != nil { return nil, fmt.Errorf("failed to create prometheus client: %w", err) @@ -285,7 +293,7 @@ func (c *Crow) validate(b *sample) error { }) if err != nil { - level.Error(c.cfg.Log).Log("msg", "failed to query for sample", "query", "err", err) + level.Error(c.cfg.Log).Log("msg", "failed to query for sample", "query", query, "err", err) } else if m, ok := val.(model.Matrix); ok { return c.validateInMatrix(query, b, m) } diff --git a/pkg/integrations/cadvisor/common.go b/pkg/integrations/cadvisor/common.go index 6d5d0b5eb70a..efd5df363860 100644 --- a/pkg/integrations/cadvisor/common.go +++ b/pkg/integrations/cadvisor/common.go @@ -9,7 +9,7 @@ import ( const name = "cadvisor" // DefaultConfig holds the default settings for the cadvisor integration -var DefaultConfig Config = Config{ +var DefaultConfig = Config{ // Common cadvisor config defaults StoreContainerLabels: true, ResctrlInterval: 0, diff --git a/pkg/integrations/dnsmasq_exporter/dnsmasq_exporter.go b/pkg/integrations/dnsmasq_exporter/dnsmasq_exporter.go index 93dd2ee1f837..3f89ec2d842a 100644 --- a/pkg/integrations/dnsmasq_exporter/dnsmasq_exporter.go +++ b/pkg/integrations/dnsmasq_exporter/dnsmasq_exporter.go @@ -11,7 +11,7 @@ import ( ) // DefaultConfig is the default config for dnsmasq_exporter. -var DefaultConfig Config = Config{ +var DefaultConfig = Config{ DnsmasqAddress: "localhost:53", LeasesPath: "/var/lib/misc/dnsmasq.leases", } diff --git a/pkg/integrations/github_exporter/github_exporter.go b/pkg/integrations/github_exporter/github_exporter.go index b9997eb4ee07..268c451a1d55 100644 --- a/pkg/integrations/github_exporter/github_exporter.go +++ b/pkg/integrations/github_exporter/github_exporter.go @@ -15,7 +15,7 @@ import ( ) // DefaultConfig holds the default settings for the github_exporter integration -var DefaultConfig Config = Config{ +var DefaultConfig = Config{ APIURL: "https://api.github.com", } @@ -74,7 +74,6 @@ func init() { // New creates a new github_exporter integration. func New(logger log.Logger, c *Config) (integrations.Integration, error) { - conf := gh_config.Config{} err := conf.SetAPIURL(c.APIURL) if err != nil { diff --git a/pkg/integrations/install/install.go b/pkg/integrations/install/install.go index 504239b80453..5f9145f63616 100644 --- a/pkg/integrations/install/install.go +++ b/pkg/integrations/install/install.go @@ -28,4 +28,5 @@ import ( // _ "github.com/grafana/agent/pkg/integrations/v2/agent" // register agent + _ "github.com/grafana/agent/pkg/integrations/v2/eventhandler" ) diff --git a/pkg/integrations/manager_test.go b/pkg/integrations/manager_test.go index 88325dfb874f..ffd44dbb8100 100644 --- a/pkg/integrations/manager_test.go +++ b/pkg/integrations/manager_test.go @@ -36,8 +36,8 @@ use_hostname_label: true ` var ( cfg ManagerConfig - listenPort int = 12345 - listenHost string = "127.0.0.1" + listenPort = 12345 + listenHost = "127.0.0.1" ) require.NoError(t, yaml.Unmarshal([]byte(cfgText), &cfg)) @@ -66,8 +66,8 @@ test: ` var ( cfg ManagerConfig - listenPort int = 12345 - listenHost string = "127.0.0.1" + listenPort = 12345 + listenHost = "127.0.0.1" ) require.NoError(t, yaml.Unmarshal([]byte(cfgText), &cfg)) @@ -89,8 +89,8 @@ agent: var ( cfg ManagerConfig - listenPort int = 12345 - listenHost string = "127.0.0.1" + listenPort = 12345 + listenHost = "127.0.0.1" ) require.NoError(t, yaml.Unmarshal([]byte(cfgText), &cfg)) diff --git a/pkg/integrations/memcached_exporter/memcached_exporter.go b/pkg/integrations/memcached_exporter/memcached_exporter.go index c117528450bf..93d79871dc09 100644 --- a/pkg/integrations/memcached_exporter/memcached_exporter.go +++ b/pkg/integrations/memcached_exporter/memcached_exporter.go @@ -12,7 +12,7 @@ import ( ) // DefaultConfig is the default config for memcached_exporter. -var DefaultConfig Config = Config{ +var DefaultConfig = Config{ MemcachedAddress: "localhost:11211", Timeout: time.Second, } diff --git a/pkg/integrations/mongodb_exporter/mongodb_exporter.go b/pkg/integrations/mongodb_exporter/mongodb_exporter.go index e666d54c2b34..905ffcef58cc 100644 --- a/pkg/integrations/mongodb_exporter/mongodb_exporter.go +++ b/pkg/integrations/mongodb_exporter/mongodb_exporter.go @@ -20,7 +20,6 @@ type Config struct { // UnmarshalYAML implements yaml.Unmarshaler for Config func (c *Config) UnmarshalYAML(unmarshal func(interface{}) error) error { - type plain Config return unmarshal((*plain)(c)) } diff --git a/pkg/integrations/postgres_exporter/postgres_test.go b/pkg/integrations/postgres_exporter/postgres_test.go index 0b6bbe8963b1..e3a74f7bbc57 100644 --- a/pkg/integrations/postgres_exporter/postgres_test.go +++ b/pkg/integrations/postgres_exporter/postgres_test.go @@ -17,5 +17,4 @@ integrations: ` config.CheckSecret(t, stringCfg, "secret_password_in_uri") config.CheckSecret(t, stringCfg, "secret_password_in_uri_2") - } diff --git a/pkg/integrations/redis_exporter/redis_exporter.go b/pkg/integrations/redis_exporter/redis_exporter.go index 2a71d35c1e44..1661ee5a86ca 100644 --- a/pkg/integrations/redis_exporter/redis_exporter.go +++ b/pkg/integrations/redis_exporter/redis_exporter.go @@ -144,9 +144,7 @@ func New(log log.Logger, c *Config) (integrations.Integration, error) { if (c.TLSClientKeyFile != "") != (c.TLSClientCertFile != "") { return nil, errors.New("TLS client key file and cert file should both be present") - } - if c.TLSClientKeyFile != "" && c.TLSClientCertFile != "" { - + } else if c.TLSClientKeyFile != "" && c.TLSClientCertFile != "" { exporterConfig.ClientKeyFile = c.TLSClientKeyFile exporterConfig.ClientCertFile = c.TLSClientCertFile } diff --git a/pkg/integrations/redis_exporter/redis_exporter_test.go b/pkg/integrations/redis_exporter/redis_exporter_test.go index 49391bae0cbc..2830c0657f40 100644 --- a/pkg/integrations/redis_exporter/redis_exporter_test.go +++ b/pkg/integrations/redis_exporter/redis_exporter_test.go @@ -104,7 +104,6 @@ func TestRedisCases(t *testing.T) { logger := log.NewNopLogger() for _, test := range tt { - t.Run(test.name, func(t *testing.T) { integration, err := New(logger, &test.cfg) @@ -151,7 +150,6 @@ func TestRedisCases(t *testing.T) { require.True(t, exists, "could not find metric %s", metric) } }) - } } diff --git a/pkg/integrations/v2/autoscrape/autoscrape.go b/pkg/integrations/v2/autoscrape/autoscrape.go index a5d986273bd4..70b7fbd89cbd 100644 --- a/pkg/integrations/v2/autoscrape/autoscrape.go +++ b/pkg/integrations/v2/autoscrape/autoscrape.go @@ -19,7 +19,7 @@ import ( ) // DefaultGlobal holds default values for Global. -var DefaultGlobal Global = Global{ +var DefaultGlobal = Global{ Enable: true, MetricsInstance: "default", } @@ -197,8 +197,8 @@ func newInstanceScraper( s InstanceStore, instanceName string, ) *instanceScraper { - ctx, cancel := context.WithCancel(ctx) + ctx, cancel := context.WithCancel(ctx) l = log.With(l, "target_instance", instanceName) sd := discovery.NewManager(ctx, l, discovery.Name("autoscraper/"+instanceName)) diff --git a/pkg/integrations/v2/autoscrape/autoscrape_test.go b/pkg/integrations/v2/autoscrape/autoscrape_test.go index c813b678a5f8..2e9a5e9e73eb 100644 --- a/pkg/integrations/v2/autoscrape/autoscrape_test.go +++ b/pkg/integrations/v2/autoscrape/autoscrape_test.go @@ -3,7 +3,6 @@ package autoscrape import ( "context" "net/http/httptest" - "sync/atomic" "testing" "time" @@ -15,10 +14,10 @@ import ( "github.com/prometheus/prometheus/discovery" "github.com/prometheus/prometheus/pkg/exemplar" "github.com/prometheus/prometheus/pkg/labels" - "github.com/prometheus/prometheus/scrape" "github.com/prometheus/prometheus/storage" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "go.uber.org/atomic" ) // TestAutoscrape is a basic end-to-end test of the autoscraper. @@ -69,15 +68,15 @@ func TestAutoscrape(t *testing.T) { require.NoError(t, wt.Wait(5*time.Second), "timed out waiting for scrape") } -var globalRef uint64 +var globalRef atomic.Uint64 var noOpAppender = mockAppender{ AppendFunc: func(ref uint64, l labels.Labels, t int64, v float64) (uint64, error) { - return atomic.AddUint64(&globalRef, 1), nil + return globalRef.Inc(), nil }, CommitFunc: func() error { return nil }, RollbackFunc: func() error { return nil }, AppendExemplarFunc: func(ref uint64, l labels.Labels, e exemplar.Exemplar) (uint64, error) { - return atomic.AddUint64(&globalRef, 1), nil + return globalRef.Inc(), nil }, } @@ -98,11 +97,8 @@ func (ma *mockAppender) AppendExemplar(ref uint64, l labels.Labels, e exemplar.E } type mockInstance struct { + instance.NoOpInstance app storage.Appender } -func (mi *mockInstance) Run(ctx context.Context) error { return nil } -func (mi *mockInstance) Update(c instance.Config) error { return nil } -func (mi *mockInstance) TargetsActive() map[string][]*scrape.Target { return nil } -func (mi *mockInstance) StorageDirectory() string { return "" } func (mi *mockInstance) Appender(ctx context.Context) storage.Appender { return mi.app } diff --git a/pkg/integrations/v2/common/metrics.go b/pkg/integrations/v2/common/metrics.go index 6a670f47d745..405180846bb4 100644 --- a/pkg/integrations/v2/common/metrics.go +++ b/pkg/integrations/v2/common/metrics.go @@ -2,6 +2,7 @@ package common import ( "github.com/grafana/agent/pkg/integrations/v2/autoscrape" + "github.com/prometheus/prometheus/pkg/labels" ) // MetricsConfig is a set of common options shared by metrics integrations. It @@ -14,6 +15,7 @@ import ( type MetricsConfig struct { Autoscrape autoscrape.Config `yaml:"autoscrape,omitempty"` InstanceKey *string `yaml:"instance,omitempty"` + ExtraLabels labels.Labels `yaml:"extra_labels,omitempty"` } // ApplyDefaults applies defaults to mc. diff --git a/pkg/integrations/v2/controller_metricsintegration_test.go b/pkg/integrations/v2/controller_metricsintegration_test.go index 6ef0507c06c7..6302c21519fb 100644 --- a/pkg/integrations/v2/controller_metricsintegration_test.go +++ b/pkg/integrations/v2/controller_metricsintegration_test.go @@ -1,6 +1,7 @@ package integrations import ( + "context" "testing" "github.com/go-kit/log" @@ -21,7 +22,7 @@ import ( func Test_controller_MetricsIntegration_Targets(t *testing.T) { integrationWithTarget := func(targetName string) Integration { return mockMetricsIntegration{ - Integration: NoOpIntegration, + Integration: newWaitStartedIntegration(), TargetsFunc: func(Endpoint) []*targetgroup.Group { return []*targetgroup.Group{{ Targets: []model.LabelSet{{model.AddressLabel: model.LabelValue(targetName)}}, @@ -40,6 +41,18 @@ func Test_controller_MetricsIntegration_Targets(t *testing.T) { }), } + // waitIntegrations starts a controller and waits for all of its integrations + // to run. + waitIntegrations := func(t *testing.T, ctrl *controller) { + t.Helper() + _ = newSyncController(t, ctrl) + err := ctrl.forEachIntegration("/", func(ci *controlledIntegration, _ string) { + wsi := ci.i.(mockMetricsIntegration).Integration.(*waitStartedIntegration) + _ = wsi.trigger.WaitContext(context.Background()) + }) + require.NoError(t, err) + } + t.Run("All", func(t *testing.T) { ctrl, err := newController( util.TestLogger(t), @@ -47,7 +60,7 @@ func Test_controller_MetricsIntegration_Targets(t *testing.T) { Globals{}, ) require.NoError(t, err) - _ = newSyncController(t, ctrl) + waitIntegrations(t, ctrl) result := ctrl.Targets(Endpoint{Prefix: "/"}, TargetOptions{}) expect := []*targetGroup{ @@ -64,7 +77,7 @@ func Test_controller_MetricsIntegration_Targets(t *testing.T) { Globals{}, ) require.NoError(t, err) - _ = newSyncController(t, ctrl) + waitIntegrations(t, ctrl) result := ctrl.Targets(Endpoint{Prefix: "/"}, TargetOptions{ Integrations: []string{"a", "b"}, @@ -83,7 +96,7 @@ func Test_controller_MetricsIntegration_Targets(t *testing.T) { Globals{}, ) require.NoError(t, err) - _ = newSyncController(t, ctrl) + waitIntegrations(t, ctrl) result := ctrl.Targets(Endpoint{Prefix: "/"}, TargetOptions{ Integrations: []string{"a"}, @@ -123,9 +136,7 @@ func Test_controller_MetricsIntegration_ScrapeConfig(t *testing.T) { Globals{}, ) require.NoError(t, err) - // NOTE(rfratto): we explicitly don't run the controller here because - // ScrapeConfigs should return the list of scrape targets even when the - // integration isn't running. + _ = newSyncController(t, ctrl) result := ctrl.ScrapeConfigs("/", &http.DefaultSDConfig) expect := []*autoscrape.ScrapeConfig{ @@ -139,6 +150,20 @@ func Test_controller_MetricsIntegration_ScrapeConfig(t *testing.T) { // Tests for controller's utilization of the MetricsIntegration interface. // +type waitStartedIntegration struct { + trigger *util.WaitTrigger +} + +func newWaitStartedIntegration() *waitStartedIntegration { + return &waitStartedIntegration{trigger: util.NewWaitTrigger()} +} + +func (i *waitStartedIntegration) RunIntegration(ctx context.Context) error { + i.trigger.Trigger() + <-ctx.Done() + return nil +} + type mockMetricsIntegration struct { Integration TargetsFunc func(ep Endpoint) []*targetgroup.Group diff --git a/pkg/integrations/v2/controller_test.go b/pkg/integrations/v2/controller_test.go index 5c8654812540..74d54f5e48d5 100644 --- a/pkg/integrations/v2/controller_test.go +++ b/pkg/integrations/v2/controller_test.go @@ -173,57 +173,46 @@ func Test_controller_SingletonCheck(t *testing.T) { } type syncController struct { - inner *controller - applyWg sync.WaitGroup - - stop context.CancelFunc - exitedCh chan struct{} + inner *controller + pool *workerPool } -// newSyncController makes calls to Controller synchronous. newSyncController -// will start running the inner controller and wait for it to update. +// newSyncController pairs an unstarted controller with a manually managed +// worker pool to synchronously apply integrations. func newSyncController(t *testing.T, inner *controller) *syncController { t.Helper() - ctx, cancel := context.WithCancel(context.Background()) - t.Cleanup(func() { - cancel() - }) - sc := &syncController{ - inner: inner, - stop: cancel, - exitedCh: make(chan struct{}), + inner: inner, + pool: newWorkerPool(context.Background(), inner.logger), } - inner.onUpdateDone = sc.applyWg.Done // Inform WG whenever an apply finishes - // There's always immediately ony applied queued from any successfully created controller. - sc.applyWg.Add(1) + // There's always immediately one queued integration set from any + // successfully created controller. + sc.refresh() + return sc +} - go func() { - inner.run(ctx) - close(sc.exitedCh) - }() +func (sc *syncController) refresh() { + sc.inner.mut.Lock() + defer sc.inner.mut.Unlock() - sc.applyWg.Wait() - return sc + newIntegrations := <-sc.inner.runIntegrations + sc.pool.Reload(newIntegrations) + sc.inner.integrations = newIntegrations } func (sc *syncController) UpdateController(c controllerConfig, g Globals) error { - sc.applyWg.Add(1) - - if err := sc.inner.UpdateController(c, g); err != nil { - sc.applyWg.Done() // The wg won't ever be finished now + err := sc.inner.UpdateController(c, g) + if err != nil { return err } - - sc.applyWg.Wait() + sc.refresh() return nil } func (sc *syncController) Stop() { - sc.stop() - <-sc.exitedCh + sc.pool.Close() } const mockIntegrationName = "mock" diff --git a/pkg/integrations/v2/eventhandler/eventhandler.go b/pkg/integrations/v2/eventhandler/eventhandler.go new file mode 100644 index 000000000000..36de2d4732e9 --- /dev/null +++ b/pkg/integrations/v2/eventhandler/eventhandler.go @@ -0,0 +1,424 @@ +// Package eventhandler watches for Kubernetes Event objects and hands them off to +// Agent's Logs subsystem (embedded promtail) +package eventhandler + +import ( + "context" + "encoding/json" + "fmt" + "io/ioutil" + "os" + "path/filepath" + "strings" + "sync" + "time" + + v1 "k8s.io/api/core/v1" + "k8s.io/client-go/informers" + "k8s.io/client-go/kubernetes" + "k8s.io/client-go/rest" + "k8s.io/client-go/tools/cache" + "k8s.io/client-go/tools/clientcmd" + "k8s.io/client-go/util/homedir" + + "github.com/go-kit/log" + "github.com/go-kit/log/level" + "github.com/grafana/agent/pkg/integrations/v2" + "github.com/grafana/agent/pkg/logs" + "github.com/grafana/loki/clients/pkg/promtail/api" + "github.com/grafana/loki/pkg/logproto" + "github.com/prometheus/common/model" +) + +const ( + cacheFileMode = 0600 +) + +// EventHandler watches for Kubernetes Event objects and hands them off to +// Agent's logs subsystem (embedded promtail). +type EventHandler struct { + LogsClient *logs.Logs + LogsInstance string + Log log.Logger + CachePath string + LastEvent *ShippedEvents + InitEvent *ShippedEvents + EventInformer cache.SharedIndexInformer + SendTimeout time.Duration + ticker *time.Ticker + sync.Mutex +} + +// ShippedEvents stores a timestamp and map of event ResourceVersions shipped for that timestamp. +// Used to avoid double-shipping events upon restart. +type ShippedEvents struct { + // shipped event's timestamp + Timestamp time.Time `json:"ts"` + // map of event RVs (resource versions) already "shipped" (handed off) for this timestamp. + // this is to handle the case of a timestamp having multiple events, + // which happens quite frequently. + RvMap map[string]struct{} `json:"resourceVersion"` +} + +func newEventHandler(l log.Logger, globals integrations.Globals, c *Config) (integrations.Integration, error) { + var ( + config *rest.Config + err error + factory informers.SharedInformerFactory + ) + + // Try using KubeconfigPath or inClusterConfig + config, err = clientcmd.BuildConfigFromFlags("", c.KubeconfigPath) + if err != nil { + level.Error(l).Log("msg", "Loading from KubeconfigPath or inClusterConfig failed", "err", err) + // Trying default home location + if home := homedir.HomeDir(); home != "" { + kubeconfigPath := filepath.Join(home, ".kube", "config") + config, err = clientcmd.BuildConfigFromFlags("", kubeconfigPath) + if err != nil { + level.Error(l).Log("msg", "Could not load a kubeconfig", "err", err) + return nil, err + } + } else { + err = fmt.Errorf("could not load a kubeconfig") + return nil, err + } + } + + clientset, err := kubernetes.NewForConfig(config) + if err != nil { + return nil, err + } + + // get an informer + if c.Namespace == "" { + factory = informers.NewSharedInformerFactory(clientset, time.Duration(c.InformerResync)*time.Second) + } else { + factory = informers.NewSharedInformerFactoryWithOptions(clientset, time.Duration(c.InformerResync)*time.Second, informers.WithNamespace(c.Namespace)) + } + + eventInformer := factory.Core().V1().Events().Informer() + + eh := &EventHandler{ + LogsClient: globals.Logs, + LogsInstance: c.LogsInstance, + Log: l, + CachePath: c.CachePath, + EventInformer: eventInformer, + SendTimeout: time.Duration(c.SendTimeout) * time.Second, + } + // set the resource handler fns + eh.initInformer(eventInformer) + eh.ticker = time.NewTicker(time.Duration(c.FlushInterval) * time.Second) + return eh, nil +} + +// Initialize informer by setting event handler fns +func (eh *EventHandler) initInformer(eventsInformer cache.SharedIndexInformer) { + eventsInformer.AddEventHandler(cache.ResourceEventHandlerFuncs{ + AddFunc: eh.addEvent, + UpdateFunc: eh.updateEvent, + DeleteFunc: eh.deleteEvent, + }) +} + +// Handles new event objects +func (eh *EventHandler) addEvent(obj interface{}) { + event, _ := obj.(*v1.Event) + + err := eh.handleEvent(event) + if err != nil { + level.Error(eh.Log).Log("msg", "Error handling event", "err", err, "event", event) + } +} + +// Handles event object updates. Note that this get triggered on informer resyncs and also +// events occurring more than once (in which case .count is incremented) +func (eh *EventHandler) updateEvent(objOld interface{}, objNew interface{}) { + eOld, _ := objOld.(*v1.Event) + eNew, _ := objNew.(*v1.Event) + + if eOld.GetResourceVersion() == eNew.GetResourceVersion() { + // ignore resync updates + level.Debug(eh.Log).Log("msg", "Event RV didn't change, ignoring", "eRV", eNew.ResourceVersion) + return + } + + err := eh.handleEvent(eNew) + if err != nil { + level.Error(eh.Log).Log("msg", "Error handling event", "err", err, "event", eNew) + } +} + +func (eh *EventHandler) handleEvent(event *v1.Event) error { + eventTs := getTimestamp(event) + + // if event is older than the one stored in cache on startup, we've shipped it + if eventTs.Before(eh.InitEvent.Timestamp) { + return nil + } + // if event is equal and is in map, we've shipped it + if eventTs.Equal(eh.InitEvent.Timestamp) { + if _, ok := eh.InitEvent.RvMap[event.ResourceVersion]; ok { + return nil + } + } + + labels, msg, err := eh.extractEvent(event) + if err != nil { + return err + } + + entry := newEntry(msg, eventTs, labels) + ok := eh.LogsClient.Instance(eh.LogsInstance).SendEntry(entry, eh.SendTimeout) + if !ok { + err = fmt.Errorf("msg=%s entry=%s", "error handing entry off to promtail", entry) + return err + } + level.Info(eh.Log).Log("msg", "Shipped entry", "eventRV", event.ResourceVersion, "eventMsg", event.Message) + + // update cache with new "last" event + err = eh.updateLastEvent(event, eventTs) + if err != nil { + return err + } + return nil +} + +// Called when event objects are removed from etcd, can safely ignore this +func (eh *EventHandler) deleteEvent(obj interface{}) { +} + +// extract data from event fields and create labels, etc. +// TODO: ship JSON blobs and allow users to configure using pipelines etc. +// instead of hardcoding labels here +func (eh *EventHandler) extractEvent(event *v1.Event) (model.LabelSet, string, error) { + var ( + msg strings.Builder + labels = make(model.LabelSet) + ) + + obj := event.InvolvedObject + if obj.Name == "" { + return nil, "", fmt.Errorf("no involved object for event") + } + msg.WriteString(fmt.Sprintf("name=%s ", obj.Name)) + + labels[model.LabelName("namespace")] = model.LabelValue(obj.Namespace) + + // we add these fields to the log line to reduce label bloat and cardinality + if obj.Kind != "" { + msg.WriteString(fmt.Sprintf("kind=%s ", obj.Kind)) + } + if event.Action != "" { + msg.WriteString(fmt.Sprintf("action=%s ", event.Action)) + } + if obj.APIVersion != "" { + msg.WriteString(fmt.Sprintf("objectAPIversion=%s ", obj.APIVersion)) + } + if obj.ResourceVersion != "" { + msg.WriteString(fmt.Sprintf("objectRV=%s ", obj.ResourceVersion)) + } + if event.ResourceVersion != "" { + msg.WriteString(fmt.Sprintf("eventRV=%s ", event.ResourceVersion)) + } + if event.ReportingInstance != "" { + msg.WriteString(fmt.Sprintf("reportinginstance=%s ", event.ReportingInstance)) + } + if event.ReportingController != "" { + msg.WriteString(fmt.Sprintf("reportingcontroller=%s ", event.ReportingController)) + } + if event.Source.Component != "" { + msg.WriteString(fmt.Sprintf("sourcecomponent=%s ", event.Source.Component)) + } + if event.Source.Host != "" { + msg.WriteString(fmt.Sprintf("sourcehost=%s ", event.Source.Host)) + } + if event.Reason != "" { + msg.WriteString(fmt.Sprintf("reason=%s ", event.Reason)) + } + if event.Type != "" { + msg.WriteString(fmt.Sprintf("type=%s ", event.Type)) + } + if event.Count != 0 { + msg.WriteString(fmt.Sprintf("count=%d ", event.Count)) + } + + msg.WriteString(fmt.Sprintf("msg=%q", event.Message)) + + return labels, msg.String(), nil +} + +func getTimestamp(event *v1.Event) time.Time { + if !event.LastTimestamp.IsZero() { + return event.LastTimestamp.Time + } + return event.EventTime.Time +} + +func newEntry(msg string, ts time.Time, labels model.LabelSet) api.Entry { + entry := logproto.Entry{Timestamp: ts, Line: msg} + return api.Entry{Labels: labels, Entry: entry} +} + +// maintain "last event" state +func (eh *EventHandler) updateLastEvent(e *v1.Event, eventTs time.Time) error { + eh.Lock() + defer eh.Unlock() + + eventRv := e.ResourceVersion + + if eh.LastEvent == nil { + // startup + eh.LastEvent = &ShippedEvents{Timestamp: eventTs, RvMap: make(map[string]struct{})} + eh.LastEvent.RvMap[eventRv] = struct{}{} + return nil + } + + // if timestamp is the same, add to map + if eh.LastEvent != nil && eventTs.Equal(eh.LastEvent.Timestamp) { + eh.LastEvent.RvMap[eventRv] = struct{}{} + return nil + } + + // if timestamp is different, create a new ShippedEvents struct + eh.LastEvent = &ShippedEvents{Timestamp: eventTs, RvMap: make(map[string]struct{})} + eh.LastEvent.RvMap[eventRv] = struct{}{} + return nil +} + +func (eh *EventHandler) writeOutLastEvent() error { + level.Info(eh.Log).Log("msg", "Flushing last event to disk") + + eh.Lock() + defer eh.Unlock() + + if eh.LastEvent == nil { + level.Info(eh.Log).Log("msg", "No last event to flush, returning") + return nil + } + + temp := eh.CachePath + "-new" + buf, err := json.Marshal(&eh.LastEvent) + if err != nil { + return err + } + + err = ioutil.WriteFile(temp, buf, os.FileMode(cacheFileMode)) + if err != nil { + return err + } + + if err = os.Rename(temp, eh.CachePath); err != nil { + return err + } + level.Info(eh.Log).Log("msg", "Flushed last event to disk") + return nil +} + +// RunIntegration runs the eventhandler integration +func (eh *EventHandler) RunIntegration(ctx context.Context) error { + var wg sync.WaitGroup + + ctx, cancel := context.WithCancel(ctx) + defer cancel() + + // Quick check to make sure logs instance exists + if i := eh.LogsClient.Instance(eh.LogsInstance); i == nil { + level.Error(eh.Log).Log("msg", "Logs instance not configured", "instance", eh.LogsInstance) + cancel() + } + + cacheDir := filepath.Dir(eh.CachePath) + if err := os.MkdirAll(cacheDir, 0755); err != nil { + level.Error(eh.Log).Log("msg", "Failed to create cache dir", "err", err) + cancel() + } + + // cache file to store events shipped (prevents double shipping on restart) + cacheFile, err := os.OpenFile(eh.CachePath, os.O_RDWR|os.O_CREATE, cacheFileMode) + if err != nil { + level.Error(eh.Log).Log("msg", "Failed to open or create cache file", "err", err) + cancel() + } + + // attempt to read last timestamp from cache file into a ShippedEvents struct + initEvent, err := readInitEvent(cacheFile, eh.Log) + if err != nil { + level.Error(eh.Log).Log("msg", "Failed to read last event from cache file", "err", err) + cancel() + } + eh.InitEvent = initEvent + + if err = cacheFile.Close(); err != nil { + level.Error(eh.Log).Log("msg", "Failed to close cache file", "err", err) + cancel() + } + + go func() { + level.Info(eh.Log).Log("msg", "Waiting for cache to sync (initial List of events)") + isSynced := cache.WaitForCacheSync(ctx.Done(), eh.EventInformer.HasSynced) + if !isSynced { + level.Error(eh.Log).Log("msg", "Failed to sync informer cache") + // maybe want to bail here + return + } + level.Info(eh.Log).Log("msg", "Informer cache synced") + }() + + // start the informer + // technically we should prob use the factory here, but since we + // only have one informer atm, this likely doesn't matter + go eh.EventInformer.Run(ctx.Done()) + + // wait for last event to flush before returning + wg.Add(1) + go func() { + defer wg.Done() + eh.runTicker(ctx.Done()) + }() + wg.Wait() + + return nil +} + +// write out last event every FlushInterval +func (eh *EventHandler) runTicker(stopCh <-chan struct{}) { + for { + select { + case <-stopCh: + if err := eh.writeOutLastEvent(); err != nil { + level.Error(eh.Log).Log("msg", "Failed to flush last event", "err", err) + } + return + case <-eh.ticker.C: + if err := eh.writeOutLastEvent(); err != nil { + level.Error(eh.Log).Log("msg", "Failed to flush last event", "err", err) + } + } + } +} + +func readInitEvent(file *os.File, logger log.Logger) (*ShippedEvents, error) { + var ( + initEvent = new(ShippedEvents) + ) + + stat, err := file.Stat() + if err != nil { + return nil, err + } + if stat.Size() == 0 { + level.Info(logger).Log("msg", "Cache file empty, setting zero-valued initEvent") + return initEvent, nil + } + + dec := json.NewDecoder(file) + err = dec.Decode(&initEvent) + if err != nil { + err = fmt.Errorf("could not read init event from cache: %s. Please delete the cache file", err) + return nil, err + } + level.Info(logger).Log("msg", "Loaded init event from cache file", "initEventTime", initEvent.Timestamp) + return initEvent, nil +} diff --git a/pkg/integrations/v2/eventhandler/eventhandler_test.go b/pkg/integrations/v2/eventhandler/eventhandler_test.go new file mode 100644 index 000000000000..8acd5383b8e2 --- /dev/null +++ b/pkg/integrations/v2/eventhandler/eventhandler_test.go @@ -0,0 +1,24 @@ +package eventhandler + +import ( + "os" + "testing" + "time" + + "github.com/go-kit/log" + "github.com/stretchr/testify/require" +) + +func TestCacheLoad(t *testing.T) { + l := log.NewNopLogger() + testTime, _ := time.Parse(time.RFC3339, "2022-01-26T13:39:40-05:00") + expectedEvents := &ShippedEvents{ + Timestamp: testTime, + RvMap: map[string]struct{}{"58588": {}}, + } + cacheFile, err := os.OpenFile("testdata/eventhandler.cache", os.O_RDWR|os.O_CREATE, cacheFileMode) + require.NoError(t, err, "Failed to open test eventhandler cache file") + actualEvents, err := readInitEvent(cacheFile, l) + require.NoError(t, err, "Failed to parse last event from eventhandler cache file") + require.Equal(t, expectedEvents, actualEvents) +} diff --git a/pkg/integrations/v2/eventhandler/integration.go b/pkg/integrations/v2/eventhandler/integration.go new file mode 100644 index 000000000000..880d85bad7a4 --- /dev/null +++ b/pkg/integrations/v2/eventhandler/integration.go @@ -0,0 +1,69 @@ +package eventhandler + +import ( + "github.com/go-kit/log" + "github.com/grafana/agent/pkg/integrations/v2" +) + +// DefaultConfig sets defaults for Config +var DefaultConfig = Config{ + SendTimeout: 60, + CachePath: "./.eventcache/eventhandler.cache", + LogsInstance: "default", + InformerResync: 120, + FlushInterval: 10, +} + +// Config configures the eventhandler integration +type Config struct { + // Eventhandler hands watched events off to promtail using a promtail + // client channel. This parameter configures how long to wait (in seconds) on the channel + // before abandoning and moving on. + SendTimeout int `yaml:"send_timeout,omitempty"` + // Configures the path to a kubeconfig file. If not set, will fall back to using + // an in-cluster config. If this fails, will fall back to checking the user's home + // directory for a kubeconfig. + KubeconfigPath string `yaml:"kubeconfig_path,omitempty"` + // Path to a cache file that will store the last timestamp for a shipped event and events + // shipped for that timestamp. Used to prevent double-shipping on integration restart. + CachePath string `yaml:"cache_path,omitempty"` + // Name of logs subsystem instance to hand log entries off to. + LogsInstance string `yaml:"logs_instance,omitempty"` + // K8s informer resync interval (seconds). You should use defaults here unless you are + // familiar with K8s informers. + InformerResync int `yaml:"informer_resync,omitempty"` + // The integration will flush the last event shipped out to disk every flush_interval seconds. + FlushInterval int `yaml:"flush_interval,omitempty"` + // If you would like to limit events to a given namespace, use this parameter. + Namespace string `yaml:"namespace,omitempty"` +} + +// UnmarshalYAML implements yaml.Unmarshaler for Config +func (c *Config) UnmarshalYAML(unmarshal func(interface{}) error) error { + *c = DefaultConfig + + type plain Config + return unmarshal((*plain)(c)) +} + +// Name returns the name of the integration that this config represents +func (c *Config) Name() string { return "eventhandler" } + +// ApplyDefaults applies runtime-specific defaults to c +func (c *Config) ApplyDefaults(globals integrations.Globals) error { + return nil +} + +// Identifier uniquely identifies this instance of Config +func (c *Config) Identifier(globals integrations.Globals) (string, error) { + return globals.AgentIdentifier, nil +} + +// NewIntegration converts this config into an instance of an integration. +func (c *Config) NewIntegration(l log.Logger, globals integrations.Globals) (integrations.Integration, error) { + return newEventHandler(l, globals, c) +} + +func init() { + integrations.Register(&Config{}, integrations.TypeSingleton) +} diff --git a/pkg/integrations/v2/eventhandler/testdata/eventhandler.cache b/pkg/integrations/v2/eventhandler/testdata/eventhandler.cache new file mode 100644 index 000000000000..dc5814de0843 --- /dev/null +++ b/pkg/integrations/v2/eventhandler/testdata/eventhandler.cache @@ -0,0 +1 @@ +{"ts":"2022-01-26T13:39:40-05:00","resourceVersion":{"58588":{}}} \ No newline at end of file diff --git a/pkg/integrations/v2/metricsutils/metricshandler_integration.go b/pkg/integrations/v2/metricsutils/metricshandler_integration.go index 5aad0504aeab..5edd9c6ac1c2 100644 --- a/pkg/integrations/v2/metricsutils/metricshandler_integration.go +++ b/pkg/integrations/v2/metricsutils/metricshandler_integration.go @@ -26,6 +26,7 @@ func NewMetricsHandlerIntegration( globals integrations.Globals, h http.Handler, ) (integrations.MetricsIntegration, error) { + id, err := c.Identifier(globals) if err != nil { return nil, err @@ -105,6 +106,10 @@ func (i *metricsHandlerIntegration) Targets(ep integrations.Endpoint) []*targetg Source: fmt.Sprintf("%s/%s", i.integrationName, i.instanceID), } + for _, lbl := range i.common.ExtraLabels { + group.Labels[model.LabelName(lbl.Name)] = model.LabelValue(lbl.Value) + } + for _, t := range i.targets { group.Targets = append(group.Targets, model.LabelSet{ model.AddressLabel: model.LabelValue(ep.Host), diff --git a/pkg/integrations/v2/metricsutils/metricshandler_integration_test.go b/pkg/integrations/v2/metricsutils/metricshandler_integration_test.go new file mode 100644 index 000000000000..e084df082cc7 --- /dev/null +++ b/pkg/integrations/v2/metricsutils/metricshandler_integration_test.go @@ -0,0 +1,82 @@ +package metricsutils + +import ( + "fmt" + "net/http" + "net/url" + "testing" + + "github.com/go-kit/log" + "github.com/grafana/agent/pkg/integrations/v2" + "github.com/grafana/agent/pkg/integrations/v2/common" + "github.com/prometheus/common/model" + "github.com/prometheus/prometheus/discovery/targetgroup" + "github.com/prometheus/prometheus/pkg/labels" + "github.com/stretchr/testify/require" +) + +func TestMetricsHandlerIntegration_Targets(t *testing.T) { + globals := integrations.Globals{ + AgentIdentifier: "testagent", + AgentBaseURL: func() *url.URL { + u, err := url.Parse("http://testagent/") + require.NoError(t, err) + return u + }(), + SubsystemOpts: integrations.DefaultSubsystemOptions, + } + + t.Run("Targets", func(t *testing.T) { + var cfg common.MetricsConfig + cfg.ApplyDefaults(globals.SubsystemOpts.Metrics.Autoscrape) + + i, err := NewMetricsHandlerIntegration(nil, fakeConfig{}, cfg, globals, http.NotFoundHandler()) + require.NoError(t, err) + + actual := i.Targets(integrations.Endpoint{Host: "test", Prefix: "/test/"}) + expect := []*targetgroup.Group{{ + Source: "fake/testagent", + Labels: model.LabelSet{ + "instance": "testagent", + "job": "integrations/fake", + "agent_hostname": "testagent", + + "__meta_agent_integration_name": "fake", + "__meta_agent_integration_instance": "testagent", + "__meta_agent_integration_autoscrape": "1", + }, + Targets: []model.LabelSet{{ + "__address__": "test", + "__metrics_path__": "/test/metrics", + }}, + }} + require.Equal(t, expect, actual) + + t.Run("Extra labels", func(t *testing.T) { + cfg := common.MetricsConfig{ + ExtraLabels: labels.FromMap(map[string]string{"foo": "bar", "fizz": "buzz"}), + } + cfg.ApplyDefaults(globals.SubsystemOpts.Metrics.Autoscrape) + + i, err := NewMetricsHandlerIntegration(nil, fakeConfig{}, cfg, globals, http.NotFoundHandler()) + require.NoError(t, err) + actual := i.Targets(integrations.Endpoint{Host: "test", Prefix: "/test/"}) + require.Len(t, actual, 1) + + for _, lbl := range cfg.ExtraLabels { + val, ok := actual[0].Labels[model.LabelName(lbl.Name)] + require.True(t, ok, "target does not have extra label %s", lbl.Name) + require.Equal(t, lbl.Value, string(val), "extra label %s does not match expectation", lbl.Name) + } + }) + }) +} + +type fakeConfig struct{} + +func (fakeConfig) Name() string { return "fake" } +func (fakeConfig) ApplyDefaults(_ integrations.Globals) error { return nil } +func (fakeConfig) Identifier(g integrations.Globals) (string, error) { return g.AgentIdentifier, nil } +func (fakeConfig) NewIntegration(_ log.Logger, _ integrations.Globals) (integrations.Integration, error) { + return nil, fmt.Errorf("not implemented") +} diff --git a/pkg/integrations/v2/subsystem_test.go b/pkg/integrations/v2/subsystem_test.go index 1d9e8cfbd920..71427b15e1f1 100644 --- a/pkg/integrations/v2/subsystem_test.go +++ b/pkg/integrations/v2/subsystem_test.go @@ -52,7 +52,6 @@ func TestSubsystemOptions_Unmarshal(t *testing.T) { for _, tc := range tt { t.Run(tc.name, func(t *testing.T) { - var so SubsystemOptions err := yaml.UnmarshalStrict([]byte(tc.in), &so) diff --git a/pkg/integrations/v2/workers.go b/pkg/integrations/v2/workers.go new file mode 100644 index 000000000000..805cf37a45c0 --- /dev/null +++ b/pkg/integrations/v2/workers.go @@ -0,0 +1,122 @@ +package integrations + +import ( + "context" + "sync" + + "github.com/go-kit/log" + "github.com/go-kit/log/level" +) + +type workerPool struct { + log log.Logger + parentCtx context.Context + + mut sync.Mutex + workers map[*controlledIntegration]worker + + runningWorkers sync.WaitGroup +} + +type worker struct { + ci *controlledIntegration + stop context.CancelFunc + exited chan struct{} +} + +func newWorkerPool(ctx context.Context, l log.Logger) *workerPool { + return &workerPool{ + log: l, + parentCtx: ctx, + + workers: make(map[*controlledIntegration]worker), + } +} + +func (p *workerPool) Reload(newIntegrations []*controlledIntegration) { + p.mut.Lock() + defer p.mut.Unlock() + + level.Debug(p.log).Log("msg", "updating running integrations", "prev_count", len(p.workers), "new_count", len(newIntegrations)) + + // Shut down workers whose integrations have gone away. + var stopped []worker + for ci, w := range p.workers { + var found bool + for _, current := range newIntegrations { + if ci == current { + found = true + break + } + } + if !found { + w.stop() + stopped = append(stopped, w) + } + } + for _, w := range stopped { + // Wait for stopped integrations to fully exit. We do this in a separate + // loop so context cancellations can be handled simultaneously, allowing + // the wait to complete faster. + <-w.exited + } + + // Spawn new workers for integrations that don't have them. + for _, current := range newIntegrations { + if _, workerExists := p.workers[current]; workerExists { + continue + } + // This integration doesn't have an existing worker; schedule a new one. + p.scheduleWorker(current) + } +} + +func (p *workerPool) Close() { + p.mut.Lock() + defer p.mut.Unlock() + + level.Debug(p.log).Log("msg", "stopping all integrations") + + defer p.runningWorkers.Wait() + for _, w := range p.workers { + w.stop() + } +} + +func (p *workerPool) scheduleWorker(ci *controlledIntegration) { + p.runningWorkers.Add(1) + + ctx, cancel := context.WithCancel(p.parentCtx) + + w := worker{ + ci: ci, + stop: cancel, + exited: make(chan struct{}), + } + p.workers[ci] = w + + go func() { + ci.running.Store(true) + + // When the integration stops running, we want to free any of our + // resources that will notify watchers waiting for the worker to stop. + // + // Afterwards, we'll block until we remove ourselves from the map; having + // an worker remove itself on shutdown allows exited integrations to + // re-start when the config is reloaded. + defer func() { + ci.running.Store(false) + close(w.exited) + p.runningWorkers.Done() + + p.mut.Lock() + defer p.mut.Unlock() + delete(p.workers, ci) + }() + + err := ci.i.RunIntegration(ctx) + if err != nil { + level.Error(p.log).Log("msg", "integration exited with error", "id", ci.id, "err", err) + } + }() +} diff --git a/pkg/integrations/windows_exporter/windows_exporter_windows.go b/pkg/integrations/windows_exporter/windows_exporter_windows.go index 52d7b1c36655..275c8aae7355 100644 --- a/pkg/integrations/windows_exporter/windows_exporter_windows.go +++ b/pkg/integrations/windows_exporter/windows_exporter_windows.go @@ -29,7 +29,7 @@ func New(log log.Logger, c *Config) (integrations.Integration, error) { collectorNames = append(collectorNames, key) } sort.Strings(collectorNames) - level.Info(log).Log("msg", "enabled windows_exporter collectors", "collectors", collectorNames) + level.Info(log).Log("msg", "enabled windows_exporter collectors", "collectors", strings.Join(collectorNames, ",")) return integrations.NewCollectorIntegration(c.Name(), integrations.WithCollectors( // Hard-coded 4m timeout to represent the time a series goes stale. diff --git a/pkg/metrics/agent.go b/pkg/metrics/agent.go index f2cc8dfd962e..4a0d026fdd27 100644 --- a/pkg/metrics/agent.go +++ b/pkg/metrics/agent.go @@ -13,6 +13,7 @@ import ( "github.com/go-kit/log" "github.com/go-kit/log/level" "github.com/prometheus/client_golang/prometheus" + "go.uber.org/atomic" "google.golang.org/grpc" "github.com/grafana/agent/pkg/metrics/cluster" @@ -144,6 +145,8 @@ type Agent struct { stopped bool stopOnce sync.Once actor chan func() + + initialBootDone atomic.Bool } // New creates and starts a new Agent. @@ -268,6 +271,7 @@ func (a *Agent) ApplyConfig(cfg Config) error { a.actor <- func() { a.syncInstances(oldConfig, cfg) + a.initialBootDone.Store(true) } a.cfg = cfg @@ -311,6 +315,24 @@ func (a *Agent) run() { } } +// Ready returns true if both the agent and all instances +// spawned by a Manager have completed startup. +func (a *Agent) Ready() bool { + // Wait for the initial load to complete so the instance manager has at least + // the base set of expected instances. + if !a.initialBootDone.Load() { + return false + } + + for _, inst := range a.mm.ListInstances() { + if !inst.Ready() { + return false + } + } + + return true +} + // WireGRPC wires gRPC services into the provided server. func (a *Agent) WireGRPC(s *grpc.Server) { a.cluster.WireGRPC(s) diff --git a/pkg/metrics/agent_test.go b/pkg/metrics/agent_test.go index 4a02a2ef3fb3..53d04e25b67a 100644 --- a/pkg/metrics/agent_test.go +++ b/pkg/metrics/agent_test.go @@ -271,6 +271,10 @@ func (i *fakeInstance) Run(ctx context.Context) error { } } +func (i *fakeInstance) Ready() bool { + return true +} + func (i *fakeInstance) Update(_ instance.Config) error { return instance.ErrInvalidUpdate{ Inner: fmt.Errorf("can't dynamically update fakeInstance"), diff --git a/pkg/metrics/cluster/cluster.go b/pkg/metrics/cluster/cluster.go index 5c94a4a01628..7ca80360fcd1 100644 --- a/pkg/metrics/cluster/cluster.go +++ b/pkg/metrics/cluster/cluster.go @@ -52,6 +52,7 @@ func New( im instance.Manager, validate ValidationFunc, ) (*Cluster, error) { + l = log.With(l, "component", "cluster") var ( @@ -116,9 +117,7 @@ func (c *Cluster) Reshard(ctx context.Context, _ *agentproto.ReshardRequest) (*e } // ApplyConfig applies configuration changes to Cluster. -func (c *Cluster) ApplyConfig( - cfg Config, -) error { +func (c *Cluster) ApplyConfig(cfg Config) error { c.mut.Lock() defer c.mut.Unlock() diff --git a/pkg/metrics/cluster/config_watcher_test.go b/pkg/metrics/cluster/config_watcher_test.go index 5bd02c72aa87..e365cb2f5f3a 100644 --- a/pkg/metrics/cluster/config_watcher_test.go +++ b/pkg/metrics/cluster/config_watcher_test.go @@ -227,7 +227,6 @@ func Test_configWatcher_nextReshard(t *testing.T) { require.FailNow(t, "nextReshard took too long to return") } }) - } type mockConfigManager struct { diff --git a/pkg/metrics/http_test.go b/pkg/metrics/http_test.go index 2e1d4aa759bf..a08f93d46b61 100644 --- a/pkg/metrics/http_test.go +++ b/pkg/metrics/http_test.go @@ -1,7 +1,6 @@ package metrics import ( - "context" "fmt" "net/http" "net/http/httptest" @@ -15,7 +14,6 @@ import ( "github.com/prometheus/common/model" "github.com/prometheus/prometheus/pkg/labels" "github.com/prometheus/prometheus/scrape" - "github.com/prometheus/prometheus/storage" "github.com/stretchr/testify/require" ) @@ -135,26 +133,10 @@ func TestAgent_ListTargetsHandler(t *testing.T) { } type mockInstanceScrape struct { + instance.NoOpInstance tgts map[string][]*scrape.Target } -func (i *mockInstanceScrape) Run(ctx context.Context) error { - <-ctx.Done() - return nil -} - -func (i *mockInstanceScrape) Update(_ instance.Config) error { - return nil -} - func (i *mockInstanceScrape) TargetsActive() map[string][]*scrape.Target { return i.tgts } - -func (i *mockInstanceScrape) StorageDirectory() string { - return "" -} - -func (i *mockInstanceScrape) Appender(ctx context.Context) storage.Appender { - return nil -} diff --git a/pkg/metrics/instance/configstore/api_test.go b/pkg/metrics/instance/configstore/api_test.go index 9dfe0ca9a38c..ba5ab2b550e0 100644 --- a/pkg/metrics/instance/configstore/api_test.go +++ b/pkg/metrics/instance/configstore/api_test.go @@ -151,6 +151,7 @@ remote_write: - url: http://localhost:9009/api/prom/push remote_timeout: 30s name: test-d0f32c + send_exemplars: true basic_auth: username: admin password: SCRUBME diff --git a/pkg/metrics/instance/configstore/remote.go b/pkg/metrics/instance/configstore/remote.go index 712cdf583ce9..9bf01732e9a7 100644 --- a/pkg/metrics/instance/configstore/remote.go +++ b/pkg/metrics/instance/configstore/remote.go @@ -120,8 +120,8 @@ func (r *Remote) ApplyConfig(cfg kv.Config, enable bool) error { if err != nil { return err } - } + if err != nil { return fmt.Errorf("failed to create kv client: %w", err) } @@ -354,8 +354,8 @@ func (r *Remote) all(ctx context.Context, keep func(key string) bool) (<-chan in if r.kv.consul != nil { return r.allConsul(ctx, keep) } - return r.allOther(ctx, keep) + return r.allOther(ctx, keep) } // allConsul is ONLY usable when consul is the keystore. This is a performance improvement in using the client directly diff --git a/pkg/metrics/instance/host_filter.go b/pkg/metrics/instance/host_filter.go index 01099bde45ad..aca92e1c6cac 100644 --- a/pkg/metrics/instance/host_filter.go +++ b/pkg/metrics/instance/host_filter.go @@ -88,7 +88,6 @@ func (f *HostFilter) PatchSD(scrapes []*config.ScrapeConfig) { } } } - } // SetRelabels updates the relabeling rules used by the HostFilter. diff --git a/pkg/metrics/instance/instance.go b/pkg/metrics/instance/instance.go index 86d9a713924e..e488781575b5 100644 --- a/pkg/metrics/instance/instance.go +++ b/pkg/metrics/instance/instance.go @@ -30,12 +30,16 @@ import ( "github.com/prometheus/prometheus/scrape" "github.com/prometheus/prometheus/storage" "github.com/prometheus/prometheus/storage/remote" + "go.uber.org/atomic" "gopkg.in/yaml.v2" ) func init() { remote.UserAgent = fmt.Sprintf("GrafanaAgent/%s", build.Version) scrape.UserAgent = fmt.Sprintf("GrafanaAgent/%s", build.Version) + + // default remote_write send_exemplars to true + config.DefaultRemoteWriteConfig.SendExemplars = true } var ( @@ -237,6 +241,9 @@ type Instance struct { remoteStore *remote.Storage storage storage.Storage + // ready is set to true after the initialization process finishes + ready atomic.Bool + hostFilter *HostFilter logger log.Logger @@ -315,7 +322,7 @@ func (i *Instance) Run(ctx context.Context) error { // The actors defined here are defined in the order we want them to shut down. // Primarily, we want to ensure that the following shutdown order is // maintained: - // 1. The scrape manager stops + // 1. The scrape manager stops // 2. WAL storage is closed // 3. Remote write storage is closed // This is done to allow the instance to write stale markers for all active @@ -383,6 +390,7 @@ func (i *Instance) Run(ctx context.Context) error { } level.Debug(i.logger).Log("msg", "running instance", "name", cfg.Name) + i.ready.Store(true) err := rg.Run() if err != nil { level.Error(i.logger).Log("msg", "agent instance stopped with error", "err", err) @@ -443,6 +451,12 @@ func (i *Instance) initialize(ctx context.Context, reg prometheus.Registerer, cf return nil } +// Ready returns true if the Instance has been initialized and is ready +// to start scraping and delivering metrics. +func (i *Instance) Ready() bool { + return i.ready.Load() +} + // Update accepts a new Config for the Instance and will dynamically update any // running Prometheus components with the new values from Config. Update will // return an ErrInvalidUpdate if the Update could not be applied. diff --git a/pkg/metrics/instance/instance_integration_test.go b/pkg/metrics/instance/instance_integration_test.go index 67776026dcde..c15be5a55d04 100644 --- a/pkg/metrics/instance/instance_integration_test.go +++ b/pkg/metrics/instance/instance_integration_test.go @@ -244,7 +244,6 @@ remote_write: [] require.EqualError(t, err, tc.expect) }) } - } func loadConfig(t *testing.T, s string) Config { diff --git a/pkg/metrics/instance/instance_test.go b/pkg/metrics/instance/instance_test.go index 0f79bd073c58..4e3815df6728 100644 --- a/pkg/metrics/instance/instance_test.go +++ b/pkg/metrics/instance/instance_test.go @@ -139,7 +139,6 @@ func TestConfig_ApplyDefaults_Validations(t *testing.T) { for _, tc := range tt { t.Run(tc.name, func(t *testing.T) { - // Copy the input and all of its slices input := cfg diff --git a/pkg/metrics/instance/manager.go b/pkg/metrics/instance/manager.go index a622d073b0f2..d3351d4d006f 100644 --- a/pkg/metrics/instance/manager.go +++ b/pkg/metrics/instance/manager.go @@ -61,6 +61,7 @@ type Manager interface { // for the sake of testing from Manager implementations. type ManagedInstance interface { Run(ctx context.Context) error + Ready() bool Update(c Config) error TargetsActive() map[string][]*scrape.Target StorageDirectory() string diff --git a/pkg/metrics/instance/manager_test.go b/pkg/metrics/instance/manager_test.go index ffb8580e0a97..e524592e02fe 100644 --- a/pkg/metrics/instance/manager_test.go +++ b/pkg/metrics/instance/manager_test.go @@ -99,6 +99,7 @@ func TestBasicManager_ApplyConfig(t *testing.T) { type mockInstance struct { RunFunc func(ctx context.Context) error + ReadyFunc func() bool UpdateFunc func(c Config) error TargetsActiveFunc func() map[string][]*scrape.Target StorageDirectoryFunc func() string @@ -112,6 +113,13 @@ func (m mockInstance) Run(ctx context.Context) error { panic("RunFunc not provided") } +func (m mockInstance) Ready() bool { + if m.ReadyFunc != nil { + return m.ReadyFunc() + } + panic("ReadyFunc not provided") +} + func (m mockInstance) Update(c Config) error { if m.UpdateFunc != nil { return m.UpdateFunc(c) diff --git a/pkg/metrics/instance/marshal.go b/pkg/metrics/instance/marshal.go index 652b7862c233..d142d172a1a9 100644 --- a/pkg/metrics/instance/marshal.go +++ b/pkg/metrics/instance/marshal.go @@ -37,6 +37,8 @@ func MarshalConfigToWriter(c *Config, w io.Writer, scrubSecrets bool) error { switch v := in.(type) { case config_util.Secret: return true, string(v), nil + case *config_util.URL: + return true, v.String(), nil default: return false, nil, nil } diff --git a/pkg/metrics/instance/marshal_test.go b/pkg/metrics/instance/marshal_test.go index 0f91c70bf8b8..7b5356d26de5 100644 --- a/pkg/metrics/instance/marshal_test.go +++ b/pkg/metrics/instance/marshal_test.go @@ -44,9 +44,10 @@ scrape_configs: username: admin password: foobar remote_write: -- url: http://localhost:9009/api/prom/push +- url: http://admin:verysecret@localhost:9009/api/prom/push remote_timeout: 30s name: test-d0f32c + send_exemplars: true basic_auth: username: admin password: verysecret @@ -96,9 +97,10 @@ scrape_configs: username: admin password: SCRUBME remote_write: -- url: http://localhost:9009/api/prom/push +- url: http://username:SCRUBURL@localhost:9009/api/prom/push remote_timeout: 30s name: test-d0f32c + send_exemplars: true basic_auth: username: admin password: SCRUBME @@ -122,7 +124,9 @@ remote_flush_deadline: 1m0s ` scrub := func(in string) string { - return strings.ReplaceAll(in, "SCRUBME", "") + in = strings.ReplaceAll(in, "SCRUBME", "") + in = strings.ReplaceAll(in, "SCRUBURL", "xxxxx") + return in } t.Run("direct marshal", func(t *testing.T) { diff --git a/pkg/metrics/instance/noop.go b/pkg/metrics/instance/noop.go index f668ceedc43e..76d459e19507 100644 --- a/pkg/metrics/instance/noop.go +++ b/pkg/metrics/instance/noop.go @@ -17,6 +17,11 @@ func (NoOpInstance) Run(ctx context.Context) error { return nil } +// Ready implements Instance. +func (NoOpInstance) Ready() bool { + return true +} + // Update implements Instance. func (NoOpInstance) Update(_ Config) error { return nil diff --git a/pkg/metrics/wal/series.go b/pkg/metrics/wal/series.go index fd1de2effd9b..35bda48e2974 100644 --- a/pkg/metrics/wal/series.go +++ b/pkg/metrics/wal/series.go @@ -3,6 +3,7 @@ package wal import ( "sync" + "github.com/prometheus/prometheus/pkg/exemplar" "github.com/prometheus/prometheus/pkg/intern" "github.com/prometheus/prometheus/pkg/labels" ) @@ -97,10 +98,11 @@ const ( // // This code is copied from the Prometheus TSDB. type stripeSeries struct { - size int - series []map[uint64]*memSeries - hashes []seriesHashmap - locks []stripeLock + size int + series []map[uint64]*memSeries + hashes []seriesHashmap + exemplars []map[uint64]*exemplar.Exemplar + locks []stripeLock } type stripeLock struct { @@ -112,10 +114,11 @@ type stripeLock struct { func newStripeSeries() *stripeSeries { stripeSize := defaultStripeSize s := &stripeSeries{ - size: stripeSize, - series: make([]map[uint64]*memSeries, stripeSize), - hashes: make([]seriesHashmap, stripeSize), - locks: make([]stripeLock, stripeSize), + size: stripeSize, + series: make([]map[uint64]*memSeries, stripeSize), + hashes: make([]seriesHashmap, stripeSize), + exemplars: make([]map[uint64]*exemplar.Exemplar, stripeSize), + locks: make([]stripeLock, stripeSize), } for i := range s.series { @@ -124,6 +127,9 @@ func newStripeSeries() *stripeSeries { for i := range s.hashes { s.hashes[i] = seriesHashmap{} } + for i := range s.exemplars { + s.exemplars[i] = map[uint64]*exemplar.Exemplar{} + } return s } @@ -171,6 +177,10 @@ func (s *stripeSeries) gc(mint int64) map[uint64]struct{} { delete(s.series[i], series.ref) s.hashes[j].del(seriesHash, series.ref) + // Since the series is gone, we'll also delete + // the latest stored exemplar. + delete(s.exemplars[i], series.ref) + if i != j { s.locks[j].Unlock() } @@ -216,6 +226,27 @@ func (s *stripeSeries) set(hash uint64, series *memSeries) { s.locks[i].Unlock() } +func (s *stripeSeries) getLatestExemplar(id uint64) *exemplar.Exemplar { + i := id & uint64(s.size-1) + + s.locks[i].RLock() + exemplar := s.exemplars[i][id] + s.locks[i].RUnlock() + + return exemplar +} + +func (s *stripeSeries) setLatestExemplar(id uint64, exemplar *exemplar.Exemplar) { + i := id & uint64(s.size-1) + + // Make sure that's a valid series id and record its latest exemplar + s.locks[i].Lock() + if s.series[i][id] != nil { + s.exemplars[i][id] = exemplar + } + s.locks[i].Unlock() +} + func (s *stripeSeries) iterator() *stripeSeriesIterator { return &stripeSeriesIterator{s} } diff --git a/pkg/metrics/wal/wal.go b/pkg/metrics/wal/wal.go index b5e8c3b7372a..91bc79fb6418 100644 --- a/pkg/metrics/wal/wal.go +++ b/pkg/metrics/wal/wal.go @@ -10,7 +10,6 @@ import ( "github.com/go-kit/log" "github.com/go-kit/log/level" - "github.com/pkg/errors" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/prometheus/pkg/exemplar" "github.com/prometheus/prometheus/pkg/labels" @@ -164,7 +163,7 @@ func NewStorage(logger log.Logger, registerer prometheus.Registerer, path string if err := storage.replayWAL(); err != nil { level.Warn(storage.logger).Log("msg", "encountered WAL read error, attempting repair", "err", err) if err := w.Repair(err); err != nil { - return nil, errors.Wrap(err, "repair corrupted WAL") + return nil, fmt.Errorf("repair corrupted WAL: %w", err) } } @@ -182,13 +181,13 @@ func (w *Storage) replayWAL() error { level.Info(w.logger).Log("msg", "replaying WAL, this may take a while", "dir", w.wal.Dir()) dir, startFrom, err := wal.LastCheckpoint(w.wal.Dir()) if err != nil && err != record.ErrNotFound { - return errors.Wrap(err, "find last checkpoint") + return fmt.Errorf("find last checkpoint: %w", err) } if err == nil { sr, err := wal.NewSegmentsReader(dir) if err != nil { - return errors.Wrap(err, "open checkpoint") + return fmt.Errorf("open checkpoint: %w", err) } defer func() { if err := sr.Close(); err != nil { @@ -199,7 +198,7 @@ func (w *Storage) replayWAL() error { // A corrupted checkpoint is a hard error for now and requires user // intervention. There's likely little data that can be recovered anyway. if err := w.loadWAL(wal.NewReader(sr)); err != nil { - return errors.Wrap(err, "backfill checkpoint") + return fmt.Errorf("backfill checkpoint: %w", err) } startFrom++ level.Info(w.logger).Log("msg", "WAL checkpoint loaded") @@ -208,14 +207,14 @@ func (w *Storage) replayWAL() error { // Find the last segment. _, last, err := wal.Segments(w.wal.Dir()) if err != nil { - return errors.Wrap(err, "finding WAL segments") + return fmt.Errorf("finding WAL segments: %w", err) } // Backfill segments from the most recent checkpoint onwards. for i := startFrom; i <= last; i++ { s, err := wal.OpenReadSegment(wal.SegmentName(w.wal.Dir(), i)) if err != nil { - return errors.Wrap(err, fmt.Sprintf("open WAL segment: %d", i)) + return fmt.Errorf("open WAL segment %d: %w", i, err) } sr := wal.NewSegmentBufReader(s) @@ -262,7 +261,7 @@ func (w *Storage) loadWAL(r *wal.Reader) (err error) { series, err = dec.Series(rec, series) if err != nil { errCh <- &wal.CorruptionErr{ - Err: errors.Wrap(err, "decode series"), + Err: fmt.Errorf("decode series: %w", err), Segment: r.Segment(), Offset: r.Offset(), } @@ -274,7 +273,7 @@ func (w *Storage) loadWAL(r *wal.Reader) (err error) { samples, err = dec.Samples(rec, samples) if err != nil { errCh <- &wal.CorruptionErr{ - Err: errors.Wrap(err, "decode samples"), + Err: fmt.Errorf("decode samples: %w", err), Segment: r.Segment(), Offset: r.Offset(), } @@ -282,10 +281,12 @@ func (w *Storage) loadWAL(r *wal.Reader) (err error) { decoded <- samples case record.Tombstones, record.Exemplars: // We don't care about decoding tombstones or exemplars + // TODO: If decide to decode exemplars, we should make sure to prepopulate + // stripeSeries.exemplars in the next block by using setLatestExemplar. continue default: errCh <- &wal.CorruptionErr{ - Err: errors.Errorf("invalid record type %v", dec.Type(rec)), + Err: fmt.Errorf("invalid record type %v", dec.Type(rec)), Segment: r.Segment(), Offset: r.Offset(), } @@ -351,7 +352,7 @@ func (w *Storage) loadWAL(r *wal.Reader) (err error) { } if r.Err() != nil { - return errors.Wrap(r.Err(), "read records") + return fmt.Errorf("read records: %w", r.Err()) } return nil @@ -391,14 +392,14 @@ func (w *Storage) Truncate(mint int64) error { first, last, err := wal.Segments(w.wal.Dir()) if err != nil { - return errors.Wrap(err, "get segment range") + return fmt.Errorf("get segment range: %w", err) } // Start a new segment, so low ingestion volume instance don't have more WAL // than needed. err = w.wal.NextSegment() if err != nil { - return errors.Wrap(err, "next segment") + return fmt.Errorf("next segment: %w", err) } last-- // Never consider last segment for checkpoint. @@ -424,7 +425,7 @@ func (w *Storage) Truncate(mint int64) error { return ok } if _, err = wal.Checkpoint(w.logger, w.wal, first, last, keep, mint); err != nil { - return errors.Wrap(err, "create checkpoint") + return fmt.Errorf("create checkpoint: %w", err) } if err := w.wal.Truncate(last + 1); err != nil { // If truncating fails, we'll just try again at the next checkpoint. @@ -571,11 +572,11 @@ func (a *appender) Append(ref uint64, l labels.Labels, t int64, v float64) (uint // equivalent validation code in the TSDB's headAppender. l = l.WithoutEmpty() if len(l) == 0 { - return 0, errors.Wrap(tsdb.ErrInvalidSample, "empty labelset") + return 0, fmt.Errorf("empty labelset: %w", tsdb.ErrInvalidSample) } if lbl, dup := l.HasDuplicateLabelNames(); dup { - return 0, errors.Wrap(tsdb.ErrInvalidSample, fmt.Sprintf(`label name "%s" is not unique`, lbl)) + return 0, fmt.Errorf("label name %q is not unique: %w", lbl, tsdb.ErrInvalidSample) } var created bool @@ -631,7 +632,7 @@ func (a *appender) AppendExemplar(ref uint64, _ labels.Labels, e exemplar.Exempl e.Labels = e.Labels.WithoutEmpty() if lbl, dup := e.Labels.HasDuplicateLabelNames(); dup { - return 0, errors.Wrap(tsdb.ErrInvalidExemplar, fmt.Sprintf(`label name "%s" is not unique`, lbl)) + return 0, fmt.Errorf("label name %q is not unique: %w", lbl, tsdb.ErrInvalidExemplar) } // Exemplar label length does not include chars involved in text rendering such as quotes @@ -646,6 +647,16 @@ func (a *appender) AppendExemplar(ref uint64, _ labels.Labels, e exemplar.Exempl } } + // Check for duplicate vs last stored exemplar for this series, and discard those. + // Otherwise, record the current exemplar as the latest. + // Prometheus returns 0 when encountering duplicates, so we do the same here. + prevExemplar := a.w.series.getLatestExemplar(ref) + if prevExemplar != nil && prevExemplar.Equals(e) { + // Duplicate, don't return an error but don't accept the exemplar. + return 0, nil + } + a.w.series.setLatestExemplar(ref, &e) + a.exemplars = append(a.exemplars, record.RefExemplar{ Ref: ref, T: e.Ts, @@ -653,6 +664,7 @@ func (a *appender) AppendExemplar(ref uint64, _ labels.Labels, e exemplar.Exempl Labels: e.Labels, }) + a.w.metrics.totalAppendedExemplars.Inc() return s.ref, nil } diff --git a/pkg/metrics/wal/wal_test.go b/pkg/metrics/wal/wal_test.go index fccc0a023aa5..a1cad5c4f86d 100644 --- a/pkg/metrics/wal/wal_test.go +++ b/pkg/metrics/wal/wal_test.go @@ -104,6 +104,47 @@ func TestStorage(t *testing.T) { require.Equal(t, expectedExemplars, actualExemplars) } +func TestStorage_DuplicateExemplarsIgnored(t *testing.T) { + walDir, err := ioutil.TempDir(os.TempDir(), "wal") + require.NoError(t, err) + defer os.RemoveAll(walDir) + + s, err := NewStorage(log.NewNopLogger(), nil, walDir) + require.NoError(t, err) + + app := s.Appender(context.Background()) + + sRef, err := app.Append(0, labels.Labels{{Name: "a", Value: "1"}}, 0, 0) + require.NoError(t, err, "should not reject valid series") + + // If the Labels, Value or Timestamp are different than the last exemplar, + // then a new one should be appended; Otherwise, it should be skipped. + e := exemplar.Exemplar{Labels: labels.Labels{{Name: "a", Value: "1"}}, Value: 20, Ts: 10, HasTs: true} + _, _ = app.AppendExemplar(sRef, nil, e) + _, _ = app.AppendExemplar(sRef, nil, e) + + e.Labels = labels.Labels{{Name: "b", Value: "2"}} + _, _ = app.AppendExemplar(sRef, nil, e) + _, _ = app.AppendExemplar(sRef, nil, e) + _, _ = app.AppendExemplar(sRef, nil, e) + + e.Value = 42 + _, _ = app.AppendExemplar(sRef, nil, e) + _, _ = app.AppendExemplar(sRef, nil, e) + + e.Ts = 25 + _, _ = app.AppendExemplar(sRef, nil, e) + _, _ = app.AppendExemplar(sRef, nil, e) + + require.NoError(t, app.Commit()) + collector := walDataCollector{} + replayer := walReplayer{w: &collector} + require.NoError(t, replayer.Replay(s.wal.Dir())) + + // We had 9 calls to AppendExemplar but only 4 of those should have gotten through + require.Equal(t, 4, len(collector.exemplars)) +} + func TestStorage_ExistingWAL(t *testing.T) { walDir, err := ioutil.TempDir(os.TempDir(), "wal") require.NoError(t, err) @@ -331,6 +372,27 @@ func TestStorage_TruncateAfterClose(t *testing.T) { require.Error(t, ErrWALClosed, s.Truncate(0)) } +func BenchmarkAppendExemplar(b *testing.B) { + walDir, _ := ioutil.TempDir(os.TempDir(), "wal") + defer os.RemoveAll(walDir) + + s, _ := NewStorage(log.NewNopLogger(), nil, walDir) + defer s.Close() + app := s.Appender(context.Background()) + sRef, _ := app.Append(0, labels.Labels{{Name: "a", Value: "1"}}, 0, 0) + e := exemplar.Exemplar{Labels: labels.Labels{{Name: "a", Value: "1"}}, Value: 20, Ts: 10, HasTs: true} + + b.StartTimer() + for i := 0; i < b.N; i++ { + e.Ts = int64(i) + _, _ = app.AppendExemplar(sRef, nil, e) + } + b.StopTimer() + + // Actually use appended exemplars in case they get eliminated + _ = app.Commit() +} + type sample struct { ts int64 val float64 diff --git a/pkg/operator/apis/monitoring/v1alpha1/types.go b/pkg/operator/apis/monitoring/v1alpha1/types.go index a9f0b6396694..e97e64e59eeb 100644 --- a/pkg/operator/apis/monitoring/v1alpha1/types.go +++ b/pkg/operator/apis/monitoring/v1alpha1/types.go @@ -150,6 +150,11 @@ type GrafanaAgentSpec struct { // Logs controls the logging subsystem of the Agent and settings unique to // logging-specific pods that are deployed. Logs LogsSubsystemSpec `json:"logs,omitempty"` + + // enableConfigReadAPI enables the read API for viewing currently running + // config port 8080 on the agent. + // +kubebuilder:default=false + EnableConfigReadAPI bool `json:"enableConfigReadAPI,omitempty"` } // ObjectSelector is a set of selectors to use for finding an object in the diff --git a/pkg/operator/build_hierarchy.go b/pkg/operator/build_hierarchy.go index cab0b212644b..663a4ac6551c 100644 --- a/pkg/operator/build_hierarchy.go +++ b/pkg/operator/build_hierarchy.go @@ -236,7 +236,7 @@ func buildSecrets(ctx context.Context, cli client.Client, deploy config.Deployme case *corev1.Secret: rawValue, ok := o.Data[ref.Reference.Secret.Key] if !ok { - return fmt.Errorf("no key %s in Secret %s", ref.Reference.ConfigMap.Key, o.Name) + return fmt.Errorf("no key %s in Secret %s", ref.Reference.Secret.Key, o.Name) } value = string(rawValue) case *corev1.ConfigMap: diff --git a/pkg/operator/build_hierarchy_test.go b/pkg/operator/build_hierarchy_test.go index b77adb761c95..9bc13fca69c1 100644 --- a/pkg/operator/build_hierarchy_test.go +++ b/pkg/operator/build_hierarchy_test.go @@ -19,8 +19,10 @@ import ( "github.com/stretchr/testify/require" v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/labels" + controller "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/client/apiutil" + "sigs.k8s.io/controller-runtime/pkg/manager" ) // Test_buildHierarchy checks that an entire resource hierarchy can be @@ -34,7 +36,7 @@ func Test_buildHierarchy(t *testing.T) { l := util.TestLogger(t) cluster := NewTestCluster(ctx, t, l) - cli := cluster.Client() + cli := newTestControllerClient(t, cluster) resources := k8s.NewResourceSet(l, cluster) defer resources.Stop() @@ -164,3 +166,26 @@ func (w *resourceWalker) Visit(v interface{}) (next structwalk.Visitor) { } return w } + +// newTestControllerClient creates a Kubernetes client which uses a cache and +// index for retrieving objects. This more closely matches the behavior of the +// operator instead of using cluster.Client, which lacks a cache and always +// communicates directly with Kubernetes. +func newTestControllerClient(t *testing.T, cluster *k8s.Cluster) client.Client { + t.Helper() + + ctx, cancel := context.WithCancel(context.Background()) + t.Cleanup(cancel) + + mgr, err := controller.NewManager(cluster.GetConfig(), manager.Options{ + Scheme: cluster.Client().Scheme(), + }) + require.NoError(t, err) + + go func() { + require.NoError(t, mgr.Start(ctx)) + }() + require.True(t, mgr.GetCache().WaitForCacheSync(ctx)) + + return mgr.GetClient() +} diff --git a/pkg/operator/clientutil/merge.go b/pkg/operator/clientutil/merge.go index a5aae204876e..5e43e951a898 100644 --- a/pkg/operator/clientutil/merge.go +++ b/pkg/operator/clientutil/merge.go @@ -4,7 +4,6 @@ import ( "encoding/json" "fmt" - "github.com/pkg/errors" v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/util/strategicpatch" ) @@ -28,21 +27,21 @@ func MergePatchContainers(base, patches []v1.Container) ([]v1.Container, error) // Get the json for the container and the patch containerBytes, err := json.Marshal(container) if err != nil { - return nil, errors.Wrap(err, fmt.Sprintf("failed to marshal json for container %s", container.Name)) + return nil, fmt.Errorf("failed to marshal json for container %s: %w", container.Name, err) } patchBytes, err := json.Marshal(patchContainer) if err != nil { - return nil, errors.Wrap(err, fmt.Sprintf("failed to marshal json for patch container %s", container.Name)) + return nil, fmt.Errorf("failed to marshal json for patch container %s: %w", container.Name, err) } // Calculate the patch result jsonResult, err := strategicpatch.StrategicMergePatch(containerBytes, patchBytes, v1.Container{}) if err != nil { - return nil, errors.Wrap(err, fmt.Sprintf("failed to generate merge patch for %s", container.Name)) + return nil, fmt.Errorf("failed to generate merge patch for %s: %w", container.Name, err) } var patchResult v1.Container if err := json.Unmarshal(jsonResult, &patchResult); err != nil { - return nil, errors.Wrap(err, fmt.Sprintf("failed to unmarshal merged container %s", container.Name)) + return nil, fmt.Errorf("failed to unmarshal merged container %s: %w", container.Name, err) } // Add the patch result and remove the corresponding key from the to do list diff --git a/pkg/operator/config/config_test.go b/pkg/operator/config/config_test.go index ff1efb936bde..5bad6fc9b3e5 100644 --- a/pkg/operator/config/config_test.go +++ b/pkg/operator/config/config_test.go @@ -79,10 +79,10 @@ func TestBuildConfigMetrics(t *testing.T) { basicAuth: username: name: example-secret - key: key + key: uname password: name: example-secret - key: key + key: pword tlsConfig: ca: configMap: @@ -113,8 +113,8 @@ func TestBuildConfigMetrics(t *testing.T) { remote_write: - url: http://localhost:9090/api/v1/write basic_auth: - username: somesecret - password: somesecret + username_file: /var/lib/grafana-agent/secrets/_secrets_default_example_secret_uname + password_file: /var/lib/grafana-agent/secrets/_secrets_default_example_secret_pword tls_config: ca_file: /var/lib/grafana-agent/secrets/_configMaps_default_example_cm_key cert_file: /var/lib/grafana-agent/secrets/_secrets_default_example_secret_key diff --git a/pkg/operator/config/fs_importer.go b/pkg/operator/config/fs_importer.go index 60b73120ced6..2a8044c0c986 100644 --- a/pkg/operator/config/fs_importer.go +++ b/pkg/operator/config/fs_importer.go @@ -30,7 +30,6 @@ func NewFSImporter(f fs.FS, paths []string) *FSImporter { // Import implements jsonnet.Importer. func (i *FSImporter) Import(importedFrom, importedPath string) (contents jsonnet.Contents, foundAt string, err error) { - tryPaths := append([]string{importedFrom}, i.paths...) for _, p := range tryPaths { cleanedPath := path.Clean( diff --git a/pkg/operator/config/metrics_templates_test.go b/pkg/operator/config/metrics_templates_test.go index da437cb462ce..064a05652c90 100644 --- a/pkg/operator/config/metrics_templates_test.go +++ b/pkg/operator/config/metrics_templates_test.go @@ -547,8 +547,8 @@ func TestRemoteWrite(t *testing.T) { expect: util.Untab(` url: http://cortex/api/prom/push basic_auth: - username: secretkey - password: secretkey + username_file: /var/lib/grafana-agent/secrets/_secrets_operator_obj_key + password_file: /var/lib/grafana-agent/secrets/_secrets_operator_obj_key `), }, { diff --git a/pkg/operator/config/templates/component/metrics/remote_write.libsonnet b/pkg/operator/config/templates/component/metrics/remote_write.libsonnet index 38b9553aa9e9..e172211ca226 100644 --- a/pkg/operator/config/templates/component/metrics/remote_write.libsonnet +++ b/pkg/operator/config/templates/component/metrics/remote_write.libsonnet @@ -30,8 +30,8 @@ function(namespace, rw) { basic_auth: ( if rw.BasicAuth != null then { - username: secrets.valueForSecret(namespace, rw.BasicAuth.Username), - password: secrets.valueForSecret(namespace, rw.BasicAuth.Password), + username_file: secrets.pathForSecret(namespace, rw.BasicAuth.Username), + password_file: secrets.pathForSecret(namespace, rw.BasicAuth.Password), } ), diff --git a/pkg/operator/defaults.go b/pkg/operator/defaults.go index 58ee7a517afc..1c53a80ce67a 100644 --- a/pkg/operator/defaults.go +++ b/pkg/operator/defaults.go @@ -20,6 +20,7 @@ var ( "v0.21.1", "v0.21.2", "v0.22.0", + "v0.23.0", // NOTE(rfratto): when performing an upgrade, add the newest version above instead of changing the existing reference. } diff --git a/pkg/operator/hierarchy/selector.go b/pkg/operator/hierarchy/selector.go index 06454e3a8f1e..d2a1493a2ccb 100644 --- a/pkg/operator/hierarchy/selector.go +++ b/pkg/operator/hierarchy/selector.go @@ -5,7 +5,6 @@ import ( "fmt" corev1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/fields" "k8s.io/apimachinery/pkg/labels" "sigs.k8s.io/controller-runtime/pkg/client" ) @@ -79,7 +78,6 @@ var _ Selector = (*KeySelector)(nil) // ApplyToList implements Selector. func (ks *KeySelector) ApplyToList(lo *client.ListOptions) { lo.Namespace = ks.Namespace - lo.FieldSelector = fields.OneTermEqualSelector("metadata.name", ks.Name) } // Matches implements Selector. diff --git a/pkg/operator/reconciler_logs.go b/pkg/operator/reconciler_logs.go index a12e752a5db8..05c973253b99 100644 --- a/pkg/operator/reconciler_logs.go +++ b/pkg/operator/reconciler_logs.go @@ -21,6 +21,7 @@ func (r *reconciler) createLogsConfigurationSecret( d config.Deployment, s assets.SecretStore, ) error { + return r.createTelemetryConfigurationSecret(ctx, l, d, s, config.LogsType) } @@ -31,6 +32,7 @@ func (r *reconciler) createLogsDaemonSet( d config.Deployment, s assets.SecretStore, ) error { + name := fmt.Sprintf("%s-logs", d.Agent.Name) ds, err := generateLogsDaemonSet(r.config, name, d) if err != nil { diff --git a/pkg/operator/reconciler_metrics.go b/pkg/operator/reconciler_metrics.go index 6a52948133b5..1a1ac6fb0da6 100644 --- a/pkg/operator/reconciler_metrics.go +++ b/pkg/operator/reconciler_metrics.go @@ -29,6 +29,7 @@ func (r *reconciler) createMetricsConfigurationSecret( d config.Deployment, s assets.SecretStore, ) error { + return r.createTelemetryConfigurationSecret(ctx, l, d, s, config.MetricsType) } @@ -104,6 +105,7 @@ func (r *reconciler) createMetricsGoverningService( d config.Deployment, s assets.SecretStore, ) error { + svc := generateMetricsStatefulSetService(r.config, d) // Delete the old Secret if one exists and we have no prometheus instances. diff --git a/pkg/operator/resources_logs.go b/pkg/operator/resources_logs.go index 85dc07b6cce9..27617517cd7f 100644 --- a/pkg/operator/resources_logs.go +++ b/pkg/operator/resources_logs.go @@ -19,6 +19,7 @@ func generateLogsDaemonSet( name string, d config.Deployment, ) (*apps_v1.DaemonSet, error) { + d = *d.DeepCopy() if d.Agent.Spec.PortName == "" { diff --git a/pkg/operator/resources_metrics.go b/pkg/operator/resources_metrics.go index 4834fb8e9793..cd282b464969 100644 --- a/pkg/operator/resources_metrics.go +++ b/pkg/operator/resources_metrics.go @@ -109,6 +109,7 @@ func generateMetricsStatefulSet( d config.Deployment, shard int32, ) (*apps_v1.StatefulSet, error) { + d = *d.DeepCopy() // @@ -244,6 +245,11 @@ func generateMetricsStatefulSetSpec( "-reload-port=8081", } + enableConfigReadAPI := d.Agent.Spec.EnableConfigReadAPI + if enableConfigReadAPI { + agentArgs = append(agentArgs, "-config.enable-read-api") + } + // NOTE(rfratto): the Prometheus Operator supports a ListenLocal to prevent a // service from being created. Given the intent is that Agents can connect to // each other, ListenLocal isn't currently supported and we always create a port. diff --git a/pkg/traces/automaticloggingprocessor/factory.go b/pkg/traces/automaticloggingprocessor/factory.go index ac1af7e39c82..c942ba7e6f7d 100644 --- a/pkg/traces/automaticloggingprocessor/factory.go +++ b/pkg/traces/automaticloggingprocessor/factory.go @@ -127,7 +127,7 @@ func createTraceProcessor( cfg config.Processor, nextConsumer consumer.Traces, ) (component.TracesProcessor, error) { - oCfg := cfg.(*Config) + oCfg := cfg.(*Config) return newTraceProcessor(nextConsumer, oCfg.LoggingConfig) } diff --git a/pkg/traces/config.go b/pkg/traces/config.go index f0af4401c8ec..177c46c80aba 100644 --- a/pkg/traces/config.go +++ b/pkg/traces/config.go @@ -10,15 +10,11 @@ import ( "strings" "time" - "github.com/grafana/agent/pkg/logs" - "github.com/grafana/agent/pkg/traces/automaticloggingprocessor" - "github.com/grafana/agent/pkg/traces/noopreceiver" - "github.com/grafana/agent/pkg/traces/promsdprocessor" - "github.com/grafana/agent/pkg/traces/remotewriteexporter" - "github.com/grafana/agent/pkg/traces/servicegraphprocessor" + "github.com/mitchellh/mapstructure" "github.com/open-telemetry/opentelemetry-collector-contrib/exporter/jaegerexporter" "github.com/open-telemetry/opentelemetry-collector-contrib/exporter/loadbalancingexporter" "github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter" + "github.com/open-telemetry/opentelemetry-collector-contrib/extension/oauth2clientauthextension" "github.com/open-telemetry/opentelemetry-collector-contrib/processor/attributesprocessor" "github.com/open-telemetry/opentelemetry-collector-contrib/processor/spanmetricsprocessor" "github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor" @@ -37,6 +33,14 @@ import ( "go.opentelemetry.io/collector/processor/batchprocessor" "go.opentelemetry.io/collector/receiver/otlpreceiver" "go.uber.org/multierr" + + "github.com/grafana/agent/pkg/logs" + "github.com/grafana/agent/pkg/traces/automaticloggingprocessor" + "github.com/grafana/agent/pkg/traces/noopreceiver" + "github.com/grafana/agent/pkg/traces/promsdprocessor" + "github.com/grafana/agent/pkg/traces/remotewriteexporter" + "github.com/grafana/agent/pkg/traces/servicegraphprocessor" + "github.com/grafana/agent/pkg/util" ) const ( @@ -160,6 +164,50 @@ var DefaultRemoteWriteConfig = RemoteWriteConfig{ Format: formatOtlp, } +// TLSClientSetting configures the oauth2client extension TLS; compatible with configtls.TLSClientSetting +type TLSClientSetting struct { + CAFile string `yaml:"ca_file,omitempty"` + CertFile string `yaml:"cert_file,omitempty"` + KeyFile string `yaml:"key_file,omitempty"` + MinVersion string `yaml:"min_version,omitempty"` + MaxVersion string `yaml:"max_version,omitempty"` + Insecure bool `yaml:"insecure"` + InsecureSkipVerify bool `yaml:"insecure_skip_verify"` + ServerNameOverride string `yaml:"server_name_override,omitempty"` +} + +// OAuth2Config configures the oauth2client extension for a remote_write exporter +// compatible with oauth2clientauthextension.Config +type OAuth2Config struct { + ClientID string `yaml:"client_id"` + ClientSecret string `yaml:"client_secret"` + TokenURL string `yaml:"token_url"` + Scopes []string `yaml:"scopes,omitempty"` + TLS TLSClientSetting `yaml:"tls,omitempty"` + Timeout time.Duration `yaml:"timeout,omitempty"` +} + +// Agent uses standard YAML unmarshalling, while the oauth2clientauthextension relies on +// mapstructure without providing YAML labels. `toOtelConfig` marshals `Oauth2Config` to configuration type expected by +// the oauth2clientauthextension Extension Factory +func (c OAuth2Config) toOtelConfig() (*oauth2clientauthextension.Config, error) { + var result *oauth2clientauthextension.Config + decoderConfig := &mapstructure.DecoderConfig{ + MatchName: func(s, t string) bool { return util.CamelToSnake(s) == t }, + Result: &result, + WeaklyTypedInput: true, + DecodeHook: mapstructure.ComposeDecodeHookFunc( + mapstructure.StringToSliceHookFunc(","), + mapstructure.StringToTimeDurationHookFunc(), + ), + } + decoder, _ := mapstructure.NewDecoder(decoderConfig) + if err := decoder.Decode(c); err != nil { + return nil, err + } + return result, nil +} + // RemoteWriteConfig controls the configuration of an exporter type RemoteWriteConfig struct { Endpoint string `yaml:"endpoint,omitempty"` @@ -171,6 +219,7 @@ type RemoteWriteConfig struct { InsecureSkipVerify bool `yaml:"insecure_skip_verify,omitempty"` TLSConfig *prom_config.TLSConfig `yaml:"tls_config,omitempty"` BasicAuth *prom_config.BasicAuth `yaml:"basic_auth,omitempty"` + Oauth2 *OAuth2Config `yaml:"oauth2,omitempty"` Headers map[string]string `yaml:"headers,omitempty"` SendingQueue map[string]interface{} `yaml:"sending_queue,omitempty"` // https://github.com/open-telemetry/opentelemetry-collector/blob/7d7ae2eb34b5d387627875c498d7f43619f37ee3/exporter/exporterhelper/queued_retry.go#L30 RetryOnFailure map[string]interface{} `yaml:"retry_on_failure,omitempty"` // https://github.com/open-telemetry/opentelemetry-collector/blob/7d7ae2eb34b5d387627875c498d7f43619f37ee3/exporter/exporterhelper/queued_retry.go#L54 @@ -181,6 +230,7 @@ func (c *RemoteWriteConfig) UnmarshalYAML(unmarshal func(interface{}) error) err *c = DefaultRemoteWriteConfig type plain RemoteWriteConfig + if err := unmarshal((*plain)(c)); err != nil { return err } @@ -253,6 +303,10 @@ func exporter(rwCfg RemoteWriteConfig) (map[string]interface{}, error) { headers = rwCfg.Headers } + if rwCfg.BasicAuth != nil && rwCfg.Oauth2 != nil { + return nil, fmt.Errorf("Only one auth type may be configured per exporter (basic_auth or oauth2)") + } + if rwCfg.BasicAuth != nil { password := string(rwCfg.BasicAuth.Password) @@ -318,21 +372,21 @@ func exporter(rwCfg RemoteWriteConfig) (map[string]interface{}, error) { return exporter, nil } -func getExporterName(protocol string, format string) (string, error) { +func getExporterName(index int, protocol string, format string) (string, error) { switch format { case formatOtlp: switch protocol { case protocolGRPC: - return "otlp", nil + return fmt.Sprintf("otlp/%d", index), nil case protocolHTTP: - return "otlphttp", nil + return fmt.Sprintf("otlphttp/%d", index), nil default: return "", errors.New("unknown protocol, expected either 'http' or 'grpc'") } case formatJaeger: switch protocol { case protocolGRPC: - return "jaeger", nil + return fmt.Sprintf("jaeger/%d", index), nil default: return "", errors.New("unknown protocol, expected 'grpc'") } @@ -349,16 +403,42 @@ func (c *InstanceConfig) exporters() (map[string]interface{}, error) { if err != nil { return nil, err } - exporterName, err := getExporterName(remoteWriteConfig.Protocol, remoteWriteConfig.Format) + exporterName, err := getExporterName(i, remoteWriteConfig.Protocol, remoteWriteConfig.Format) if err != nil { return nil, err } - exporterName = fmt.Sprintf("%s/%d", exporterName, i) + if remoteWriteConfig.Oauth2 != nil { + exporter["auth"] = map[string]string{"authenticator": getAuthExtensionName(exporterName)} + } exporters[exporterName] = exporter } return exporters, nil } +func getAuthExtensionName(exporterName string) string { + return fmt.Sprintf("oauth2client/%s", strings.Replace(exporterName, "/", "", -1)) +} + +// builds oauth2clientauth extensions required to support RemoteWriteConfigurations. +func (c *InstanceConfig) extensions() (map[string]interface{}, error) { + extensions := map[string]interface{}{} + for i, remoteWriteConfig := range c.RemoteWrite { + if remoteWriteConfig.Oauth2 == nil { + continue + } + exporterName, err := getExporterName(i, remoteWriteConfig.Protocol, remoteWriteConfig.Format) + if err != nil { + return nil, err + } + oauthConfig, err := remoteWriteConfig.Oauth2.toOtelConfig() + if err != nil { + return nil, err + } + extensions[getAuthExtensionName(exporterName)] = oauthConfig + } + return extensions, nil +} + func resolver(config map[string]interface{}) (map[string]interface{}, error) { if len(config) == 0 { return nil, fmt.Errorf("must configure one resolver (dns or static)") @@ -435,6 +515,15 @@ func (c *InstanceConfig) otelConfig() (*config.Config, error) { return nil, errors.New("must have at least one configured receiver") } + extensions, err := c.extensions() + if err != nil { + return nil, err + } + extensionsNames := make([]string, 0, len(extensions)) + for name := range extensions { + extensionsNames = append(extensionsNames, name) + } + exporters, err := c.exporters() if err != nil { return nil, err @@ -603,14 +692,19 @@ func (c *InstanceConfig) otelConfig() (*config.Config, error) { receiversMap := map[string]interface{}(c.Receivers) + otelMapStructure["extensions"] = extensions otelMapStructure["exporters"] = exporters otelMapStructure["processors"] = processors otelMapStructure["receivers"] = receiversMap // pipelines - otelMapStructure["service"] = map[string]interface{}{ + serviceMap := map[string]interface{}{ "pipelines": pipelines, } + if len(extensionsNames) > 0 { + serviceMap["extensions"] = extensionsNames + } + otelMapStructure["service"] = serviceMap factories, err := tracingFactories() if err != nil { @@ -633,7 +727,9 @@ func (c *InstanceConfig) otelConfig() (*config.Config, error) { // tracingFactories() only creates the needed factories. if we decide to add support for a new // processor, exporter, receiver we need to add it here func tracingFactories() (component.Factories, error) { - extensions, err := component.MakeExtensionFactoryMap() + extensions, err := component.MakeExtensionFactoryMap( + oauth2clientauthextension.NewFactory(), + ) if err != nil { return component.Factories{}, err } @@ -717,6 +813,7 @@ func orderProcessors(processors []string, splitPipelines bool) [][]string { processor == "tail_sampling" || processor == "automatic_logging" || processor == "service_graphs" { + foundAt = i break } diff --git a/pkg/traces/config_test.go b/pkg/traces/config_test.go index 07bd508c6b9d..0fd2928234d3 100644 --- a/pkg/traces/config_test.go +++ b/pkg/traces/config_test.go @@ -1059,6 +1059,246 @@ service: exporters: ["jaeger/0", "otlp/1"] processors: [] receivers: ["jaeger"] +`, + }, + { + name: "one exporter with oauth2 and basic auth", + cfg: ` +receivers: + jaeger: + protocols: + grpc: +remote_write: + - endpoint: example.com:12345 + basic_auth: + username: test + password: blerg + oauth2: + client_id: somecclient + client_secret: someclientsecret +`, + expectedError: true, + }, + { + name: "simple oauth2 config", + cfg: ` +receivers: + jaeger: + protocols: + grpc: +remote_write: + - endpoint: example.com:12345 + protocol: http + oauth2: + client_id: someclientid + client_secret: someclientsecret + token_url: https://example.com/oauth2/default/v1/token + scopes: ["api.metrics"] + timeout: 2s +`, + expectedConfig: ` +receivers: + jaeger: + protocols: + grpc: +extensions: + oauth2client/otlphttp0: + client_id: someclientid + client_secret: someclientsecret + token_url: https://example.com/oauth2/default/v1/token + scopes: ["api.metrics"] + timeout: 2s +exporters: + otlphttp/0: + endpoint: example.com:12345 + compression: gzip + retry_on_failure: + max_elapsed_time: 60s + auth: + authenticator: oauth2client/otlphttp0 +service: + extensions: ["oauth2client/otlphttp0"] + pipelines: + traces: + exporters: ["otlphttp/0"] + processors: [] + receivers: ["jaeger"] +`, + }, + { + name: "oauth2 TLS", + cfg: ` +receivers: + jaeger: + protocols: + grpc: +remote_write: + - endpoint: example.com:12345 + protocol: http + oauth2: + client_id: someclientid + client_secret: someclientsecret + token_url: https://example.com/oauth2/default/v1/token + scopes: ["api.metrics"] + timeout: 2s + tls: + insecure: true + ca_file: /var/lib/mycert.pem + cert_file: certfile + key_file: keyfile +`, + expectedConfig: ` +receivers: + jaeger: + protocols: + grpc: +extensions: + oauth2client/otlphttp0: + client_id: someclientid + client_secret: someclientsecret + token_url: https://example.com/oauth2/default/v1/token + scopes: ["api.metrics"] + timeout: 2s + tls: + insecure: true + ca_file: /var/lib/mycert.pem + cert_file: certfile + key_file: keyfile +exporters: + otlphttp/0: + endpoint: example.com:12345 + compression: gzip + retry_on_failure: + max_elapsed_time: 60s + auth: + authenticator: oauth2client/otlphttp0 +service: + extensions: ["oauth2client/otlphttp0"] + pipelines: + traces: + exporters: ["otlphttp/0"] + processors: [] + receivers: ["jaeger"] +`, + }, + { + name: "2 exporters different auth", + cfg: ` +receivers: + jaeger: + protocols: + grpc: +remote_write: + - endpoint: example.com:12345 + protocol: http + oauth2: + client_id: someclientid + client_secret: someclientsecret + token_url: https://example.com/oauth2/default/v1/token + scopes: ["api.metrics"] + timeout: 2s + - endpoint: example.com:12345 + protocol: grpc + oauth2: + client_id: anotherclientid + client_secret: anotherclientsecret + token_url: https://example.com/oauth2/default/v1/token + scopes: ["api.metrics"] + timeout: 2s +`, + expectedConfig: ` +receivers: + jaeger: + protocols: + grpc: +extensions: + oauth2client/otlphttp0: + client_id: someclientid + client_secret: someclientsecret + token_url: https://example.com/oauth2/default/v1/token + scopes: ["api.metrics"] + timeout: 2s + oauth2client/otlp1: + client_id: anotherclientid + client_secret: anotherclientsecret + token_url: https://example.com/oauth2/default/v1/token + scopes: ["api.metrics"] + timeout: 2s +exporters: + otlphttp/0: + endpoint: example.com:12345 + compression: gzip + retry_on_failure: + max_elapsed_time: 60s + auth: + authenticator: oauth2client/otlphttp0 + otlp/1: + endpoint: example.com:12345 + compression: gzip + retry_on_failure: + max_elapsed_time: 60s + auth: + authenticator: oauth2client/otlp1 +service: + extensions: ["oauth2client/otlphttp0", "oauth2client/otlp1"] + pipelines: + traces: + exporters: ["otlphttp/0", "otlp/1"] + processors: [] + receivers: ["jaeger"] +`, + }, + { + name: "exporter with insecure oauth", + cfg: ` +receivers: + jaeger: + protocols: + grpc: +remote_write: + - endpoint: http://example.com:12345 + insecure: true + protocol: http + oauth2: + client_id: someclientid + client_secret: someclientsecret + token_url: https://example.com/oauth2/default/v1/token + scopes: ["api.metrics"] + timeout: 2s + tls: + insecure: true +`, + expectedConfig: ` +receivers: + jaeger: + protocols: + grpc: +extensions: + oauth2client/otlphttp0: + client_id: someclientid + client_secret: someclientsecret + token_url: https://example.com/oauth2/default/v1/token + scopes: ["api.metrics"] + timeout: 2s + tls: + insecure: true +exporters: + otlphttp/0: + endpoint: http://example.com:12345 + tls: + insecure: true + compression: gzip + retry_on_failure: + max_elapsed_time: 60s + auth: + authenticator: oauth2client/otlphttp0 +service: + extensions: ["oauth2client/otlphttp0"] + pipelines: + traces: + exporters: ["otlphttp/0"] + processors: [] + receivers: ["jaeger"] `, }, } @@ -1068,7 +1308,6 @@ service: var cfg InstanceConfig err := yaml.Unmarshal([]byte(tc.cfg), &cfg) require.NoError(t, err) - // check error actualConfig, err := cfg.otelConfig() if tc.expectedError { @@ -1448,7 +1687,9 @@ func sortPipelines(cfg *config.Config) { var ( exp = tracePipeline.Exporters recv = tracePipeline.Receivers + ext = cfg.Service.Extensions ) sort.Slice(exp, func(i, j int) bool { return exp[i].String() > exp[j].String() }) sort.Slice(recv, func(i, j int) bool { return recv[i].String() > recv[j].String() }) + sort.Slice(ext, func(i, j int) bool { return ext[i].String() > ext[j].String() }) } diff --git a/pkg/traces/instance.go b/pkg/traces/instance.go index 36c43b241bc4..4940c0129100 100644 --- a/pkg/traces/instance.go +++ b/pkg/traces/instance.go @@ -6,20 +6,22 @@ import ( "sync" "time" - "github.com/grafana/agent/pkg/build" - "github.com/grafana/agent/pkg/logs" - "github.com/grafana/agent/pkg/metrics/instance" - "github.com/grafana/agent/pkg/traces/automaticloggingprocessor" - "github.com/grafana/agent/pkg/traces/contextkeys" - "github.com/grafana/agent/pkg/util" "github.com/prometheus/client_golang/prometheus" "go.opencensus.io/stats/view" "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/config" "go.opentelemetry.io/collector/service/external/builder" + "go.opentelemetry.io/collector/service/external/extensions" "go.opentelemetry.io/otel/metric" "go.opentelemetry.io/otel/trace" "go.uber.org/zap" + + "github.com/grafana/agent/pkg/build" + "github.com/grafana/agent/pkg/logs" + "github.com/grafana/agent/pkg/metrics/instance" + "github.com/grafana/agent/pkg/traces/automaticloggingprocessor" + "github.com/grafana/agent/pkg/traces/contextkeys" + "github.com/grafana/agent/pkg/util" ) // Instance wraps the OpenTelemetry collector to enable tracing pipelines @@ -29,9 +31,10 @@ type Instance struct { logger *zap.Logger metricViews []*view.View - exporter builder.Exporters - pipelines builder.BuiltPipelines - receivers builder.Receivers + extensions extensions.Extensions + exporter builder.Exporters + pipelines builder.BuiltPipelines + receivers builder.Receivers } // NewInstance creates and starts an instance of tracing pipelines. @@ -86,6 +89,11 @@ func (i *Instance) stop() { shutdownCtx, cancel := context.WithTimeout(context.Background(), 30*time.Second) defer cancel() + err := i.extensions.NotifyPipelineNotReady() + if err != nil { + i.logger.Error("failed to notify extension of pipeline shutdown", zap.Error(err)) + } + dependencies := []struct { name string shutdown func() error @@ -117,6 +125,15 @@ func (i *Instance) stop() { return i.exporter.ShutdownAll(shutdownCtx) }, }, + { + name: "extensions", + shutdown: func() error { + if i.extensions == nil { + return nil + } + return i.extensions.ShutdownAll(shutdownCtx) + }, + }, } for _, dep := range dependencies { @@ -129,6 +146,7 @@ func (i *Instance) stop() { i.receivers = nil i.pipelines = nil i.exporter = nil + i.extensions = nil } func (i *Instance) buildAndStartPipeline(ctx context.Context, cfg InstanceConfig, logs *logs.Logs, instManager instance.Manager, reg prometheus.Registerer) error { @@ -180,14 +198,26 @@ func (i *Instance) buildAndStartPipeline(ctx context.Context, cfg InstanceConfig MeterProvider: metric.NewNoopMeterProvider(), } + // start extensions + i.extensions, err = extensions.Build(settings, appinfo, otelConfig, factories.Extensions) + if err != nil { + i.logger.Error(fmt.Sprintf("failed to build extensions:%s", err.Error())) + return fmt.Errorf("failed to create extensions builder: %w", err) + } + err = i.extensions.StartAll(ctx, i) + if err != nil { + i.logger.Error(fmt.Sprintf("failed to start extensions:%s", err.Error())) + return fmt.Errorf("failed to start extensions: %w", err) + } + // start exporter i.exporter, err = builder.BuildExporters(settings, appinfo, otelConfig, factories.Exporters) if err != nil { return fmt.Errorf("failed to create exporters builder: %w", err) } - err = i.exporter.StartAll(ctx, i) if err != nil { + i.logger.Error(fmt.Sprintf("failed to start exporter:%s", err.Error())) return fmt.Errorf("failed to start exporters: %w", err) } @@ -213,7 +243,7 @@ func (i *Instance) buildAndStartPipeline(ctx context.Context, cfg InstanceConfig return fmt.Errorf("failed to start receivers: %w", err) } - return nil + return i.extensions.NotifyPipelineReady() } // ReportFatalError implements component.Host @@ -228,7 +258,7 @@ func (i *Instance) GetFactory(component.Kind, config.Type) component.Factory { // GetExtensions implements component.Host func (i *Instance) GetExtensions() map[config.ComponentID]component.Extension { - return nil + return i.extensions.ToMap() } // GetExporters implements component.Host diff --git a/pkg/traces/internal/traceutils/server.go b/pkg/traces/internal/traceutils/server.go index 4f2bf2a3f541..d8a9c9a98ae2 100644 --- a/pkg/traces/internal/traceutils/server.go +++ b/pkg/traces/internal/traceutils/server.go @@ -214,6 +214,7 @@ func newFuncProcessorFactory(callback func(pdata.Traces)) component.ProcessorFac _ config.Processor, next consumer.Traces, ) (component.TracesProcessor, error) { + return &funcProcessor{ Callback: callback, Next: next, @@ -254,6 +255,7 @@ func newNoopExporterFactory() component.ExporterFactory { config.Exporter) ( component.TracesExporter, error) { + return &noopExporter{}, nil }), ) diff --git a/pkg/traces/noopreceiver/factory.go b/pkg/traces/noopreceiver/factory.go index 05d50c7a8cef..1963f525b791 100644 --- a/pkg/traces/noopreceiver/factory.go +++ b/pkg/traces/noopreceiver/factory.go @@ -41,5 +41,6 @@ func createMetricsReceiver( _ config.Receiver, _ consumer.Metrics, ) (component.MetricsReceiver, error) { + return newNoopReceiver(nil, nil, nil), nil } diff --git a/pkg/traces/promsdprocessor/factory.go b/pkg/traces/promsdprocessor/factory.go index 006cf2c4de82..7ae4c80d4ec0 100644 --- a/pkg/traces/promsdprocessor/factory.go +++ b/pkg/traces/promsdprocessor/factory.go @@ -59,8 +59,8 @@ func createTraceProcessor( cfg config.Processor, nextConsumer consumer.Traces, ) (component.TracesProcessor, error) { - oCfg := cfg.(*Config) + oCfg := cfg.(*Config) out, err := yaml.Marshal(oCfg.ScrapeConfigs) if err != nil { return nil, fmt.Errorf("unable to marshal scrapeConfigs interface{} to yaml: %w", err) diff --git a/pkg/traces/remotewriteexporter/exporter.go b/pkg/traces/remotewriteexporter/exporter.go index 1f0cab384fb4..371516314bc1 100644 --- a/pkg/traces/remotewriteexporter/exporter.go +++ b/pkg/traces/remotewriteexporter/exporter.go @@ -157,8 +157,8 @@ func (e *remoteWriteExporter) handleHistogramIntDataPoints(app storage.Appender, if err := e.appendDataPointWithLabels(app, name, bucketSuffix, dataPoint, float64(cumulativeCount), ls); err != nil { return err } - } + return nil } diff --git a/pkg/traces/remotewriteexporter/exporter_test.go b/pkg/traces/remotewriteexporter/exporter_test.go index e50dc88eec9c..c0f6a8639100 100644 --- a/pkg/traces/remotewriteexporter/exporter_test.go +++ b/pkg/traces/remotewriteexporter/exporter_test.go @@ -9,7 +9,6 @@ import ( "github.com/grafana/agent/pkg/metrics/instance" "github.com/prometheus/prometheus/pkg/exemplar" "github.com/prometheus/prometheus/pkg/labels" - "github.com/prometheus/prometheus/scrape" "github.com/prometheus/prometheus/storage" "github.com/stretchr/testify/require" "go.opentelemetry.io/collector/model/pdata" @@ -103,17 +102,10 @@ func (m *mockManager) DeleteConfig(_ string) error { return nil } func (m *mockManager) Stop() {} type mockInstance struct { + instance.NoOpInstance appender *mockAppender } -func (m *mockInstance) Run(_ context.Context) error { return nil } - -func (m *mockInstance) Update(_ instance.Config) error { return nil } - -func (m *mockInstance) TargetsActive() map[string][]*scrape.Target { return nil } - -func (m *mockInstance) StorageDirectory() string { return "" } - func (m *mockInstance) Appender(_ context.Context) storage.Appender { if m.appender == nil { m.appender = &mockAppender{} diff --git a/pkg/traces/remotewriteexporter/factory.go b/pkg/traces/remotewriteexporter/factory.go index 226df1fc8891..790828a368c8 100644 --- a/pkg/traces/remotewriteexporter/factory.go +++ b/pkg/traces/remotewriteexporter/factory.go @@ -49,7 +49,7 @@ func createMetricsExporter( _ component.ExporterCreateSettings, cfg config.Exporter, ) (component.MetricsExporter, error) { - eCfg := cfg.(*Config) + eCfg := cfg.(*Config) return newRemoteWriteExporter(eCfg) } diff --git a/pkg/traces/servicegraphprocessor/factory.go b/pkg/traces/servicegraphprocessor/factory.go index e31dfa7ff85e..8fcdcb6757cf 100644 --- a/pkg/traces/servicegraphprocessor/factory.go +++ b/pkg/traces/servicegraphprocessor/factory.go @@ -60,7 +60,7 @@ func createTracesProcessor( cfg config.Processor, nextConsumer consumer.Traces, ) (component.TracesProcessor, error) { - eCfg := cfg.(*Config) + eCfg := cfg.(*Config) return newProcessor(nextConsumer, eCfg), nil } diff --git a/pkg/traces/servicegraphprocessor/processor.go b/pkg/traces/servicegraphprocessor/processor.go index 5d59044981d0..39ac5197836d 100644 --- a/pkg/traces/servicegraphprocessor/processor.go +++ b/pkg/traces/servicegraphprocessor/processor.go @@ -279,7 +279,6 @@ func (p *processor) consume(trace pdata.Traces) error { ils := ilsSlice.At(j) for k := 0; k < ils.Spans().Len(); k++ { - span := ils.Spans().At(k) switch span.Kind() { diff --git a/pkg/traces/servicegraphprocessor/processor_test.go b/pkg/traces/servicegraphprocessor/processor_test.go index 48119cb533eb..8f70ae0a4625 100644 --- a/pkg/traces/servicegraphprocessor/processor_test.go +++ b/pkg/traces/servicegraphprocessor/processor_test.go @@ -95,7 +95,6 @@ func TestConsumeMetrics(t *testing.T) { require.NoError(t, err) }) } - } func traceSamples(t *testing.T, path string) pdata.Traces { diff --git a/pkg/traces/traces.go b/pkg/traces/traces.go index 0725a47b7ef7..0294aa03ee20 100644 --- a/pkg/traces/traces.go +++ b/pkg/traces/traces.go @@ -12,6 +12,7 @@ import ( zaplogfmt "github.com/jsternberg/zap-logfmt" prom_client "github.com/prometheus/client_golang/prometheus" "github.com/sirupsen/logrus" + "github.com/weaveworks/common/logging" "go.opencensus.io/stats/view" "go.opentelemetry.io/collector/external/obsreportconfig" "go.uber.org/zap" @@ -33,13 +34,13 @@ type Traces struct { } // New creates and starts trace collection. -func New(logsSubsystem *logs.Logs, promInstanceManager instance.Manager, reg prom_client.Registerer, cfg Config, level logrus.Level) (*Traces, error) { +func New(logsSubsystem *logs.Logs, promInstanceManager instance.Manager, reg prom_client.Registerer, cfg Config, level logrus.Level, fmt logging.Format) (*Traces, error) { var leveller logLeveller traces := &Traces{ instances: make(map[string]*Instance), leveller: &leveller, - logger: newLogger(&leveller), + logger: newLogger(&leveller, fmt), reg: reg, promInstanceManager: promInstanceManager, } @@ -109,13 +110,24 @@ func (t *Traces) Stop() { } } -func newLogger(zapLevel zapcore.LevelEnabler) *zap.Logger { +func newLogger(zapLevel zapcore.LevelEnabler, fmt logging.Format) *zap.Logger { config := zap.NewProductionEncoderConfig() config.EncodeTime = func(ts time.Time, encoder zapcore.PrimitiveArrayEncoder) { encoder.AppendString(ts.UTC().Format(time.RFC3339)) } + + var encoder zapcore.Encoder + switch fmt.String() { + case "logfmt": + encoder = zaplogfmt.NewEncoder(config) + case "json": + encoder = zapcore.NewJSONEncoder(config) + default: + encoder = zaplogfmt.NewEncoder(config) + } + logger := zap.New(zapcore.NewCore( - zaplogfmt.NewEncoder(config), + encoder, os.Stdout, zapLevel, ), zap.AddCaller()) diff --git a/pkg/traces/traces_test.go b/pkg/traces/traces_test.go index d289cc7be909..01cde1ff04c0 100644 --- a/pkg/traces/traces_test.go +++ b/pkg/traces/traces_test.go @@ -48,7 +48,7 @@ configs: var loggingLevel logging.Level require.NoError(t, loggingLevel.Set("debug")) - traces, err := New(nil, nil, prometheus.NewRegistry(), cfg, logrus.InfoLevel) + traces, err := New(nil, nil, prometheus.NewRegistry(), cfg, logrus.InfoLevel, logging.Format{}) require.NoError(t, err) t.Cleanup(traces.Stop) @@ -94,7 +94,7 @@ configs: err := dec.Decode(&cfg) require.NoError(t, err) - traces, err := New(nil, nil, prometheus.NewRegistry(), cfg, logrus.DebugLevel) + traces, err := New(nil, nil, prometheus.NewRegistry(), cfg, logrus.DebugLevel, logging.Format{}) require.NoError(t, err) t.Cleanup(traces.Stop) diff --git a/pkg/util/logger.go b/pkg/util/logger.go index bc627c3a0b26..5e90090d718c 100644 --- a/pkg/util/logger.go +++ b/pkg/util/logger.go @@ -29,6 +29,17 @@ func NewLogger(cfg *server.Config) *Logger { return newLogger(cfg, defaultLogger) } +// NewLoggerFromLevel creates a new logger from logging.Level and logging.Format. +func NewLoggerFromLevel(lvl logging.Level, fmt logging.Format) *Logger { + logger, err := makeDefaultLogger(lvl, fmt) + if err != nil { + panic(err) + } + return &Logger{ + l: logger, + } +} + func newLogger(cfg *server.Config, ctor func(*server.Config) (log.Logger, error)) *Logger { l := Logger{makeLogger: ctor} if err := l.ApplyConfig(cfg); err != nil { @@ -52,9 +63,13 @@ func (l *Logger) ApplyConfig(cfg *server.Config) error { } func defaultLogger(cfg *server.Config) (log.Logger, error) { + return makeDefaultLogger(cfg.LogLevel, cfg.LogFormat) +} + +func makeDefaultLogger(lvl logging.Level, fmt logging.Format) (log.Logger, error) { var l log.Logger - l, err := cortex_log.NewPrometheusLogger(cfg.LogLevel, cfg.LogFormat) + l, err := cortex_log.NewPrometheusLogger(lvl, fmt) if err != nil { return nil, err } diff --git a/pkg/util/strings.go b/pkg/util/strings.go new file mode 100644 index 000000000000..0caaadcecbd0 --- /dev/null +++ b/pkg/util/strings.go @@ -0,0 +1,15 @@ +package util + +import ( + "regexp" + "strings" +) + +// CamelToSnake is a helper function for converting CamelCase to Snake Case +func CamelToSnake(str string) string { + var matchFirstCap = regexp.MustCompile("(.)([A-Z][a-z]+)") + var matchAllCap = regexp.MustCompile("([a-z0-9])([A-Z])") + snake := matchFirstCap.ReplaceAllString(str, "${1}_${2}") + snake = matchAllCap.ReplaceAllString(snake, "${1}_${2}") + return strings.ToLower(snake) +} diff --git a/pkg/util/trigger_test.go b/pkg/util/trigger_test.go index 2959ba974d0f..5e8d4f70702a 100644 --- a/pkg/util/trigger_test.go +++ b/pkg/util/trigger_test.go @@ -26,5 +26,4 @@ func TestWaitTrigger(t *testing.T) { err := wt.Wait(time.Second) require.NoError(t, err) }) - } diff --git a/production/README.md b/production/README.md index 4bbb146d4682..a73aca24a288 100644 --- a/production/README.md +++ b/production/README.md @@ -13,7 +13,7 @@ Here are some resources to help you run the Grafana Agent: ## Windows Installation -To run the Windows Installation, download the Windows Installer executable from the [release page](https://github.com/grafana/agent/releases). Then run the installer, this will setup the Agent and run the Agent as a Windows Service. More details can be found in the [Windows Guide](../docs/getting-started/install-agent-on-windows.md) +To run the Windows Installation, download the Windows Installer executable from the [release page](https://github.com/grafana/agent/releases). Then run the installer, this will setup the Agent and run the Agent as a Windows Service. More details can be found in the [Windows Guide](https://grafana.com/docs/agent/latest/getting-started/install-agent-on-windows/) ## Running the Agent with Docker @@ -27,7 +27,7 @@ directory on your host that you want the agent to store its WAL. docker run \ -v /tmp/agent:/etc/agent/data \ -v /path/to/config.yaml:/etc/agent/agent.yaml \ - grafana/agent:v0.22.0 + grafana/agent:v0.23.0 ``` ## Running the Agent locally diff --git a/production/grafana-agent-mixin/alerts.libsonnet b/production/grafana-agent-mixin/alerts.libsonnet index 7f66d672c782..c34836d570f2 100644 --- a/production/grafana-agent-mixin/alerts.libsonnet +++ b/production/grafana-agent-mixin/alerts.libsonnet @@ -65,6 +65,121 @@ local _config = config._config; }, ], }, + { + name: 'GrafanaAgentSmokeChecks', + rules: [ + { + alert: 'GrafanaAgentDown', + expr: ||| + up{ + namespace="agent-smoke-test", + pod=~"grafana-agent-smoke-test-(0|cluster-0|cluster-1|cluster-2)", + } == 0 + |||, + 'for': '5m', + annotations: { + summary: '{{ $labels.job }} is down', + }, + }, + { + alert: 'GrafanaAgentFlapping', + expr: ||| + avg_over_time(up{ + namespace="agent-smoke-test", + pod=~"grafana-agent-smoke-test-(0|cluster-0|cluster-1|cluster-2)", + }[5m]) < 1 + |||, + 'for': '15m', + annotations: { + summary: '{{ $labels.job }} is flapping', + }, + }, + + // Checks that the CPU usage doesn't go too high. This was generated from internal usage where + // every 1,000 active series used roughly 0.0013441% of CPU. This alert only fires if there is a + // minimum load threshold of at least 1000 active series. + { + alert: 'GrafanaAgentCPUHigh', + expr: ||| + (sum by (pod) (rate(container_cpu_usage_seconds_total{cluster=~".+", namespace=~"agent-smoke-test", container=~".+", pod="grafana-agent-smoke-test-cluster-2"}[5m])) + / + (sum by (pod) (agent_wal_storage_active_series{cluster=~".+", namespace=~"agent-smoke-test", container=~".+", pod="grafana-agent-smoke-test-cluster-2"}) / 1000) + > 0.0013441) + and + sum by (pod) (agent_wal_storage_active_series{cluster=~".+", namespace=~"agent-smoke-test", container=~".+", pod="grafana-agent-smoke-test-cluster-2"}) > 1000 + |||, + 'for': '15m', + annotations: { + summary: '{{ $labels.pod }} is using more than 0.0013441 CPU per 1000 series over the last 5 minutes', + }, + }, + + // We assume roughly ~8KB per series. Check that each deployment + // doesn't go too far above this. + // + // We aggregate the memory of the scraping service together since an individual + // node with a really small number of active series will throw this metric off. + { + alert: 'GrafanaAgentMemHigh', + expr: ||| + sum without (pod, instance) (go_memstats_heap_inuse_bytes{job=~"agent-smoke-test/grafana-agent-smoke-test.*"}) / + sum without (pod, instance, instance_group_name) (agent_wal_storage_active_series{job=~"agent-smoke-test/grafana-agent-smoke-test.*"}) / 1e3 > 10 + |||, + 'for': '5m', + annotations: { + summary: '{{ $labels.job }} has used more than 10KB per series for more than 5 minutes', + }, + }, + ], + }, + { + name: 'GrafanaAgentCrowChecks', + rules: [ + { + alert: 'CrowDown', + expr: ||| + up{job=~"agent-smoke-test/crow-.*"} == 0 + |||, + 'for': '5m', + annotations: { + summary: 'Crow {{ $labels.job }} is down.', + }, + }, + { + alert: 'CrowFlapping', + expr: ||| + avg_over_time(up{job=~"agent-smoke-test/crow-.*"}[5m]) < 1 + |||, + 'for': '15m', + annotations: { + summary: 'Crow {{ $labels.job }} is flapping.', + }, + }, + { + alert: 'CrowNotScraped', + expr: ||| + rate(crow_test_samples_total[5m]) == 0 + |||, + 'for': '15m', + annotations: { + summary: 'Crow {{ $labels.job }} is not being scraped.', + }, + }, + { + alert: 'CrowFailures', + expr: ||| + ( + rate(crow_test_sample_results_total{result="success"}[5m]) + / ignoring(result) rate(crow_test_samples_total[5m]) + ) < 1 + |||, + 'for': '15m', + annotations: { + summary: 'Crow {{ $labels.job }} has had failures for at least 5m', + }, + }, + ], + }, ], }, } diff --git a/production/grafanacloud-install.sh b/production/grafanacloud-install.sh index c2d07a53eeea..a4eb2a1a0dfb 100755 --- a/production/grafanacloud-install.sh +++ b/production/grafanacloud-install.sh @@ -50,7 +50,7 @@ PACKAGE_SYSTEM=${PACKAGE_SYSTEM:=} # # Global constants. # -RELEASE_VERSION="0.22.0" +RELEASE_VERSION="0.23.0" RELEASE_URL="https://github.com/grafana/agent/releases/download/v${RELEASE_VERSION}" DEB_URL="${RELEASE_URL}/grafana-agent-${RELEASE_VERSION}-1.${ARCH}.deb" diff --git a/production/kubernetes/agent-bare.yaml b/production/kubernetes/agent-bare.yaml index 2eda70a26a8b..170a6d6b96c6 100644 --- a/production/kubernetes/agent-bare.yaml +++ b/production/kubernetes/agent-bare.yaml @@ -66,7 +66,7 @@ spec: valueFrom: fieldRef: fieldPath: spec.nodeName - image: grafana/agent:v0.22.0 + image: grafana/agent:v0.23.0 imagePullPolicy: IfNotPresent name: agent ports: diff --git a/production/kubernetes/agent-loki.yaml b/production/kubernetes/agent-loki.yaml index cf284912af18..dc59e9241821 100644 --- a/production/kubernetes/agent-loki.yaml +++ b/production/kubernetes/agent-loki.yaml @@ -2,7 +2,7 @@ apiVersion: v1 kind: ServiceAccount metadata: name: grafana-agent-logs - namespace: YOUR_NAMESPACE + namespace: ${NAMESPACE} --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole @@ -37,13 +37,13 @@ roleRef: subjects: - kind: ServiceAccount name: grafana-agent-logs - namespace: YOUR_NAMESPACE + namespace: ${NAMESPACE} --- apiVersion: apps/v1 kind: DaemonSet metadata: name: grafana-agent-logs - namespace: YOUR_NAMESPACE + namespace: ${NAMESPACE} spec: minReadySeconds: 10 selector: @@ -64,7 +64,7 @@ spec: valueFrom: fieldRef: fieldPath: spec.nodeName - image: grafana/agent:v0.22.0 + image: grafana/agent:v0.23.0 imagePullPolicy: IfNotPresent name: agent ports: diff --git a/production/kubernetes/agent-traces.yaml b/production/kubernetes/agent-traces.yaml index 3ad3616f1f3a..47e205914433 100644 --- a/production/kubernetes/agent-traces.yaml +++ b/production/kubernetes/agent-traces.yaml @@ -109,7 +109,7 @@ spec: valueFrom: fieldRef: fieldPath: spec.nodeName - image: grafana/agent:v0.22.0 + image: grafana/agent:v0.23.0 imagePullPolicy: IfNotPresent name: agent ports: diff --git a/production/kubernetes/build/lib/version.libsonnet b/production/kubernetes/build/lib/version.libsonnet index 24f9f8cd67a2..f1fe9c140135 100644 --- a/production/kubernetes/build/lib/version.libsonnet +++ b/production/kubernetes/build/lib/version.libsonnet @@ -1 +1 @@ -'grafana/agent:v0.22.0' +'grafana/agent:v0.23.0' diff --git a/production/kubernetes/build/templates/loki/main.jsonnet b/production/kubernetes/build/templates/loki/main.jsonnet index 82721f6048d7..37cad47952eb 100644 --- a/production/kubernetes/build/templates/loki/main.jsonnet +++ b/production/kubernetes/build/templates/loki/main.jsonnet @@ -2,7 +2,7 @@ local agent = import 'grafana-agent/v1/main.libsonnet'; { agent: - agent.new('grafana-agent-logs', 'YOUR_NAMESPACE') + + agent.new('grafana-agent-logs', '${NAMESPACE}') + agent.withConfigHash(false) + agent.withImages({ agent: (import 'version.libsonnet'), diff --git a/production/kubernetes/install-bare.sh b/production/kubernetes/install-bare.sh index e113a84dfbc1..6a80a5e45229 100644 --- a/production/kubernetes/install-bare.sh +++ b/production/kubernetes/install-bare.sh @@ -25,7 +25,7 @@ check_installed() { check_installed curl check_installed envsubst -MANIFEST_BRANCH=v0.22.0 +MANIFEST_BRANCH=v0.23.0 MANIFEST_URL=${MANIFEST_URL:-https://raw.githubusercontent.com/grafana/agent/${MANIFEST_BRANCH}/production/kubernetes/agent-bare.yaml} NAMESPACE=${NAMESPACE:-default} diff --git a/production/operator/crds/monitoring.grafana.com_grafanaagents.yaml b/production/operator/crds/monitoring.grafana.com_grafanaagents.yaml index f97b968bf855..bb18b7d06ec9 100644 --- a/production/operator/crds/monitoring.grafana.com_grafanaagents.yaml +++ b/production/operator/crds/monitoring.grafana.com_grafanaagents.yaml @@ -2203,6 +2203,11 @@ spec: - name type: object type: array + enableConfigReadAPI: + default: false + description: enableConfigReadAPI enables the read API for viewing + currently running config port 8080 on the agent. + type: boolean image: description: Image, when specified, overrides the image used to run the Agent. It should be specified along with a tag. Version must diff --git a/example/k3d/lib/etcd/main.libsonnet b/production/tanka/grafana-agent/smoke/etcd/main.libsonnet similarity index 100% rename from example/k3d/lib/etcd/main.libsonnet rename to production/tanka/grafana-agent/smoke/etcd/main.libsonnet diff --git a/production/tanka/grafana-agent/v1/main.libsonnet b/production/tanka/grafana-agent/v1/main.libsonnet index 088e09ba87ca..825663ba355d 100644 --- a/production/tanka/grafana-agent/v1/main.libsonnet +++ b/production/tanka/grafana-agent/v1/main.libsonnet @@ -15,8 +15,8 @@ local service = k.core.v1.service; (import './lib/traces.libsonnet') + { _images:: { - agent: 'grafana/agent:v0.22.0', - agentctl: 'grafana/agentctl:v0.22.0', + agent: 'grafana/agent:v0.23.0', + agentctl: 'grafana/agentctl:v0.23.0', }, // new creates a new DaemonSet deployment of the grafana-agent. By default, diff --git a/production/tanka/grafana-agent/v2/internal/base.libsonnet b/production/tanka/grafana-agent/v2/internal/base.libsonnet index 48845de718a0..90afd08ef537 100644 --- a/production/tanka/grafana-agent/v2/internal/base.libsonnet +++ b/production/tanka/grafana-agent/v2/internal/base.libsonnet @@ -10,8 +10,8 @@ function(name='grafana-agent', namespace='') { local this = self, _images:: { - agent: 'grafana/agent:v0.22.0', - agentctl: 'grafana/agentctl:v0.22.0', + agent: 'grafana/agent:v0.23.0', + agentctl: 'grafana/agentctl:v0.23.0', }, _config:: { name: name, diff --git a/production/tanka/grafana-agent/v2/internal/syncer.libsonnet b/production/tanka/grafana-agent/v2/internal/syncer.libsonnet index 15c4fc8bf4b8..044222c2ad98 100644 --- a/production/tanka/grafana-agent/v2/internal/syncer.libsonnet +++ b/production/tanka/grafana-agent/v2/internal/syncer.libsonnet @@ -14,7 +14,7 @@ function( ) { local _config = { api: error 'api must be set', - image: 'grafana/agentctl:v0.22.0', + image: 'grafana/agentctl:v0.23.0', schedule: '*/5 * * * *', configs: [], } + config, diff --git a/production/tanka/grafana-agent/v2/main.libsonnet b/production/tanka/grafana-agent/v2/main.libsonnet index 6b775326ac6d..b659d9d31250 100644 --- a/production/tanka/grafana-agent/v2/main.libsonnet +++ b/production/tanka/grafana-agent/v2/main.libsonnet @@ -1,5 +1,6 @@ local k = import 'ksonnet-util/kausal.libsonnet'; local container = k.core.v1.container; +local podTemplateSpec = k.core.v1.podTemplateSpec.spec; { new(name='grafana-agent', namespace=''):: @@ -24,7 +25,11 @@ local container = k.core.v1.container; withPortsMixin(ports=[]):: { container+:: container.withPortsMixin(ports) }, withVolumeMountsMixin(mounts=[]):: { container+:: container.withVolumeMountsMixin(mounts) }, withVolumesMixin(volumes=[]):: { - controller+: self.controller.mixin.spec.template.spec.withVolumesMixin(volumes), + controller+: { + spec+: { + template+: podTemplateSpec.withVolumesMixin(volumes) + }, + }, }, // Helpers diff --git a/tools/crow/.gitignore b/tools/crow/.gitignore new file mode 100644 index 000000000000..4abc650571dc --- /dev/null +++ b/tools/crow/.gitignore @@ -0,0 +1 @@ +grafana-agent-crow diff --git a/tools/smoke/.gitignore b/tools/smoke/.gitignore new file mode 100644 index 000000000000..a85290032261 --- /dev/null +++ b/tools/smoke/.gitignore @@ -0,0 +1 @@ +grafana-agent-smoke diff --git a/tools/smoke/Dockerfile b/tools/smoke/Dockerfile new file mode 100644 index 000000000000..82facd92bce7 --- /dev/null +++ b/tools/smoke/Dockerfile @@ -0,0 +1,23 @@ +FROM golang:1.17.6-buster as build +COPY . /src/agent +WORKDIR /src/agent +ARG RELEASE_BUILD=true +ARG IMAGE_TAG + +# Backports repo required to get a libsystemd version 246 or newer which is required to handle journal +ZSTD compression +RUN echo "deb http://deb.debian.org/debian buster-backports main" >> /etc/apt/sources.list +RUN apt-get update && apt-get install -t buster-backports -qy libsystemd-dev + +RUN make clean && make IMAGE_TAG=${IMAGE_TAG} RELEASE_BUILD=${RELEASE_BUILD} BUILD_IN_CONTAINER=false agent-smoke + +FROM debian:buster-slim + +# Backports repo required to get a libsystemd version 246 or newer which is required to handle journal +ZSTD compression +RUN echo "deb http://deb.debian.org/debian buster-backports main" >> /etc/apt/sources.list +RUN apt-get update && apt-get install -t buster-backports -qy libsystemd-dev && \ + apt-get install -qy tzdata ca-certificates && \ + rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* + +COPY --from=build /src/agent/tools/smoke/grafana-agent-smoke /bin/grafana-agent-smoke + +ENTRYPOINT ["/bin/grafana-agent-smoke"] diff --git a/tools/smoke/Dockerfile.buildx b/tools/smoke/Dockerfile.buildx new file mode 100644 index 000000000000..702a7d926d1f --- /dev/null +++ b/tools/smoke/Dockerfile.buildx @@ -0,0 +1,32 @@ +FROM --platform=$BUILDPLATFORM rfratto/seego:latest as build +ARG TARGETPLATFORM +ARG BUILDPLATFORM + +# Use custom Go version instead of one prepacked in seego +ENV GOLANG_VERSION 1.17.6 +ENV GOLANG_DOWNLOAD_URL https://golang.org/dl/go$GOLANG_VERSION.linux-amd64.tar.gz +ENV GOLANG_DOWNLOAD_SHA256 231654bbf2dab3d86c1619ce799e77b03d96f9b50770297c8f4dff8836fc8ca2 +RUN rm -rf /usr/local/go \ + && curl -fsSL "$GOLANG_DOWNLOAD_URL" -o golang.tar.gz \ + && echo "$GOLANG_DOWNLOAD_SHA256 golang.tar.gz" | sha256sum -c - \ + && tar -C /usr/local -xzf golang.tar.gz \ + && rm golang.tar.gz + +COPY . /src/agent +WORKDIR /src/agent +ARG RELEASE_BUILD=true +ARG IMAGE_TAG + +RUN make clean && IMAGE_TAG=${IMAGE_TAG} RELEASE_BUILD=${RELEASE_BUILD} BUILD_IN_CONTAINER=false DRONE=true make agent-smoke + +FROM debian:buster-slim + +# Backports repo required to get a libsystemd version 246 or newer which is required to handle journal +ZSTD compression +RUN echo "deb http://deb.debian.org/debian buster-backports main" >> /etc/apt/sources.list +RUN apt-get update && apt-get install -t buster-backports -qy libsystemd-dev && \ + apt-get install -qy tzdata ca-certificates libsystemd-dev && \ + rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* + +COPY --from=build /src/agent/tools/smoke/grafana-agent-smoke /bin/grafana-agent-smoke + +ENTRYPOINT ["/bin/grafana-agent-smoke"] diff --git a/tools/smoke/internal/smoke.go b/tools/smoke/internal/smoke.go new file mode 100644 index 000000000000..7914cf3ae2e1 --- /dev/null +++ b/tools/smoke/internal/smoke.go @@ -0,0 +1,151 @@ +package smoke + +import ( + "context" + "flag" + "fmt" + "net/http" + "time" + + "github.com/go-kit/log" + "github.com/go-kit/log/level" + "github.com/oklog/run" + "k8s.io/client-go/kubernetes" + "k8s.io/client-go/tools/clientcmd" +) + +// Smoke is the top level object for a smoke test. +type Smoke struct { + cfg *Config + logger log.Logger + tasks []repeatingTask +} + +// Config struct to pass configuration to the Smoke constructor. +type Config struct { + Kubeconfig string + Namespace string + PodPrefix string + FakeRemoteWrite bool + ChaosFrequency time.Duration + MutationFrequency time.Duration +} + +// RegisterFlags registers flags for the config to the given FlagSet. +func (c *Config) RegisterFlags(f *flag.FlagSet) { + f.StringVar(&c.Namespace, "namespace", DefaultConfig.Namespace, "namespace smoke test should run in") + f.StringVar(&c.Kubeconfig, "kubeconfig", DefaultConfig.Kubeconfig, "absolute path to the kubeconfig file") + f.StringVar(&c.PodPrefix, "pod-prefix", DefaultConfig.PodPrefix, "prefix for grafana agent pods") + f.BoolVar(&c.FakeRemoteWrite, "fake-remote-write", DefaultConfig.FakeRemoteWrite, "remote write endpoint for series which are discarded, useful for testing and not storing metrics") + f.DurationVar(&c.ChaosFrequency, "chaos-frequency", DefaultConfig.ChaosFrequency, "chaos frequency duration") + f.DurationVar(&c.MutationFrequency, "mutation-frequency", DefaultConfig.MutationFrequency, "mutation frequency duration") +} + +// DefaultConfig holds defaults for Smoke settings. +var DefaultConfig = Config{ + Kubeconfig: "", + Namespace: "default", + PodPrefix: "grafana-agent", + FakeRemoteWrite: false, + ChaosFrequency: 30 * time.Minute, + MutationFrequency: 5 * time.Minute, +} + +// New is the constructor for a Smoke object. +func New(logger log.Logger, cfg Config) (*Smoke, error) { + s := &Smoke{ + cfg: &cfg, + logger: logger, + } + if s.logger == nil { + s.logger = log.NewNopLogger() + } + + // use the current context in kubeconfig. this falls back to in-cluster config if kubeconfig is empty + config, err := clientcmd.BuildConfigFromFlags("", cfg.Kubeconfig) + if err != nil { + return nil, err + } + // creates the clientset + clientset, err := kubernetes.NewForConfig(config) + if err != nil { + return nil, err + } + + // add default tasks + s.tasks = append(s.tasks, + repeatingTask{ + Task: &deletePodTask{ + logger: log.With(s.logger, "task", "delete_pod", "pod", "grafana-agent-0"), + clientset: clientset, + namespace: cfg.Namespace, + pod: fmt.Sprintf("%s-0", cfg.PodPrefix), + }, + frequency: cfg.ChaosFrequency, + }, + repeatingTask{ + Task: &deletePodBySelectorTask{ + logger: log.With(s.logger, "task", "delete_pod_by_selector"), + clientset: clientset, + namespace: cfg.Namespace, + selector: fmt.Sprintf("name=%s-cluster", cfg.PodPrefix), + }, + frequency: cfg.ChaosFrequency, + }, + repeatingTask{ + Task: &scaleDeploymentTask{ + logger: log.With(s.logger, "task", "scale_deployment", "deployment", "avalanche"), + clientset: clientset, + namespace: cfg.Namespace, + deployment: "avalanche", + maxReplicas: 11, + minReplicas: 2, + }, + frequency: cfg.MutationFrequency, + }) + + return s, nil +} + +func (s *Smoke) ServeHTTP(rw http.ResponseWriter, _ *http.Request) { + rw.WriteHeader(http.StatusOK) +} + +// Run starts the smoke test and runs the tasks concurrently. +func (s *Smoke) Run(ctx context.Context) error { + var g run.Group + ctx, cancel := context.WithCancel(ctx) + defer cancel() + taskFn := func(t repeatingTask) func() error { + return func() error { + tick := time.NewTicker(t.frequency) + defer tick.Stop() + for { + select { + case <-tick.C: + if err := t.Run(ctx); err != nil { + return err + } + case <-ctx.Done(): + return nil + } + } + } + } + for _, task := range s.tasks { + g.Add(taskFn(task), func(err error) { + cancel() + }) + } + + if s.cfg.FakeRemoteWrite { + level.Info(s.logger).Log("msg", "serving fake remote-write endpoint on :19090") + g.Add(func() error { + return http.ListenAndServe(":19090", s) + }, func(err error) { + cancel() + }) + } + + return g.Run() +} diff --git a/tools/smoke/internal/tasks.go b/tools/smoke/internal/tasks.go new file mode 100644 index 000000000000..3b887d577f77 --- /dev/null +++ b/tools/smoke/internal/tasks.go @@ -0,0 +1,101 @@ +package smoke + +import ( + "context" + "math/rand" + "time" + + "github.com/go-kit/log" + "github.com/go-kit/log/level" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/client-go/kubernetes" + "k8s.io/utils/pointer" +) + +// The Task interface represents some unit of work performed concurrently. +type Task interface { + Run(context.Context) error +} + +type repeatingTask struct { + Task + frequency time.Duration +} + +type deletePodTask struct { + logger log.Logger + clientset kubernetes.Interface + namespace string + pod string +} + +func (t *deletePodTask) Run(ctx context.Context) error { + level.Debug(t.logger).Log("msg", "deleting pod") + if err := t.clientset.CoreV1().Pods(t.namespace).Delete(ctx, t.pod, metav1.DeleteOptions{ + GracePeriodSeconds: pointer.Int64(0), + }); err != nil { + level.Error(t.logger).Log("msg", "failed to delete pod", "err", err) + } + return nil +} + +type scaleDeploymentTask struct { + logger log.Logger + clientset kubernetes.Interface + namespace string + deployment string + maxReplicas int + minReplicas int +} + +func (t *scaleDeploymentTask) Run(ctx context.Context) error { + newReplicas := rand.Intn(t.maxReplicas-t.minReplicas) + t.minReplicas + level.Debug(t.logger).Log("msg", "scaling replicas", "replicas", newReplicas) + + scale, err := t.clientset.AppsV1().Deployments(t.namespace). + GetScale(ctx, t.deployment, metav1.GetOptions{}) + if err != nil { + level.Error(t.logger).Log("msg", "failed to get autoscalingv1.Scale object", "err", err) + return nil + } + + sc := *scale + sc.Spec.Replicas = int32(newReplicas) + _, err = t.clientset.AppsV1().Deployments(t.namespace). + UpdateScale(ctx, t.deployment, &sc, metav1.UpdateOptions{}) + if err != nil { + level.Error(t.logger).Log("msg", "failed to scale deployment", "err", err) + } + return nil +} + +type deletePodBySelectorTask struct { + logger log.Logger + clientset kubernetes.Interface + namespace string + selector string +} + +func (t *deletePodBySelectorTask) Run(ctx context.Context) error { + list, err := t.clientset.CoreV1().Pods(t.namespace).List(ctx, metav1.ListOptions{ + LabelSelector: t.selector, + }) + if err != nil { + level.Error(t.logger).Log("msg", "failed to list pods", "err", err) + return nil + } + + l := len(list.Items) + if l > 0 { + i := rand.Intn(l) + pod := list.Items[i].Name + level.Debug(t.logger).Log("msg", "deleting pod", "pod", pod) + if err := t.clientset.CoreV1().Pods(t.namespace).Delete(ctx, pod, metav1.DeleteOptions{ + GracePeriodSeconds: pointer.Int64(0), + }); err != nil { + level.Error(t.logger).Log("msg", "failed to delete pod", "pod", pod, "err", err) + } + } + + return nil +} diff --git a/tools/smoke/internal/tasks_test.go b/tools/smoke/internal/tasks_test.go new file mode 100644 index 000000000000..76fb1cbd2789 --- /dev/null +++ b/tools/smoke/internal/tasks_test.go @@ -0,0 +1,144 @@ +package smoke + +import ( + "context" + "testing" + + "github.com/go-kit/log" + "k8s.io/client-go/kubernetes" + "k8s.io/client-go/kubernetes/fake" +) + +// Note: these tests are mostly worthless at this point +// but would allow easy debugging of tasks as they become more +// complex. Using https://pkg.go.dev/k8s.io/client-go/testing#ObjectTracker +// to mock responses from the fake client is also possible. + +func Test_deletePodBySelectorTask_Run(t1 *testing.T) { + type fields struct { + logger log.Logger + clientset kubernetes.Interface + namespace string + selector string + } + type args struct { + ctx context.Context + } + tests := []struct { + name string + fields fields + args args + wantErr bool + }{ + { + name: "deletePodBySelectorTask", + fields: fields{ + logger: log.NewNopLogger(), + clientset: fake.NewSimpleClientset(), + namespace: "foo", + selector: "foo=bar", + }, + }, + } + for _, tt := range tests { + t1.Run(tt.name, func(t1 *testing.T) { + t := &deletePodBySelectorTask{ + logger: tt.fields.logger, + clientset: tt.fields.clientset, + namespace: tt.fields.namespace, + selector: tt.fields.selector, + } + if err := t.Run(tt.args.ctx); (err != nil) != tt.wantErr { + t1.Errorf("Run() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} + +func Test_deletePodTask_Run(t1 *testing.T) { + type fields struct { + logger log.Logger + clientset kubernetes.Interface + namespace string + pod string + } + type args struct { + ctx context.Context + } + tests := []struct { + name string + fields fields + args args + wantErr bool + }{ + { + name: "deletePodTask", + fields: fields{ + logger: log.NewNopLogger(), + clientset: fake.NewSimpleClientset(), + namespace: "foo", + pod: "bar", + }, + }, + } + for _, tt := range tests { + t1.Run(tt.name, func(t1 *testing.T) { + t := &deletePodTask{ + logger: tt.fields.logger, + clientset: tt.fields.clientset, + namespace: tt.fields.namespace, + pod: tt.fields.pod, + } + if err := t.Run(tt.args.ctx); (err != nil) != tt.wantErr { + t1.Errorf("Run() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} + +func Test_scaleDeploymentTask_Run(t1 *testing.T) { + type fields struct { + logger log.Logger + clientset kubernetes.Interface + namespace string + deployment string + maxReplicas int + minReplicas int + } + type args struct { + ctx context.Context + } + tests := []struct { + name string + fields fields + args args + wantErr bool + }{ + { + name: "scaleDeploymentTask", + fields: fields{ + logger: log.NewNopLogger(), + clientset: fake.NewSimpleClientset(), + namespace: "foo", + deployment: "bar", + maxReplicas: 11, + minReplicas: 2, + }, + }, + } + for _, tt := range tests { + t1.Run(tt.name, func(t1 *testing.T) { + t := &scaleDeploymentTask{ + logger: tt.fields.logger, + clientset: tt.fields.clientset, + namespace: tt.fields.namespace, + deployment: tt.fields.deployment, + maxReplicas: tt.fields.maxReplicas, + minReplicas: tt.fields.minReplicas, + } + if err := t.Run(tt.args.ctx); (err != nil) != tt.wantErr { + t1.Errorf("Run() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/tools/smoke/main.go b/tools/smoke/main.go new file mode 100644 index 000000000000..568979501b89 --- /dev/null +++ b/tools/smoke/main.go @@ -0,0 +1,49 @@ +package main + +import ( + "context" + "flag" + "os" + "time" + + "github.com/go-kit/log/level" + "github.com/grafana/agent/pkg/util" + smoke "github.com/grafana/agent/tools/smoke/internal" + "github.com/weaveworks/common/logging" +) + +func main() { + var ( + cfg smoke.Config + logLevel logging.Level + logFormat logging.Format + withTimeout time.Duration + ) + + cfg.RegisterFlags(flag.CommandLine) + logLevel.RegisterFlags(flag.CommandLine) + logFormat.RegisterFlags(flag.CommandLine) + flag.DurationVar(&withTimeout, "duration", time.Duration(0), "test duration") + flag.Parse() + + logger := util.NewLoggerFromLevel(logLevel, logFormat) + + ctx := context.Background() + if withTimeout > 0 { + var cancel context.CancelFunc + ctx, cancel = context.WithTimeout(ctx, withTimeout) + defer cancel() + level.Debug(logger).Log("msg", "running with duration", "duration", withTimeout.String()) + } + + level.Info(logger).Log("msg", "starting smoke test") + smokeTest, err := smoke.New(logger, cfg) + if err != nil { + level.Error(logger).Log("msg", "error constructing smoke test", "err", err) + os.Exit(1) + } + if err := smokeTest.Run(ctx); err != nil { + level.Error(logger).Log("msg", "smoke test run failure", "err", err) + os.Exit(1) + } +} From 3bf336a9fa077517b845a76031662c3a7a88cddf Mon Sep 17 00:00:00 2001 From: Matt Durham Date: Fri, 25 Feb 2022 12:44:00 -0500 Subject: [PATCH 12/19] Merges from main --- .github/stale.yml | 26 --- go.mod | 6 +- go.sum | 4 + pkg/integrations/v2/controller.go | 177 ++++-------------- .../smoke}/avalanche/main.libsonnet | 0 .../grafana-agent/smoke}/crow/main.libsonnet | 0 .../tanka/grafana-agent/smoke/main.libsonnet | 68 +++++++ .../crow}/Dockerfile | 0 .../crow}/Dockerfile.buildx | 0 .../crow}/README.md | 0 .../grafana-agent-crow => tools/crow}/main.go | 0 11 files changed, 111 insertions(+), 170 deletions(-) delete mode 100644 .github/stale.yml rename {example/k3d/lib => production/tanka/grafana-agent/smoke}/avalanche/main.libsonnet (100%) rename {example/k3d/lib => production/tanka/grafana-agent/smoke}/crow/main.libsonnet (100%) create mode 100644 production/tanka/grafana-agent/smoke/main.libsonnet rename {cmd/grafana-agent-crow => tools/crow}/Dockerfile (100%) rename {cmd/grafana-agent-crow => tools/crow}/Dockerfile.buildx (100%) rename {cmd/grafana-agent-crow => tools/crow}/README.md (100%) rename {cmd/grafana-agent-crow => tools/crow}/main.go (100%) diff --git a/.github/stale.yml b/.github/stale.yml deleted file mode 100644 index f5c917302d5e..000000000000 --- a/.github/stale.yml +++ /dev/null @@ -1,26 +0,0 @@ -# Days without any activity until an issue is labeled as stale -daysUntilStale: 30 - -# Days after having the stale label that the issue will be closed -daysUntilClose: 7 - -# Labels that prevent issues from being marked as stale -exemptLabels: - - keepalive - - proposal - - outdated-dependency - - dev-branch - -# Label to use to identify a stale issue -staleLabel: stale - -# Comment to post when marking an issue as stale. Leave as false -# to disable. -markComment: > - This issue has been automatically marked as stale because it has not had any - activity in the past 30 days. It will be closed in 7 days if no further - activity occurs. Thank you for your contributions. - -# Comment to post when closing a stale issue. Leave as -# false to disable. -closeComment: false diff --git a/go.mod b/go.mod index 28ab3f0a15f2..7b7553a4a6e4 100644 --- a/go.mod +++ b/go.mod @@ -33,6 +33,7 @@ require ( github.com/jsternberg/zap-logfmt v1.2.0 github.com/lib/pq v1.10.2 github.com/miekg/dns v1.1.43 + github.com/mitchellh/mapstructure v1.4.2 github.com/mitchellh/reflectwalk v1.0.2 github.com/ncabatoff/process-exporter v0.7.5 github.com/oklog/run v1.1.0 @@ -53,7 +54,6 @@ require ( github.com/opentracing-contrib/go-stdlib v1.0.0 github.com/opentracing/opentracing-go v1.2.0 github.com/percona/mongodb_exporter v0.0.0-00010101000000-000000000000 - github.com/pkg/errors v0.9.1 github.com/prometheus-community/elasticsearch_exporter v1.2.1 github.com/prometheus-community/postgres_exporter v0.10.0 github.com/prometheus-community/windows_exporter v0.0.0-00010101000000-000000000000 @@ -228,7 +228,8 @@ require ( github.com/hashicorp/go-hclog v0.16.2 // indirect github.com/hashicorp/go-immutable-radix v1.3.1 // indirect github.com/hashicorp/go-msgpack v0.5.5 // indirect - github.com/hashicorp/go-multierror v1.1.1 // indirect + github.com/hashicorp/go-plugin v1.4.3 // indirect + github.com/hashicorp/go-retryablehttp v0.7.0 // indirect github.com/hashicorp/go-rootcerts v1.0.2 // indirect github.com/hashicorp/go-secure-stdlib/mlock v0.1.1 // indirect github.com/hashicorp/go-secure-stdlib/parseutil v0.1.1 // indirect @@ -294,7 +295,6 @@ require ( github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/go-testing-interface v1.0.0 // indirect - github.com/mitchellh/mapstructure v1.4.2 // indirect github.com/moby/sys/mount v0.3.0 // indirect github.com/moby/sys/mountinfo v0.5.0 // indirect github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6 // indirect diff --git a/go.sum b/go.sum index d2e7a1a48367..0a72f9d5a2bf 100644 --- a/go.sum +++ b/go.sum @@ -1292,6 +1292,8 @@ github.com/grafana/tail v0.0.0-20201004203643-7aa4e4a91f03 h1:fGgFrAraMB0BaPfYum github.com/grafana/tail v0.0.0-20201004203643-7aa4e4a91f03/go.mod h1:GIMXMPB/lRAllP5rVDvcGif87ryO2hgD7tCtHMdHrho= github.com/grafana/windows_exporter v0.15.1-0.20211019183116-592dfa92f9fd h1:jQ9JCvwdRW32X/LP3ezXT4EnJCirq9bb3l5svQs8j7k= github.com/grafana/windows_exporter v0.15.1-0.20211019183116-592dfa92f9fd/go.mod h1:zWjLDqyEy3ZEy1LNlR6iUJJgYCoUDJTyUbrjeLUp3ZE= +github.com/grafana/windows_exporter v0.15.1-0.20220202211901-871715ba0b43 h1:gb+wDKb+9r4n3QbMzfudcHDtE9lI+kKjx+98bYphqK4= +github.com/grafana/windows_exporter v0.15.1-0.20220202211901-871715ba0b43/go.mod h1:zWjLDqyEy3ZEy1LNlR6iUJJgYCoUDJTyUbrjeLUp3ZE= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grobie/gomemcache v0.0.0-20201204163352-08d7c80fcac6 h1:vqwzYov9hrRoGAmy61um8mVteOCD0bEbKgXr1mmkTlI= github.com/grobie/gomemcache v0.0.0-20201204163352-08d7c80fcac6/go.mod h1:L69/dBlPQlWkcnU76WgcppK5e4rrxzQdi6LhLnK/ytA= @@ -1956,6 +1958,8 @@ github.com/open-telemetry/opentelemetry-collector-contrib/exporter/loadbalancing github.com/open-telemetry/opentelemetry-collector-contrib/exporter/loadbalancingexporter v0.40.0/go.mod h1:8gCz0iEj986dJMmKwi/tYo8pdQj/mnBRiRkemi97XGw= github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.40.0 h1:KCRIWJ8cqooPisXKhhoFPmq6Oo5nhb2X0XU/9uW6yAU= github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.40.0/go.mod h1:kbjb5xSL0+VLPOaroPGXV9/aZKfHDx1NEzRGjX55avA= +github.com/open-telemetry/opentelemetry-collector-contrib/extension/oauth2clientauthextension v0.40.0 h1:LAj9r9orM1tLKh+erijFOpmj5D7vk2RiIh73PZtY1Ko= +github.com/open-telemetry/opentelemetry-collector-contrib/extension/oauth2clientauthextension v0.40.0/go.mod h1:KWUGnn6Ud3OS6AotkxSQt0m4U8Hm3QWQdI28cevlnQ8= github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.40.0 h1:FDoxyvSRJumeWNMMtwmyS6qz+5vDogkOAViz7EUvF6s= github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.40.0/go.mod h1:a56dESln9qTQfvLlG4iVrDSVsLzWaFS5363i8sAxqDo= github.com/open-telemetry/opentelemetry-collector-contrib/internal/sharedcomponent v0.40.0 h1:IICNKhsUNFUw9qLmOVj4EkoTS+MYrGqAij+LgEM/f/c= diff --git a/pkg/integrations/v2/controller.go b/pkg/integrations/v2/controller.go index 91072534ecbe..7ecf37fbfe18 100644 --- a/pkg/integrations/v2/controller.go +++ b/pkg/integrations/v2/controller.go @@ -27,20 +27,14 @@ type controllerConfig []Config // controller manages a set of integrations. type controller struct { - logger log.Logger - mut sync.Mutex - cfg controllerConfig - globals Globals + logger log.Logger - integrations []*controlledIntegration // Integrations to run - reloadIntegrations chan struct{} // Inform Controller.Run to re-read integrations + mut sync.Mutex + cfg controllerConfig + globals Globals + integrations []*controlledIntegration // Running integrations - // Next generation value to use for an integration. - gen atomic.Uint64 - - // onUpdateDone is used for testing and will be invoked when integrations - // finish reloading. - onUpdateDone func() + runIntegrations chan []*controlledIntegration // Schedule integrations to run } // newController creates a new Controller. Controller is intended to be @@ -48,8 +42,8 @@ type controller struct { // integrations. func newController(l log.Logger, cfg controllerConfig, globals Globals) (*controller, error) { c := &controller{ - logger: l, - reloadIntegrations: make(chan struct{}, 1), + logger: l, + runIntegrations: make(chan []*controlledIntegration, 1), } if err := c.UpdateController(cfg, globals); err != nil { return nil, err @@ -59,133 +53,40 @@ func newController(l log.Logger, cfg controllerConfig, globals Globals) (*contro // run starts the controller and blocks until ctx is canceled. func (c *controller) run(ctx context.Context) { - defer func() { - level.Debug(c.logger).Log("msg", "stopping all integrations") - - c.mut.Lock() - defer c.mut.Unlock() - - for _, exist := range c.integrations { - exist.Stop() - } - }() - - var currentIntegrations []*controlledIntegration - - updateIntegrations := func() { - // Lock the mutex to prevent another set of integrations from being - // loaded in. - c.mut.Lock() - defer c.mut.Unlock() - level.Debug(c.logger).Log("msg", "updating running integrations", "prev_count", len(currentIntegrations), "new_count", len(c.integrations)) - - newIntegrations := c.integrations - - // Shut down all old integrations. If the integration exists in - // newIntegrations but has a different gen number, then there's a new - // instance to launch. - for _, exist := range currentIntegrations { - var found bool - for _, current := range newIntegrations { - if exist.id == current.id && current.gen == exist.gen { - found = true - break - } - } - if !found { - exist.Stop() - } - } - - var waitStarted sync.WaitGroup - waitStarted.Add(len(newIntegrations)) - - // Now all integrations can be launched. - for _, current := range newIntegrations { - go func(current *controlledIntegration) { - waitStarted.Done() - - err := current.Run(ctx) - if err != nil && !errors.Is(err, errIntegrationRunning) { - level.Warn(c.logger).Log("msg", "integration exited with error", "instance", current.id, "err", err) - } - }(current) - } - - // Wait for all integration goroutines to have been scheduled at least once. - waitStarted.Wait() - - // Finally, store the current list of contolled integrations. - currentIntegrations = newIntegrations - } + pool := newWorkerPool(ctx, c.logger) + defer pool.Close() for { select { case <-ctx.Done(): level.Debug(c.logger).Log("msg", "controller exiting") return - case <-c.reloadIntegrations: - updateIntegrations() - if c.onUpdateDone != nil { - c.onUpdateDone() - } + case newIntegrations := <-c.runIntegrations: + pool.Reload(newIntegrations) + + c.mut.Lock() + c.integrations = newIntegrations + c.mut.Unlock() } } } -// controlledIntegration is a running Integration. -// A running integration is identified uniquely by its id and gen. +// controlledIntegration is a running Integration. A running integration is +// identified uniquely by its id. type controlledIntegration struct { - id integrationID - gen uint64 - - i Integration - c Config // Config that generated i. Used for changing to see if a config changed. - + id integrationID + i Integration + c Config // Config that generated i. Used for changing to see if a config changed. running atomic.Bool - - mut sync.Mutex - stop context.CancelFunc } func (ci *controlledIntegration) Running() bool { return ci.running.Load() } -func (ci *controlledIntegration) Run(ctx context.Context) error { - updatedRunningState := ci.running.CAS(false, true) - if !updatedRunningState { - // The CAS will fail if our integration was already running. - return errIntegrationRunning - } - defer ci.running.Store(false) - - ci.mut.Lock() - ctx, ci.stop = context.WithCancel(ctx) - ci.mut.Unlock() - - // Early optimization: don't do anything if ctx has already been canceled - if ctx.Err() != nil { - return nil - } - return ci.i.RunIntegration(ctx) -} - -var errIntegrationRunning = fmt.Errorf("already running") - -func (ci *controlledIntegration) Stop() { - ci.mut.Lock() - if ci.stop != nil { - ci.stop() - } - ci.mut.Unlock() -} - // integrationID uses a tuple of Name and Identifier to uniquely identify an // integration. -type integrationID struct { - Name, Identifier string -} +type integrationID struct{ Name, Identifier string } func (id integrationID) String() string { return fmt.Sprintf("%s/%s", id.Name, id.Identifier) @@ -279,16 +180,14 @@ NextConfig: // Create a new controlled integration. integrations = append(integrations, &controlledIntegration{ - id: id, - gen: c.gen.Inc(), - i: integration, - c: ic, + id: id, + i: integration, + c: ic, }) } - // Update integrations and inform - c.integrations = integrations - c.reloadIntegrations <- struct{}{} + // Schedule integrations to run + c.runIntegrations <- integrations c.cfg = cfg c.globals = globals @@ -302,9 +201,6 @@ NextConfig: // Handler is expensive to compute and should only be done after reloading the // config. func (c *controller) Handler(prefix string) (http.Handler, error) { - c.mut.Lock() - defer c.mut.Unlock() - var firstErr error saveFirstErr := func(err error) { if firstErr == nil { @@ -314,7 +210,7 @@ func (c *controller) Handler(prefix string) (http.Handler, error) { r := mux.NewRouter() - err := forEachIntegration(c.integrations, prefix, func(ci *controlledIntegration, iprefix string) { + err := c.forEachIntegration(prefix, func(ci *controlledIntegration, iprefix string) { id := ci.id i, ok := ci.i.(HTTPIntegration) @@ -350,20 +246,23 @@ func (c *controller) Handler(prefix string) (http.Handler, error) { // forEachIntegration calculates the prefix for each integration and calls f. // prefix will not end in /. -func forEachIntegration(set []*controlledIntegration, basePrefix string, f func(ci *controlledIntegration, iprefix string)) error { +func (c *controller) forEachIntegration(basePrefix string, f func(ci *controlledIntegration, iprefix string)) error { + c.mut.Lock() + defer c.mut.Unlock() + // Pre-populate a mapping of integration name -> identifier. If there are // two instances of the same integration, we want to ensure unique routing. // // This special logic is done for backwards compatibility with the original // design of integrations. identifiersMap := map[string][]string{} - for _, i := range set { + for _, i := range c.integrations { identifiersMap[i.id.Name] = append(identifiersMap[i.id.Name], i.id.Identifier) } usedPrefixes := map[string]struct{}{} - for _, ci := range set { + for _, ci := range c.integrations { id := ci.id multipleInstances := len(identifiersMap[id.Name]) > 1 @@ -398,8 +297,7 @@ func (c *controller) Targets(ep Endpoint, opts TargetOptions) []*targetGroup { } var mm []prefixedMetricsIntegration - c.mut.Lock() - err := forEachIntegration(c.integrations, ep.Prefix, func(ci *controlledIntegration, iprefix string) { + err := c.forEachIntegration(ep.Prefix, func(ci *controlledIntegration, iprefix string) { // Best effort liveness check. They might stop running when we request // their targets, which is fine, but we should save as much work as we // can. @@ -414,7 +312,6 @@ func (c *controller) Targets(ep Endpoint, opts TargetOptions) []*targetGroup { if err != nil { level.Warn(c.logger).Log("msg", "error when iterating over integrations to get targets", "err", err) } - c.mut.Unlock() var tgs []*targetGroup for _, mi := range mm { @@ -507,8 +404,7 @@ func (c *controller) ScrapeConfigs(prefix string, sdConfig *http_sd.SDConfig) [] } var mm []prefixedMetricsIntegration - c.mut.Lock() - err := forEachIntegration(c.integrations, prefix, func(ci *controlledIntegration, iprefix string) { + err := c.forEachIntegration(prefix, func(ci *controlledIntegration, iprefix string) { if mi, ok := ci.i.(MetricsIntegration); ok { mm = append(mm, prefixedMetricsIntegration{id: ci.id, i: mi, prefix: iprefix}) } @@ -516,7 +412,6 @@ func (c *controller) ScrapeConfigs(prefix string, sdConfig *http_sd.SDConfig) [] if err != nil { level.Warn(c.logger).Log("msg", "error when iterating over integrations to get scrape configs", "err", err) } - c.mut.Unlock() var cfgs []*autoscrape.ScrapeConfig for _, mi := range mm { diff --git a/example/k3d/lib/avalanche/main.libsonnet b/production/tanka/grafana-agent/smoke/avalanche/main.libsonnet similarity index 100% rename from example/k3d/lib/avalanche/main.libsonnet rename to production/tanka/grafana-agent/smoke/avalanche/main.libsonnet diff --git a/example/k3d/lib/crow/main.libsonnet b/production/tanka/grafana-agent/smoke/crow/main.libsonnet similarity index 100% rename from example/k3d/lib/crow/main.libsonnet rename to production/tanka/grafana-agent/smoke/crow/main.libsonnet diff --git a/production/tanka/grafana-agent/smoke/main.libsonnet b/production/tanka/grafana-agent/smoke/main.libsonnet new file mode 100644 index 000000000000..8713e1c46859 --- /dev/null +++ b/production/tanka/grafana-agent/smoke/main.libsonnet @@ -0,0 +1,68 @@ +local k = import 'ksonnet-util/kausal.libsonnet'; +local policyRule = k.rbac.v1.policyRule; +local serviceAccount = k.core.v1.serviceAccount; +local container = k.core.v1.container; +local containerPort = k.core.v1.containerPort; +local deployment = k.apps.v1.deployment; +local service = k.core.v1.service; +local util = k.util; + +{ + new(name='grafana-agent-smoke', namespace='default', config={}):: { + local k = (import 'ksonnet-util/kausal.libsonnet') { _config+:: { namespace: namespace } }, + + local this = self, + + _images:: { + agentsmoke: 'us.gcr.io/kubernetes-dev/grafana/agent-smoke:main', + }, + + _config:: { + mutationFrequency: '5m', + chaosFrequency: '30m', + image: this._images.agentsmoke, + pull_secret: '', + podPrefix: 'grafana-agent', + } + config, + + rbac: + k.util.rbac(name, [ + policyRule.withApiGroups(['apps']) + + policyRule.withResources(['deployments/scale']) + + policyRule.withVerbs(['get', 'update']), + policyRule.withApiGroups(['']) + + policyRule.withResources(['pods']) + + policyRule.withVerbs(['list', 'delete']), + ]) { + service_account+: + serviceAccount.mixin.metadata.withNamespace(namespace), + }, + + container:: + container.new('agent-smoke', this._config.image) + + container.withCommand('/bin/grafana-agent-smoke') + + container.withPorts([ + containerPort.newNamed(name='remote-write', containerPort=19090), + ]) + + container.withArgsMixin(k.util.mapToFlags({ + 'log.level': 'debug', + namespace: namespace, + 'mutation-frequency': this._config.mutationFrequency, + 'chaos-frequency': this._config.chaosFrequency, + 'pod-prefix': this._config.podPrefix, + 'fake-remote-write': true, + })), + + agentsmoke_deployment: + deployment.new(name, 1, [self.container]) + + deployment.mixin.metadata.withNamespace(namespace) + + deployment.mixin.spec.template.spec.withServiceAccount(name) + + deployment.spec.template.spec.withImagePullSecrets({ name: this._config.pull_secret }), + + service: + util.serviceFor(self.agentsmoke_deployment) + + service.mixin.metadata.withNamespace(namespace), + }, + + monitoring: (import './prometheus_monitoring.libsonnet'), +} diff --git a/cmd/grafana-agent-crow/Dockerfile b/tools/crow/Dockerfile similarity index 100% rename from cmd/grafana-agent-crow/Dockerfile rename to tools/crow/Dockerfile diff --git a/cmd/grafana-agent-crow/Dockerfile.buildx b/tools/crow/Dockerfile.buildx similarity index 100% rename from cmd/grafana-agent-crow/Dockerfile.buildx rename to tools/crow/Dockerfile.buildx diff --git a/cmd/grafana-agent-crow/README.md b/tools/crow/README.md similarity index 100% rename from cmd/grafana-agent-crow/README.md rename to tools/crow/README.md diff --git a/cmd/grafana-agent-crow/main.go b/tools/crow/main.go similarity index 100% rename from cmd/grafana-agent-crow/main.go rename to tools/crow/main.go From 7b4638365e00b94b56b41df347a1b8198cb2b7d9 Mon Sep 17 00:00:00 2001 From: Matt Durham Date: Fri, 25 Feb 2022 12:52:34 -0500 Subject: [PATCH 13/19] Linting errors fixed --- cmd/agentctl/main.go | 1 - pkg/config/config.go | 1 - pkg/config/config_test.go | 3 +-- pkg/config/dynamicloader_configs_test.go | 2 -- pkg/config/dynamicloader_template_test.go | 3 +-- pkg/integrations/v2/controller_test.go | 2 -- 6 files changed, 2 insertions(+), 10 deletions(-) diff --git a/cmd/agentctl/main.go b/cmd/agentctl/main.go index dc76546e753d..a19eb9b70b35 100644 --- a/cmd/agentctl/main.go +++ b/cmd/agentctl/main.go @@ -478,7 +478,6 @@ config that may be used with this agent.`, } func templateDryRunCmd() *cobra.Command { - cmd := &cobra.Command{ Use: "template-parse [directory]", Short: "dry run dynamic configuration", diff --git a/pkg/config/config.go b/pkg/config/config.go index 35c326dea9aa..82517230233f 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -370,7 +370,6 @@ func load(fs *flag.FlagSet, args []string, loader func(string, bool, *Config) er } else if err := loader(dynamicConfigPath, configExpandEnv, &cfg); err != nil { return nil, fmt.Errorf("error loading dynamic configuration file %s: %w", dynamicConfigPath, err) } - } else if file == "" { return nil, fmt.Errorf("-config.file flag required") } else if err := loader(file, configExpandEnv, &cfg); err != nil { diff --git a/pkg/config/config_test.go b/pkg/config/config_test.go index ee282211453b..239cf2d6da6a 100644 --- a/pkg/config/config_test.go +++ b/pkg/config/config_test.go @@ -2,7 +2,6 @@ package config import ( "flag" - "os" "strings" "testing" "time" @@ -99,7 +98,7 @@ metrics: EvaluationInterval: model.Duration(1 * time.Minute), }, } - _ = os.Setenv("SCRAPE_TIMEOUT", "33s") + t.Setenv("SCRAPE_TIMEOUT", "33s") fs := flag.NewFlagSet("test", flag.ExitOnError) c, err := load(fs, []string{"-config.file", "test"}, func(_ string, _ bool, c *Config) error { diff --git a/pkg/config/dynamicloader_configs_test.go b/pkg/config/dynamicloader_configs_test.go index b0659a58d4e9..70a4318ccd22 100644 --- a/pkg/config/dynamicloader_configs_test.go +++ b/pkg/config/dynamicloader_configs_test.go @@ -233,7 +233,6 @@ windows_exporter: {} // the node_exporter integration in the agent-1.yml is in the configV2 assert.Len(t, cfg.Integrations.ExtraIntegrations, 1) assert.Len(t, cfg.Integrations.configV2.Configs, 2) - } func TestFilterOverrides(t *testing.T) { @@ -326,5 +325,4 @@ configs: assert.True(t, cfg.Traces.Configs[0].Name == "test_traces") // Test Logs assert.True(t, cfg.Logs.Configs[0].Name == "test_logs") - } diff --git a/pkg/config/dynamicloader_template_test.go b/pkg/config/dynamicloader_template_test.go index 2e23a6775896..92a0d5f1ad93 100644 --- a/pkg/config/dynamicloader_template_test.go +++ b/pkg/config/dynamicloader_template_test.go @@ -151,8 +151,7 @@ func generatePath(t *testing.T) string { } func pushFilesToFakeS3(t *testing.T, filename string, filecontents string) *url.URL { - _ = os.Setenv("AWS_ANON", "true") - t.Cleanup(func() { _ = os.Unsetenv("AWS_ANON") }) + t.Setenv("AWS_ANON", "true") backend := s3mem.New() faker := gofakes3.New(backend) diff --git a/pkg/integrations/v2/controller_test.go b/pkg/integrations/v2/controller_test.go index 74d54f5e48d5..d9f13ad9315d 100644 --- a/pkg/integrations/v2/controller_test.go +++ b/pkg/integrations/v2/controller_test.go @@ -135,7 +135,6 @@ func Test_controller_ConfigChanges(t *testing.T) { } func Test_controller_SingletonCheck(t *testing.T) { - var integrationsWg sync.WaitGroup var starts atomic.Uint64 @@ -169,7 +168,6 @@ func Test_controller_SingletonCheck(t *testing.T) { _, err := newController(util.TestLogger(t), cfg, globals) require.Error(t, err) require.True(t, strings.Contains(err.Error(), "found multiple instances of singleton integration mock")) - } type syncController struct { From 7120f013765a65e5d7d3a13007ec96a62cfa1ad1 Mon Sep 17 00:00:00 2001 From: Matt Durham Date: Fri, 25 Feb 2022 13:09:48 -0500 Subject: [PATCH 14/19] Doc movement --- docs/README.md | 27 ++++++------------- docs/cookbook/dynamic-configuration/README.md | 19 ------------- .../configuration/dynamic-config.md | 0 .../01_Basics/01_Structure.md | 8 +++--- .../01_Basics/01_assets/agent-1.yml | 0 .../01_Basics/01_assets/final.yml | 0 .../01_Basics/01_assets/server-1.yml | 0 .../01_Basics/01_config.yml | 0 .../01_Basics/02_Instances.md | 10 +++---- .../01_Basics/02_assets/agent-1.yml | 0 .../01_Basics/02_assets/final.yml | 0 .../01_Basics/02_assets/metrics-1.yml | 0 .../02_assets/metrics_instances-1.yml | 0 .../02_assets/metrics_instances-2.yml | 0 .../01_Basics/02_assets/server-1.yml | 0 .../01_Basics/02_config.yml | 0 .../01_Basics/03_Integrations.md | 8 +++--- .../01_Basics/03_assets/agent-1.yml | 0 .../01_Basics/03_assets/final.yml | 0 .../01_Basics/03_assets/integrations-node.yml | 0 .../03_assets/integrations-redis.yml | 0 .../01_Basics/03_assets/metrics-1.yml | 0 .../03_assets/metrics_instances-1.yml | 0 .../03_assets/metrics_instances-2.yml | 0 .../01_Basics/03_assets/server-1.yml | 0 .../01_Basics/03_config.yml | 0 .../01_Basics/04_Logs_and_Traces.md | 8 +++--- .../01_Basics/04_assets/agent-1.yml | 0 .../01_Basics/04_assets/final.yml | 0 .../01_Basics/04_assets/integrations-node.yml | 0 .../04_assets/integrations-redis.yml | 0 .../01_Basics/04_assets/logs-1.yml | 0 .../01_Basics/04_assets/metrics-1.yml | 0 .../04_assets/metrics_instances-1.yml | 0 .../04_assets/metrics_instances-2.yml | 0 .../01_Basics/04_assets/server-1.yml | 0 .../01_Basics/04_assets/traces-1.yml | 0 .../01_Basics/04_config.yml | 0 .../02_Templates/01_Looping.md | 4 +-- .../02_Templates/01_assets/agent-1.yml | 0 .../02_Templates/01_assets/final.yml | 0 .../02_Templates/01_config.yml | 0 .../02_Templates/02_Datasources.md | 6 ++--- .../02_Templates/02_assets/agent-1.yml | 0 .../02_Templates/02_assets/final.yml | 0 .../02_Templates/02_assets/fruit.json | 0 .../02_Templates/02_config.yml | 0 .../02_Templates/03_Datasource_and_Objects.md | 6 ++--- .../02_Templates/03_assets/agent-1.yml | 0 .../02_Templates/03_assets/computers.json | 0 .../02_Templates/03_assets/final.yml | 0 .../02_Templates/03_config.yml | 0 .../03_Advanced_Datasources/01_AWS.md | 4 +-- .../01_assets/agent-1.yml | 0 .../01_assets/final.yml | 0 .../03_Advanced_Datasources/01_config.yml | 0 .../cookbook/dynamic-configuration/README.md | 19 +++++++++++++ 57 files changed, 54 insertions(+), 65 deletions(-) delete mode 100644 docs/cookbook/dynamic-configuration/README.md rename docs/{ => user}/configuration/dynamic-config.md (100%) rename docs/{ => user}/cookbook/dynamic-configuration/01_Basics/01_Structure.md (93%) rename docs/{ => user}/cookbook/dynamic-configuration/01_Basics/01_assets/agent-1.yml (100%) rename docs/{ => user}/cookbook/dynamic-configuration/01_Basics/01_assets/final.yml (100%) rename docs/{ => user}/cookbook/dynamic-configuration/01_Basics/01_assets/server-1.yml (100%) rename docs/{ => user}/cookbook/dynamic-configuration/01_Basics/01_config.yml (100%) rename docs/{ => user}/cookbook/dynamic-configuration/01_Basics/02_Instances.md (83%) rename docs/{ => user}/cookbook/dynamic-configuration/01_Basics/02_assets/agent-1.yml (100%) rename docs/{ => user}/cookbook/dynamic-configuration/01_Basics/02_assets/final.yml (100%) rename docs/{ => user}/cookbook/dynamic-configuration/01_Basics/02_assets/metrics-1.yml (100%) rename docs/{ => user}/cookbook/dynamic-configuration/01_Basics/02_assets/metrics_instances-1.yml (100%) rename docs/{ => user}/cookbook/dynamic-configuration/01_Basics/02_assets/metrics_instances-2.yml (100%) rename docs/{ => user}/cookbook/dynamic-configuration/01_Basics/02_assets/server-1.yml (100%) rename docs/{ => user}/cookbook/dynamic-configuration/01_Basics/02_config.yml (100%) rename docs/{ => user}/cookbook/dynamic-configuration/01_Basics/03_Integrations.md (87%) rename docs/{ => user}/cookbook/dynamic-configuration/01_Basics/03_assets/agent-1.yml (100%) rename docs/{ => user}/cookbook/dynamic-configuration/01_Basics/03_assets/final.yml (100%) rename docs/{ => user}/cookbook/dynamic-configuration/01_Basics/03_assets/integrations-node.yml (100%) rename docs/{ => user}/cookbook/dynamic-configuration/01_Basics/03_assets/integrations-redis.yml (100%) rename docs/{ => user}/cookbook/dynamic-configuration/01_Basics/03_assets/metrics-1.yml (100%) rename docs/{ => user}/cookbook/dynamic-configuration/01_Basics/03_assets/metrics_instances-1.yml (100%) rename docs/{ => user}/cookbook/dynamic-configuration/01_Basics/03_assets/metrics_instances-2.yml (100%) rename docs/{ => user}/cookbook/dynamic-configuration/01_Basics/03_assets/server-1.yml (100%) rename docs/{ => user}/cookbook/dynamic-configuration/01_Basics/03_config.yml (100%) rename docs/{ => user}/cookbook/dynamic-configuration/01_Basics/04_Logs_and_Traces.md (85%) rename docs/{ => user}/cookbook/dynamic-configuration/01_Basics/04_assets/agent-1.yml (100%) rename docs/{ => user}/cookbook/dynamic-configuration/01_Basics/04_assets/final.yml (100%) rename docs/{ => user}/cookbook/dynamic-configuration/01_Basics/04_assets/integrations-node.yml (100%) rename docs/{ => user}/cookbook/dynamic-configuration/01_Basics/04_assets/integrations-redis.yml (100%) rename docs/{ => user}/cookbook/dynamic-configuration/01_Basics/04_assets/logs-1.yml (100%) rename docs/{ => user}/cookbook/dynamic-configuration/01_Basics/04_assets/metrics-1.yml (100%) rename docs/{ => user}/cookbook/dynamic-configuration/01_Basics/04_assets/metrics_instances-1.yml (100%) rename docs/{ => user}/cookbook/dynamic-configuration/01_Basics/04_assets/metrics_instances-2.yml (100%) rename docs/{ => user}/cookbook/dynamic-configuration/01_Basics/04_assets/server-1.yml (100%) rename docs/{ => user}/cookbook/dynamic-configuration/01_Basics/04_assets/traces-1.yml (100%) rename docs/{ => user}/cookbook/dynamic-configuration/01_Basics/04_config.yml (100%) rename docs/{ => user}/cookbook/dynamic-configuration/02_Templates/01_Looping.md (94%) rename docs/{ => user}/cookbook/dynamic-configuration/02_Templates/01_assets/agent-1.yml (100%) rename docs/{ => user}/cookbook/dynamic-configuration/02_Templates/01_assets/final.yml (100%) rename docs/{ => user}/cookbook/dynamic-configuration/02_Templates/01_config.yml (100%) rename docs/{ => user}/cookbook/dynamic-configuration/02_Templates/02_Datasources.md (77%) rename docs/{ => user}/cookbook/dynamic-configuration/02_Templates/02_assets/agent-1.yml (100%) rename docs/{ => user}/cookbook/dynamic-configuration/02_Templates/02_assets/final.yml (100%) rename docs/{ => user}/cookbook/dynamic-configuration/02_Templates/02_assets/fruit.json (100%) rename docs/{ => user}/cookbook/dynamic-configuration/02_Templates/02_config.yml (100%) rename docs/{ => user}/cookbook/dynamic-configuration/02_Templates/03_Datasource_and_Objects.md (84%) rename docs/{ => user}/cookbook/dynamic-configuration/02_Templates/03_assets/agent-1.yml (100%) rename docs/{ => user}/cookbook/dynamic-configuration/02_Templates/03_assets/computers.json (100%) rename docs/{ => user}/cookbook/dynamic-configuration/02_Templates/03_assets/final.yml (100%) rename docs/{ => user}/cookbook/dynamic-configuration/02_Templates/03_config.yml (100%) rename docs/{ => user}/cookbook/dynamic-configuration/03_Advanced_Datasources/01_AWS.md (93%) rename docs/{ => user}/cookbook/dynamic-configuration/03_Advanced_Datasources/01_assets/agent-1.yml (100%) rename docs/{ => user}/cookbook/dynamic-configuration/03_Advanced_Datasources/01_assets/final.yml (100%) rename docs/{ => user}/cookbook/dynamic-configuration/03_Advanced_Datasources/01_config.yml (100%) create mode 100644 docs/user/cookbook/dynamic-configuration/README.md diff --git a/docs/README.md b/docs/README.md index 51c262484e4c..88efe6babd4f 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,21 +1,10 @@ -+++ -draft = "True" -+++ +# Grafana Agent Documentation -

Grafana Agent logo

+This directory contains documentation for Grafana Agent. It is split into two +parts: -Grafana Agent is an telemetry collector for sending metrics, logs, -and trace data to the opinionated Grafana observability stack. It works best -with: - -* [Grafana Cloud](https://grafana.com/products/cloud/) -* [Grafana Enterprise Stack](https://grafana.com/products/enterprise/) -* OSS deployments of [Grafana Loki](https://grafana.com/oss/loki/), [Prometheus](https://prometheus.io/), [Cortex](https://cortexmetrics.io/), and [Grafana Tempo](https://grafana.com/oss/tempo/) - - -- Grafana Agent uses less memory on average than Prometheus – by doing less - (only focusing on `remote_write`-related functionality). -- Grafana Agent allows for deploying multiple instances of the Agent in a - cluster and only scraping metrics from targets that are running on the same host. - This allows for distributing memory requirements across the cluster - rather than pressurizing a single node. +* `user/`: Documentation for users. This directory is hosted on + [grafana.com/docs/agent](https://grafana.com/docs/agent/latest/) and we + recommend interacting with it there instead of viewing the markdown on + Github. +* `rfcs/`: RFCs for proposals relating to Grafana Agent. diff --git a/docs/cookbook/dynamic-configuration/README.md b/docs/cookbook/dynamic-configuration/README.md deleted file mode 100644 index e8e7e061a95e..000000000000 --- a/docs/cookbook/dynamic-configuration/README.md +++ /dev/null @@ -1,19 +0,0 @@ -# Dynamic Configuration Cookbook - -The purpose of the cookbook is to guide you through common scenarios of using dynamic configuration. Each folder contains increasingly more complex use cases, but feel free to jump in wherever you feel appropriate. - -## Basics - -[Basics](./01_Basics) covers -- [Structure](./01_Basics/01_Structure.md) of how agent and server templates are loaded -- [Instances](./01_Basics/02_Instances.md) of metrics and metrics instances are loaded -- [Integrations](./01_Basics/03_Integrations.md) of how integrations are loaded -- [Logs and Traces](./01_Basics/04_Logs_and_Traces.md) of how traces and logs are loaded - -[Templates](./02_Templates) covers -- [Looping](./02_Templates/01_Looping.md) covers basic command usage and simple loops -- [Datasource](./02_Templates/02_Datasources.md) covers usage of datasource which are external datastores you can use to pull in data -- [Datasources and Objects](./02_Templates/03_Datasource_and_Objects.md) covers the usage of complex json objects - -[Advanced Datasources](./03_Advanced_Datasources) covers non file based datasources -- [AWS](./03_Advanced_Datasources/01_AWS.md) covers querying EC2 for instances \ No newline at end of file diff --git a/docs/configuration/dynamic-config.md b/docs/user/configuration/dynamic-config.md similarity index 100% rename from docs/configuration/dynamic-config.md rename to docs/user/configuration/dynamic-config.md diff --git a/docs/cookbook/dynamic-configuration/01_Basics/01_Structure.md b/docs/user/cookbook/dynamic-configuration/01_Basics/01_Structure.md similarity index 93% rename from docs/cookbook/dynamic-configuration/01_Basics/01_Structure.md rename to docs/user/cookbook/dynamic-configuration/01_Basics/01_Structure.md index d0a7bf6eed74..b7ba07b370ce 100644 --- a/docs/cookbook/dynamic-configuration/01_Basics/01_Structure.md +++ b/docs/user/cookbook/dynamic-configuration/01_Basics/01_Structure.md @@ -6,7 +6,7 @@ Dynamic Configuration uses a series of files to load templates. This example wil ## Dynamic Configuration -[config.yml](./01_config.yml) +[config.yml](01_config.yml) ```yaml template_paths: @@ -19,7 +19,7 @@ Tells the Grafana Agent where to load files from. It is important to note that d Dynamic Configuration will find the first file matching pattern `agent-*.yml` and load that as the base. You can only have one agent template. If multiple matching templates are found then the configuration will fail to load. -[agent-1.yml](./01_assets/agent-1.yml) +[agent-1.yml](01_assets/agent-1.yml) ```yaml server: @@ -49,7 +49,7 @@ is a configuration block. You can only have 1 server template. -[server-1.yml](./01_assets/server-1.yml) +[server-1.yml](01_assets/server-1.yml) ```yaml @@ -59,6 +59,6 @@ log_level: info ## Final -[final.yml](./01_assets/final.yml) +[final.yml](01_assets/final.yml) In the above example the `log_level: debug` block will be replaced with `log_level: info` from the server-1.yml diff --git a/docs/cookbook/dynamic-configuration/01_Basics/01_assets/agent-1.yml b/docs/user/cookbook/dynamic-configuration/01_Basics/01_assets/agent-1.yml similarity index 100% rename from docs/cookbook/dynamic-configuration/01_Basics/01_assets/agent-1.yml rename to docs/user/cookbook/dynamic-configuration/01_Basics/01_assets/agent-1.yml diff --git a/docs/cookbook/dynamic-configuration/01_Basics/01_assets/final.yml b/docs/user/cookbook/dynamic-configuration/01_Basics/01_assets/final.yml similarity index 100% rename from docs/cookbook/dynamic-configuration/01_Basics/01_assets/final.yml rename to docs/user/cookbook/dynamic-configuration/01_Basics/01_assets/final.yml diff --git a/docs/cookbook/dynamic-configuration/01_Basics/01_assets/server-1.yml b/docs/user/cookbook/dynamic-configuration/01_Basics/01_assets/server-1.yml similarity index 100% rename from docs/cookbook/dynamic-configuration/01_Basics/01_assets/server-1.yml rename to docs/user/cookbook/dynamic-configuration/01_Basics/01_assets/server-1.yml diff --git a/docs/cookbook/dynamic-configuration/01_Basics/01_config.yml b/docs/user/cookbook/dynamic-configuration/01_Basics/01_config.yml similarity index 100% rename from docs/cookbook/dynamic-configuration/01_Basics/01_config.yml rename to docs/user/cookbook/dynamic-configuration/01_Basics/01_config.yml diff --git a/docs/cookbook/dynamic-configuration/01_Basics/02_Instances.md b/docs/user/cookbook/dynamic-configuration/01_Basics/02_Instances.md similarity index 83% rename from docs/cookbook/dynamic-configuration/01_Basics/02_Instances.md rename to docs/user/cookbook/dynamic-configuration/01_Basics/02_Instances.md index 4c77951d4ec5..476544892a92 100644 --- a/docs/cookbook/dynamic-configuration/01_Basics/02_Instances.md +++ b/docs/user/cookbook/dynamic-configuration/01_Basics/02_Instances.md @@ -7,7 +7,7 @@ the same agent-1 and server-1 yml from 01. ## Dynamic Configuration -[config.yml](./02_config.yml) +[config.yml](02_config.yml) Tells the Grafana Agent where to load files from. @@ -15,7 +15,7 @@ Tells the Grafana Agent where to load files from. Dynamic Configuration will find the first file matching pattern `metrics-*.yml` and load that as the base. You can only have one metrics template. -[metrics-1.yml](./02_assets/metrics-1.yml) +[metrics-1.yml](02_assets/metrics-1.yml) ```yaml configs: @@ -30,7 +30,7 @@ wal_directory: /tmp/grafana-agent-wal You can have any number of metrics_instances and they are added to any existing metrics instances defined previously. -[metrics_instances-1.yml](./02_assets/metrics_instances-1.yml) +[metrics_instances-1.yml](02_assets/metrics_instances-1.yml) ```yaml name: instance1 @@ -41,7 +41,7 @@ scrape_configs: - localhost:4000 ``` -[metrics_instances-2.yml](./02_assets/metrics_instances-2.yml) +[metrics_instances-2.yml](02_assets/metrics_instances-2.yml) ```yaml name: instance2 @@ -54,7 +54,7 @@ scrape_configs: ## Final -[final.yml](./01_assets/final.yml) +[final.yml](01_assets/final.yml) In the above you will see the `final.yml` includes all the instance configurations - default diff --git a/docs/cookbook/dynamic-configuration/01_Basics/02_assets/agent-1.yml b/docs/user/cookbook/dynamic-configuration/01_Basics/02_assets/agent-1.yml similarity index 100% rename from docs/cookbook/dynamic-configuration/01_Basics/02_assets/agent-1.yml rename to docs/user/cookbook/dynamic-configuration/01_Basics/02_assets/agent-1.yml diff --git a/docs/cookbook/dynamic-configuration/01_Basics/02_assets/final.yml b/docs/user/cookbook/dynamic-configuration/01_Basics/02_assets/final.yml similarity index 100% rename from docs/cookbook/dynamic-configuration/01_Basics/02_assets/final.yml rename to docs/user/cookbook/dynamic-configuration/01_Basics/02_assets/final.yml diff --git a/docs/cookbook/dynamic-configuration/01_Basics/02_assets/metrics-1.yml b/docs/user/cookbook/dynamic-configuration/01_Basics/02_assets/metrics-1.yml similarity index 100% rename from docs/cookbook/dynamic-configuration/01_Basics/02_assets/metrics-1.yml rename to docs/user/cookbook/dynamic-configuration/01_Basics/02_assets/metrics-1.yml diff --git a/docs/cookbook/dynamic-configuration/01_Basics/02_assets/metrics_instances-1.yml b/docs/user/cookbook/dynamic-configuration/01_Basics/02_assets/metrics_instances-1.yml similarity index 100% rename from docs/cookbook/dynamic-configuration/01_Basics/02_assets/metrics_instances-1.yml rename to docs/user/cookbook/dynamic-configuration/01_Basics/02_assets/metrics_instances-1.yml diff --git a/docs/cookbook/dynamic-configuration/01_Basics/02_assets/metrics_instances-2.yml b/docs/user/cookbook/dynamic-configuration/01_Basics/02_assets/metrics_instances-2.yml similarity index 100% rename from docs/cookbook/dynamic-configuration/01_Basics/02_assets/metrics_instances-2.yml rename to docs/user/cookbook/dynamic-configuration/01_Basics/02_assets/metrics_instances-2.yml diff --git a/docs/cookbook/dynamic-configuration/01_Basics/02_assets/server-1.yml b/docs/user/cookbook/dynamic-configuration/01_Basics/02_assets/server-1.yml similarity index 100% rename from docs/cookbook/dynamic-configuration/01_Basics/02_assets/server-1.yml rename to docs/user/cookbook/dynamic-configuration/01_Basics/02_assets/server-1.yml diff --git a/docs/cookbook/dynamic-configuration/01_Basics/02_config.yml b/docs/user/cookbook/dynamic-configuration/01_Basics/02_config.yml similarity index 100% rename from docs/cookbook/dynamic-configuration/01_Basics/02_config.yml rename to docs/user/cookbook/dynamic-configuration/01_Basics/02_config.yml diff --git a/docs/cookbook/dynamic-configuration/01_Basics/03_Integrations.md b/docs/user/cookbook/dynamic-configuration/01_Basics/03_Integrations.md similarity index 87% rename from docs/cookbook/dynamic-configuration/01_Basics/03_Integrations.md rename to docs/user/cookbook/dynamic-configuration/01_Basics/03_Integrations.md index 268dd17223a1..d4a6bc0b004b 100644 --- a/docs/cookbook/dynamic-configuration/01_Basics/03_Integrations.md +++ b/docs/user/cookbook/dynamic-configuration/01_Basics/03_Integrations.md @@ -6,7 +6,7 @@ Dynamic configuration requires the use of `integrations-next` feature flag, to a ## Dynamic Configuration -[config.yml](./03_config.yml) +[config.yml](03_config.yml) Tells the Grafana Agent where to load files from. @@ -14,7 +14,7 @@ Tells the Grafana Agent where to load files from. Integrations are loaded from files matching `integrations-*.yml` and are combined together. You can declare for example multiple sets of `redis_exporter_configs` across several files. -[integrations-node.yml](./03_assets/integrations-node.yml) +[integrations-node.yml](03_assets/integrations-node.yml) Note: You do NOT have to name the above file `integrations-node.yml` with `node`, `integrations-1.yml` would work the same. The name does NOT determine the type of integrations a template can contain and a template can contain integrations of different types. @@ -22,7 +22,7 @@ Note: You do NOT have to name the above file `integrations-node.yml` with `node` node_exporter: {} ``` -[integrations-redis.yml](./03_assets/integrations-redis.yml) +[integrations-redis.yml](03_assets/integrations-redis.yml) ```yaml redis_exporter_configs: @@ -37,7 +37,7 @@ redis_exporter_configs: ## Final -[final.yml](./03_assets/final.yml) +[final.yml](03_assets/final.yml) The final result should have 3 integrations enabled, 1 node_exporter and 2 redis_exporters. diff --git a/docs/cookbook/dynamic-configuration/01_Basics/03_assets/agent-1.yml b/docs/user/cookbook/dynamic-configuration/01_Basics/03_assets/agent-1.yml similarity index 100% rename from docs/cookbook/dynamic-configuration/01_Basics/03_assets/agent-1.yml rename to docs/user/cookbook/dynamic-configuration/01_Basics/03_assets/agent-1.yml diff --git a/docs/cookbook/dynamic-configuration/01_Basics/03_assets/final.yml b/docs/user/cookbook/dynamic-configuration/01_Basics/03_assets/final.yml similarity index 100% rename from docs/cookbook/dynamic-configuration/01_Basics/03_assets/final.yml rename to docs/user/cookbook/dynamic-configuration/01_Basics/03_assets/final.yml diff --git a/docs/cookbook/dynamic-configuration/01_Basics/03_assets/integrations-node.yml b/docs/user/cookbook/dynamic-configuration/01_Basics/03_assets/integrations-node.yml similarity index 100% rename from docs/cookbook/dynamic-configuration/01_Basics/03_assets/integrations-node.yml rename to docs/user/cookbook/dynamic-configuration/01_Basics/03_assets/integrations-node.yml diff --git a/docs/cookbook/dynamic-configuration/01_Basics/03_assets/integrations-redis.yml b/docs/user/cookbook/dynamic-configuration/01_Basics/03_assets/integrations-redis.yml similarity index 100% rename from docs/cookbook/dynamic-configuration/01_Basics/03_assets/integrations-redis.yml rename to docs/user/cookbook/dynamic-configuration/01_Basics/03_assets/integrations-redis.yml diff --git a/docs/cookbook/dynamic-configuration/01_Basics/03_assets/metrics-1.yml b/docs/user/cookbook/dynamic-configuration/01_Basics/03_assets/metrics-1.yml similarity index 100% rename from docs/cookbook/dynamic-configuration/01_Basics/03_assets/metrics-1.yml rename to docs/user/cookbook/dynamic-configuration/01_Basics/03_assets/metrics-1.yml diff --git a/docs/cookbook/dynamic-configuration/01_Basics/03_assets/metrics_instances-1.yml b/docs/user/cookbook/dynamic-configuration/01_Basics/03_assets/metrics_instances-1.yml similarity index 100% rename from docs/cookbook/dynamic-configuration/01_Basics/03_assets/metrics_instances-1.yml rename to docs/user/cookbook/dynamic-configuration/01_Basics/03_assets/metrics_instances-1.yml diff --git a/docs/cookbook/dynamic-configuration/01_Basics/03_assets/metrics_instances-2.yml b/docs/user/cookbook/dynamic-configuration/01_Basics/03_assets/metrics_instances-2.yml similarity index 100% rename from docs/cookbook/dynamic-configuration/01_Basics/03_assets/metrics_instances-2.yml rename to docs/user/cookbook/dynamic-configuration/01_Basics/03_assets/metrics_instances-2.yml diff --git a/docs/cookbook/dynamic-configuration/01_Basics/03_assets/server-1.yml b/docs/user/cookbook/dynamic-configuration/01_Basics/03_assets/server-1.yml similarity index 100% rename from docs/cookbook/dynamic-configuration/01_Basics/03_assets/server-1.yml rename to docs/user/cookbook/dynamic-configuration/01_Basics/03_assets/server-1.yml diff --git a/docs/cookbook/dynamic-configuration/01_Basics/03_config.yml b/docs/user/cookbook/dynamic-configuration/01_Basics/03_config.yml similarity index 100% rename from docs/cookbook/dynamic-configuration/01_Basics/03_config.yml rename to docs/user/cookbook/dynamic-configuration/01_Basics/03_config.yml diff --git a/docs/cookbook/dynamic-configuration/01_Basics/04_Logs_and_Traces.md b/docs/user/cookbook/dynamic-configuration/01_Basics/04_Logs_and_Traces.md similarity index 85% rename from docs/cookbook/dynamic-configuration/01_Basics/04_Logs_and_Traces.md rename to docs/user/cookbook/dynamic-configuration/01_Basics/04_Logs_and_Traces.md index 855fd521f413..3775da9afdc4 100644 --- a/docs/cookbook/dynamic-configuration/01_Basics/04_Logs_and_Traces.md +++ b/docs/user/cookbook/dynamic-configuration/01_Basics/04_Logs_and_Traces.md @@ -6,7 +6,7 @@ Logs and Traces can also be templated. This is built ontop of the previous examp ## Dynamic Configuration -[config.yml](./04_config.yml) +[config.yml](04_config.yml) Tells the Grafana Agent where to load files from. @@ -14,7 +14,7 @@ Tells the Grafana Agent where to load files from. Logs are loaded from a template matching `logs-*.yml`. There can ONLY be 1 template loaded -[logs-1.yml](./04_assets/logs-1.yml) +[logs-1.yml](04_assets/logs-1.yml) ```yaml configs: @@ -29,7 +29,7 @@ configs: expression: '\\temp\\Logs\\(?P.+?)\\' ``` -[traces.yml](./04_assets/traces-1.yml) +[traces.yml](04_assets/traces-1.yml) ```yaml configs: @@ -42,5 +42,5 @@ configs: ## Final -[final.yml](./04_assets/final.yml) +[final.yml](04_assets/final.yml) diff --git a/docs/cookbook/dynamic-configuration/01_Basics/04_assets/agent-1.yml b/docs/user/cookbook/dynamic-configuration/01_Basics/04_assets/agent-1.yml similarity index 100% rename from docs/cookbook/dynamic-configuration/01_Basics/04_assets/agent-1.yml rename to docs/user/cookbook/dynamic-configuration/01_Basics/04_assets/agent-1.yml diff --git a/docs/cookbook/dynamic-configuration/01_Basics/04_assets/final.yml b/docs/user/cookbook/dynamic-configuration/01_Basics/04_assets/final.yml similarity index 100% rename from docs/cookbook/dynamic-configuration/01_Basics/04_assets/final.yml rename to docs/user/cookbook/dynamic-configuration/01_Basics/04_assets/final.yml diff --git a/docs/cookbook/dynamic-configuration/01_Basics/04_assets/integrations-node.yml b/docs/user/cookbook/dynamic-configuration/01_Basics/04_assets/integrations-node.yml similarity index 100% rename from docs/cookbook/dynamic-configuration/01_Basics/04_assets/integrations-node.yml rename to docs/user/cookbook/dynamic-configuration/01_Basics/04_assets/integrations-node.yml diff --git a/docs/cookbook/dynamic-configuration/01_Basics/04_assets/integrations-redis.yml b/docs/user/cookbook/dynamic-configuration/01_Basics/04_assets/integrations-redis.yml similarity index 100% rename from docs/cookbook/dynamic-configuration/01_Basics/04_assets/integrations-redis.yml rename to docs/user/cookbook/dynamic-configuration/01_Basics/04_assets/integrations-redis.yml diff --git a/docs/cookbook/dynamic-configuration/01_Basics/04_assets/logs-1.yml b/docs/user/cookbook/dynamic-configuration/01_Basics/04_assets/logs-1.yml similarity index 100% rename from docs/cookbook/dynamic-configuration/01_Basics/04_assets/logs-1.yml rename to docs/user/cookbook/dynamic-configuration/01_Basics/04_assets/logs-1.yml diff --git a/docs/cookbook/dynamic-configuration/01_Basics/04_assets/metrics-1.yml b/docs/user/cookbook/dynamic-configuration/01_Basics/04_assets/metrics-1.yml similarity index 100% rename from docs/cookbook/dynamic-configuration/01_Basics/04_assets/metrics-1.yml rename to docs/user/cookbook/dynamic-configuration/01_Basics/04_assets/metrics-1.yml diff --git a/docs/cookbook/dynamic-configuration/01_Basics/04_assets/metrics_instances-1.yml b/docs/user/cookbook/dynamic-configuration/01_Basics/04_assets/metrics_instances-1.yml similarity index 100% rename from docs/cookbook/dynamic-configuration/01_Basics/04_assets/metrics_instances-1.yml rename to docs/user/cookbook/dynamic-configuration/01_Basics/04_assets/metrics_instances-1.yml diff --git a/docs/cookbook/dynamic-configuration/01_Basics/04_assets/metrics_instances-2.yml b/docs/user/cookbook/dynamic-configuration/01_Basics/04_assets/metrics_instances-2.yml similarity index 100% rename from docs/cookbook/dynamic-configuration/01_Basics/04_assets/metrics_instances-2.yml rename to docs/user/cookbook/dynamic-configuration/01_Basics/04_assets/metrics_instances-2.yml diff --git a/docs/cookbook/dynamic-configuration/01_Basics/04_assets/server-1.yml b/docs/user/cookbook/dynamic-configuration/01_Basics/04_assets/server-1.yml similarity index 100% rename from docs/cookbook/dynamic-configuration/01_Basics/04_assets/server-1.yml rename to docs/user/cookbook/dynamic-configuration/01_Basics/04_assets/server-1.yml diff --git a/docs/cookbook/dynamic-configuration/01_Basics/04_assets/traces-1.yml b/docs/user/cookbook/dynamic-configuration/01_Basics/04_assets/traces-1.yml similarity index 100% rename from docs/cookbook/dynamic-configuration/01_Basics/04_assets/traces-1.yml rename to docs/user/cookbook/dynamic-configuration/01_Basics/04_assets/traces-1.yml diff --git a/docs/cookbook/dynamic-configuration/01_Basics/04_config.yml b/docs/user/cookbook/dynamic-configuration/01_Basics/04_config.yml similarity index 100% rename from docs/cookbook/dynamic-configuration/01_Basics/04_config.yml rename to docs/user/cookbook/dynamic-configuration/01_Basics/04_config.yml diff --git a/docs/cookbook/dynamic-configuration/02_Templates/01_Looping.md b/docs/user/cookbook/dynamic-configuration/02_Templates/01_Looping.md similarity index 94% rename from docs/cookbook/dynamic-configuration/02_Templates/01_Looping.md rename to docs/user/cookbook/dynamic-configuration/02_Templates/01_Looping.md index 1f15d38086fd..fbed2fb01268 100644 --- a/docs/cookbook/dynamic-configuration/02_Templates/01_Looping.md +++ b/docs/user/cookbook/dynamic-configuration/02_Templates/01_Looping.md @@ -6,7 +6,7 @@ The templating is based on the excellent [gomplate](https://docs.gomplate.ca/) l ## Looping -[agent-1.yml](./01_assets/agent-1.yml) +[agent-1.yml](01_assets/agent-1.yml) ```yaml server: @@ -32,7 +32,7 @@ The templating engine uses directives that are wrapped in `{{ command }}`, in th ## Final -[final.yml](./01_assets/final.yml) +[final.yml](01_assets/final.yml) The final.yml contains 4 prometheus configs diff --git a/docs/cookbook/dynamic-configuration/02_Templates/01_assets/agent-1.yml b/docs/user/cookbook/dynamic-configuration/02_Templates/01_assets/agent-1.yml similarity index 100% rename from docs/cookbook/dynamic-configuration/02_Templates/01_assets/agent-1.yml rename to docs/user/cookbook/dynamic-configuration/02_Templates/01_assets/agent-1.yml diff --git a/docs/cookbook/dynamic-configuration/02_Templates/01_assets/final.yml b/docs/user/cookbook/dynamic-configuration/02_Templates/01_assets/final.yml similarity index 100% rename from docs/cookbook/dynamic-configuration/02_Templates/01_assets/final.yml rename to docs/user/cookbook/dynamic-configuration/02_Templates/01_assets/final.yml diff --git a/docs/cookbook/dynamic-configuration/02_Templates/01_config.yml b/docs/user/cookbook/dynamic-configuration/02_Templates/01_config.yml similarity index 100% rename from docs/cookbook/dynamic-configuration/02_Templates/01_config.yml rename to docs/user/cookbook/dynamic-configuration/02_Templates/01_config.yml diff --git a/docs/cookbook/dynamic-configuration/02_Templates/02_Datasources.md b/docs/user/cookbook/dynamic-configuration/02_Templates/02_Datasources.md similarity index 77% rename from docs/cookbook/dynamic-configuration/02_Templates/02_Datasources.md rename to docs/user/cookbook/dynamic-configuration/02_Templates/02_Datasources.md index 036e60d60587..77004f230ab1 100644 --- a/docs/cookbook/dynamic-configuration/02_Templates/02_Datasources.md +++ b/docs/user/cookbook/dynamic-configuration/02_Templates/02_Datasources.md @@ -7,7 +7,7 @@ Datasources are a powerful concept in gomplate. They allow you to reach out to o ## Config -The [config.yml](./02_config.yml) adds a new field `sources`. Sources can be any number of things defined in the gomplate [datasources](https://docs.gomplate.ca/datasources/) documentation. In this example using fruit. +The [config.yml](02_config.yml) adds a new field `sources`. Sources can be any number of things defined in the gomplate [datasources](https://docs.gomplate.ca/datasources/) documentation. In this example using fruit. ```yaml template_paths: @@ -17,7 +17,7 @@ datasources: url: "file://etc/grafana/01_assets/fruit.json" ``` -[fruit.json](./02_assets/fruit.json) +[fruit.json](02_assets/fruit.json) ```json ["mango","peach","orange"] @@ -25,7 +25,7 @@ datasources: ## Usage -[agent-1.yml](./02_assets/agent-1.yml) +[agent-1.yml](02_assets/agent-1.yml) ```yaml server: diff --git a/docs/cookbook/dynamic-configuration/02_Templates/02_assets/agent-1.yml b/docs/user/cookbook/dynamic-configuration/02_Templates/02_assets/agent-1.yml similarity index 100% rename from docs/cookbook/dynamic-configuration/02_Templates/02_assets/agent-1.yml rename to docs/user/cookbook/dynamic-configuration/02_Templates/02_assets/agent-1.yml diff --git a/docs/cookbook/dynamic-configuration/02_Templates/02_assets/final.yml b/docs/user/cookbook/dynamic-configuration/02_Templates/02_assets/final.yml similarity index 100% rename from docs/cookbook/dynamic-configuration/02_Templates/02_assets/final.yml rename to docs/user/cookbook/dynamic-configuration/02_Templates/02_assets/final.yml diff --git a/docs/cookbook/dynamic-configuration/02_Templates/02_assets/fruit.json b/docs/user/cookbook/dynamic-configuration/02_Templates/02_assets/fruit.json similarity index 100% rename from docs/cookbook/dynamic-configuration/02_Templates/02_assets/fruit.json rename to docs/user/cookbook/dynamic-configuration/02_Templates/02_assets/fruit.json diff --git a/docs/cookbook/dynamic-configuration/02_Templates/02_config.yml b/docs/user/cookbook/dynamic-configuration/02_Templates/02_config.yml similarity index 100% rename from docs/cookbook/dynamic-configuration/02_Templates/02_config.yml rename to docs/user/cookbook/dynamic-configuration/02_Templates/02_config.yml diff --git a/docs/cookbook/dynamic-configuration/02_Templates/03_Datasource_and_Objects.md b/docs/user/cookbook/dynamic-configuration/02_Templates/03_Datasource_and_Objects.md similarity index 84% rename from docs/cookbook/dynamic-configuration/02_Templates/03_Datasource_and_Objects.md rename to docs/user/cookbook/dynamic-configuration/02_Templates/03_Datasource_and_Objects.md index 0a0bfd1bd138..ba12ddd3c350 100644 --- a/docs/cookbook/dynamic-configuration/02_Templates/03_Datasource_and_Objects.md +++ b/docs/user/cookbook/dynamic-configuration/02_Templates/03_Datasource_and_Objects.md @@ -7,7 +7,7 @@ Datasources can also access objects. ## Config -The [config.yml](./02_config.yml) adds a new field `sources`. Sources can be any number of things defined in the gomplate [datasources](https://docs.gomplate.ca/datasources/) documentation. In this example using fruit. +The [config.yml](02_config.yml) adds a new field `sources`. Sources can be any number of things defined in the gomplate [datasources](https://docs.gomplate.ca/datasources/) documentation. In this example using fruit. ```yaml template_paths: @@ -17,7 +17,7 @@ datasources: url: "file:///etc/grafana/03_assets/computers.json" ``` -[computers.json](./03_assets/computers.json) +[computers.json](03_assets/computers.json) ```json [ @@ -42,7 +42,7 @@ datasources: ## Usage -[agent-1.yml](./02_assets/agent-1.yml) +[agent-1.yml](02_assets/agent-1.yml) ```yaml server: diff --git a/docs/cookbook/dynamic-configuration/02_Templates/03_assets/agent-1.yml b/docs/user/cookbook/dynamic-configuration/02_Templates/03_assets/agent-1.yml similarity index 100% rename from docs/cookbook/dynamic-configuration/02_Templates/03_assets/agent-1.yml rename to docs/user/cookbook/dynamic-configuration/02_Templates/03_assets/agent-1.yml diff --git a/docs/cookbook/dynamic-configuration/02_Templates/03_assets/computers.json b/docs/user/cookbook/dynamic-configuration/02_Templates/03_assets/computers.json similarity index 100% rename from docs/cookbook/dynamic-configuration/02_Templates/03_assets/computers.json rename to docs/user/cookbook/dynamic-configuration/02_Templates/03_assets/computers.json diff --git a/docs/cookbook/dynamic-configuration/02_Templates/03_assets/final.yml b/docs/user/cookbook/dynamic-configuration/02_Templates/03_assets/final.yml similarity index 100% rename from docs/cookbook/dynamic-configuration/02_Templates/03_assets/final.yml rename to docs/user/cookbook/dynamic-configuration/02_Templates/03_assets/final.yml diff --git a/docs/cookbook/dynamic-configuration/02_Templates/03_config.yml b/docs/user/cookbook/dynamic-configuration/02_Templates/03_config.yml similarity index 100% rename from docs/cookbook/dynamic-configuration/02_Templates/03_config.yml rename to docs/user/cookbook/dynamic-configuration/02_Templates/03_config.yml diff --git a/docs/cookbook/dynamic-configuration/03_Advanced_Datasources/01_AWS.md b/docs/user/cookbook/dynamic-configuration/03_Advanced_Datasources/01_AWS.md similarity index 93% rename from docs/cookbook/dynamic-configuration/03_Advanced_Datasources/01_AWS.md rename to docs/user/cookbook/dynamic-configuration/03_Advanced_Datasources/01_AWS.md index f68fd0115052..0d0b06e63613 100644 --- a/docs/cookbook/dynamic-configuration/03_Advanced_Datasources/01_AWS.md +++ b/docs/user/cookbook/dynamic-configuration/03_Advanced_Datasources/01_AWS.md @@ -6,7 +6,7 @@ Unfortunately there is not a specific docker command but generic examples are be ## Looping -[agent-1.yml](./01_assets/agent-1.yml) +[agent-1.yml](01_assets/agent-1.yml) ```yaml server: @@ -36,4 +36,4 @@ The `aws.EC2Query` command is a new command added for Grafana Agent and takes a ## Final -[final.yml](./01_assets/final.yml) +[final.yml](01_assets/final.yml) diff --git a/docs/cookbook/dynamic-configuration/03_Advanced_Datasources/01_assets/agent-1.yml b/docs/user/cookbook/dynamic-configuration/03_Advanced_Datasources/01_assets/agent-1.yml similarity index 100% rename from docs/cookbook/dynamic-configuration/03_Advanced_Datasources/01_assets/agent-1.yml rename to docs/user/cookbook/dynamic-configuration/03_Advanced_Datasources/01_assets/agent-1.yml diff --git a/docs/cookbook/dynamic-configuration/03_Advanced_Datasources/01_assets/final.yml b/docs/user/cookbook/dynamic-configuration/03_Advanced_Datasources/01_assets/final.yml similarity index 100% rename from docs/cookbook/dynamic-configuration/03_Advanced_Datasources/01_assets/final.yml rename to docs/user/cookbook/dynamic-configuration/03_Advanced_Datasources/01_assets/final.yml diff --git a/docs/cookbook/dynamic-configuration/03_Advanced_Datasources/01_config.yml b/docs/user/cookbook/dynamic-configuration/03_Advanced_Datasources/01_config.yml similarity index 100% rename from docs/cookbook/dynamic-configuration/03_Advanced_Datasources/01_config.yml rename to docs/user/cookbook/dynamic-configuration/03_Advanced_Datasources/01_config.yml diff --git a/docs/user/cookbook/dynamic-configuration/README.md b/docs/user/cookbook/dynamic-configuration/README.md new file mode 100644 index 000000000000..1896b59638a5 --- /dev/null +++ b/docs/user/cookbook/dynamic-configuration/README.md @@ -0,0 +1,19 @@ +# Dynamic Configuration Cookbook + +The purpose of the cookbook is to guide you through common scenarios of using dynamic configuration. Each folder contains increasingly more complex use cases, but feel free to jump in wherever you feel appropriate. + +## Basics + +[Basics](01_Basics) covers +- [Structure](01_Basics/01_Structure.md) of how agent and server templates are loaded +- [Instances](01_Basics/02_Instances.md) of metrics and metrics instances are loaded +- [Integrations](01_Basics/03_Integrations.md) of how integrations are loaded +- [Logs and Traces](01_Basics/04_Logs_and_Traces.md) of how traces and logs are loaded + +[Templates](02_Templates) covers +- [Looping](02_Templates/01_Looping.md) covers basic command usage and simple loops +- [Datasource](02_Templates/02_Datasources.md) covers usage of datasource which are external datastores you can use to pull in data +- [Datasources and Objects](02_Templates/03_Datasource_and_Objects.md) covers the usage of complex json objects + +[Advanced Datasources](03_Advanced_Datasources) covers non file based datasources +- [AWS](03_Advanced_Datasources/01_AWS.md) covers querying EC2 for instances \ No newline at end of file From 90bd7f12150fb9d2e989b21f8258098bf8f3c2f2 Mon Sep 17 00:00:00 2001 From: mattdurham Date: Tue, 1 Mar 2022 08:58:34 -0500 Subject: [PATCH 15/19] Play with page file. (#1434) * update smoke alerts (#1432) * update smoke alerts Signed-off-by: Robbie Lankford * filter pod variable with namespace Signed-off-by: Robbie Lankford * update cpu high alert duration to 1h Signed-off-by: Robbie Lankford * upgrade to loki v2.4.2 (#1422) * upgrade to loki v2.4.2 Signed-off-by: Robbie Lankford * update CHANGELOG.md * rename cortex_ metrics to agent_dskit_ * update changelog * Play with page file. * Try to fix oom in windows * Added comments * Try to find windows mem leak * Fix errant character * Fix = * Removing dynamic configuration tests * remove memprofile * switch to windows 2019 * Revert "Removing dynamic configuration tests" This reverts commit 359c38b5cd781ec32d0ed403befb80401195d899. * switch to windows 2019 and return tests * cadvisor config Fixes #1281 (#1293) * Fixes #1281 * Update pkg/integrations/cadvisor/common.go Co-authored-by: Robert Fratto * gofmt * Add tests for cadvisor config * Lint * simplify test, enhance comments, return nil on run * Default config slices to values expected by upstream cadvisor * Build flags to only run cadvisor tests when docker and network are present Co-authored-by: Robert Fratto Co-authored-by: Robert Fratto * Merging main changes and adding back in test * Add tests back Co-authored-by: Robert Lankford Co-authored-by: Ryan Geyer Co-authored-by: Robert Fratto Co-authored-by: Robert Fratto --- .github/workflows/test.yml | 6 +-- CHANGELOG.md | 2 + Makefile | 16 +++---- go.mod | 10 ++-- go.sum | 46 +++++++++++++++++++ pkg/config/config_test.go | 25 ++++++++++ pkg/integrations/cadvisor/cadvisor.go | 8 +++- pkg/integrations/cadvisor/cadvisor_test.go | 31 +++++++++++++ pkg/integrations/cadvisor/common.go | 22 ++++++++- pkg/integrations/integration.go | 3 ++ pkg/integrations/v2/integrations.go | 3 ++ pkg/metrics/cluster/config.go | 2 +- pkg/metrics/cluster/node.go | 10 ++-- pkg/metrics/cluster/node_test.go | 11 +++-- .../grafana-agent-mixin/alerts.libsonnet | 14 +++--- .../grafana-agent-mixin/debugging.libsonnet | 2 +- 16 files changed, 174 insertions(+), 37 deletions(-) create mode 100644 pkg/integrations/cadvisor/cadvisor_test.go diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f731115a9978..a853534e7f03 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -5,7 +5,7 @@ jobs: name: Test strategy: matrix: - platform: [macos-latest, windows-latest] + platform: [macos-latest, windows-2019] runs-on: ${{ matrix.platform }} steps: - name: Set up Go 1.17 @@ -16,6 +16,6 @@ jobs: - name: Checkout code uses: actions/checkout@v2 - name: Build - run: make GOFLAGS="-tags=netgo,nodocker" BUILD_IN_CONTAINER=false cmd/agent/agent cmd/agentctl/agentctl cmd/agent-operator/agent-operator + run: make GOFLAGS="-tags=netgo,nodocker " BUILD_IN_CONTAINER=false cmd/agent/agent cmd/agentctl/agentctl cmd/agent-operator/agent-operator - name: Test - run: make GOFLAGS="-tags=netgo,nodocker" BUILD_IN_CONTAINER=false test + run: make GOFLAGS="-tags=netgo,nodocker " BUILD_IN_CONTAINER=false test diff --git a/CHANGELOG.md b/CHANGELOG.md index c176a77052ec..3c30266a3e39 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ - [ENHANCEMENT] Parameterize namespace field in sample K8s logs manifests (@hjet) +- [ENHANCEMENT] Upgrade to loki v2.4.2. The following metrics will now be prefixed with `agent_dskit_` instead of `cortex_`: `cortex_kv_request_duration_seconds`, `cortex_member_consul_heartbeats_total`, `cortex_member_ring_tokens_owned`, `cortex_member_ring_tokens_to_own`, `cortex_ring_member_ownership_percent`, `cortex_ring_members`, `cortex_ring_oldest_member_timestamp`, `cortex_ring_tokens_owned`, `cortex_ring_tokens_total`. (@rlankfo) + - [ENHANCEMENT] Introduce EXPERIMENTAL support for dynamic configuration. (@mattdurham) - [BUGFIX] Ensure singleton integrations are honored in v2 integrations (@mattdurham) diff --git a/Makefile b/Makefile index fbe0c4902aa9..fb2cf8b5aff4 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,3 @@ - SHELL = /usr/bin/env bash ############# @@ -86,12 +85,12 @@ GO_FLAGS = $(DEBUG_GO_FLAGS) endif NETGO_CHECK = strings $@ | grep cgo_stub\\\.go >/dev/null || { \ - rm $@; \ - echo "\nYour go standard library was built without the 'netgo' build tag."; \ - echo "To fix that, run"; \ - echo " sudo go clean -i net"; \ - echo " sudo go install -tags netgo std"; \ - false; \ + rm $@; \ + echo "\nYour go standard library was built without the 'netgo' build tag."; \ + echo "To fix that, run"; \ + echo " sudo go clean -i net"; \ + echo " sudo go install -tags netgo std"; \ + false; \ } # Protobuf files @@ -239,7 +238,8 @@ lint: # more without -race for packages that have known race detection issues. test: CGO_ENABLED=1 go test $(CGO_FLAGS) -race -cover -coverprofile=cover.out -p=4 ./... - CGO_ENABLED=1 go test $(CGO_FLAGS) -cover -coverprofile=cover-norace.out -p=4 ./pkg/integrations/node_exporter ./pkg/logs ./pkg/operator ./pkg/util/k8s + CGO_ENABLED=1 go test $(CGO_FLAGS) -cover -coverprofile=cover-norace.out -p=4 ./pkg/integrations/node_exporter ./pkg/logs ./pkg/operator ./pkg/util/k8s + clean: rm -rf cmd/agent/agent diff --git a/go.mod b/go.mod index 7b7553a4a6e4..acb7dd66d58e 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.17 require ( contrib.go.opencensus.io/exporter/prometheus v0.4.0 github.com/Shopify/sarama v1.30.0 - github.com/cortexproject/cortex v1.10.1-0.20211014125347-85c378182d0d + github.com/cortexproject/cortex v1.11.0 github.com/davidmparrott/kafka_exporter/v2 v2.0.1 github.com/docker/docker v20.10.10+incompatible github.com/docker/go-connections v0.4.0 @@ -21,8 +21,8 @@ require ( github.com/google/dnsmasq_exporter v0.0.0-00010101000000-000000000000 github.com/google/go-jsonnet v0.17.0 github.com/gorilla/mux v1.8.0 - github.com/grafana/dskit v0.0.0-20211011144203-3a88ec0b675f - github.com/grafana/loki v1.6.2-0.20211021114919-0ae0d4da122d + github.com/grafana/dskit v0.0.0-20211021180445-3bd016e9d7f1 + github.com/grafana/loki v1.6.2-0.20220112164614-525040a32657 github.com/hairyhenderson/go-fsimpl v0.0.0-20211102185733-857ee891b38d github.com/hairyhenderson/gomplate/v3 v3.0.0 github.com/hashicorp/consul/api v1.12.0 @@ -200,7 +200,6 @@ require ( github.com/go-zookeeper/zk v1.0.2 // indirect github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e // indirect github.com/godbus/dbus/v5 v5.0.4 // indirect - github.com/gofrs/uuid v4.0.0+incompatible // indirect github.com/gogo/googleapis v1.4.1 // indirect github.com/gogo/status v1.1.0 // indirect github.com/golang-jwt/jwt/v4 v4.1.0 // indirect @@ -483,3 +482,6 @@ replace github.com/leoluk/perflib_exporter v0.1.0 => github.com/grafana/perflib_ // Required until fork merged upstream for dynamic configuration support replace github.com/hairyhenderson/gomplate/v3 => github.com/mattdurham/gomplate/v3 v3.10.1-0.20220204190650-af65008b9bb1 + +// Required to ensure compatible hashicorp lib is loaded for dynamic configuration, this solves an ambigous import +exclude github.com/hashicorp/vault v0.10.3 diff --git a/go.sum b/go.sum index 0a72f9d5a2bf..e812b893daf4 100644 --- a/go.sum +++ b/go.sum @@ -180,6 +180,7 @@ github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3 github.com/GoogleCloudPlatform/cloudsql-proxy v1.24.0/go.mod h1:3tx938GhY4FC+E1KT/jNjDw7Z5qxAEtIiERJ2sXjnII= github.com/HdrHistogram/hdrhistogram-go v1.1.0/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= github.com/HdrHistogram/hdrhistogram-go v1.1.2 h1:5IcZpTvzydCQeHzK4Ef/D5rrSqwxob0t8PQPMybUNFM= +github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= github.com/Jeffail/gabs v1.1.0/go.mod h1:6xMvQMK4k33lb7GUUpaAPh6nKMmemQeg5d4gn7/bOXc= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= @@ -342,12 +343,14 @@ github.com/aws/aws-sdk-go v1.38.68/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2z github.com/aws/aws-sdk-go v1.40.11/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q= github.com/aws/aws-sdk-go v1.40.34/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q= github.com/aws/aws-sdk-go v1.40.37/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q= +github.com/aws/aws-sdk-go v1.40.45/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q= github.com/aws/aws-sdk-go v1.41.7/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q= github.com/aws/aws-sdk-go v1.42.23 h1:V0V5hqMEyVelgpu1e4gMPVCJ+KhmscdNxP/NWP1iCOA= github.com/aws/aws-sdk-go v1.42.23/go.mod h1:gyRszuZ/icHmHAVE4gc/r+cfCmhA1AD+vqfWbgI+eHs= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= github.com/aws/aws-sdk-go-v2 v1.7.0/go.mod h1:tb9wi5s61kTDA5qCkcDbt3KRVV74GGslQkl/DRdX/P4= github.com/aws/aws-sdk-go-v2 v1.9.0/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4= +github.com/aws/aws-sdk-go-v2 v1.9.1/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4= github.com/aws/aws-sdk-go-v2 v1.9.2 h1:dUFQcMNZMLON4BOe273pl0filK9RqyQMhCK/6xssL6s= github.com/aws/aws-sdk-go-v2 v1.9.2/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4= github.com/aws/aws-sdk-go-v2/config v1.7.0/go.mod h1:w9+nMZ7soXCe5nT46Ri354SNhXDQ6v+V5wqDjnZE+GY= @@ -364,6 +367,7 @@ github.com/aws/aws-sdk-go-v2/internal/ini v1.2.4 h1:leSJ6vCqtPpTmBIgE7044B1wql1E github.com/aws/aws-sdk-go-v2/internal/ini v1.2.4/go.mod h1:ZcBrrI3zBKlhGFNYWvju0I3TR93I7YIgAfy82Fh4lcQ= github.com/aws/aws-sdk-go-v2/service/appconfig v1.4.2/go.mod h1:FZ3HkCe+b10uFZZkFdvf98LHW21k49W8o8J366lqVKY= github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.5.0/go.mod h1:acH3+MQoiMzozT/ivU+DbRg7Ooo2298RdRaWcOv+4vM= +github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.8.1/go.mod h1:CM+19rL1+4dFWnOQKwDc7H1KwXTz+h61oUSHyhV0b3o= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.3.0/go.mod h1:R1KK+vY8AfalhG1AOu5e35pOD2SdoPKQCFLTvnxiohk= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.3.2 h1:r7jel2aa4d9Duys7wEmWqDd5ebpC9w6Kxu6wIjjp18E= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.3.2/go.mod h1:72HRZDLMtmVQiLG2tLfQcaWLCssELvGl+Zf2WVxMmR8= @@ -434,6 +438,7 @@ github.com/cactus/go-statsd-client/statsd v0.0.0-20191106001114-12b4e2b38748/go. github.com/caio/go-tdigest v2.3.0+incompatible/go.mod h1:sHQM/ubZStBUmF1WbB8FAm8q9GjDajLC5T7ydxE3JHI= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= github.com/casbin/casbin/v2 v2.31.6/go.mod h1:vByNa/Fchek0KZUgG5wEsl7iFsiviAYKRtgrQfcJqHg= +github.com/casbin/casbin/v2 v2.37.0/go.mod h1:vByNa/Fchek0KZUgG5wEsl7iFsiviAYKRtgrQfcJqHg= github.com/cenkalti/backoff v0.0.0-20181003080854-62661b46c409/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff v1.0.0/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff v2.0.0+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= @@ -451,6 +456,7 @@ github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA github.com/census-instrumentation/opencensus-proto v0.3.0 h1:t/LhUZLVitR1Ow2YOnduCsavhwFUklBMoGVYUCqmCqk= github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/certifi/gocertifi v0.0.0-20191021191039-0944d244cd40/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= +github.com/certifi/gocertifi v0.0.0-20200922220541-2c3bb06c6054/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.0/go.mod h1:dgIUBU3pDso/gPgZ1osOZ0iQf77oPR28Tjxl5dIMyVM= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= @@ -478,6 +484,7 @@ github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6D github.com/circonus-labs/circonusllhist v0.0.0-20161110002650-365d370cc145/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/cisco-ie/nx-telemetry-proto v0.0.0-20190531143454-82441e232cf6/go.mod h1:ugEfq4B8T8ciw/h5mCkgdiDRFS4CkqqhH2dymDB4knc= +github.com/clbanning/mxj v1.8.4/go.mod h1:BVjHeAH+rl9rs6f+QIpeRl0tfu10SXn1pUSa5PVGJng= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cloudflare/cfssl v0.0.0-20180223231731-4e2dcbde5004 h1:lkAMpLVBDaj17e85keuznYcH5rqI438v41pKcBl4ZxQ= @@ -635,6 +642,8 @@ github.com/cortexproject/cortex v1.7.1-0.20210316085356-3fedc1108a49/go.mod h1:/ github.com/cortexproject/cortex v1.8.1-0.20210422151339-cf1c444e0905/go.mod h1:xxm4/CLvTmDxwE7yXwtClR4dIvkG4S09o5DygPOgc1U= github.com/cortexproject/cortex v1.10.1-0.20211014125347-85c378182d0d h1:2KZVBpjU3NtLZ5oEB7c0TXIGKZYH6vc4pENecdbcCxw= github.com/cortexproject/cortex v1.10.1-0.20211014125347-85c378182d0d/go.mod h1:VZ2fFzUCWcyyneToKNu+ALOpGUJIdkInXy4MOhCo/xw= +github.com/cortexproject/cortex v1.11.0 h1:kx2iBVLZdu7Qjv7dbN4Ek2ax2nICsyoBL+DdEcAetOQ= +github.com/cortexproject/cortex v1.11.0/go.mod h1:oAOdKib5B/IhvxrNecMJH9Wb+a0q31KaAUiv/fcDvFo= github.com/couchbase/go-couchbase v0.0.0-20180501122049-16db1f1fe037/go.mod h1:TWI8EKQMs5u5jLKW/tsb9VwauIrMIxQG1r5fMsswK5U= github.com/couchbase/gomemcached v0.0.0-20180502221210-0da75df14530/go.mod h1:srVSlQLB8iXBVXHgnqemxUXqN6FCvClgCMPCsjBDR7c= github.com/couchbase/goutils v0.0.0-20180530154633-e865a1461c8a/go.mod h1:BQwMFlJzDjFDG3DJUdU0KORxn88UlsOULuxLExMh3Hs= @@ -804,6 +813,7 @@ github.com/evanphx/json-patch/v5 v5.5.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2Vvl github.com/facette/natsort v0.0.0-20181210072756-2cd4dd1e2dcb/go.mod h1:bH6Xx7IW64qjjJq8M2u4dxNaBiDfKK+z/3eGDpXEQhc= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= +github.com/fatih/color v1.12.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fatih/structs v0.0.0-20180123065059-ebf56d35bba7/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= @@ -818,10 +828,12 @@ github.com/felixge/httpsnoop v1.0.2/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSw github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= 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/foxcpp/go-mockdns v0.0.0-20201212160233-ede2f9158d15/go.mod h1:tPg4cp4nseejPd+UKxtCVQ2hUxNTZ7qQZJa7CLriIeo= github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= +github.com/franela/goblin v0.0.0-20210519012713-85d372ac71e2/go.mod h1:VzmDKDJVZI3aJmnRI9VjAn9nJ8qPPsN1fqzr9dqInIo= github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= github.com/frankban/quicktest v1.4.0/go.mod h1:36zfPVQyHxymz4cH7wlDmVwDrJuljRB60qkgn7rorfQ= github.com/frankban/quicktest v1.10.0/go.mod h1:ui7WezCLWMWxVWr1GETZY3smRy0G4KWq9vcPtJmFl7Y= @@ -1001,6 +1013,7 @@ github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GO github.com/go-redis/redis v6.15.9+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= github.com/go-redis/redis/v8 v8.0.0-beta.10.0.20200905143926-df7fe4e2ce72/go.mod h1:CJP1ZIHwhosNYwIdaHPZK9vHsM3+roNBaZ7U9Of1DXc= github.com/go-redis/redis/v8 v8.2.3/go.mod h1:ysgGY09J/QeDYbu3HikWEIPCwaeOkuNoTgKayTEaEOw= +github.com/go-redis/redis/v8 v8.9.0/go.mod h1:ik7vb7+gm8Izylxu6kf6wG26/t2VljgCfSQ1DM4O1uU= github.com/go-redis/redis/v8 v8.11.4/go.mod h1:2Z2wHZXdQpCDXEGzqMockDpNyYvi2l4Pxt6RJr792+w= github.com/go-resty/resty/v2 v2.1.1-0.20191201195748-d7b97669fe48 h1:JVrqSeQfdhYRFk24TvhTZWU0q8lfCojxZQFi3Ou7+uY= github.com/go-resty/resty/v2 v2.1.1-0.20191201195748-d7b97669fe48/go.mod h1:dZGr0i9PLlaaTD4H/hoZIDjQ+r6xq8mgbRzHZf7f2J8= @@ -1267,11 +1280,16 @@ github.com/gosimple/unidecode v1.0.1/go.mod h1:CP0Cr1Y1kogOtx0bJblKzsVWrqYaqfNOn github.com/gotestyourself/gotestyourself v2.2.0+incompatible/go.mod h1:zZKM6oeNM8k+FRljX1mnzVYeS8wiGgQyvST1/GafPbY= github.com/grafana/dnsmasq_exporter v0.2.1-0.20211118155541-751b01d21de9 h1:/ovWD85B27b/xytKaxhP/LvXF8fxWIhEwE55mFpCQsE= github.com/grafana/dnsmasq_exporter v0.2.1-0.20211118155541-751b01d21de9/go.mod h1:Jj5TSVVJE6t8Brq/ZkUbQ1n260dilriL0tWNaHjVDUs= +github.com/grafana/dskit v0.0.0-20210908150159-fcf48cb19aa4/go.mod h1:m3eHzwe5IT5eE2MI3Ena2ooU8+Hek8IiVXb9yJ1+0rs= github.com/grafana/dskit v0.0.0-20211011144203-3a88ec0b675f h1:FvvSVEbnGeM2bUivGmsiXTi8URJyBU7TcFEEoRe5wWI= github.com/grafana/dskit v0.0.0-20211011144203-3a88ec0b675f/go.mod h1:uPG2nyK4CtgNDmWv7qyzYcdI+S90kHHRWvHnBtEMBXM= +github.com/grafana/dskit v0.0.0-20211021180445-3bd016e9d7f1 h1:Qf+/W3Tup0nO21tgJmO14WJK0yyrm4L2UJipZP+Zoow= +github.com/grafana/dskit v0.0.0-20211021180445-3bd016e9d7f1/go.mod h1:uPG2nyK4CtgNDmWv7qyzYcdI+S90kHHRWvHnBtEMBXM= github.com/grafana/gocql v0.0.0-20200605141915-ba5dc39ece85/go.mod h1:crI9WX6p0IhrqB+DqIUHulRW853PaNFf7o4UprV//3I= github.com/grafana/loki v1.6.2-0.20211021114919-0ae0d4da122d h1:vjCXyKr987ClVgPyj7fZXjvCX8B1Y51AwUaf1k6/NqI= github.com/grafana/loki v1.6.2-0.20211021114919-0ae0d4da122d/go.mod h1:CHJv20FcRFw/N6/FJOtEdMt1zDcCJbxMoLmzpH74CVQ= +github.com/grafana/loki v1.6.2-0.20220112164614-525040a32657 h1:1TSVAyuDYJdp4/195GrdrGg0ZHMB+eJye1qIgi0N8+4= +github.com/grafana/loki v1.6.2-0.20220112164614-525040a32657/go.mod h1:9dAaw+bJR/qZiHZYO9ZvFhuqphGblcUEwuvGPbgZldA= github.com/grafana/mongodb_exporter v0.20.8-0.20211006135645-bef0f0239601 h1:k5VTHQsSBs/jZHWXEvjW4QAZQcoGB3QQfUN0XGA6pB4= github.com/grafana/mongodb_exporter v0.20.8-0.20211006135645-bef0f0239601/go.mod h1:BCuUaP3ocoAYt8xTCaCXWQttYMKUcg36e1NJdOEx56M= github.com/grafana/mysqld_exporter v0.12.2-0.20201015182516-5ac885b2d38a h1:D5NSR64/6xMXnSFD9y1m1DPYIcBcHvtfeuI9/M/0qtI= @@ -1472,6 +1490,7 @@ github.com/huandu/xstrings v1.0.0/go.mod h1:4qWG/gcEcfX4z/mBDHJ++3ReCw9ibxbsNJbc github.com/huandu/xstrings v1.3.1 h1:4jgBlKK6tLKFvO8u5pmYjG91cqytmDCDvGh7ECVFfFs= github.com/huandu/xstrings v1.3.1/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= +github.com/hudl/fargo v1.4.0/go.mod h1:9Ai6uvFy5fQNq6VPKtg+Ceq1+eTY4nKUlR2JElEOcDo= github.com/iancoleman/strcase v0.0.0-20180726023541-3605ed457bf7/go.mod h1:SK73tn/9oHe+/Y0h39VT4UCxmurVJkR5NA7kMEAOgSE= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= @@ -1623,6 +1642,7 @@ github.com/klauspost/compress v1.11.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYs github.com/klauspost/compress v1.11.12/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.13/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.13.1/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= +github.com/klauspost/compress v1.13.4/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.13.5/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= github.com/klauspost/compress v1.13.6 h1:P76CopJELS0TiO2mebmnzgWaajssP/EszplttgQxcgc= github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= @@ -1797,6 +1817,7 @@ github.com/mileusna/useragent v0.0.0-20190129205925-3e331f0949a5/go.mod h1:JWhYA github.com/mindprince/gonvml v0.0.0-20190828220739-9ebdce4bb989 h1:PS1dLCGtD8bb9RPKJrc8bS7qHL6JnW1CZvwzH9dPoUs= github.com/mindprince/gonvml v0.0.0-20190828220739-9ebdce4bb989/go.mod h1:2eu9pRWp8mo84xCg6KswZ+USQHjwgRhNp06sozOdsTY= github.com/minio/highwayhash v1.0.1/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= +github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= github.com/minio/md5-simd v1.1.0/go.mod h1:XpBqgZULrMYD3R+M28PcmP0CkI7PEMzB3U77ZrKZ0Gw= github.com/minio/minio-go/v6 v6.0.44/go.mod h1:qD0lajrGW49lKZLtXKtCB4X/qkMf0a5tBvN2PaZg7Gg= github.com/minio/minio-go/v6 v6.0.56/go.mod h1:KQMM+/44DSlSGSQWSfRrAZ12FVMmpWNuX37i2AX0jfI= @@ -1881,11 +1902,14 @@ github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5Vgl github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= github.com/nats-io/jwt v1.2.2/go.mod h1:/xX356yQA6LuXI9xWW7mZNpxgF2mBmGecH+Fj34sP5Q= github.com/nats-io/jwt/v2 v2.0.2/go.mod h1:VRP+deawSXyhNjXmxPCHskrR6Mq50BqpEI5SEcNiGlY= +github.com/nats-io/jwt/v2 v2.0.3/go.mod h1:VRP+deawSXyhNjXmxPCHskrR6Mq50BqpEI5SEcNiGlY= github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= github.com/nats-io/nats-server/v2 v2.1.4/go.mod h1:Jw1Z28soD/QasIA2uWjXyM9El1jly3YwyFOuR8tH1rg= github.com/nats-io/nats-server/v2 v2.2.6/go.mod h1:sEnFaxqe09cDmfMgACxZbziXnhQFhwk+aKkZjBBRYrI= +github.com/nats-io/nats-server/v2 v2.5.0/go.mod h1:Kj86UtrXAL6LwYRA6H4RqzkHhK0Vcv2ZnKD5WbQ1t3g= github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= github.com/nats-io/nats.go v1.11.0/go.mod h1:BPko4oXsySz4aSWeFgOHLZs3G4Jq4ZAyE6/zMCxRT6w= +github.com/nats-io/nats.go v1.12.1/go.mod h1:BPko4oXsySz4aSWeFgOHLZs3G4Jq4ZAyE6/zMCxRT6w= github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nkeys v0.2.0/go.mod h1:XdZpAbhgyyODYqjTawOnIOI7VlbKSarI9Gfy1tqEu/s= @@ -1931,6 +1955,7 @@ github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108 github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= github.com/onsi/ginkgo v1.14.1/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= github.com/onsi/ginkgo v1.15.0/go.mod h1:hF8qUzuuC8DJGygJH3726JnCZX4MYbRB8yFfISqnKUg= +github.com/onsi/ginkgo v1.16.2/go.mod h1:CObGmKUOKaSC0RjmoAK7tKyn4Azo5P2IWuoMnvwxz1E= github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= @@ -1947,6 +1972,7 @@ github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1y github.com/onsi/gomega v1.10.2/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.10.3/go.mod h1:V9xEwhxec5O8UDM77eCW8vLymOMltsqPVYWrpDsH8xc= github.com/onsi/gomega v1.10.5/go.mod h1:gza4q3jKQJijlu05nKWRCW/GavJumGt8aNRxWg7mt48= +github.com/onsi/gomega v1.13.0/go.mod h1:lRk9szgn8TxENtWd0Tp4c3wjlRfMTMH27I+3Je41yGY= github.com/onsi/gomega v1.16.0 h1:6gjqkI8iiRHMvdccRJM8rVKjCWk6ZIm6FTm3ddIe4/c= github.com/onsi/gomega v1.16.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= @@ -2060,6 +2086,7 @@ github.com/percona/exporter_shared v0.7.4-0.20211108113423-8555cdbac68b h1:tPnod github.com/percona/exporter_shared v0.7.4-0.20211108113423-8555cdbac68b/go.mod h1:bweWrCdYX+iAONTNUNIIkXGDjGg8dbFL0VBxuUv0wus= github.com/percona/go-mysql v0.0.0-20190903141930-197f4ad8db8d/go.mod h1:/SGLf9OMxlnK6jq4mkFiImBcJXXk5jwD+lDrwDaGXcw= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= +github.com/performancecopilot/speed/v4 v4.0.0/go.mod h1:qxrSyuDGrTOWfV+uKRFhfxw6h/4HXRGUiZiufxo49BM= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/peterh/liner v1.0.1-0.20180619022028-8c1271fcf47f/go.mod h1:xIteQHvHuaLYG9IFj6mSxM0fCKrs34IrEQUhOYuGPHc= github.com/pierrec/cmdflag v0.0.2/go.mod h1:a3zKGZ3cdQUfxjd0RGMLZr8xI3nvpJOB+m6o/1X5BmU= @@ -2195,6 +2222,7 @@ github.com/prometheus/procfs v0.0.11/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4 github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.7.4-0.20211011103944-1a7a2bd3279f h1:ncXqc93eJV1Ncr3f6GA3MrIDNkNHvcPonRC2QgZaVkQ= github.com/prometheus/procfs v0.7.4-0.20211011103944-1a7a2bd3279f/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= @@ -2345,6 +2373,7 @@ github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3 github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= github.com/spf13/cobra v1.1.1/go.mod h1:WnodtKOvamDL/PwE2M4iKs8aMDBZ5Q5klgD3qfVJQMI= +github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= github.com/spf13/cobra v1.2.1 h1:+KmjbUw1hriSNMF55oPrkZcb27aECyrj8V2ytv7kWDw= github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk= github.com/spf13/jwalterweatherman v0.0.0-20141219030609-3d60171a6431/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= @@ -2427,6 +2456,7 @@ github.com/tklauser/numcpus v0.3.0/go.mod h1:yFGUr7TUHQRAhyqBcEg0Ge34zDBAsIvJJcy github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20200427203606-3cfed13b9966/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tomnomnom/linkheader v0.0.0-20180905144013-02ca5825eb80 h1:nrZ3ySNYwJbSpD6ce9duiP+QkD3JuLCcWkdaehUS/3Y= github.com/tomnomnom/linkheader v0.0.0-20180905144013-02ca5825eb80/go.mod h1:iFyPdL66DjUD96XmzVL3ZntbzcflLnznH0fr99w5VqE= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= @@ -2481,6 +2511,8 @@ github.com/weaveworks/common v0.0.0-20200914083218-61ffdd448099/go.mod h1:hz10LO github.com/weaveworks/common v0.0.0-20201119133501-0619918236ec/go.mod h1:ykzWac1LtVfOxdCK+jD754at1Ws9dKCwFeUzkFBffPs= github.com/weaveworks/common v0.0.0-20210112142934-23c8d7fa6120/go.mod h1:ykzWac1LtVfOxdCK+jD754at1Ws9dKCwFeUzkFBffPs= github.com/weaveworks/common v0.0.0-20210419092856-009d1eebd624/go.mod h1:ykzWac1LtVfOxdCK+jD754at1Ws9dKCwFeUzkFBffPs= +github.com/weaveworks/common v0.0.0-20210722103813-e649eff5ab4a/go.mod h1:YU9FvnS7kUnRt6HY10G+2qHkwzP3n3Vb1XsXDsJTSp8= +github.com/weaveworks/common v0.0.0-20210901124008-1fa3f9fa874c/go.mod h1:YU9FvnS7kUnRt6HY10G+2qHkwzP3n3Vb1XsXDsJTSp8= github.com/weaveworks/common v0.0.0-20210913144402-035033b78a78/go.mod h1:YU9FvnS7kUnRt6HY10G+2qHkwzP3n3Vb1XsXDsJTSp8= github.com/weaveworks/common v0.0.0-20211222122857-933588f98737 h1:BBhcuf4+YMKHEYQqbmzNN+e3btTzh8xk3tA2xh24MfU= github.com/weaveworks/common v0.0.0-20211222122857-933588f98737/go.mod h1:YfOOLoW1Q/jIIu0WLeSwgStmrKjuJEZSKTAUc+0KFvE= @@ -2568,8 +2600,11 @@ go.etcd.io/etcd/client/v3 v3.5.0-alpha.0.0.20210225194612-fa82d11a958a/go.mod h1 go.etcd.io/etcd/client/v3 v3.5.0 h1:62Eh0XOro+rDwkrypAGDfgmNh5Joq+z+W9HZdlXMzek= go.etcd.io/etcd/client/v3 v3.5.0/go.mod h1:AIKXXVX/DQXtfTEqBryiLTUXwON+GuvO6Z7lLS/oTh0= go.etcd.io/etcd/pkg/v3 v3.5.0-alpha.0/go.mod h1:tV31atvwzcybuqejDoY3oaNRTtlD2l/Ot78Pc9w7DMY= +go.etcd.io/etcd/pkg/v3 v3.5.0/go.mod h1:UzJGatBQ1lXChBkQF0AuAtkRQMYnHubxAEYIrC3MSsE= go.etcd.io/etcd/raft/v3 v3.5.0-alpha.0/go.mod h1:FAwse6Zlm5v4tEWZaTjmNhe17Int4Oxbu7+2r0DiD3w= +go.etcd.io/etcd/raft/v3 v3.5.0/go.mod h1:UFOHSIvO/nKwd4lhkwabrTD3cqW5yVyYYf/KlD00Szc= go.etcd.io/etcd/server/v3 v3.5.0-alpha.0.0.20210225194612-fa82d11a958a/go.mod h1:tsKetYpt980ZTpzl/gb+UOJj9RkIyCb1u4wjzMg90BQ= +go.etcd.io/etcd/server/v3 v3.5.0/go.mod h1:3Ah5ruV+M+7RZr0+Y/5mNLwC+eQlni+mQmOVdCRJoS4= go.mongodb.org/mongo-driver v1.0.3/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.mongodb.org/mongo-driver v1.1.0/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.mongodb.org/mongo-driver v1.1.1/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= @@ -2599,18 +2634,28 @@ go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opentelemetry.io/collector/model v0.30.0/go.mod h1:PcHNnM+RUl0uD8VkSn93PO78N7kQYhfqpI/eki57pl4= go.opentelemetry.io/collector/model v0.40.0 h1:UgdWfBnJBQL4atFv6LhlYq67Ts/vFDbwGknvsIsm/g8= go.opentelemetry.io/collector/model v0.40.0/go.mod h1:dXqjAeml+cB+YzJ3kUnd3v5/JvGAKl3MqHXfgSWRIo8= +go.opentelemetry.io/contrib v0.20.0/go.mod h1:G/EtFaa6qaN7+LxqfIAT3GiZa7Wv5DTBUzl5H4LY0Kc= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.20.0/go.mod h1:oVGt1LRbBOBq1A5BQLlUg9UaU/54aiHw8cgjV3aWZ/E= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.27.0 h1:TON1iU3Y5oIytGQHIejDYLam5uoSMsmA0UV9Yupb5gQ= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.27.0/go.mod h1:T/zQwBldOpoAEpE3HMbLnI8ydESZVz4ggw6Is4FF9LI= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.27.0 h1:0BgiNWjN7rUWO9HdjF4L12r8OW86QkVQcYmCjnayJLo= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.27.0/go.mod h1:bdvm3YpMxWAgEfQhtTBaVR8ceXPRuRBSQrvOBnIlHxc= go.opentelemetry.io/otel v0.11.0/go.mod h1:G8UCk+KooF2HLkgo8RHX9epABH/aRGYET7gQOqBVdB0= +go.opentelemetry.io/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzoxm/dooo= go.opentelemetry.io/otel v1.2.0 h1:YOQDvxO1FayUcT9MIhJhgMyNO1WqoduiyvQHzGN0kUQ= go.opentelemetry.io/otel v1.2.0/go.mod h1:aT17Fk0Z1Nor9e0uisf98LrntPGMnk4frBO9+dkf69I= +go.opentelemetry.io/otel/exporters/otlp v0.20.0/go.mod h1:YIieizyaN77rtLJra0buKiNBOm9XQfkPEKBeuhoMwAM= go.opentelemetry.io/otel/internal/metric v0.25.0 h1:w/7RXe16WdPylaIXDgcYM6t/q0K5lXgSdZOEbIEyliE= go.opentelemetry.io/otel/internal/metric v0.25.0/go.mod h1:Nhuw26QSX7d6n4duoqAFi5KOQR4AuzyMcl5eXOgwxtc= +go.opentelemetry.io/otel/metric v0.20.0/go.mod h1:598I5tYlH1vzBjn+BTuhzTCSb/9debfNp6R3s7Pr1eU= go.opentelemetry.io/otel/metric v0.25.0 h1:7cXOnCADUsR3+EOqxPaSKwhEuNu0gz/56dRN1hpIdKw= go.opentelemetry.io/otel/metric v0.25.0/go.mod h1:E884FSpQfnJOMMUaq+05IWlJ4rjZpk2s/F1Ju+TEEm8= +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 v1.2.0 h1:wKN260u4DesJYhyjxDa7LRFkuhH7ncEVKU37LWcyNIo= +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/otel/trace v1.2.0 h1:Ys3iqbqZhcf28hHzrm5WAquMkDHNZTUkw7KHbuNjej0= go.opentelemetry.io/otel/trace v1.2.0/go.mod h1:N5FLswTubnxKxOJHM7XZC074qpeEdLy3CgAVsdMucK0= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= @@ -2705,6 +2750,7 @@ golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5 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-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20210915214749-c084706c2272/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210920023735-84f357641f63/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211215165025-cf75a172585e h1:1SzTfNOXwIS2oWiMF+6qu0OUDKb0dauo6MoDUQyu+yU= golang.org/x/crypto v0.0.0-20211215165025-cf75a172585e/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= diff --git a/pkg/config/config_test.go b/pkg/config/config_test.go index 239cf2d6da6a..bbb838363109 100644 --- a/pkg/config/config_test.go +++ b/pkg/config/config_test.go @@ -2,10 +2,13 @@ package config import ( "flag" + "net/url" "strings" "testing" "time" + commonCfg "github.com/prometheus/common/config" + "github.com/stretchr/testify/assert" "github.com/grafana/agent/pkg/metrics" @@ -430,6 +433,28 @@ metrics: require.Equal(t, "verysecret", cfg.Metrics.ServiceConfig.Lifecycler.RingConfig.KVStore.Etcd.Password) } +func TestConfig_RemoteWriteDefaults(t *testing.T) { + cfg := ` +metrics: + global: + remote_write: + - name: "foo" + url: "https://test/url"` + + var c Config + err := LoadBytes([]byte(cfg), false, &c) + require.NoError(t, err) + + expected := &promCfg.DefaultRemoteWriteConfig + expected.Name = "foo" + testURL, _ := url.Parse("https://test/url") + expected.URL = &commonCfg.URL{ + URL: testURL, + } + require.Equal(t, expected, c.Metrics.Global.RemoteWrite[0]) + require.True(t, c.Metrics.Global.RemoteWrite[0].SendExemplars) +} + func TestLoadDynamicConfigurationExpandError(t *testing.T) { err := LoadDynamicConfiguration("", true, nil) assert.Error(t, err) diff --git a/pkg/integrations/cadvisor/cadvisor.go b/pkg/integrations/cadvisor/cadvisor.go index c82fbfd10b91..67e47c1f7aed 100644 --- a/pkg/integrations/cadvisor/cadvisor.go +++ b/pkg/integrations/cadvisor/cadvisor.go @@ -91,6 +91,10 @@ type Integration struct { func (i *Integration) Run(ctx context.Context) error { // Do gross global configs. This works, so long as there is only one instance of the cAdvisor integration // per host. + + // klog + klog.SetLogger(i.c.logger) + // Containerd containerd.ArgContainerdEndpoint = &i.c.Containerd containerd.ArgContainerdNamespace = &i.c.ContainerdNamespace @@ -149,12 +153,12 @@ func (i *Integration) Run(ctx context.Context) error { if err := rm.Stop(); err != nil { return fmt.Errorf("failed to stop manager: %w", err) } - return ctx.Err() + return nil } // New creates a new cadvisor integration func New(logger log.Logger, c *Config) (integrations.Integration, error) { - klog.SetLogger(logger) + c.logger = logger ci := integrations.NewCollectorIntegration(c.Name()) integration := Integration{ diff --git a/pkg/integrations/cadvisor/cadvisor_test.go b/pkg/integrations/cadvisor/cadvisor_test.go new file mode 100644 index 000000000000..1f6046fd1b57 --- /dev/null +++ b/pkg/integrations/cadvisor/cadvisor_test.go @@ -0,0 +1,31 @@ +//go:build !nonetwork && !nodocker +// +build !nonetwork,!nodocker + +package cadvisor + +import ( + "context" + "testing" + + "github.com/grafana/agent/pkg/util" + "github.com/stretchr/testify/require" + "gopkg.in/yaml.v3" +) + +func TestConfig_DockerOnly(t *testing.T) { + t.Run("docker_only with default configuration is successful", func(t *testing.T) { + // Run it once with the default config, expecting success. + defaultCfg := `docker_only: true` + + var cfg Config + err := yaml.Unmarshal([]byte(defaultCfg), &cfg) + require.NoError(t, err) + + ig, err := cfg.NewIntegration(util.TestLogger(t)) + require.NoError(t, err) + + ctx, cancel := context.WithCancel(context.Background()) + cancel() + require.NoError(t, ig.Run(ctx)) + }) +} diff --git a/pkg/integrations/cadvisor/common.go b/pkg/integrations/cadvisor/common.go index efd5df363860..0a51b3d22af1 100644 --- a/pkg/integrations/cadvisor/common.go +++ b/pkg/integrations/cadvisor/common.go @@ -3,6 +3,7 @@ package cadvisor import ( "time" + "github.com/go-kit/log" "github.com/grafana/agent/pkg/integrations" ) @@ -87,6 +88,9 @@ type Config struct { // Raw config options // DockerOnly only report docker containers in addition to root stats DockerOnly bool `yaml:"docker_only,omitempty"` + + // Hold on to the logger passed to config.NewIntegration, to be passed to klog, as yet another unsafe global that needs to be set. + logger log.Logger } // UnmarshalYAML implements yaml.Unmarshaler for Config @@ -95,7 +99,23 @@ func (c *Config) UnmarshalYAML(unmarshal func(interface{}) error) error { type plain Config err := unmarshal((*plain)(c)) - return err + if err != nil { + return err + } + + // In the cadvisor cmd, these are passed as CSVs, and turned into slices using strings.split. As a result the + // default values are always a slice with 1 or more elements. + // See: https://github.com/google/cadvisor/blob/v0.43.0/cmd/cadvisor.go#L136 + if len(c.AllowlistedContainerLabels) == 0 { + c.AllowlistedContainerLabels = []string{""} + } + if len(c.RawCgroupPrefixAllowlist) == 0 { + c.RawCgroupPrefixAllowlist = []string{""} + } + if len(c.EnvMetadataAllowlist) == 0 { + c.EnvMetadataAllowlist = []string{""} + } + return nil } // Name returns the name of the integration that this config represents. diff --git a/pkg/integrations/integration.go b/pkg/integrations/integration.go index 6f26e7a79a5f..6ba6b6c87366 100644 --- a/pkg/integrations/integration.go +++ b/pkg/integrations/integration.go @@ -43,5 +43,8 @@ type Integration interface { // For example, an Integration that requires a persistent connection to a // database would establish that connection here. If the integration doesn't // need to do anything, it should wait for the ctx to be canceled. + // + // An error will be returned if the integration failed. Integrations should + // not return the ctx error. Run(ctx context.Context) error } diff --git a/pkg/integrations/v2/integrations.go b/pkg/integrations/v2/integrations.go index 42adad4f3624..0d6f0d4e61f7 100644 --- a/pkg/integrations/v2/integrations.go +++ b/pkg/integrations/v2/integrations.go @@ -120,6 +120,9 @@ func (g Globals) CloneAgentBaseURL() *url.URL { type Integration interface { // RunIntegration starts the integration and performs background tasks. It // must not return until ctx is canceled, even if there is no work to do. + // + // An error will be returned if the integration failed. Integrations will + // never return the ctx error. RunIntegration(ctx context.Context) error } diff --git a/pkg/metrics/cluster/config.go b/pkg/metrics/cluster/config.go index 8804b13ccce7..300fa99a68fb 100644 --- a/pkg/metrics/cluster/config.go +++ b/pkg/metrics/cluster/config.go @@ -4,10 +4,10 @@ import ( "flag" "time" - "github.com/cortexproject/cortex/pkg/ring" "github.com/grafana/agent/pkg/metrics/cluster/client" flagutil "github.com/grafana/agent/pkg/util" "github.com/grafana/dskit/kv" + "github.com/grafana/dskit/ring" ) // DefaultConfig provides default values for the config diff --git a/pkg/metrics/cluster/node.go b/pkg/metrics/cluster/node.go index 1c237942f965..b4a3a7713537 100644 --- a/pkg/metrics/cluster/node.go +++ b/pkg/metrics/cluster/node.go @@ -8,7 +8,6 @@ import ( "sync" "time" - "github.com/cortexproject/cortex/pkg/ring" "github.com/go-kit/log" "github.com/go-kit/log/level" "github.com/gorilla/mux" @@ -17,6 +16,7 @@ import ( "github.com/grafana/agent/pkg/util" "github.com/grafana/dskit/backoff" "github.com/grafana/dskit/kv" + "github.com/grafana/dskit/ring" "github.com/grafana/dskit/services" "github.com/prometheus/client_golang/prometheus" "github.com/weaveworks/common/user" @@ -114,15 +114,13 @@ func (n *node) ApplyConfig(cfg Config) error { if err != nil { return fmt.Errorf("failed to create ring: %w", err) } - if err := n.reg.Register(r); err != nil { - return fmt.Errorf("failed to register ring metrics: %w", err) - } + if err := services.StartAndAwaitRunning(context.Background(), r); err != nil { return fmt.Errorf("failed to start ring: %w", err) } n.ring = r - lc, err := ring.NewLifecycler(cfg.Lifecycler, n, "agent", agentKey, false, n.reg) + lc, err := ring.NewLifecycler(cfg.Lifecycler, n, "agent", agentKey, false, n.log, prometheus.WrapRegistererWithPrefix("agent_dskit_", n.reg)) if err != nil { return fmt.Errorf("failed to create lifecycler: %w", err) } @@ -153,7 +151,7 @@ func newRing(cfg ring.Config, name, key string, reg prometheus.Registerer, log l if err != nil { return nil, err } - return ring.NewWithStoreClientAndStrategy(cfg, name, key, store, ring.NewIgnoreUnhealthyInstancesReplicationStrategy()) + return ring.NewWithStoreClientAndStrategy(cfg, name, key, store, ring.NewIgnoreUnhealthyInstancesReplicationStrategy(), prometheus.WrapRegistererWithPrefix("agent_dskit_", reg), log) } // run waits for connection to the ring and kickstarts the join process. diff --git a/pkg/metrics/cluster/node_test.go b/pkg/metrics/cluster/node_test.go index 9a32a6844460..2a7098aca14f 100644 --- a/pkg/metrics/cluster/node_test.go +++ b/pkg/metrics/cluster/node_test.go @@ -9,11 +9,12 @@ import ( "testing" "time" - "github.com/cortexproject/cortex/pkg/ring" + "github.com/go-kit/log" "github.com/go-kit/log/level" "github.com/golang/protobuf/ptypes/empty" "github.com/grafana/agent/pkg/agentproto" "github.com/grafana/agent/pkg/util" + "github.com/grafana/dskit/ring" "github.com/grafana/dskit/services" "github.com/prometheus/client_golang/prometheus" "github.com/stretchr/testify/require" @@ -44,7 +45,7 @@ func Test_node_Join(t *testing.T) { return &empty.Empty{}, nil }, } - startNode(t, remote) + startNode(t, remote, logger) nodeConfig := DefaultConfig nodeConfig.Enabled = true @@ -94,7 +95,7 @@ func Test_node_Leave(t *testing.T) { return &empty.Empty{}, nil }, } - startNode(t, remote) + startNode(t, remote, logger) nodeConfig := DefaultConfig nodeConfig.Enabled = true @@ -151,7 +152,7 @@ func Test_node_ApplyConfig(t *testing.T) { } // startNode launches srv as a gRPC server and registers it to the ring. -func startNode(t *testing.T, srv agentproto.ScrapingServiceServer) { +func startNode(t *testing.T, srv agentproto.ScrapingServiceServer, logger log.Logger) { t.Helper() l, err := net.Listen("tcp", "127.0.0.1:0") @@ -169,7 +170,7 @@ func startNode(t *testing.T, srv agentproto.ScrapingServiceServer) { lcConfig.Addr = l.Addr().(*net.TCPAddr).IP.String() lcConfig.Port = l.Addr().(*net.TCPAddr).Port - lc, err := ring.NewLifecycler(lcConfig, ring.NewNoopFlushTransferer(), "agent", "agent", false, prometheus.NewRegistry()) + lc, err := ring.NewLifecycler(lcConfig, ring.NewNoopFlushTransferer(), "agent", "agent", false, logger, nil) require.NoError(t, err) err = services.StartAndAwaitRunning(context.Background(), lc) diff --git a/production/grafana-agent-mixin/alerts.libsonnet b/production/grafana-agent-mixin/alerts.libsonnet index c34836d570f2..41581c6e3a0b 100644 --- a/production/grafana-agent-mixin/alerts.libsonnet +++ b/production/grafana-agent-mixin/alerts.libsonnet @@ -108,7 +108,7 @@ local _config = config._config; and sum by (pod) (agent_wal_storage_active_series{cluster=~".+", namespace=~"agent-smoke-test", container=~".+", pod="grafana-agent-smoke-test-cluster-2"}) > 1000 |||, - 'for': '15m', + 'for': '1h', annotations: { summary: '{{ $labels.pod }} is using more than 0.0013441 CPU per 1000 series over the last 5 minutes', }, @@ -125,7 +125,7 @@ local _config = config._config; sum without (pod, instance) (go_memstats_heap_inuse_bytes{job=~"agent-smoke-test/grafana-agent-smoke-test.*"}) / sum without (pod, instance, instance_group_name) (agent_wal_storage_active_series{job=~"agent-smoke-test/grafana-agent-smoke-test.*"}) / 1e3 > 10 |||, - 'for': '5m', + 'for': '1h', annotations: { summary: '{{ $labels.job }} has used more than 10KB per series for more than 5 minutes', }, @@ -168,10 +168,12 @@ local _config = config._config; { alert: 'CrowFailures', expr: ||| - ( - rate(crow_test_sample_results_total{result="success"}[5m]) - / ignoring(result) rate(crow_test_samples_total[5m]) - ) < 1 + ( + rate(crow_test_sample_results_total{result="success"}[5m]) + / + ignoring(result) sum without (result) (rate(crow_test_sample_results_total[5m])) + ) + < 1 |||, 'for': '15m', annotations: { diff --git a/production/grafana-agent-mixin/debugging.libsonnet b/production/grafana-agent-mixin/debugging.libsonnet index 3dfdc7e2535d..d619859eca13 100644 --- a/production/grafana-agent-mixin/debugging.libsonnet +++ b/production/grafana-agent-mixin/debugging.libsonnet @@ -8,7 +8,7 @@ local g = import 'grafana-builder/grafana.libsonnet'; .addMultiTemplate('cluster', 'agent_build_info', 'cluster') .addMultiTemplate('namespace', 'agent_build_info', 'namespace') .addMultiTemplate('container', 'agent_build_info', 'container') - .addMultiTemplateWithAll('pod', 'agent_build_info{container=~"$container"}', 'pod', all='grafana-agent-.*') + .addMultiTemplateWithAll('pod', 'agent_build_info{container=~"$container", namespace="$namespace"}', 'pod', all='grafana-agent-.*') .addRow( g.row('General') .addPanel( From ec4bbfe6468720ee155a3e18578ff9c2e36e10ae Mon Sep 17 00:00:00 2001 From: mattdurham Date: Tue, 1 Mar 2022 08:58:45 -0500 Subject: [PATCH 16/19] Revert "Play with page file. (#1434)" This reverts commit 90bd7f12150fb9d2e989b21f8258098bf8f3c2f2. --- .github/workflows/test.yml | 6 +-- CHANGELOG.md | 2 - Makefile | 16 +++---- go.mod | 10 ++-- go.sum | 46 ------------------- pkg/config/config_test.go | 25 ---------- pkg/integrations/cadvisor/cadvisor.go | 8 +--- pkg/integrations/cadvisor/cadvisor_test.go | 31 ------------- pkg/integrations/cadvisor/common.go | 22 +-------- pkg/integrations/integration.go | 3 -- pkg/integrations/v2/integrations.go | 3 -- pkg/metrics/cluster/config.go | 2 +- pkg/metrics/cluster/node.go | 10 ++-- pkg/metrics/cluster/node_test.go | 11 ++--- .../grafana-agent-mixin/alerts.libsonnet | 14 +++--- .../grafana-agent-mixin/debugging.libsonnet | 2 +- 16 files changed, 37 insertions(+), 174 deletions(-) delete mode 100644 pkg/integrations/cadvisor/cadvisor_test.go diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index a853534e7f03..f731115a9978 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -5,7 +5,7 @@ jobs: name: Test strategy: matrix: - platform: [macos-latest, windows-2019] + platform: [macos-latest, windows-latest] runs-on: ${{ matrix.platform }} steps: - name: Set up Go 1.17 @@ -16,6 +16,6 @@ jobs: - name: Checkout code uses: actions/checkout@v2 - name: Build - run: make GOFLAGS="-tags=netgo,nodocker " BUILD_IN_CONTAINER=false cmd/agent/agent cmd/agentctl/agentctl cmd/agent-operator/agent-operator + run: make GOFLAGS="-tags=netgo,nodocker" BUILD_IN_CONTAINER=false cmd/agent/agent cmd/agentctl/agentctl cmd/agent-operator/agent-operator - name: Test - run: make GOFLAGS="-tags=netgo,nodocker " BUILD_IN_CONTAINER=false test + run: make GOFLAGS="-tags=netgo,nodocker" BUILD_IN_CONTAINER=false test diff --git a/CHANGELOG.md b/CHANGELOG.md index 3c30266a3e39..c176a77052ec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,8 +7,6 @@ - [ENHANCEMENT] Parameterize namespace field in sample K8s logs manifests (@hjet) -- [ENHANCEMENT] Upgrade to loki v2.4.2. The following metrics will now be prefixed with `agent_dskit_` instead of `cortex_`: `cortex_kv_request_duration_seconds`, `cortex_member_consul_heartbeats_total`, `cortex_member_ring_tokens_owned`, `cortex_member_ring_tokens_to_own`, `cortex_ring_member_ownership_percent`, `cortex_ring_members`, `cortex_ring_oldest_member_timestamp`, `cortex_ring_tokens_owned`, `cortex_ring_tokens_total`. (@rlankfo) - - [ENHANCEMENT] Introduce EXPERIMENTAL support for dynamic configuration. (@mattdurham) - [BUGFIX] Ensure singleton integrations are honored in v2 integrations (@mattdurham) diff --git a/Makefile b/Makefile index fb2cf8b5aff4..fbe0c4902aa9 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,4 @@ + SHELL = /usr/bin/env bash ############# @@ -85,12 +86,12 @@ GO_FLAGS = $(DEBUG_GO_FLAGS) endif NETGO_CHECK = strings $@ | grep cgo_stub\\\.go >/dev/null || { \ - rm $@; \ - echo "\nYour go standard library was built without the 'netgo' build tag."; \ - echo "To fix that, run"; \ - echo " sudo go clean -i net"; \ - echo " sudo go install -tags netgo std"; \ - false; \ + rm $@; \ + echo "\nYour go standard library was built without the 'netgo' build tag."; \ + echo "To fix that, run"; \ + echo " sudo go clean -i net"; \ + echo " sudo go install -tags netgo std"; \ + false; \ } # Protobuf files @@ -238,8 +239,7 @@ lint: # more without -race for packages that have known race detection issues. test: CGO_ENABLED=1 go test $(CGO_FLAGS) -race -cover -coverprofile=cover.out -p=4 ./... - CGO_ENABLED=1 go test $(CGO_FLAGS) -cover -coverprofile=cover-norace.out -p=4 ./pkg/integrations/node_exporter ./pkg/logs ./pkg/operator ./pkg/util/k8s - + CGO_ENABLED=1 go test $(CGO_FLAGS) -cover -coverprofile=cover-norace.out -p=4 ./pkg/integrations/node_exporter ./pkg/logs ./pkg/operator ./pkg/util/k8s clean: rm -rf cmd/agent/agent diff --git a/go.mod b/go.mod index acb7dd66d58e..7b7553a4a6e4 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.17 require ( contrib.go.opencensus.io/exporter/prometheus v0.4.0 github.com/Shopify/sarama v1.30.0 - github.com/cortexproject/cortex v1.11.0 + github.com/cortexproject/cortex v1.10.1-0.20211014125347-85c378182d0d github.com/davidmparrott/kafka_exporter/v2 v2.0.1 github.com/docker/docker v20.10.10+incompatible github.com/docker/go-connections v0.4.0 @@ -21,8 +21,8 @@ require ( github.com/google/dnsmasq_exporter v0.0.0-00010101000000-000000000000 github.com/google/go-jsonnet v0.17.0 github.com/gorilla/mux v1.8.0 - github.com/grafana/dskit v0.0.0-20211021180445-3bd016e9d7f1 - github.com/grafana/loki v1.6.2-0.20220112164614-525040a32657 + github.com/grafana/dskit v0.0.0-20211011144203-3a88ec0b675f + github.com/grafana/loki v1.6.2-0.20211021114919-0ae0d4da122d github.com/hairyhenderson/go-fsimpl v0.0.0-20211102185733-857ee891b38d github.com/hairyhenderson/gomplate/v3 v3.0.0 github.com/hashicorp/consul/api v1.12.0 @@ -200,6 +200,7 @@ require ( github.com/go-zookeeper/zk v1.0.2 // indirect github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e // indirect github.com/godbus/dbus/v5 v5.0.4 // indirect + github.com/gofrs/uuid v4.0.0+incompatible // indirect github.com/gogo/googleapis v1.4.1 // indirect github.com/gogo/status v1.1.0 // indirect github.com/golang-jwt/jwt/v4 v4.1.0 // indirect @@ -482,6 +483,3 @@ replace github.com/leoluk/perflib_exporter v0.1.0 => github.com/grafana/perflib_ // Required until fork merged upstream for dynamic configuration support replace github.com/hairyhenderson/gomplate/v3 => github.com/mattdurham/gomplate/v3 v3.10.1-0.20220204190650-af65008b9bb1 - -// Required to ensure compatible hashicorp lib is loaded for dynamic configuration, this solves an ambigous import -exclude github.com/hashicorp/vault v0.10.3 diff --git a/go.sum b/go.sum index e812b893daf4..0a72f9d5a2bf 100644 --- a/go.sum +++ b/go.sum @@ -180,7 +180,6 @@ github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3 github.com/GoogleCloudPlatform/cloudsql-proxy v1.24.0/go.mod h1:3tx938GhY4FC+E1KT/jNjDw7Z5qxAEtIiERJ2sXjnII= github.com/HdrHistogram/hdrhistogram-go v1.1.0/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= github.com/HdrHistogram/hdrhistogram-go v1.1.2 h1:5IcZpTvzydCQeHzK4Ef/D5rrSqwxob0t8PQPMybUNFM= -github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= github.com/Jeffail/gabs v1.1.0/go.mod h1:6xMvQMK4k33lb7GUUpaAPh6nKMmemQeg5d4gn7/bOXc= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= @@ -343,14 +342,12 @@ github.com/aws/aws-sdk-go v1.38.68/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2z github.com/aws/aws-sdk-go v1.40.11/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q= github.com/aws/aws-sdk-go v1.40.34/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q= github.com/aws/aws-sdk-go v1.40.37/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q= -github.com/aws/aws-sdk-go v1.40.45/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q= github.com/aws/aws-sdk-go v1.41.7/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q= github.com/aws/aws-sdk-go v1.42.23 h1:V0V5hqMEyVelgpu1e4gMPVCJ+KhmscdNxP/NWP1iCOA= github.com/aws/aws-sdk-go v1.42.23/go.mod h1:gyRszuZ/icHmHAVE4gc/r+cfCmhA1AD+vqfWbgI+eHs= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= github.com/aws/aws-sdk-go-v2 v1.7.0/go.mod h1:tb9wi5s61kTDA5qCkcDbt3KRVV74GGslQkl/DRdX/P4= github.com/aws/aws-sdk-go-v2 v1.9.0/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4= -github.com/aws/aws-sdk-go-v2 v1.9.1/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4= github.com/aws/aws-sdk-go-v2 v1.9.2 h1:dUFQcMNZMLON4BOe273pl0filK9RqyQMhCK/6xssL6s= github.com/aws/aws-sdk-go-v2 v1.9.2/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4= github.com/aws/aws-sdk-go-v2/config v1.7.0/go.mod h1:w9+nMZ7soXCe5nT46Ri354SNhXDQ6v+V5wqDjnZE+GY= @@ -367,7 +364,6 @@ github.com/aws/aws-sdk-go-v2/internal/ini v1.2.4 h1:leSJ6vCqtPpTmBIgE7044B1wql1E github.com/aws/aws-sdk-go-v2/internal/ini v1.2.4/go.mod h1:ZcBrrI3zBKlhGFNYWvju0I3TR93I7YIgAfy82Fh4lcQ= github.com/aws/aws-sdk-go-v2/service/appconfig v1.4.2/go.mod h1:FZ3HkCe+b10uFZZkFdvf98LHW21k49W8o8J366lqVKY= github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.5.0/go.mod h1:acH3+MQoiMzozT/ivU+DbRg7Ooo2298RdRaWcOv+4vM= -github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.8.1/go.mod h1:CM+19rL1+4dFWnOQKwDc7H1KwXTz+h61oUSHyhV0b3o= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.3.0/go.mod h1:R1KK+vY8AfalhG1AOu5e35pOD2SdoPKQCFLTvnxiohk= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.3.2 h1:r7jel2aa4d9Duys7wEmWqDd5ebpC9w6Kxu6wIjjp18E= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.3.2/go.mod h1:72HRZDLMtmVQiLG2tLfQcaWLCssELvGl+Zf2WVxMmR8= @@ -438,7 +434,6 @@ github.com/cactus/go-statsd-client/statsd v0.0.0-20191106001114-12b4e2b38748/go. github.com/caio/go-tdigest v2.3.0+incompatible/go.mod h1:sHQM/ubZStBUmF1WbB8FAm8q9GjDajLC5T7ydxE3JHI= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= github.com/casbin/casbin/v2 v2.31.6/go.mod h1:vByNa/Fchek0KZUgG5wEsl7iFsiviAYKRtgrQfcJqHg= -github.com/casbin/casbin/v2 v2.37.0/go.mod h1:vByNa/Fchek0KZUgG5wEsl7iFsiviAYKRtgrQfcJqHg= github.com/cenkalti/backoff v0.0.0-20181003080854-62661b46c409/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff v1.0.0/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff v2.0.0+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= @@ -456,7 +451,6 @@ github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA github.com/census-instrumentation/opencensus-proto v0.3.0 h1:t/LhUZLVitR1Ow2YOnduCsavhwFUklBMoGVYUCqmCqk= github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/certifi/gocertifi v0.0.0-20191021191039-0944d244cd40/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= -github.com/certifi/gocertifi v0.0.0-20200922220541-2c3bb06c6054/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.0/go.mod h1:dgIUBU3pDso/gPgZ1osOZ0iQf77oPR28Tjxl5dIMyVM= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= @@ -484,7 +478,6 @@ github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6D github.com/circonus-labs/circonusllhist v0.0.0-20161110002650-365d370cc145/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/cisco-ie/nx-telemetry-proto v0.0.0-20190531143454-82441e232cf6/go.mod h1:ugEfq4B8T8ciw/h5mCkgdiDRFS4CkqqhH2dymDB4knc= -github.com/clbanning/mxj v1.8.4/go.mod h1:BVjHeAH+rl9rs6f+QIpeRl0tfu10SXn1pUSa5PVGJng= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cloudflare/cfssl v0.0.0-20180223231731-4e2dcbde5004 h1:lkAMpLVBDaj17e85keuznYcH5rqI438v41pKcBl4ZxQ= @@ -642,8 +635,6 @@ github.com/cortexproject/cortex v1.7.1-0.20210316085356-3fedc1108a49/go.mod h1:/ github.com/cortexproject/cortex v1.8.1-0.20210422151339-cf1c444e0905/go.mod h1:xxm4/CLvTmDxwE7yXwtClR4dIvkG4S09o5DygPOgc1U= github.com/cortexproject/cortex v1.10.1-0.20211014125347-85c378182d0d h1:2KZVBpjU3NtLZ5oEB7c0TXIGKZYH6vc4pENecdbcCxw= github.com/cortexproject/cortex v1.10.1-0.20211014125347-85c378182d0d/go.mod h1:VZ2fFzUCWcyyneToKNu+ALOpGUJIdkInXy4MOhCo/xw= -github.com/cortexproject/cortex v1.11.0 h1:kx2iBVLZdu7Qjv7dbN4Ek2ax2nICsyoBL+DdEcAetOQ= -github.com/cortexproject/cortex v1.11.0/go.mod h1:oAOdKib5B/IhvxrNecMJH9Wb+a0q31KaAUiv/fcDvFo= github.com/couchbase/go-couchbase v0.0.0-20180501122049-16db1f1fe037/go.mod h1:TWI8EKQMs5u5jLKW/tsb9VwauIrMIxQG1r5fMsswK5U= github.com/couchbase/gomemcached v0.0.0-20180502221210-0da75df14530/go.mod h1:srVSlQLB8iXBVXHgnqemxUXqN6FCvClgCMPCsjBDR7c= github.com/couchbase/goutils v0.0.0-20180530154633-e865a1461c8a/go.mod h1:BQwMFlJzDjFDG3DJUdU0KORxn88UlsOULuxLExMh3Hs= @@ -813,7 +804,6 @@ github.com/evanphx/json-patch/v5 v5.5.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2Vvl github.com/facette/natsort v0.0.0-20181210072756-2cd4dd1e2dcb/go.mod h1:bH6Xx7IW64qjjJq8M2u4dxNaBiDfKK+z/3eGDpXEQhc= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= -github.com/fatih/color v1.12.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fatih/structs v0.0.0-20180123065059-ebf56d35bba7/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= @@ -828,12 +818,10 @@ github.com/felixge/httpsnoop v1.0.2/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSw github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= 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/foxcpp/go-mockdns v0.0.0-20201212160233-ede2f9158d15/go.mod h1:tPg4cp4nseejPd+UKxtCVQ2hUxNTZ7qQZJa7CLriIeo= github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= -github.com/franela/goblin v0.0.0-20210519012713-85d372ac71e2/go.mod h1:VzmDKDJVZI3aJmnRI9VjAn9nJ8qPPsN1fqzr9dqInIo= github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= github.com/frankban/quicktest v1.4.0/go.mod h1:36zfPVQyHxymz4cH7wlDmVwDrJuljRB60qkgn7rorfQ= github.com/frankban/quicktest v1.10.0/go.mod h1:ui7WezCLWMWxVWr1GETZY3smRy0G4KWq9vcPtJmFl7Y= @@ -1013,7 +1001,6 @@ github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GO github.com/go-redis/redis v6.15.9+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= github.com/go-redis/redis/v8 v8.0.0-beta.10.0.20200905143926-df7fe4e2ce72/go.mod h1:CJP1ZIHwhosNYwIdaHPZK9vHsM3+roNBaZ7U9Of1DXc= github.com/go-redis/redis/v8 v8.2.3/go.mod h1:ysgGY09J/QeDYbu3HikWEIPCwaeOkuNoTgKayTEaEOw= -github.com/go-redis/redis/v8 v8.9.0/go.mod h1:ik7vb7+gm8Izylxu6kf6wG26/t2VljgCfSQ1DM4O1uU= github.com/go-redis/redis/v8 v8.11.4/go.mod h1:2Z2wHZXdQpCDXEGzqMockDpNyYvi2l4Pxt6RJr792+w= github.com/go-resty/resty/v2 v2.1.1-0.20191201195748-d7b97669fe48 h1:JVrqSeQfdhYRFk24TvhTZWU0q8lfCojxZQFi3Ou7+uY= github.com/go-resty/resty/v2 v2.1.1-0.20191201195748-d7b97669fe48/go.mod h1:dZGr0i9PLlaaTD4H/hoZIDjQ+r6xq8mgbRzHZf7f2J8= @@ -1280,16 +1267,11 @@ github.com/gosimple/unidecode v1.0.1/go.mod h1:CP0Cr1Y1kogOtx0bJblKzsVWrqYaqfNOn github.com/gotestyourself/gotestyourself v2.2.0+incompatible/go.mod h1:zZKM6oeNM8k+FRljX1mnzVYeS8wiGgQyvST1/GafPbY= github.com/grafana/dnsmasq_exporter v0.2.1-0.20211118155541-751b01d21de9 h1:/ovWD85B27b/xytKaxhP/LvXF8fxWIhEwE55mFpCQsE= github.com/grafana/dnsmasq_exporter v0.2.1-0.20211118155541-751b01d21de9/go.mod h1:Jj5TSVVJE6t8Brq/ZkUbQ1n260dilriL0tWNaHjVDUs= -github.com/grafana/dskit v0.0.0-20210908150159-fcf48cb19aa4/go.mod h1:m3eHzwe5IT5eE2MI3Ena2ooU8+Hek8IiVXb9yJ1+0rs= github.com/grafana/dskit v0.0.0-20211011144203-3a88ec0b675f h1:FvvSVEbnGeM2bUivGmsiXTi8URJyBU7TcFEEoRe5wWI= github.com/grafana/dskit v0.0.0-20211011144203-3a88ec0b675f/go.mod h1:uPG2nyK4CtgNDmWv7qyzYcdI+S90kHHRWvHnBtEMBXM= -github.com/grafana/dskit v0.0.0-20211021180445-3bd016e9d7f1 h1:Qf+/W3Tup0nO21tgJmO14WJK0yyrm4L2UJipZP+Zoow= -github.com/grafana/dskit v0.0.0-20211021180445-3bd016e9d7f1/go.mod h1:uPG2nyK4CtgNDmWv7qyzYcdI+S90kHHRWvHnBtEMBXM= github.com/grafana/gocql v0.0.0-20200605141915-ba5dc39ece85/go.mod h1:crI9WX6p0IhrqB+DqIUHulRW853PaNFf7o4UprV//3I= github.com/grafana/loki v1.6.2-0.20211021114919-0ae0d4da122d h1:vjCXyKr987ClVgPyj7fZXjvCX8B1Y51AwUaf1k6/NqI= github.com/grafana/loki v1.6.2-0.20211021114919-0ae0d4da122d/go.mod h1:CHJv20FcRFw/N6/FJOtEdMt1zDcCJbxMoLmzpH74CVQ= -github.com/grafana/loki v1.6.2-0.20220112164614-525040a32657 h1:1TSVAyuDYJdp4/195GrdrGg0ZHMB+eJye1qIgi0N8+4= -github.com/grafana/loki v1.6.2-0.20220112164614-525040a32657/go.mod h1:9dAaw+bJR/qZiHZYO9ZvFhuqphGblcUEwuvGPbgZldA= github.com/grafana/mongodb_exporter v0.20.8-0.20211006135645-bef0f0239601 h1:k5VTHQsSBs/jZHWXEvjW4QAZQcoGB3QQfUN0XGA6pB4= github.com/grafana/mongodb_exporter v0.20.8-0.20211006135645-bef0f0239601/go.mod h1:BCuUaP3ocoAYt8xTCaCXWQttYMKUcg36e1NJdOEx56M= github.com/grafana/mysqld_exporter v0.12.2-0.20201015182516-5ac885b2d38a h1:D5NSR64/6xMXnSFD9y1m1DPYIcBcHvtfeuI9/M/0qtI= @@ -1490,7 +1472,6 @@ github.com/huandu/xstrings v1.0.0/go.mod h1:4qWG/gcEcfX4z/mBDHJ++3ReCw9ibxbsNJbc github.com/huandu/xstrings v1.3.1 h1:4jgBlKK6tLKFvO8u5pmYjG91cqytmDCDvGh7ECVFfFs= github.com/huandu/xstrings v1.3.1/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= -github.com/hudl/fargo v1.4.0/go.mod h1:9Ai6uvFy5fQNq6VPKtg+Ceq1+eTY4nKUlR2JElEOcDo= github.com/iancoleman/strcase v0.0.0-20180726023541-3605ed457bf7/go.mod h1:SK73tn/9oHe+/Y0h39VT4UCxmurVJkR5NA7kMEAOgSE= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= @@ -1642,7 +1623,6 @@ github.com/klauspost/compress v1.11.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYs github.com/klauspost/compress v1.11.12/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.13/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.13.1/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= -github.com/klauspost/compress v1.13.4/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.13.5/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= github.com/klauspost/compress v1.13.6 h1:P76CopJELS0TiO2mebmnzgWaajssP/EszplttgQxcgc= github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= @@ -1817,7 +1797,6 @@ github.com/mileusna/useragent v0.0.0-20190129205925-3e331f0949a5/go.mod h1:JWhYA github.com/mindprince/gonvml v0.0.0-20190828220739-9ebdce4bb989 h1:PS1dLCGtD8bb9RPKJrc8bS7qHL6JnW1CZvwzH9dPoUs= github.com/mindprince/gonvml v0.0.0-20190828220739-9ebdce4bb989/go.mod h1:2eu9pRWp8mo84xCg6KswZ+USQHjwgRhNp06sozOdsTY= github.com/minio/highwayhash v1.0.1/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= -github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= github.com/minio/md5-simd v1.1.0/go.mod h1:XpBqgZULrMYD3R+M28PcmP0CkI7PEMzB3U77ZrKZ0Gw= github.com/minio/minio-go/v6 v6.0.44/go.mod h1:qD0lajrGW49lKZLtXKtCB4X/qkMf0a5tBvN2PaZg7Gg= github.com/minio/minio-go/v6 v6.0.56/go.mod h1:KQMM+/44DSlSGSQWSfRrAZ12FVMmpWNuX37i2AX0jfI= @@ -1902,14 +1881,11 @@ github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5Vgl github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= github.com/nats-io/jwt v1.2.2/go.mod h1:/xX356yQA6LuXI9xWW7mZNpxgF2mBmGecH+Fj34sP5Q= github.com/nats-io/jwt/v2 v2.0.2/go.mod h1:VRP+deawSXyhNjXmxPCHskrR6Mq50BqpEI5SEcNiGlY= -github.com/nats-io/jwt/v2 v2.0.3/go.mod h1:VRP+deawSXyhNjXmxPCHskrR6Mq50BqpEI5SEcNiGlY= github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= github.com/nats-io/nats-server/v2 v2.1.4/go.mod h1:Jw1Z28soD/QasIA2uWjXyM9El1jly3YwyFOuR8tH1rg= github.com/nats-io/nats-server/v2 v2.2.6/go.mod h1:sEnFaxqe09cDmfMgACxZbziXnhQFhwk+aKkZjBBRYrI= -github.com/nats-io/nats-server/v2 v2.5.0/go.mod h1:Kj86UtrXAL6LwYRA6H4RqzkHhK0Vcv2ZnKD5WbQ1t3g= github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= github.com/nats-io/nats.go v1.11.0/go.mod h1:BPko4oXsySz4aSWeFgOHLZs3G4Jq4ZAyE6/zMCxRT6w= -github.com/nats-io/nats.go v1.12.1/go.mod h1:BPko4oXsySz4aSWeFgOHLZs3G4Jq4ZAyE6/zMCxRT6w= github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nkeys v0.2.0/go.mod h1:XdZpAbhgyyODYqjTawOnIOI7VlbKSarI9Gfy1tqEu/s= @@ -1955,7 +1931,6 @@ github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108 github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= github.com/onsi/ginkgo v1.14.1/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= github.com/onsi/ginkgo v1.15.0/go.mod h1:hF8qUzuuC8DJGygJH3726JnCZX4MYbRB8yFfISqnKUg= -github.com/onsi/ginkgo v1.16.2/go.mod h1:CObGmKUOKaSC0RjmoAK7tKyn4Azo5P2IWuoMnvwxz1E= github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= @@ -1972,7 +1947,6 @@ github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1y github.com/onsi/gomega v1.10.2/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.10.3/go.mod h1:V9xEwhxec5O8UDM77eCW8vLymOMltsqPVYWrpDsH8xc= github.com/onsi/gomega v1.10.5/go.mod h1:gza4q3jKQJijlu05nKWRCW/GavJumGt8aNRxWg7mt48= -github.com/onsi/gomega v1.13.0/go.mod h1:lRk9szgn8TxENtWd0Tp4c3wjlRfMTMH27I+3Je41yGY= github.com/onsi/gomega v1.16.0 h1:6gjqkI8iiRHMvdccRJM8rVKjCWk6ZIm6FTm3ddIe4/c= github.com/onsi/gomega v1.16.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= @@ -2086,7 +2060,6 @@ github.com/percona/exporter_shared v0.7.4-0.20211108113423-8555cdbac68b h1:tPnod github.com/percona/exporter_shared v0.7.4-0.20211108113423-8555cdbac68b/go.mod h1:bweWrCdYX+iAONTNUNIIkXGDjGg8dbFL0VBxuUv0wus= github.com/percona/go-mysql v0.0.0-20190903141930-197f4ad8db8d/go.mod h1:/SGLf9OMxlnK6jq4mkFiImBcJXXk5jwD+lDrwDaGXcw= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= -github.com/performancecopilot/speed/v4 v4.0.0/go.mod h1:qxrSyuDGrTOWfV+uKRFhfxw6h/4HXRGUiZiufxo49BM= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/peterh/liner v1.0.1-0.20180619022028-8c1271fcf47f/go.mod h1:xIteQHvHuaLYG9IFj6mSxM0fCKrs34IrEQUhOYuGPHc= github.com/pierrec/cmdflag v0.0.2/go.mod h1:a3zKGZ3cdQUfxjd0RGMLZr8xI3nvpJOB+m6o/1X5BmU= @@ -2222,7 +2195,6 @@ github.com/prometheus/procfs v0.0.11/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4 github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.7.4-0.20211011103944-1a7a2bd3279f h1:ncXqc93eJV1Ncr3f6GA3MrIDNkNHvcPonRC2QgZaVkQ= github.com/prometheus/procfs v0.7.4-0.20211011103944-1a7a2bd3279f/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= @@ -2373,7 +2345,6 @@ github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3 github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= github.com/spf13/cobra v1.1.1/go.mod h1:WnodtKOvamDL/PwE2M4iKs8aMDBZ5Q5klgD3qfVJQMI= -github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= github.com/spf13/cobra v1.2.1 h1:+KmjbUw1hriSNMF55oPrkZcb27aECyrj8V2ytv7kWDw= github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk= github.com/spf13/jwalterweatherman v0.0.0-20141219030609-3d60171a6431/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= @@ -2456,7 +2427,6 @@ github.com/tklauser/numcpus v0.3.0/go.mod h1:yFGUr7TUHQRAhyqBcEg0Ge34zDBAsIvJJcy github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20200427203606-3cfed13b9966/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tomnomnom/linkheader v0.0.0-20180905144013-02ca5825eb80 h1:nrZ3ySNYwJbSpD6ce9duiP+QkD3JuLCcWkdaehUS/3Y= github.com/tomnomnom/linkheader v0.0.0-20180905144013-02ca5825eb80/go.mod h1:iFyPdL66DjUD96XmzVL3ZntbzcflLnznH0fr99w5VqE= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= @@ -2511,8 +2481,6 @@ github.com/weaveworks/common v0.0.0-20200914083218-61ffdd448099/go.mod h1:hz10LO github.com/weaveworks/common v0.0.0-20201119133501-0619918236ec/go.mod h1:ykzWac1LtVfOxdCK+jD754at1Ws9dKCwFeUzkFBffPs= github.com/weaveworks/common v0.0.0-20210112142934-23c8d7fa6120/go.mod h1:ykzWac1LtVfOxdCK+jD754at1Ws9dKCwFeUzkFBffPs= github.com/weaveworks/common v0.0.0-20210419092856-009d1eebd624/go.mod h1:ykzWac1LtVfOxdCK+jD754at1Ws9dKCwFeUzkFBffPs= -github.com/weaveworks/common v0.0.0-20210722103813-e649eff5ab4a/go.mod h1:YU9FvnS7kUnRt6HY10G+2qHkwzP3n3Vb1XsXDsJTSp8= -github.com/weaveworks/common v0.0.0-20210901124008-1fa3f9fa874c/go.mod h1:YU9FvnS7kUnRt6HY10G+2qHkwzP3n3Vb1XsXDsJTSp8= github.com/weaveworks/common v0.0.0-20210913144402-035033b78a78/go.mod h1:YU9FvnS7kUnRt6HY10G+2qHkwzP3n3Vb1XsXDsJTSp8= github.com/weaveworks/common v0.0.0-20211222122857-933588f98737 h1:BBhcuf4+YMKHEYQqbmzNN+e3btTzh8xk3tA2xh24MfU= github.com/weaveworks/common v0.0.0-20211222122857-933588f98737/go.mod h1:YfOOLoW1Q/jIIu0WLeSwgStmrKjuJEZSKTAUc+0KFvE= @@ -2600,11 +2568,8 @@ go.etcd.io/etcd/client/v3 v3.5.0-alpha.0.0.20210225194612-fa82d11a958a/go.mod h1 go.etcd.io/etcd/client/v3 v3.5.0 h1:62Eh0XOro+rDwkrypAGDfgmNh5Joq+z+W9HZdlXMzek= go.etcd.io/etcd/client/v3 v3.5.0/go.mod h1:AIKXXVX/DQXtfTEqBryiLTUXwON+GuvO6Z7lLS/oTh0= go.etcd.io/etcd/pkg/v3 v3.5.0-alpha.0/go.mod h1:tV31atvwzcybuqejDoY3oaNRTtlD2l/Ot78Pc9w7DMY= -go.etcd.io/etcd/pkg/v3 v3.5.0/go.mod h1:UzJGatBQ1lXChBkQF0AuAtkRQMYnHubxAEYIrC3MSsE= go.etcd.io/etcd/raft/v3 v3.5.0-alpha.0/go.mod h1:FAwse6Zlm5v4tEWZaTjmNhe17Int4Oxbu7+2r0DiD3w= -go.etcd.io/etcd/raft/v3 v3.5.0/go.mod h1:UFOHSIvO/nKwd4lhkwabrTD3cqW5yVyYYf/KlD00Szc= go.etcd.io/etcd/server/v3 v3.5.0-alpha.0.0.20210225194612-fa82d11a958a/go.mod h1:tsKetYpt980ZTpzl/gb+UOJj9RkIyCb1u4wjzMg90BQ= -go.etcd.io/etcd/server/v3 v3.5.0/go.mod h1:3Ah5ruV+M+7RZr0+Y/5mNLwC+eQlni+mQmOVdCRJoS4= go.mongodb.org/mongo-driver v1.0.3/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.mongodb.org/mongo-driver v1.1.0/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.mongodb.org/mongo-driver v1.1.1/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= @@ -2634,28 +2599,18 @@ go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opentelemetry.io/collector/model v0.30.0/go.mod h1:PcHNnM+RUl0uD8VkSn93PO78N7kQYhfqpI/eki57pl4= go.opentelemetry.io/collector/model v0.40.0 h1:UgdWfBnJBQL4atFv6LhlYq67Ts/vFDbwGknvsIsm/g8= go.opentelemetry.io/collector/model v0.40.0/go.mod h1:dXqjAeml+cB+YzJ3kUnd3v5/JvGAKl3MqHXfgSWRIo8= -go.opentelemetry.io/contrib v0.20.0/go.mod h1:G/EtFaa6qaN7+LxqfIAT3GiZa7Wv5DTBUzl5H4LY0Kc= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.20.0/go.mod h1:oVGt1LRbBOBq1A5BQLlUg9UaU/54aiHw8cgjV3aWZ/E= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.27.0 h1:TON1iU3Y5oIytGQHIejDYLam5uoSMsmA0UV9Yupb5gQ= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.27.0/go.mod h1:T/zQwBldOpoAEpE3HMbLnI8ydESZVz4ggw6Is4FF9LI= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.27.0 h1:0BgiNWjN7rUWO9HdjF4L12r8OW86QkVQcYmCjnayJLo= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.27.0/go.mod h1:bdvm3YpMxWAgEfQhtTBaVR8ceXPRuRBSQrvOBnIlHxc= go.opentelemetry.io/otel v0.11.0/go.mod h1:G8UCk+KooF2HLkgo8RHX9epABH/aRGYET7gQOqBVdB0= -go.opentelemetry.io/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzoxm/dooo= go.opentelemetry.io/otel v1.2.0 h1:YOQDvxO1FayUcT9MIhJhgMyNO1WqoduiyvQHzGN0kUQ= go.opentelemetry.io/otel v1.2.0/go.mod h1:aT17Fk0Z1Nor9e0uisf98LrntPGMnk4frBO9+dkf69I= -go.opentelemetry.io/otel/exporters/otlp v0.20.0/go.mod h1:YIieizyaN77rtLJra0buKiNBOm9XQfkPEKBeuhoMwAM= go.opentelemetry.io/otel/internal/metric v0.25.0 h1:w/7RXe16WdPylaIXDgcYM6t/q0K5lXgSdZOEbIEyliE= go.opentelemetry.io/otel/internal/metric v0.25.0/go.mod h1:Nhuw26QSX7d6n4duoqAFi5KOQR4AuzyMcl5eXOgwxtc= -go.opentelemetry.io/otel/metric v0.20.0/go.mod h1:598I5tYlH1vzBjn+BTuhzTCSb/9debfNp6R3s7Pr1eU= go.opentelemetry.io/otel/metric v0.25.0 h1:7cXOnCADUsR3+EOqxPaSKwhEuNu0gz/56dRN1hpIdKw= go.opentelemetry.io/otel/metric v0.25.0/go.mod h1:E884FSpQfnJOMMUaq+05IWlJ4rjZpk2s/F1Ju+TEEm8= -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 v1.2.0 h1:wKN260u4DesJYhyjxDa7LRFkuhH7ncEVKU37LWcyNIo= -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/otel/trace v1.2.0 h1:Ys3iqbqZhcf28hHzrm5WAquMkDHNZTUkw7KHbuNjej0= go.opentelemetry.io/otel/trace v1.2.0/go.mod h1:N5FLswTubnxKxOJHM7XZC074qpeEdLy3CgAVsdMucK0= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= @@ -2750,7 +2705,6 @@ golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5 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-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20210915214749-c084706c2272/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210920023735-84f357641f63/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211215165025-cf75a172585e h1:1SzTfNOXwIS2oWiMF+6qu0OUDKb0dauo6MoDUQyu+yU= golang.org/x/crypto v0.0.0-20211215165025-cf75a172585e/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= diff --git a/pkg/config/config_test.go b/pkg/config/config_test.go index bbb838363109..239cf2d6da6a 100644 --- a/pkg/config/config_test.go +++ b/pkg/config/config_test.go @@ -2,13 +2,10 @@ package config import ( "flag" - "net/url" "strings" "testing" "time" - commonCfg "github.com/prometheus/common/config" - "github.com/stretchr/testify/assert" "github.com/grafana/agent/pkg/metrics" @@ -433,28 +430,6 @@ metrics: require.Equal(t, "verysecret", cfg.Metrics.ServiceConfig.Lifecycler.RingConfig.KVStore.Etcd.Password) } -func TestConfig_RemoteWriteDefaults(t *testing.T) { - cfg := ` -metrics: - global: - remote_write: - - name: "foo" - url: "https://test/url"` - - var c Config - err := LoadBytes([]byte(cfg), false, &c) - require.NoError(t, err) - - expected := &promCfg.DefaultRemoteWriteConfig - expected.Name = "foo" - testURL, _ := url.Parse("https://test/url") - expected.URL = &commonCfg.URL{ - URL: testURL, - } - require.Equal(t, expected, c.Metrics.Global.RemoteWrite[0]) - require.True(t, c.Metrics.Global.RemoteWrite[0].SendExemplars) -} - func TestLoadDynamicConfigurationExpandError(t *testing.T) { err := LoadDynamicConfiguration("", true, nil) assert.Error(t, err) diff --git a/pkg/integrations/cadvisor/cadvisor.go b/pkg/integrations/cadvisor/cadvisor.go index 67e47c1f7aed..c82fbfd10b91 100644 --- a/pkg/integrations/cadvisor/cadvisor.go +++ b/pkg/integrations/cadvisor/cadvisor.go @@ -91,10 +91,6 @@ type Integration struct { func (i *Integration) Run(ctx context.Context) error { // Do gross global configs. This works, so long as there is only one instance of the cAdvisor integration // per host. - - // klog - klog.SetLogger(i.c.logger) - // Containerd containerd.ArgContainerdEndpoint = &i.c.Containerd containerd.ArgContainerdNamespace = &i.c.ContainerdNamespace @@ -153,12 +149,12 @@ func (i *Integration) Run(ctx context.Context) error { if err := rm.Stop(); err != nil { return fmt.Errorf("failed to stop manager: %w", err) } - return nil + return ctx.Err() } // New creates a new cadvisor integration func New(logger log.Logger, c *Config) (integrations.Integration, error) { - c.logger = logger + klog.SetLogger(logger) ci := integrations.NewCollectorIntegration(c.Name()) integration := Integration{ diff --git a/pkg/integrations/cadvisor/cadvisor_test.go b/pkg/integrations/cadvisor/cadvisor_test.go deleted file mode 100644 index 1f6046fd1b57..000000000000 --- a/pkg/integrations/cadvisor/cadvisor_test.go +++ /dev/null @@ -1,31 +0,0 @@ -//go:build !nonetwork && !nodocker -// +build !nonetwork,!nodocker - -package cadvisor - -import ( - "context" - "testing" - - "github.com/grafana/agent/pkg/util" - "github.com/stretchr/testify/require" - "gopkg.in/yaml.v3" -) - -func TestConfig_DockerOnly(t *testing.T) { - t.Run("docker_only with default configuration is successful", func(t *testing.T) { - // Run it once with the default config, expecting success. - defaultCfg := `docker_only: true` - - var cfg Config - err := yaml.Unmarshal([]byte(defaultCfg), &cfg) - require.NoError(t, err) - - ig, err := cfg.NewIntegration(util.TestLogger(t)) - require.NoError(t, err) - - ctx, cancel := context.WithCancel(context.Background()) - cancel() - require.NoError(t, ig.Run(ctx)) - }) -} diff --git a/pkg/integrations/cadvisor/common.go b/pkg/integrations/cadvisor/common.go index 0a51b3d22af1..efd5df363860 100644 --- a/pkg/integrations/cadvisor/common.go +++ b/pkg/integrations/cadvisor/common.go @@ -3,7 +3,6 @@ package cadvisor import ( "time" - "github.com/go-kit/log" "github.com/grafana/agent/pkg/integrations" ) @@ -88,9 +87,6 @@ type Config struct { // Raw config options // DockerOnly only report docker containers in addition to root stats DockerOnly bool `yaml:"docker_only,omitempty"` - - // Hold on to the logger passed to config.NewIntegration, to be passed to klog, as yet another unsafe global that needs to be set. - logger log.Logger } // UnmarshalYAML implements yaml.Unmarshaler for Config @@ -99,23 +95,7 @@ func (c *Config) UnmarshalYAML(unmarshal func(interface{}) error) error { type plain Config err := unmarshal((*plain)(c)) - if err != nil { - return err - } - - // In the cadvisor cmd, these are passed as CSVs, and turned into slices using strings.split. As a result the - // default values are always a slice with 1 or more elements. - // See: https://github.com/google/cadvisor/blob/v0.43.0/cmd/cadvisor.go#L136 - if len(c.AllowlistedContainerLabels) == 0 { - c.AllowlistedContainerLabels = []string{""} - } - if len(c.RawCgroupPrefixAllowlist) == 0 { - c.RawCgroupPrefixAllowlist = []string{""} - } - if len(c.EnvMetadataAllowlist) == 0 { - c.EnvMetadataAllowlist = []string{""} - } - return nil + return err } // Name returns the name of the integration that this config represents. diff --git a/pkg/integrations/integration.go b/pkg/integrations/integration.go index 6ba6b6c87366..6f26e7a79a5f 100644 --- a/pkg/integrations/integration.go +++ b/pkg/integrations/integration.go @@ -43,8 +43,5 @@ type Integration interface { // For example, an Integration that requires a persistent connection to a // database would establish that connection here. If the integration doesn't // need to do anything, it should wait for the ctx to be canceled. - // - // An error will be returned if the integration failed. Integrations should - // not return the ctx error. Run(ctx context.Context) error } diff --git a/pkg/integrations/v2/integrations.go b/pkg/integrations/v2/integrations.go index 0d6f0d4e61f7..42adad4f3624 100644 --- a/pkg/integrations/v2/integrations.go +++ b/pkg/integrations/v2/integrations.go @@ -120,9 +120,6 @@ func (g Globals) CloneAgentBaseURL() *url.URL { type Integration interface { // RunIntegration starts the integration and performs background tasks. It // must not return until ctx is canceled, even if there is no work to do. - // - // An error will be returned if the integration failed. Integrations will - // never return the ctx error. RunIntegration(ctx context.Context) error } diff --git a/pkg/metrics/cluster/config.go b/pkg/metrics/cluster/config.go index 300fa99a68fb..8804b13ccce7 100644 --- a/pkg/metrics/cluster/config.go +++ b/pkg/metrics/cluster/config.go @@ -4,10 +4,10 @@ import ( "flag" "time" + "github.com/cortexproject/cortex/pkg/ring" "github.com/grafana/agent/pkg/metrics/cluster/client" flagutil "github.com/grafana/agent/pkg/util" "github.com/grafana/dskit/kv" - "github.com/grafana/dskit/ring" ) // DefaultConfig provides default values for the config diff --git a/pkg/metrics/cluster/node.go b/pkg/metrics/cluster/node.go index b4a3a7713537..1c237942f965 100644 --- a/pkg/metrics/cluster/node.go +++ b/pkg/metrics/cluster/node.go @@ -8,6 +8,7 @@ import ( "sync" "time" + "github.com/cortexproject/cortex/pkg/ring" "github.com/go-kit/log" "github.com/go-kit/log/level" "github.com/gorilla/mux" @@ -16,7 +17,6 @@ import ( "github.com/grafana/agent/pkg/util" "github.com/grafana/dskit/backoff" "github.com/grafana/dskit/kv" - "github.com/grafana/dskit/ring" "github.com/grafana/dskit/services" "github.com/prometheus/client_golang/prometheus" "github.com/weaveworks/common/user" @@ -114,13 +114,15 @@ func (n *node) ApplyConfig(cfg Config) error { if err != nil { return fmt.Errorf("failed to create ring: %w", err) } - + if err := n.reg.Register(r); err != nil { + return fmt.Errorf("failed to register ring metrics: %w", err) + } if err := services.StartAndAwaitRunning(context.Background(), r); err != nil { return fmt.Errorf("failed to start ring: %w", err) } n.ring = r - lc, err := ring.NewLifecycler(cfg.Lifecycler, n, "agent", agentKey, false, n.log, prometheus.WrapRegistererWithPrefix("agent_dskit_", n.reg)) + lc, err := ring.NewLifecycler(cfg.Lifecycler, n, "agent", agentKey, false, n.reg) if err != nil { return fmt.Errorf("failed to create lifecycler: %w", err) } @@ -151,7 +153,7 @@ func newRing(cfg ring.Config, name, key string, reg prometheus.Registerer, log l if err != nil { return nil, err } - return ring.NewWithStoreClientAndStrategy(cfg, name, key, store, ring.NewIgnoreUnhealthyInstancesReplicationStrategy(), prometheus.WrapRegistererWithPrefix("agent_dskit_", reg), log) + return ring.NewWithStoreClientAndStrategy(cfg, name, key, store, ring.NewIgnoreUnhealthyInstancesReplicationStrategy()) } // run waits for connection to the ring and kickstarts the join process. diff --git a/pkg/metrics/cluster/node_test.go b/pkg/metrics/cluster/node_test.go index 2a7098aca14f..9a32a6844460 100644 --- a/pkg/metrics/cluster/node_test.go +++ b/pkg/metrics/cluster/node_test.go @@ -9,12 +9,11 @@ import ( "testing" "time" - "github.com/go-kit/log" + "github.com/cortexproject/cortex/pkg/ring" "github.com/go-kit/log/level" "github.com/golang/protobuf/ptypes/empty" "github.com/grafana/agent/pkg/agentproto" "github.com/grafana/agent/pkg/util" - "github.com/grafana/dskit/ring" "github.com/grafana/dskit/services" "github.com/prometheus/client_golang/prometheus" "github.com/stretchr/testify/require" @@ -45,7 +44,7 @@ func Test_node_Join(t *testing.T) { return &empty.Empty{}, nil }, } - startNode(t, remote, logger) + startNode(t, remote) nodeConfig := DefaultConfig nodeConfig.Enabled = true @@ -95,7 +94,7 @@ func Test_node_Leave(t *testing.T) { return &empty.Empty{}, nil }, } - startNode(t, remote, logger) + startNode(t, remote) nodeConfig := DefaultConfig nodeConfig.Enabled = true @@ -152,7 +151,7 @@ func Test_node_ApplyConfig(t *testing.T) { } // startNode launches srv as a gRPC server and registers it to the ring. -func startNode(t *testing.T, srv agentproto.ScrapingServiceServer, logger log.Logger) { +func startNode(t *testing.T, srv agentproto.ScrapingServiceServer) { t.Helper() l, err := net.Listen("tcp", "127.0.0.1:0") @@ -170,7 +169,7 @@ func startNode(t *testing.T, srv agentproto.ScrapingServiceServer, logger log.Lo lcConfig.Addr = l.Addr().(*net.TCPAddr).IP.String() lcConfig.Port = l.Addr().(*net.TCPAddr).Port - lc, err := ring.NewLifecycler(lcConfig, ring.NewNoopFlushTransferer(), "agent", "agent", false, logger, nil) + lc, err := ring.NewLifecycler(lcConfig, ring.NewNoopFlushTransferer(), "agent", "agent", false, prometheus.NewRegistry()) require.NoError(t, err) err = services.StartAndAwaitRunning(context.Background(), lc) diff --git a/production/grafana-agent-mixin/alerts.libsonnet b/production/grafana-agent-mixin/alerts.libsonnet index 41581c6e3a0b..c34836d570f2 100644 --- a/production/grafana-agent-mixin/alerts.libsonnet +++ b/production/grafana-agent-mixin/alerts.libsonnet @@ -108,7 +108,7 @@ local _config = config._config; and sum by (pod) (agent_wal_storage_active_series{cluster=~".+", namespace=~"agent-smoke-test", container=~".+", pod="grafana-agent-smoke-test-cluster-2"}) > 1000 |||, - 'for': '1h', + 'for': '15m', annotations: { summary: '{{ $labels.pod }} is using more than 0.0013441 CPU per 1000 series over the last 5 minutes', }, @@ -125,7 +125,7 @@ local _config = config._config; sum without (pod, instance) (go_memstats_heap_inuse_bytes{job=~"agent-smoke-test/grafana-agent-smoke-test.*"}) / sum without (pod, instance, instance_group_name) (agent_wal_storage_active_series{job=~"agent-smoke-test/grafana-agent-smoke-test.*"}) / 1e3 > 10 |||, - 'for': '1h', + 'for': '5m', annotations: { summary: '{{ $labels.job }} has used more than 10KB per series for more than 5 minutes', }, @@ -168,12 +168,10 @@ local _config = config._config; { alert: 'CrowFailures', expr: ||| - ( - rate(crow_test_sample_results_total{result="success"}[5m]) - / - ignoring(result) sum without (result) (rate(crow_test_sample_results_total[5m])) - ) - < 1 + ( + rate(crow_test_sample_results_total{result="success"}[5m]) + / ignoring(result) rate(crow_test_samples_total[5m]) + ) < 1 |||, 'for': '15m', annotations: { diff --git a/production/grafana-agent-mixin/debugging.libsonnet b/production/grafana-agent-mixin/debugging.libsonnet index d619859eca13..3dfdc7e2535d 100644 --- a/production/grafana-agent-mixin/debugging.libsonnet +++ b/production/grafana-agent-mixin/debugging.libsonnet @@ -8,7 +8,7 @@ local g = import 'grafana-builder/grafana.libsonnet'; .addMultiTemplate('cluster', 'agent_build_info', 'cluster') .addMultiTemplate('namespace', 'agent_build_info', 'namespace') .addMultiTemplate('container', 'agent_build_info', 'container') - .addMultiTemplateWithAll('pod', 'agent_build_info{container=~"$container", namespace="$namespace"}', 'pod', all='grafana-agent-.*') + .addMultiTemplateWithAll('pod', 'agent_build_info{container=~"$container"}', 'pod', all='grafana-agent-.*') .addRow( g.row('General') .addPanel( From 8d7f392d7ff04f29708ecbfff93821e85432fd67 Mon Sep 17 00:00:00 2001 From: Matt Durham Date: Tue, 1 Mar 2022 10:01:53 -0500 Subject: [PATCH 17/19] Merge cadvisor --- .github/workflows/test.yml | 2 +- go.mod | 11 +++++---- go.sum | 46 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 54 insertions(+), 5 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f731115a9978..b3c2c598de6b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -5,7 +5,7 @@ jobs: name: Test strategy: matrix: - platform: [macos-latest, windows-latest] + platform: [macos-latest, windows-2019] runs-on: ${{ matrix.platform }} steps: - name: Set up Go 1.17 diff --git a/go.mod b/go.mod index 858e9a2d7934..ab3832391496 100644 --- a/go.mod +++ b/go.mod @@ -24,8 +24,8 @@ require ( github.com/grafana/dskit v0.0.0-20211021180445-3bd016e9d7f1 github.com/grafana/loki v1.6.2-0.20220112164614-525040a32657 github.com/hairyhenderson/go-fsimpl v0.0.0-20211102185733-857ee891b38d - github.com/hairyhenderson/gomplate/v3 v3.0.0 - github.com/hashicorp/consul/api v1.11.0 + github.com/hairyhenderson/gomplate/v3 v3.0.0 + github.com/hashicorp/consul/api v1.12.0 github.com/hashicorp/go-cleanhttp v0.5.2 github.com/hashicorp/go-multierror v1.1.1 github.com/infinityworks/github-exporter v0.0.0-20201016091012-831b72461034 @@ -391,8 +391,8 @@ require ( go4.org/intern v0.0.0-20210108033219-3eb7198706b2 // indirect go4.org/unsafe/assume-no-moving-gc v0.0.0-20201222180813-1025295fd063 // indirect gocloud.dev v0.24.0 // indirect - golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 // indirect - golang.org/x/net v0.0.0-20211111160137-58aab5ef257a // indirect + golang.org/x/crypto v0.0.0-20211215165025-cf75a172585e // indirect + golang.org/x/net v0.0.0-20211209124913-491a49abca63 // indirect golang.org/x/oauth2 v0.0.0-20211005180243-6b3c2da341f1 // indirect golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect golang.org/x/term v0.0.0-20210916214954-140adaaadfaf // indirect @@ -483,3 +483,6 @@ replace github.com/leoluk/perflib_exporter v0.1.0 => github.com/grafana/perflib_ // Required until fork merged upstream for dynamic configuration support replace github.com/hairyhenderson/gomplate/v3 => github.com/mattdurham/gomplate/v3 v3.10.1-0.20220204190650-af65008b9bb1 + +// Required to ensure compatible hashicorp lib is loaded for dynamic configuration, this solves an ambigous import +exclude github.com/hashicorp/vault v0.10.3 diff --git a/go.sum b/go.sum index 0a72f9d5a2bf..e812b893daf4 100644 --- a/go.sum +++ b/go.sum @@ -180,6 +180,7 @@ github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3 github.com/GoogleCloudPlatform/cloudsql-proxy v1.24.0/go.mod h1:3tx938GhY4FC+E1KT/jNjDw7Z5qxAEtIiERJ2sXjnII= github.com/HdrHistogram/hdrhistogram-go v1.1.0/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= github.com/HdrHistogram/hdrhistogram-go v1.1.2 h1:5IcZpTvzydCQeHzK4Ef/D5rrSqwxob0t8PQPMybUNFM= +github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= github.com/Jeffail/gabs v1.1.0/go.mod h1:6xMvQMK4k33lb7GUUpaAPh6nKMmemQeg5d4gn7/bOXc= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= @@ -342,12 +343,14 @@ github.com/aws/aws-sdk-go v1.38.68/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2z github.com/aws/aws-sdk-go v1.40.11/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q= github.com/aws/aws-sdk-go v1.40.34/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q= github.com/aws/aws-sdk-go v1.40.37/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q= +github.com/aws/aws-sdk-go v1.40.45/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q= github.com/aws/aws-sdk-go v1.41.7/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q= github.com/aws/aws-sdk-go v1.42.23 h1:V0V5hqMEyVelgpu1e4gMPVCJ+KhmscdNxP/NWP1iCOA= github.com/aws/aws-sdk-go v1.42.23/go.mod h1:gyRszuZ/icHmHAVE4gc/r+cfCmhA1AD+vqfWbgI+eHs= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= github.com/aws/aws-sdk-go-v2 v1.7.0/go.mod h1:tb9wi5s61kTDA5qCkcDbt3KRVV74GGslQkl/DRdX/P4= github.com/aws/aws-sdk-go-v2 v1.9.0/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4= +github.com/aws/aws-sdk-go-v2 v1.9.1/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4= github.com/aws/aws-sdk-go-v2 v1.9.2 h1:dUFQcMNZMLON4BOe273pl0filK9RqyQMhCK/6xssL6s= github.com/aws/aws-sdk-go-v2 v1.9.2/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4= github.com/aws/aws-sdk-go-v2/config v1.7.0/go.mod h1:w9+nMZ7soXCe5nT46Ri354SNhXDQ6v+V5wqDjnZE+GY= @@ -364,6 +367,7 @@ github.com/aws/aws-sdk-go-v2/internal/ini v1.2.4 h1:leSJ6vCqtPpTmBIgE7044B1wql1E github.com/aws/aws-sdk-go-v2/internal/ini v1.2.4/go.mod h1:ZcBrrI3zBKlhGFNYWvju0I3TR93I7YIgAfy82Fh4lcQ= github.com/aws/aws-sdk-go-v2/service/appconfig v1.4.2/go.mod h1:FZ3HkCe+b10uFZZkFdvf98LHW21k49W8o8J366lqVKY= github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.5.0/go.mod h1:acH3+MQoiMzozT/ivU+DbRg7Ooo2298RdRaWcOv+4vM= +github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.8.1/go.mod h1:CM+19rL1+4dFWnOQKwDc7H1KwXTz+h61oUSHyhV0b3o= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.3.0/go.mod h1:R1KK+vY8AfalhG1AOu5e35pOD2SdoPKQCFLTvnxiohk= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.3.2 h1:r7jel2aa4d9Duys7wEmWqDd5ebpC9w6Kxu6wIjjp18E= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.3.2/go.mod h1:72HRZDLMtmVQiLG2tLfQcaWLCssELvGl+Zf2WVxMmR8= @@ -434,6 +438,7 @@ github.com/cactus/go-statsd-client/statsd v0.0.0-20191106001114-12b4e2b38748/go. github.com/caio/go-tdigest v2.3.0+incompatible/go.mod h1:sHQM/ubZStBUmF1WbB8FAm8q9GjDajLC5T7ydxE3JHI= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= github.com/casbin/casbin/v2 v2.31.6/go.mod h1:vByNa/Fchek0KZUgG5wEsl7iFsiviAYKRtgrQfcJqHg= +github.com/casbin/casbin/v2 v2.37.0/go.mod h1:vByNa/Fchek0KZUgG5wEsl7iFsiviAYKRtgrQfcJqHg= github.com/cenkalti/backoff v0.0.0-20181003080854-62661b46c409/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff v1.0.0/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff v2.0.0+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= @@ -451,6 +456,7 @@ github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA github.com/census-instrumentation/opencensus-proto v0.3.0 h1:t/LhUZLVitR1Ow2YOnduCsavhwFUklBMoGVYUCqmCqk= github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/certifi/gocertifi v0.0.0-20191021191039-0944d244cd40/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= +github.com/certifi/gocertifi v0.0.0-20200922220541-2c3bb06c6054/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.0/go.mod h1:dgIUBU3pDso/gPgZ1osOZ0iQf77oPR28Tjxl5dIMyVM= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= @@ -478,6 +484,7 @@ github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6D github.com/circonus-labs/circonusllhist v0.0.0-20161110002650-365d370cc145/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/cisco-ie/nx-telemetry-proto v0.0.0-20190531143454-82441e232cf6/go.mod h1:ugEfq4B8T8ciw/h5mCkgdiDRFS4CkqqhH2dymDB4knc= +github.com/clbanning/mxj v1.8.4/go.mod h1:BVjHeAH+rl9rs6f+QIpeRl0tfu10SXn1pUSa5PVGJng= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cloudflare/cfssl v0.0.0-20180223231731-4e2dcbde5004 h1:lkAMpLVBDaj17e85keuznYcH5rqI438v41pKcBl4ZxQ= @@ -635,6 +642,8 @@ github.com/cortexproject/cortex v1.7.1-0.20210316085356-3fedc1108a49/go.mod h1:/ github.com/cortexproject/cortex v1.8.1-0.20210422151339-cf1c444e0905/go.mod h1:xxm4/CLvTmDxwE7yXwtClR4dIvkG4S09o5DygPOgc1U= github.com/cortexproject/cortex v1.10.1-0.20211014125347-85c378182d0d h1:2KZVBpjU3NtLZ5oEB7c0TXIGKZYH6vc4pENecdbcCxw= github.com/cortexproject/cortex v1.10.1-0.20211014125347-85c378182d0d/go.mod h1:VZ2fFzUCWcyyneToKNu+ALOpGUJIdkInXy4MOhCo/xw= +github.com/cortexproject/cortex v1.11.0 h1:kx2iBVLZdu7Qjv7dbN4Ek2ax2nICsyoBL+DdEcAetOQ= +github.com/cortexproject/cortex v1.11.0/go.mod h1:oAOdKib5B/IhvxrNecMJH9Wb+a0q31KaAUiv/fcDvFo= github.com/couchbase/go-couchbase v0.0.0-20180501122049-16db1f1fe037/go.mod h1:TWI8EKQMs5u5jLKW/tsb9VwauIrMIxQG1r5fMsswK5U= github.com/couchbase/gomemcached v0.0.0-20180502221210-0da75df14530/go.mod h1:srVSlQLB8iXBVXHgnqemxUXqN6FCvClgCMPCsjBDR7c= github.com/couchbase/goutils v0.0.0-20180530154633-e865a1461c8a/go.mod h1:BQwMFlJzDjFDG3DJUdU0KORxn88UlsOULuxLExMh3Hs= @@ -804,6 +813,7 @@ github.com/evanphx/json-patch/v5 v5.5.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2Vvl github.com/facette/natsort v0.0.0-20181210072756-2cd4dd1e2dcb/go.mod h1:bH6Xx7IW64qjjJq8M2u4dxNaBiDfKK+z/3eGDpXEQhc= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= +github.com/fatih/color v1.12.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fatih/structs v0.0.0-20180123065059-ebf56d35bba7/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= @@ -818,10 +828,12 @@ github.com/felixge/httpsnoop v1.0.2/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSw github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= 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/foxcpp/go-mockdns v0.0.0-20201212160233-ede2f9158d15/go.mod h1:tPg4cp4nseejPd+UKxtCVQ2hUxNTZ7qQZJa7CLriIeo= github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= +github.com/franela/goblin v0.0.0-20210519012713-85d372ac71e2/go.mod h1:VzmDKDJVZI3aJmnRI9VjAn9nJ8qPPsN1fqzr9dqInIo= github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= github.com/frankban/quicktest v1.4.0/go.mod h1:36zfPVQyHxymz4cH7wlDmVwDrJuljRB60qkgn7rorfQ= github.com/frankban/quicktest v1.10.0/go.mod h1:ui7WezCLWMWxVWr1GETZY3smRy0G4KWq9vcPtJmFl7Y= @@ -1001,6 +1013,7 @@ github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GO github.com/go-redis/redis v6.15.9+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= github.com/go-redis/redis/v8 v8.0.0-beta.10.0.20200905143926-df7fe4e2ce72/go.mod h1:CJP1ZIHwhosNYwIdaHPZK9vHsM3+roNBaZ7U9Of1DXc= github.com/go-redis/redis/v8 v8.2.3/go.mod h1:ysgGY09J/QeDYbu3HikWEIPCwaeOkuNoTgKayTEaEOw= +github.com/go-redis/redis/v8 v8.9.0/go.mod h1:ik7vb7+gm8Izylxu6kf6wG26/t2VljgCfSQ1DM4O1uU= github.com/go-redis/redis/v8 v8.11.4/go.mod h1:2Z2wHZXdQpCDXEGzqMockDpNyYvi2l4Pxt6RJr792+w= github.com/go-resty/resty/v2 v2.1.1-0.20191201195748-d7b97669fe48 h1:JVrqSeQfdhYRFk24TvhTZWU0q8lfCojxZQFi3Ou7+uY= github.com/go-resty/resty/v2 v2.1.1-0.20191201195748-d7b97669fe48/go.mod h1:dZGr0i9PLlaaTD4H/hoZIDjQ+r6xq8mgbRzHZf7f2J8= @@ -1267,11 +1280,16 @@ github.com/gosimple/unidecode v1.0.1/go.mod h1:CP0Cr1Y1kogOtx0bJblKzsVWrqYaqfNOn github.com/gotestyourself/gotestyourself v2.2.0+incompatible/go.mod h1:zZKM6oeNM8k+FRljX1mnzVYeS8wiGgQyvST1/GafPbY= github.com/grafana/dnsmasq_exporter v0.2.1-0.20211118155541-751b01d21de9 h1:/ovWD85B27b/xytKaxhP/LvXF8fxWIhEwE55mFpCQsE= github.com/grafana/dnsmasq_exporter v0.2.1-0.20211118155541-751b01d21de9/go.mod h1:Jj5TSVVJE6t8Brq/ZkUbQ1n260dilriL0tWNaHjVDUs= +github.com/grafana/dskit v0.0.0-20210908150159-fcf48cb19aa4/go.mod h1:m3eHzwe5IT5eE2MI3Ena2ooU8+Hek8IiVXb9yJ1+0rs= github.com/grafana/dskit v0.0.0-20211011144203-3a88ec0b675f h1:FvvSVEbnGeM2bUivGmsiXTi8URJyBU7TcFEEoRe5wWI= github.com/grafana/dskit v0.0.0-20211011144203-3a88ec0b675f/go.mod h1:uPG2nyK4CtgNDmWv7qyzYcdI+S90kHHRWvHnBtEMBXM= +github.com/grafana/dskit v0.0.0-20211021180445-3bd016e9d7f1 h1:Qf+/W3Tup0nO21tgJmO14WJK0yyrm4L2UJipZP+Zoow= +github.com/grafana/dskit v0.0.0-20211021180445-3bd016e9d7f1/go.mod h1:uPG2nyK4CtgNDmWv7qyzYcdI+S90kHHRWvHnBtEMBXM= github.com/grafana/gocql v0.0.0-20200605141915-ba5dc39ece85/go.mod h1:crI9WX6p0IhrqB+DqIUHulRW853PaNFf7o4UprV//3I= github.com/grafana/loki v1.6.2-0.20211021114919-0ae0d4da122d h1:vjCXyKr987ClVgPyj7fZXjvCX8B1Y51AwUaf1k6/NqI= github.com/grafana/loki v1.6.2-0.20211021114919-0ae0d4da122d/go.mod h1:CHJv20FcRFw/N6/FJOtEdMt1zDcCJbxMoLmzpH74CVQ= +github.com/grafana/loki v1.6.2-0.20220112164614-525040a32657 h1:1TSVAyuDYJdp4/195GrdrGg0ZHMB+eJye1qIgi0N8+4= +github.com/grafana/loki v1.6.2-0.20220112164614-525040a32657/go.mod h1:9dAaw+bJR/qZiHZYO9ZvFhuqphGblcUEwuvGPbgZldA= github.com/grafana/mongodb_exporter v0.20.8-0.20211006135645-bef0f0239601 h1:k5VTHQsSBs/jZHWXEvjW4QAZQcoGB3QQfUN0XGA6pB4= github.com/grafana/mongodb_exporter v0.20.8-0.20211006135645-bef0f0239601/go.mod h1:BCuUaP3ocoAYt8xTCaCXWQttYMKUcg36e1NJdOEx56M= github.com/grafana/mysqld_exporter v0.12.2-0.20201015182516-5ac885b2d38a h1:D5NSR64/6xMXnSFD9y1m1DPYIcBcHvtfeuI9/M/0qtI= @@ -1472,6 +1490,7 @@ github.com/huandu/xstrings v1.0.0/go.mod h1:4qWG/gcEcfX4z/mBDHJ++3ReCw9ibxbsNJbc github.com/huandu/xstrings v1.3.1 h1:4jgBlKK6tLKFvO8u5pmYjG91cqytmDCDvGh7ECVFfFs= github.com/huandu/xstrings v1.3.1/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= +github.com/hudl/fargo v1.4.0/go.mod h1:9Ai6uvFy5fQNq6VPKtg+Ceq1+eTY4nKUlR2JElEOcDo= github.com/iancoleman/strcase v0.0.0-20180726023541-3605ed457bf7/go.mod h1:SK73tn/9oHe+/Y0h39VT4UCxmurVJkR5NA7kMEAOgSE= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= @@ -1623,6 +1642,7 @@ github.com/klauspost/compress v1.11.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYs github.com/klauspost/compress v1.11.12/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.13/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.13.1/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= +github.com/klauspost/compress v1.13.4/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.13.5/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= github.com/klauspost/compress v1.13.6 h1:P76CopJELS0TiO2mebmnzgWaajssP/EszplttgQxcgc= github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= @@ -1797,6 +1817,7 @@ github.com/mileusna/useragent v0.0.0-20190129205925-3e331f0949a5/go.mod h1:JWhYA github.com/mindprince/gonvml v0.0.0-20190828220739-9ebdce4bb989 h1:PS1dLCGtD8bb9RPKJrc8bS7qHL6JnW1CZvwzH9dPoUs= github.com/mindprince/gonvml v0.0.0-20190828220739-9ebdce4bb989/go.mod h1:2eu9pRWp8mo84xCg6KswZ+USQHjwgRhNp06sozOdsTY= github.com/minio/highwayhash v1.0.1/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= +github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= github.com/minio/md5-simd v1.1.0/go.mod h1:XpBqgZULrMYD3R+M28PcmP0CkI7PEMzB3U77ZrKZ0Gw= github.com/minio/minio-go/v6 v6.0.44/go.mod h1:qD0lajrGW49lKZLtXKtCB4X/qkMf0a5tBvN2PaZg7Gg= github.com/minio/minio-go/v6 v6.0.56/go.mod h1:KQMM+/44DSlSGSQWSfRrAZ12FVMmpWNuX37i2AX0jfI= @@ -1881,11 +1902,14 @@ github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5Vgl github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= github.com/nats-io/jwt v1.2.2/go.mod h1:/xX356yQA6LuXI9xWW7mZNpxgF2mBmGecH+Fj34sP5Q= github.com/nats-io/jwt/v2 v2.0.2/go.mod h1:VRP+deawSXyhNjXmxPCHskrR6Mq50BqpEI5SEcNiGlY= +github.com/nats-io/jwt/v2 v2.0.3/go.mod h1:VRP+deawSXyhNjXmxPCHskrR6Mq50BqpEI5SEcNiGlY= github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= github.com/nats-io/nats-server/v2 v2.1.4/go.mod h1:Jw1Z28soD/QasIA2uWjXyM9El1jly3YwyFOuR8tH1rg= github.com/nats-io/nats-server/v2 v2.2.6/go.mod h1:sEnFaxqe09cDmfMgACxZbziXnhQFhwk+aKkZjBBRYrI= +github.com/nats-io/nats-server/v2 v2.5.0/go.mod h1:Kj86UtrXAL6LwYRA6H4RqzkHhK0Vcv2ZnKD5WbQ1t3g= github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= github.com/nats-io/nats.go v1.11.0/go.mod h1:BPko4oXsySz4aSWeFgOHLZs3G4Jq4ZAyE6/zMCxRT6w= +github.com/nats-io/nats.go v1.12.1/go.mod h1:BPko4oXsySz4aSWeFgOHLZs3G4Jq4ZAyE6/zMCxRT6w= github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nkeys v0.2.0/go.mod h1:XdZpAbhgyyODYqjTawOnIOI7VlbKSarI9Gfy1tqEu/s= @@ -1931,6 +1955,7 @@ github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108 github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= github.com/onsi/ginkgo v1.14.1/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= github.com/onsi/ginkgo v1.15.0/go.mod h1:hF8qUzuuC8DJGygJH3726JnCZX4MYbRB8yFfISqnKUg= +github.com/onsi/ginkgo v1.16.2/go.mod h1:CObGmKUOKaSC0RjmoAK7tKyn4Azo5P2IWuoMnvwxz1E= github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= @@ -1947,6 +1972,7 @@ github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1y github.com/onsi/gomega v1.10.2/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.10.3/go.mod h1:V9xEwhxec5O8UDM77eCW8vLymOMltsqPVYWrpDsH8xc= github.com/onsi/gomega v1.10.5/go.mod h1:gza4q3jKQJijlu05nKWRCW/GavJumGt8aNRxWg7mt48= +github.com/onsi/gomega v1.13.0/go.mod h1:lRk9szgn8TxENtWd0Tp4c3wjlRfMTMH27I+3Je41yGY= github.com/onsi/gomega v1.16.0 h1:6gjqkI8iiRHMvdccRJM8rVKjCWk6ZIm6FTm3ddIe4/c= github.com/onsi/gomega v1.16.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= @@ -2060,6 +2086,7 @@ github.com/percona/exporter_shared v0.7.4-0.20211108113423-8555cdbac68b h1:tPnod github.com/percona/exporter_shared v0.7.4-0.20211108113423-8555cdbac68b/go.mod h1:bweWrCdYX+iAONTNUNIIkXGDjGg8dbFL0VBxuUv0wus= github.com/percona/go-mysql v0.0.0-20190903141930-197f4ad8db8d/go.mod h1:/SGLf9OMxlnK6jq4mkFiImBcJXXk5jwD+lDrwDaGXcw= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= +github.com/performancecopilot/speed/v4 v4.0.0/go.mod h1:qxrSyuDGrTOWfV+uKRFhfxw6h/4HXRGUiZiufxo49BM= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/peterh/liner v1.0.1-0.20180619022028-8c1271fcf47f/go.mod h1:xIteQHvHuaLYG9IFj6mSxM0fCKrs34IrEQUhOYuGPHc= github.com/pierrec/cmdflag v0.0.2/go.mod h1:a3zKGZ3cdQUfxjd0RGMLZr8xI3nvpJOB+m6o/1X5BmU= @@ -2195,6 +2222,7 @@ github.com/prometheus/procfs v0.0.11/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4 github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.7.4-0.20211011103944-1a7a2bd3279f h1:ncXqc93eJV1Ncr3f6GA3MrIDNkNHvcPonRC2QgZaVkQ= github.com/prometheus/procfs v0.7.4-0.20211011103944-1a7a2bd3279f/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= @@ -2345,6 +2373,7 @@ github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3 github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= github.com/spf13/cobra v1.1.1/go.mod h1:WnodtKOvamDL/PwE2M4iKs8aMDBZ5Q5klgD3qfVJQMI= +github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= github.com/spf13/cobra v1.2.1 h1:+KmjbUw1hriSNMF55oPrkZcb27aECyrj8V2ytv7kWDw= github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk= github.com/spf13/jwalterweatherman v0.0.0-20141219030609-3d60171a6431/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= @@ -2427,6 +2456,7 @@ github.com/tklauser/numcpus v0.3.0/go.mod h1:yFGUr7TUHQRAhyqBcEg0Ge34zDBAsIvJJcy github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20200427203606-3cfed13b9966/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tomnomnom/linkheader v0.0.0-20180905144013-02ca5825eb80 h1:nrZ3ySNYwJbSpD6ce9duiP+QkD3JuLCcWkdaehUS/3Y= github.com/tomnomnom/linkheader v0.0.0-20180905144013-02ca5825eb80/go.mod h1:iFyPdL66DjUD96XmzVL3ZntbzcflLnznH0fr99w5VqE= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= @@ -2481,6 +2511,8 @@ github.com/weaveworks/common v0.0.0-20200914083218-61ffdd448099/go.mod h1:hz10LO github.com/weaveworks/common v0.0.0-20201119133501-0619918236ec/go.mod h1:ykzWac1LtVfOxdCK+jD754at1Ws9dKCwFeUzkFBffPs= github.com/weaveworks/common v0.0.0-20210112142934-23c8d7fa6120/go.mod h1:ykzWac1LtVfOxdCK+jD754at1Ws9dKCwFeUzkFBffPs= github.com/weaveworks/common v0.0.0-20210419092856-009d1eebd624/go.mod h1:ykzWac1LtVfOxdCK+jD754at1Ws9dKCwFeUzkFBffPs= +github.com/weaveworks/common v0.0.0-20210722103813-e649eff5ab4a/go.mod h1:YU9FvnS7kUnRt6HY10G+2qHkwzP3n3Vb1XsXDsJTSp8= +github.com/weaveworks/common v0.0.0-20210901124008-1fa3f9fa874c/go.mod h1:YU9FvnS7kUnRt6HY10G+2qHkwzP3n3Vb1XsXDsJTSp8= github.com/weaveworks/common v0.0.0-20210913144402-035033b78a78/go.mod h1:YU9FvnS7kUnRt6HY10G+2qHkwzP3n3Vb1XsXDsJTSp8= github.com/weaveworks/common v0.0.0-20211222122857-933588f98737 h1:BBhcuf4+YMKHEYQqbmzNN+e3btTzh8xk3tA2xh24MfU= github.com/weaveworks/common v0.0.0-20211222122857-933588f98737/go.mod h1:YfOOLoW1Q/jIIu0WLeSwgStmrKjuJEZSKTAUc+0KFvE= @@ -2568,8 +2600,11 @@ go.etcd.io/etcd/client/v3 v3.5.0-alpha.0.0.20210225194612-fa82d11a958a/go.mod h1 go.etcd.io/etcd/client/v3 v3.5.0 h1:62Eh0XOro+rDwkrypAGDfgmNh5Joq+z+W9HZdlXMzek= go.etcd.io/etcd/client/v3 v3.5.0/go.mod h1:AIKXXVX/DQXtfTEqBryiLTUXwON+GuvO6Z7lLS/oTh0= go.etcd.io/etcd/pkg/v3 v3.5.0-alpha.0/go.mod h1:tV31atvwzcybuqejDoY3oaNRTtlD2l/Ot78Pc9w7DMY= +go.etcd.io/etcd/pkg/v3 v3.5.0/go.mod h1:UzJGatBQ1lXChBkQF0AuAtkRQMYnHubxAEYIrC3MSsE= go.etcd.io/etcd/raft/v3 v3.5.0-alpha.0/go.mod h1:FAwse6Zlm5v4tEWZaTjmNhe17Int4Oxbu7+2r0DiD3w= +go.etcd.io/etcd/raft/v3 v3.5.0/go.mod h1:UFOHSIvO/nKwd4lhkwabrTD3cqW5yVyYYf/KlD00Szc= go.etcd.io/etcd/server/v3 v3.5.0-alpha.0.0.20210225194612-fa82d11a958a/go.mod h1:tsKetYpt980ZTpzl/gb+UOJj9RkIyCb1u4wjzMg90BQ= +go.etcd.io/etcd/server/v3 v3.5.0/go.mod h1:3Ah5ruV+M+7RZr0+Y/5mNLwC+eQlni+mQmOVdCRJoS4= go.mongodb.org/mongo-driver v1.0.3/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.mongodb.org/mongo-driver v1.1.0/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.mongodb.org/mongo-driver v1.1.1/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= @@ -2599,18 +2634,28 @@ go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opentelemetry.io/collector/model v0.30.0/go.mod h1:PcHNnM+RUl0uD8VkSn93PO78N7kQYhfqpI/eki57pl4= go.opentelemetry.io/collector/model v0.40.0 h1:UgdWfBnJBQL4atFv6LhlYq67Ts/vFDbwGknvsIsm/g8= go.opentelemetry.io/collector/model v0.40.0/go.mod h1:dXqjAeml+cB+YzJ3kUnd3v5/JvGAKl3MqHXfgSWRIo8= +go.opentelemetry.io/contrib v0.20.0/go.mod h1:G/EtFaa6qaN7+LxqfIAT3GiZa7Wv5DTBUzl5H4LY0Kc= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.20.0/go.mod h1:oVGt1LRbBOBq1A5BQLlUg9UaU/54aiHw8cgjV3aWZ/E= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.27.0 h1:TON1iU3Y5oIytGQHIejDYLam5uoSMsmA0UV9Yupb5gQ= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.27.0/go.mod h1:T/zQwBldOpoAEpE3HMbLnI8ydESZVz4ggw6Is4FF9LI= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.27.0 h1:0BgiNWjN7rUWO9HdjF4L12r8OW86QkVQcYmCjnayJLo= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.27.0/go.mod h1:bdvm3YpMxWAgEfQhtTBaVR8ceXPRuRBSQrvOBnIlHxc= go.opentelemetry.io/otel v0.11.0/go.mod h1:G8UCk+KooF2HLkgo8RHX9epABH/aRGYET7gQOqBVdB0= +go.opentelemetry.io/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzoxm/dooo= go.opentelemetry.io/otel v1.2.0 h1:YOQDvxO1FayUcT9MIhJhgMyNO1WqoduiyvQHzGN0kUQ= go.opentelemetry.io/otel v1.2.0/go.mod h1:aT17Fk0Z1Nor9e0uisf98LrntPGMnk4frBO9+dkf69I= +go.opentelemetry.io/otel/exporters/otlp v0.20.0/go.mod h1:YIieizyaN77rtLJra0buKiNBOm9XQfkPEKBeuhoMwAM= go.opentelemetry.io/otel/internal/metric v0.25.0 h1:w/7RXe16WdPylaIXDgcYM6t/q0K5lXgSdZOEbIEyliE= go.opentelemetry.io/otel/internal/metric v0.25.0/go.mod h1:Nhuw26QSX7d6n4duoqAFi5KOQR4AuzyMcl5eXOgwxtc= +go.opentelemetry.io/otel/metric v0.20.0/go.mod h1:598I5tYlH1vzBjn+BTuhzTCSb/9debfNp6R3s7Pr1eU= go.opentelemetry.io/otel/metric v0.25.0 h1:7cXOnCADUsR3+EOqxPaSKwhEuNu0gz/56dRN1hpIdKw= go.opentelemetry.io/otel/metric v0.25.0/go.mod h1:E884FSpQfnJOMMUaq+05IWlJ4rjZpk2s/F1Ju+TEEm8= +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 v1.2.0 h1:wKN260u4DesJYhyjxDa7LRFkuhH7ncEVKU37LWcyNIo= +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/otel/trace v1.2.0 h1:Ys3iqbqZhcf28hHzrm5WAquMkDHNZTUkw7KHbuNjej0= go.opentelemetry.io/otel/trace v1.2.0/go.mod h1:N5FLswTubnxKxOJHM7XZC074qpeEdLy3CgAVsdMucK0= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= @@ -2705,6 +2750,7 @@ golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5 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-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20210915214749-c084706c2272/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210920023735-84f357641f63/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211215165025-cf75a172585e h1:1SzTfNOXwIS2oWiMF+6qu0OUDKb0dauo6MoDUQyu+yU= golang.org/x/crypto v0.0.0-20211215165025-cf75a172585e/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= From 4babc3b962ef36656d5cc5408cf264133a15977c Mon Sep 17 00:00:00 2001 From: Matt Durham Date: Tue, 1 Mar 2022 10:20:54 -0500 Subject: [PATCH 18/19] Adding remote_write test back --- pkg/config/config_test.go | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/pkg/config/config_test.go b/pkg/config/config_test.go index 239cf2d6da6a..bbb838363109 100644 --- a/pkg/config/config_test.go +++ b/pkg/config/config_test.go @@ -2,10 +2,13 @@ package config import ( "flag" + "net/url" "strings" "testing" "time" + commonCfg "github.com/prometheus/common/config" + "github.com/stretchr/testify/assert" "github.com/grafana/agent/pkg/metrics" @@ -430,6 +433,28 @@ metrics: require.Equal(t, "verysecret", cfg.Metrics.ServiceConfig.Lifecycler.RingConfig.KVStore.Etcd.Password) } +func TestConfig_RemoteWriteDefaults(t *testing.T) { + cfg := ` +metrics: + global: + remote_write: + - name: "foo" + url: "https://test/url"` + + var c Config + err := LoadBytes([]byte(cfg), false, &c) + require.NoError(t, err) + + expected := &promCfg.DefaultRemoteWriteConfig + expected.Name = "foo" + testURL, _ := url.Parse("https://test/url") + expected.URL = &commonCfg.URL{ + URL: testURL, + } + require.Equal(t, expected, c.Metrics.Global.RemoteWrite[0]) + require.True(t, c.Metrics.Global.RemoteWrite[0].SendExemplars) +} + func TestLoadDynamicConfigurationExpandError(t *testing.T) { err := LoadDynamicConfiguration("", true, nil) assert.Error(t, err) From a99183de7b3383ee14589840ad791be4e3338b1c Mon Sep 17 00:00:00 2001 From: mattdurham Date: Tue, 1 Mar 2022 11:02:06 -0500 Subject: [PATCH 19/19] Update CHANGELOG.md Move bugfix comment --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3c30266a3e39..50bf2c531e71 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,10 +11,10 @@ - [ENHANCEMENT] Introduce EXPERIMENTAL support for dynamic configuration. (@mattdurham) -- [BUGFIX] Ensure singleton integrations are honored in v2 integrations (@mattdurham) - - [FEATURE] Added config read API support to GrafanaAgent Custom Resource Definition. +- [BUGFIX] Ensure singleton integrations are honored in v2 integrations (@mattdurham) + # v0.23.0 (2022-01-13) - [ENHANCEMENT] Go 1.17 is now used for all builds of the Agent. (@tpaschalis)